Revised OpenFlow Library  v0.6.0dev
 All Classes Files Functions Variables Friends Groups Pages
cofmsg_error.h
1 /*
2  * cofmsg_error.h
3  *
4  * Created on: 18.03.2013
5  * Author: andi
6  */
7 
8 #ifndef COFMSG_ERROR_H_
9 #define COFMSG_ERROR_H_ 1
10 
11 #include "rofl/common/openflow/messages/cofmsg.h"
12 #include "rofl/common/openflow/openflow_common.h"
13 #include "rofl/common/openflow/openflow.h"
14 
15 namespace rofl {
16 namespace openflow {
17 
21 class cofmsg_error :
22  public cofmsg
23 {
24 private:
25 
26  cmemory body;
27 
28  union {
29  uint8_t *emu_error_msg;
30  struct openflow10::ofp_error_msg *emu10_error_msg;
31  struct openflow12::ofp_error_msg *emu12_error_msg;
32  struct openflow13::ofp_error_msg *emu13_error_msg;
33  } emu;
34 
35 #define err_msg emu.emu_error_msg
36 #define err10_msg emu.emu10_error_msg
37 #define err12_msg emu.emu12_error_msg
38 #define err13_msg emu.emu13_error_msg
39 
40 public:
41 
42 
47  uint8_t of_version,
48  uint32_t xid,
49  uint16_t err_type = 0,
50  uint16_t err_code = 0,
51  uint8_t* data = 0,
52  size_t datalen = 0);
53 
54 
59  cofmsg_error const& error);
60 
61 
66  operator= (
67  cofmsg_error const& error);
68 
69 
73  virtual
74  ~cofmsg_error();
75 
76 
80  cofmsg_error(cmemory *memarea);
81 
82 
86  virtual void
87  reset();
88 
89 
93  virtual uint8_t*
94  resize(size_t len);
95 
96 
100  virtual size_t
101  length() const;
102 
103 
107  virtual void
108  pack(uint8_t *buf = (uint8_t*)0, size_t buflen = 0);
109 
110 
114  virtual void
115  unpack(uint8_t *buf, size_t buflen);
116 
117 
120  virtual void
121  validate();
122 
123 public:
124 
128  uint16_t
129  get_err_type() const;
130 
134  void
135  set_err_type(uint16_t type);
136 
140  uint16_t
141  get_err_code() const;
142 
146  void
147  set_err_code(uint16_t code);
148 
152  cmemory&
153  get_body();
154 
155 public:
156 
157  friend std::ostream&
158  operator<< (std::ostream& os, cofmsg_error const& msg) {
159  os << dynamic_cast<cofmsg const&>( msg );
160  os << indent(2) << "<cofmsg_error >" << std::endl;
161 
162  os << std::hex;
163  uint32_t error_id = ((uint32_t)msg.get_err_type() << 16) | msg.get_err_code();
164  switch ((int32_t)error_id) {
165  case OFPETC_HELLO_FAILED_INCOMPATIBLE: {
166  os << indent(4) << "<error-id: 0x" << (int)error_id << " HELLO-FAILED-INCOMPATIBLE >" << std::endl;
167  } break;
168  case OFPETC_HELLO_FAILED_EPERM: {
169  os << indent(4) << "<error-id: 0x" << (int)error_id << " HELLO-FAILED-EPERM >" << std::endl;
170  } break;
171  case OFPETC_BAD_REQUEST_BAD_VERSION: {
172  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-REQUEST-BAD-VERSION >" << std::endl;
173  } break;
174  case OFPETC_BAD_REQUEST_BAD_TYPE: {
175  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-REQUEST-BAD-TYPE >" << std::endl;
176  } break;
177  case OFPETC_BAD_REQUEST_BAD_STAT: {
178  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-REQUEST-BAD-STAT >" << std::endl;
179  } break;
180  case OFPETC_BAD_REQUEST_BAD_EXPERIMENTER: {
181  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-REQUEST-BAD-EXPERIMENTER >" << std::endl;
182  } break;
183  case OFPETC_BAD_REQUEST_BAD_EXP_TYPE: {
184  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-REQUEST-BAD-EXP-TYPE >" << std::endl;
185  } break;
186  case OFPETC_BAD_REQUEST_EPERM: {
187  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-REQUEST-EPERM >" << std::endl;
188  } break;
189  case OFPETC_BAD_REQUEST_BAD_LEN: {
190  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-REQUEST-BAD-LEN >" << std::endl;
191  } break;
192  case OFPETC_BAD_REQUEST_BUFFER_EMPTY: {
193  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-REQUEST-BUFFER-EMPTY >" << std::endl;
194  } break;
195  case OFPETC_BAD_REQUEST_BUFFER_UNKNOWN: {
196  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-REQUEST-BUFFER-UNKNOWN >" << std::endl;
197  } break;
198  case OFPETC_BAD_REQUEST_BAD_TABLE_ID: {
199  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-REQUEST-BAD-TABLE-ID >" << std::endl;
200  } break;
201  case OFPETC_BAD_REQUEST_IS_SLAVE: {
202  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-REQUEST-IS-SLAVE >" << std::endl;
203  } break;
204  case OFPETC_BAD_REQUEST_BAD_PORT: {
205  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-REQUEST-BAD-PORT >" << std::endl;
206  } break;
207  case OFPETC_BAD_REQUEST_BAD_PACKET: {
208  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-REQUEST-BAD-PACKET >" << std::endl;
209  } break;
210  case OFPETC_BAD_REQUEST_MULTIPART_BUFFER_OVERFLOW: {
211  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-REQUEST-MULTIPART-BUFFER-OVERFLOW >" << std::endl;
212  } break;
213  case OFPETC_BAD_ACTION_BAD_TYPE: {
214  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-BAD-TYPE >" << std::endl;
215  } break;
216  case OFPETC_BAD_ACTION_BAD_LEN: {
217  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-BAD-LEN >" << std::endl;
218  } break;
219  case OFPETC_BAD_ACTION_BAD_EXPERIMENTER: {
220  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-BAD-EXPERIMENTER >" << std::endl;
221  } break;
222  case OFPETC_BAD_ACTION_BAD_EXP_TYPE: {
223  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-BAD-EXP-TYPE >" << std::endl;
224  } break;
225  case OFPETC_BAD_ACTION_BAD_OUT_PORT: {
226  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-BAD-OUT-PORT >" << std::endl;
227  } break;
228  case OFPETC_BAD_ACTION_BAD_ARGUMENT: {
229  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-BAD-ARGUMENT >" << std::endl;
230  } break;
231  case OFPETC_BAD_ACTION_EPERM: {
232  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-EPERM >" << std::endl;
233  } break;
234  case OFPETC_BAD_ACTION_TOO_MANY: {
235  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-TOO-MANY >" << std::endl;
236  } break;
237  case OFPETC_BAD_ACTION_BAD_QUEUE: {
238  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-BAD-QUEUE >" << std::endl;
239  } break;
240  case OFPETC_BAD_ACTION_BAD_OUT_GROUP: {
241  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-BAD-OUT-GROUP >" << std::endl;
242  } break;
243  case OFPETC_BAD_ACTION_MATCH_INCONSISTENT: {
244  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-MATCH-INCONSISTENT >" << std::endl;
245  } break;
246  case OFPETC_BAD_ACTION_UNSUPPORTED_ORDER: {
247  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-UNSUPPORTED-ORDER >" << std::endl;
248  } break;
249  case OFPETC_BAD_ACTION_BAD_TAG: {
250  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-BAD-TAG >" << std::endl;
251  } break;
252  case OFPETC_BAD_ACTION_BAD_SET_TYPE: {
253  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-BAD-SET-TYPE >" << std::endl;
254  } break;
255  case OFPETC_BAD_ACTION_BAD_SET_LEN: {
256  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-BAD-SET-LEN >" << std::endl;
257  } break;
258  case OFPETC_BAD_ACTION_BAD_SET_ARGUMENT: {
259  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-ACTION-BAD-SET-ARGUMENT >" << std::endl;
260  } break;
261  case OFPETC_BAD_INSTRUCTION_UNKNOWN_INST: {
262  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-INSTRUCTION-UNKNOWN-INST >" << std::endl;
263  } break;
264  case OFPETC_BAD_INSTRUCTION_UNSUP_INST: {
265  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-INSTRUCTION-UNSUP-INST >" << std::endl;
266  } break;
267  case OFPETC_BAD_INSTRUCTION_BAD_TABLE_ID: {
268  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-INSTRUCTION-BAD-TABLE-ID >" << std::endl;
269  } break;
270  case OFPETC_BAD_INSTRUCTION_UNSUP_METADATA: {
271  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-INSTRUCTION-UNSUP-METADATA >" << std::endl;
272  } break;
273  case OFPETC_BAD_INSTRUCTION_UNSUP_METADATA_MASK: {
274  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-INSTRUCTION-UNSUP-METADATA-MASK >" << std::endl;
275  } break;
276  case OFPETC_BAD_INSTRUCTION_BAD_EXPERIMENTER: {
277  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-INSTRUCTION-BAD-EXPERIMENTER >" << std::endl;
278  } break;
279  case OFPETC_BAD_INSTRUCTION_BAD_EXP_TYPE: {
280  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-INSTRUCTION-BAD-EXP-TYPE >" << std::endl;
281  } break;
282  case OFPETC_BAD_INSTRUCTION_BAD_LEN: {
283  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-INSTRUCTION-BAD-LEN >" << std::endl;
284  } break;
285  case OFPETC_BAD_INSTRUCTION_EPERM: {
286  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-INSTRUCTION-EPERM >" << std::endl;
287  } break;
288  case OFPETC_BAD_MATCH_BAD_TYPE: {
289  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-MATCH-BAD-TYPE >" << std::endl;
290  } break;
291  case OFPETC_BAD_MATCH_BAD_LEN: {
292  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-MATCH-BAD-LEN >" << std::endl;
293  } break;
294  case OFPETC_BAD_MATCH_BAD_TAG: {
295  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-MATCH-BAD-TAG >" << std::endl;
296  } break;
297  case OFPETC_BAD_MATCH_BAD_DL_ADDR_MASK: {
298  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-MATCH-BAD-DL-ADDR-MASK >" << std::endl;
299  } break;
300  case OFPETC_BAD_MATCH_BAD_NW_ADDR_MASK: {
301  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-MATCH-BAD-NW-ADDR-MASK >" << std::endl;
302  } break;
303  case OFPETC_BAD_MATCH_BAD_WILDCARDS: {
304  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-MATCH-BAD-WILDCARDS >" << std::endl;
305  } break;
306  case OFPETC_BAD_MATCH_BAD_FIELD: {
307  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-MATCH-BAD-FIELD >" << std::endl;
308  } break;
309  case OFPETC_BAD_MATCH_BAD_VALUE: {
310  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-MATCH-BAD-VALUE >" << std::endl;
311  } break;
312  case OFPETC_BAD_MATCH_BAD_MASK: {
313  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-MATCH-BAD-MASK >" << std::endl;
314  } break;
315  case OFPETC_BAD_MATCH_BAD_PREREQ: {
316  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-MATCH-BAD-PREREQ >" << std::endl;
317  } break;
318  case OFPETC_BAD_MATCH_DUP_FIELD: {
319  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-MATCH-DUP-FIELD >" << std::endl;
320  } break;
321  case OFPETC_BAD_MATCH_EPERM: {
322  os << indent(4) << "<error-id: 0x" << (int)error_id << " BAD-MATCH-EPERM >" << std::endl;
323  } break;
324  case OFPETC_FLOW_MOD_UNKNOWN: {
325  os << indent(4) << "<error-id: 0x" << (int)error_id << " FLOW-MOD-UNKNOWN >" << std::endl;
326  } break;
327  case OFPETC_FLOW_MOD_TABLE_FULL: {
328  os << indent(4) << "<error-id: 0x" << (int)error_id << " FLOW-MOD-TABLE-FULL >" << std::endl;
329  } break;
330  case OFPETC_FLOW_MOD_BAD_TABLE_ID: {
331  os << indent(4) << "<error-id: 0x" << (int)error_id << " FLOW-MOD-BAD-TABLE-ID >" << std::endl;
332  } break;
333  case OFPETC_FLOW_MOD_OVERLAP: {
334  os << indent(4) << "<error-id: 0x" << (int)error_id << " FLOW-MOD-OVERLAP >" << std::endl;
335  } break;
336  case OFPETC_FLOW_MOD_EPERM: {
337  os << indent(4) << "<error-id: 0x" << (int)error_id << " FLOW-MOD-EPERM >" << std::endl;
338  } break;
339  case OFPETC_FLOW_MOD_BAD_TIMEOUT: {
340  os << indent(4) << "<error-id: 0x" << (int)error_id << " FLOW-MOD-BAD-TIMEOUT >" << std::endl;
341  } break;
342  case OFPETC_FLOW_MOD_BAD_COMMAND: {
343  os << indent(4) << "<error-id: 0x" << (int)error_id << " FLOW-MOD-BAD-COMMAND >" << std::endl;
344  } break;
345  case OFPETC_FLOW_MOD_BAD_FLAGS: {
346  os << indent(4) << "<error-id: 0x" << (int)error_id << " FLOW-MOD-BAD-FLAGS >" << std::endl;
347  } break;
348  case OFPETC_GROUP_MOD_GROUP_EXISTS: {
349  os << indent(4) << "<error-id: 0x" << (int)error_id << " GROUP-MOD-GROUP-EXISTS >" << std::endl;
350  } break;
351  case OFPETC_GROUP_MOD_INVALID_GROUP: {
352  os << indent(4) << "<error-id: 0x" << (int)error_id << " GROUP-MOD-INVALID-GROUP >" << std::endl;
353  } break;
354  case OFPETC_GROUP_MOD_WEIGHT_UNSUPPORTED: {
355  os << indent(4) << "<error-id: 0x" << (int)error_id << " GROUP-MOD-WEIGHT-UNSUPPORTED >" << std::endl;
356  } break;
357  case OFPETC_GROUP_MOD_OUT_OF_GROUPS: {
358  os << indent(4) << "<error-id: 0x" << (int)error_id << " GROUP-MOD-OUT-OF-GROUPS >" << std::endl;
359  } break;
360  case OFPETC_GROUP_MOD_OUT_OF_BUCKETS: {
361  os << indent(4) << "<error-id: 0x" << (int)error_id << " GROUP-MOD-OUT-OF-BUCKETS >" << std::endl;
362  } break;
363  case OFPETC_GROUP_MOD_CHAINING_UNSUPPORTED: {
364  os << indent(4) << "<error-id: 0x" << (int)error_id << " GROUP-MOD-CHAINING-UNSUPPORTED >" << std::endl;
365  } break;
366  case OFPETC_GROUP_MOD_WATCH_UNSUPPORTED: {
367  os << indent(4) << "<error-id: 0x" << (int)error_id << " GROUP-MOD-WATCH-UNSUPPORTED >" << std::endl;
368  } break;
369  case OFPETC_GROUP_MOD_LOOP: {
370  os << indent(4) << "<error-id: 0x" << (int)error_id << " GROUP-MOD-LOOP >" << std::endl;
371  } break;
372  case OFPETC_GROUP_MOD_UNKNOWN_GROUP: {
373  os << indent(4) << "<error-id: 0x" << (int)error_id << " GROUP-MOD-UNKNOWN-GROUP >" << std::endl;
374  } break;
375  case OFPETC_GROUP_MOD_CHAINED_GROUP: {
376  os << indent(4) << "<error-id: 0x" << (int)error_id << " GROUP-MOD-CHAINED-GROUP >" << std::endl;
377  } break;
378  case OFPETC_GROUP_MOD_BAD_TYPE: {
379  os << indent(4) << "<error-id: 0x" << (int)error_id << " GROUP-MOD-BAD-TYPE >" << std::endl;
380  } break;
381  case OFPETC_GROUP_MOD_BAD_COMMAND: {
382  os << indent(4) << "<error-id: 0x" << (int)error_id << " GROUP-MOD-BAD-COMMAND >" << std::endl;
383  } break;
384  case OFPETC_GROUP_MOD_BAD_BUCKET: {
385  os << indent(4) << "<error-id: 0x" << (int)error_id << " GROUP-MOD-BAD-BUCKET >" << std::endl;
386  } break;
387  case OFPETC_GROUP_MOD_BAD_WATCH: {
388  os << indent(4) << "<error-id: 0x" << (int)error_id << " GROUP-MOD-BAD-WATCH >" << std::endl;
389  } break;
390  case OFPETC_GROUP_MOD_EPERM: {
391  os << indent(4) << "<error-id: 0x" << (int)error_id << " GROUP-MOD-EPERM >" << std::endl;
392  } break;
393  case OFPETC_PORT_MOD_BAD_PORT: {
394  os << indent(4) << "<error-id: 0x" << (int)error_id << " PORT-MOD-BAD-PORT >" << std::endl;
395  } break;
396  case OFPETC_PORT_MOD_BAD_HW_ADDR: {
397  os << indent(4) << "<error-id: 0x" << (int)error_id << " PORT-MOD-BAD-HW-ADDR >" << std::endl;
398  } break;
399  case OFPETC_PORT_MOD_BAD_CONFIG: {
400  os << indent(4) << "<error-id: 0x" << (int)error_id << " PORT-MOD-BAD-CONFIG >" << std::endl;
401  } break;
402  case OFPETC_PORT_MOD_BAD_ADVERTISE: {
403  os << indent(4) << "<error-id: 0x" << (int)error_id << " PORT-MOD-BAD-ADVERTISE >" << std::endl;
404  } break;
405  case OFPETC_PORT_MOD_EPERM: {
406  os << indent(4) << "<error-id: 0x" << (int)error_id << " PORT-MOD-EPERM >" << std::endl;
407  } break;
408  case OFPETC_TABLE_MOD_BAD_TABLE: {
409  os << indent(4) << "<error-id: 0x" << (int)error_id << " TABLE-MOD-BAD-TABLE >" << std::endl;
410  } break;
411  case OFPETC_TABLE_MOD_BAD_CONFIG: {
412  os << indent(4) << "<error-id: 0x" << (int)error_id << " TABLE-MOD-BAD-CONFIG >" << std::endl;
413  } break;
414  case OFPETC_TABLE_MOD_EPERM: {
415  os << indent(4) << "<error-id: 0x" << (int)error_id << " TABLE-MOD-EPERM >" << std::endl;
416  } break;
417  case OFPETC_QUEUE_OP_BAD_PORT: {
418  os << indent(4) << "<error-id: 0x" << (int)error_id << " QUEUE-OP-BAD-PORT >" << std::endl;
419  } break;
420  case OFPETC_QUEUE_OP_BAD_QUEUE: {
421  os << indent(4) << "<error-id: 0x" << (int)error_id << " QUEUE-OP-BAD-QUEUE >" << std::endl;
422  } break;
423  case OFPETC_QUEUE_OP_EPERM: {
424  os << indent(4) << "<error-id: 0x" << (int)error_id << " QUEUE-OP-EPERM >" << std::endl;
425  } break;
426  case OFPETC_SWITCH_CONFIG_BAD_FLAGS: {
427  os << indent(4) << "<error-id: 0x" << (int)error_id << " SWITCH-CONFIG-BAD-FLAGS >" << std::endl;
428  } break;
429  case OFPETC_SWITCH_CONFIG_BAD_LEN: {
430  os << indent(4) << "<error-id: 0x" << (int)error_id << " SWITCH-CONFIG-BAD-LEN >" << std::endl;
431  } break;
432  case OFPETC_SWITCH_CONFIG_EPERM: {
433  os << indent(4) << "<error-id: 0x" << (int)error_id << " SWITCH-CONFIG-EPERM >" << std::endl;
434  } break;
435  case OFPETC_ROLE_REQUEST_STALE: {
436  os << indent(4) << "<error-id: 0x" << (int)error_id << " ROLE-REQUEST-STALE >" << std::endl;
437  } break;
438  case OFPETC_ROLE_REQUEST_UNSUP: {
439  os << indent(4) << "<error-id: 0x" << (int)error_id << " ROLE-REQUEST-UNSUP >" << std::endl;
440  } break;
441  case OFPETC_ROLE_REQUEST_BAD_ROLE: {
442  os << indent(4) << "<error-id: 0x" << (int)error_id << " ROLE-REQUEST-BAD-ROLE >" << std::endl;
443  } break;
444  case OFPETC_METER_MOD_UNKNOWN: {
445  os << indent(4) << "<error-id: 0x" << (int)error_id << " METER-MOD-UNKNOWN >" << std::endl;
446  } break;
447  case OFPETC_METER_MOD_METER_EXISTS: {
448  os << indent(4) << "<error-id: 0x" << (int)error_id << " METER-MOD-METER-EXISTS >" << std::endl;
449  } break;
450  case OFPETC_METER_MOD_INVALID_METER: {
451  os << indent(4) << "<error-id: 0x" << (int)error_id << " METER-MOD-INVALID-METER >" << std::endl;
452  } break;
453  case OFPETC_METER_MOD_UNKNOWN_METER: {
454  os << indent(4) << "<error-id: 0x" << (int)error_id << " METER-MOD-UNKNOWN-METER >" << std::endl;
455  } break;
456  case OFPETC_METER_MOD_BAD_COMMAND: {
457  os << indent(4) << "<error-id: 0x" << (int)error_id << " METER-MOD-BAD-COMMAND >" << std::endl;
458  } break;
459  case OFPETC_METER_MOD_BAD_FLAGS: {
460  os << indent(4) << "<error-id: 0x" << (int)error_id << " METER-MOD-BAD-FLAGS >" << std::endl;
461  } break;
462  case OFPETC_METER_MOD_BAD_RATE: {
463  os << indent(4) << "<error-id: 0x" << (int)error_id << " METER-MOD-BAD-RATE >" << std::endl;
464  } break;
465  case OFPETC_METER_MOD_BAD_BURST: {
466  os << indent(4) << "<error-id: 0x" << (int)error_id << " METER-MOD-BAD-BURST >" << std::endl;
467  } break;
468  case OFPETC_METER_MOD_BAD_BAND: {
469  os << indent(4) << "<error-id: 0x" << (int)error_id << " METER-MOD-BAD-BAND >" << std::endl;
470  } break;
471  case OFPETC_METER_MOD_BAD_BAND_VALUE: {
472  os << indent(4) << "<error-id: 0x" << (int)error_id << " METER-MOD-BAD-BAND-VALUE >" << std::endl;
473  } break;
474  case OFPETC_METER_MOD_OUT_OF_METERS: {
475  os << indent(4) << "<error-id: 0x" << (int)error_id << " METER-MOD-OUT-OF-METERS >" << std::endl;
476  } break;
477  case OFPETC_METER_MOD_OUT_OF_BANDS: {
478  os << indent(4) << "<error-id: 0x" << (int)error_id << " METER-MOD-OUT-OF-BANDS >" << std::endl;
479  } break;
480  case OFPETC_TABLE_FEATURES_BAD_TABLE: {
481  os << indent(4) << "<error-id: 0x" << (int)error_id << " TABLE-FEATURES-BAD-TABLE >" << std::endl;
482  } break;
483  case OFPETC_TABLE_FEATURES_BAD_METADATA: {
484  os << indent(4) << "<error-id: 0x" << (int)error_id << " TABLE-FEATURES-BAD-METADATA >" << std::endl;
485  } break;
486  case OFPETC_TABLE_FEATURES_BAD_TYPE: {
487  os << indent(4) << "<error-id: 0x" << (int)error_id << " TABLE-FEATURES-BAD-TYPE >" << std::endl;
488  } break;
489  case OFPETC_TABLE_FEATURES_BAD_LEN: {
490  os << indent(4) << "<error-id: 0x" << (int)error_id << " TABLE-FEATURES-BAD-LEN >" << std::endl;
491  } break;
492  case OFPETC_TABLE_FEATURES_BAD_ARGUMENT: {
493  os << indent(4) << "<error-id: 0x" << (int)error_id << " TABLE-FEATURES-BAD-ARGUMENT >" << std::endl;
494  } break;
495  case OFPETC_TABLE_FEATURES_EPERM: {
496  os << indent(4) << "<error-id: 0x" << (int)error_id << " TABLE-FEATURES-EPERM >" << std::endl;
497  } break;
498  case OFPETC_EXPERIMENTER: {
499  os << indent(4) << "<error-id: 0x" << (int)error_id << " EXPERIMENTER >" << std::endl;
500  } break;
501  default: {
502  os << indent(4) << "<err-type:" << (int)msg.get_err_type() << " >" << std::endl;
503  os << indent(4) << "<err-code:" << (int)msg.get_err_code() << " >" << std::endl;
504  };
505  }
506  os << std::dec;
507  indent i(6);
508  os << msg.body;
509  return os;
510  };
511 };
512 
513 
514 
516 public:
518  uint8_t ofp_version,
519  uint32_t xid,
520  uint8_t* data = 0,
521  size_t datalen = 0) :
522  cofmsg_error(ofp_version, xid, OFPET_BAD_REQUEST, OFPBRC_BAD_LEN, data, datalen) {};
523  virtual ~cofmsg_error_bad_request_bad_len() {};
524 };
525 
526 
527 
529 public:
531  uint8_t ofp_version,
532  uint32_t xid,
533  uint8_t* data = 0,
534  size_t datalen = 0) :
535  cofmsg_error(ofp_version, xid, OFPET_BAD_REQUEST, OFPBRC_BAD_VERSION, data, datalen) {};
537 };
538 
539 
540 
542 public:
544  uint8_t ofp_version,
545  uint32_t xid,
546  uint8_t* data = 0,
547  size_t datalen = 0) :
548  cofmsg_error(ofp_version, xid, OFPET_BAD_REQUEST, OFPBRC_BAD_TYPE, data, datalen) {};
549  virtual ~cofmsg_error_bad_request_bad_type() {};
550 };
551 
552 
553 
555 public:
557  uint8_t ofp_version,
558  uint32_t xid,
559  uint8_t* data = 0,
560  size_t datalen = 0) :
561  cofmsg_error(ofp_version, xid, OFPET_BAD_REQUEST, OFPBRC_BAD_STAT, data, datalen) {};
562  virtual ~cofmsg_error_bad_request_bad_stat() {};
563 };
564 
565 
566 
568 public:
570  uint8_t ofp_version,
571  uint32_t xid,
572  uint8_t* data = 0,
573  size_t datalen = 0) :
574  cofmsg_error(ofp_version, xid, OFPET_BAD_REQUEST, OFPBRC_BAD_EXPERIMENTER, data, datalen) {};
576 };
577 
578 
579 
581 public:
583  uint8_t ofp_version,
584  uint32_t xid,
585  uint8_t* data = 0,
586  size_t datalen = 0) :
587  cofmsg_error(ofp_version, xid, OFPET_BAD_REQUEST, OFPBRC_BAD_EXP_TYPE, data, datalen) {};
589 };
590 
591 
592 
594 public:
596  uint8_t ofp_version,
597  uint32_t xid,
598  uint8_t* data = 0,
599  size_t datalen = 0) :
600  cofmsg_error(ofp_version, xid, OFPET_BAD_REQUEST, OFPBRC_EPERM, data, datalen) {};
601  virtual ~cofmsg_error_bad_request_eperm() {};
602 };
603 
604 
605 
607 public:
609  uint8_t ofp_version,
610  uint32_t xid,
611  uint8_t* data = 0,
612  size_t datalen = 0) :
613  cofmsg_error(ofp_version, xid, OFPET_BAD_REQUEST, OFPBRC_BUFFER_EMPTY, data, datalen) {};
615 };
616 
617 
618 
620 public:
622  uint8_t ofp_version,
623  uint32_t xid,
624  uint8_t* data = 0,
625  size_t datalen = 0) :
626  cofmsg_error(ofp_version, xid, OFPET_BAD_REQUEST, OFPBRC_BUFFER_UNKNOWN, data, datalen) {};
628 };
629 
630 
631 
633 public:
635  uint8_t ofp_version,
636  uint32_t xid,
637  uint8_t* data = 0,
638  size_t datalen = 0) :
639  cofmsg_error(ofp_version, xid, OFPET_BAD_REQUEST, OFPBRC_BAD_TABLE_ID, data, datalen) {};
641 };
642 
643 
644 
646 public:
648  uint8_t ofp_version,
649  uint32_t xid,
650  uint8_t* data = 0,
651  size_t datalen = 0) :
652  cofmsg_error(ofp_version, xid, OFPET_BAD_REQUEST, OFPBRC_IS_SLAVE, data, datalen) {};
653  virtual ~cofmsg_error_bad_request_is_slave() {};
654 };
655 
656 
657 
659 public:
661  uint8_t ofp_version,
662  uint32_t xid,
663  uint8_t* data = 0,
664  size_t datalen = 0) :
665  cofmsg_error(ofp_version, xid, OFPET_BAD_REQUEST, OFPBRC_BAD_PORT, data, datalen) {};
666  virtual ~cofmsg_error_bad_request_bad_port() {};
667 };
668 
669 
670 
672 public:
674  uint8_t ofp_version,
675  uint32_t xid,
676  uint8_t* data = 0,
677  size_t datalen = 0) :
678  cofmsg_error(ofp_version, xid, OFPET_BAD_REQUEST, OFPBRC_BAD_PACKET, data, datalen) {};
680 };
681 
682 
683 
685 public:
687  uint8_t ofp_version,
688  uint32_t xid,
689  uint8_t* data = 0,
690  size_t datalen = 0) :
691  cofmsg_error(ofp_version, xid, OFPET_BAD_REQUEST, OFPBRC_MULTIPART_BUFFER_OVERFLOW, data, datalen) {};
693 };
694 
695 
696 
698 public:
700  uint8_t ofp_version,
701  uint32_t xid,
702  uint8_t* data = 0,
703  size_t datalen = 0) :
704  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_BAD_TYPE, data, datalen) {};
705  virtual ~cofmsg_error_bad_action_bad_type() {};
706 };
707 
708 
709 
711 public:
713  uint8_t ofp_version,
714  uint32_t xid,
715  uint8_t* data = 0,
716  size_t datalen = 0) :
717  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_BAD_LEN, data, datalen) {};
718  virtual ~cofmsg_error_bad_action_bad_len() {};
719 };
720 
721 
722 
724 public:
726  uint8_t ofp_version,
727  uint32_t xid,
728  uint8_t* data = 0,
729  size_t datalen = 0) :
730  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_BAD_EXPERIMENTER, data, datalen) {};
732 };
733 
734 
735 
737 public:
739  uint8_t ofp_version,
740  uint32_t xid,
741  uint8_t* data = 0,
742  size_t datalen = 0) :
743  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_BAD_EXP_TYPE, data, datalen) {};
745 };
746 
747 
748 
750 public:
752  uint8_t ofp_version,
753  uint32_t xid,
754  uint8_t* data = 0,
755  size_t datalen = 0) :
756  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_BAD_OUT_PORT, data, datalen) {};
758 };
759 
760 
761 
763 public:
765  uint8_t ofp_version,
766  uint32_t xid,
767  uint8_t* data = 0,
768  size_t datalen = 0) :
769  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_BAD_ARGUMENT, data, datalen) {};
771 };
772 
773 
774 
776 public:
778  uint8_t ofp_version,
779  uint32_t xid,
780  uint8_t* data = 0,
781  size_t datalen = 0) :
782  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_EPERM, data, datalen) {};
783  virtual ~cofmsg_error_bad_action_eperm() {};
784 };
785 
786 
787 
789 public:
791  uint8_t ofp_version,
792  uint32_t xid,
793  uint8_t* data = 0,
794  size_t datalen = 0) :
795  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_TOO_MANY, data, datalen) {};
796  virtual ~cofmsg_error_bad_action_too_many() {};
797 };
798 
799 
800 
802 public:
804  uint8_t ofp_version,
805  uint32_t xid,
806  uint8_t* data = 0,
807  size_t datalen = 0) :
808  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_BAD_QUEUE, data, datalen) {};
809  virtual ~cofmsg_error_bad_action_bad_queue() {};
810 };
811 
812 
813 
815 public:
817  uint8_t ofp_version,
818  uint32_t xid,
819  uint8_t* data = 0,
820  size_t datalen = 0) :
821  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_BAD_OUT_GROUP, data, datalen) {
822  if (ofp_version < rofl::openflow12::OFP_VERSION)
823  throw eBadVersion();
824  };
826 };
827 
828 
829 
831 public:
833  uint8_t ofp_version,
834  uint32_t xid,
835  uint8_t* data = 0,
836  size_t datalen = 0) :
837  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_MATCH_INCONSISTENT, data, datalen) {
838  if (ofp_version < rofl::openflow12::OFP_VERSION)
839  throw eBadVersion();
840  };
842 };
843 
844 
845 
847 public:
849  uint8_t ofp_version,
850  uint32_t xid,
851  uint8_t* data = 0,
852  size_t datalen = 0) :
853  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_UNSUPPORTED_ORDER, data, datalen) {
854  if (ofp_version < rofl::openflow12::OFP_VERSION)
855  throw eBadVersion();
856  };
858 };
859 
860 
861 
863 public:
865  uint8_t ofp_version,
866  uint32_t xid,
867  uint8_t* data = 0,
868  size_t datalen = 0) :
869  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_BAD_TAG, data, datalen) {
870  if (ofp_version < rofl::openflow12::OFP_VERSION)
871  throw eBadVersion();
872  };
873  virtual ~cofmsg_error_bad_action_bad_tag() {};
874 };
875 
876 
877 
879 public:
881  uint8_t ofp_version,
882  uint32_t xid,
883  uint8_t* data = 0,
884  size_t datalen = 0) :
885  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_BAD_SET_LEN, data, datalen) {
886  if (ofp_version < rofl::openflow13::OFP_VERSION)
887  throw eBadVersion();
888  };
890 };
891 
892 
893 
895 public:
897  uint8_t ofp_version,
898  uint32_t xid,
899  uint8_t* data = 0,
900  size_t datalen = 0) :
901  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_BAD_SET_TYPE, data, datalen) {
902  if (ofp_version < rofl::openflow13::OFP_VERSION)
903  throw eBadVersion();
904  };
906 };
907 
908 
909 
911 public:
913  uint8_t ofp_version,
914  uint32_t xid,
915  uint8_t* data = 0,
916  size_t datalen = 0) :
917  cofmsg_error(ofp_version, xid, OFPET_BAD_ACTION, OFPBAC_BAD_SET_ARGUMENT, data, datalen) {
918  if (ofp_version < rofl::openflow13::OFP_VERSION)
919  throw eBadVersion();
920  };
922 };
923 
924 
925 
927 public:
929  uint8_t ofp_version,
930  uint32_t xid,
931  uint8_t* data = 0,
932  size_t datalen = 0) :
933  cofmsg_error(ofp_version, xid, OFPET_BAD_INSTRUCTION, OFPBIC_UNKNOWN_INST, data, datalen) {
934  if (ofp_version < rofl::openflow12::OFP_VERSION)
935  throw eBadVersion();
936  };
938 };
939 
940 
941 
943 public:
945  uint8_t ofp_version,
946  uint32_t xid,
947  uint8_t* data = 0,
948  size_t datalen = 0) :
949  cofmsg_error(ofp_version, xid, OFPET_BAD_INSTRUCTION, OFPBIC_UNSUP_INST, data, datalen) {
950  if (ofp_version < rofl::openflow12::OFP_VERSION)
951  throw eBadVersion();
952  };
953  virtual ~cofmsg_error_bad_inst_unsup_inst() {};
954 };
955 
956 
957 
959 public:
961  uint8_t ofp_version,
962  uint32_t xid,
963  uint8_t* data = 0,
964  size_t datalen = 0) :
965  cofmsg_error(ofp_version, xid, OFPET_BAD_INSTRUCTION, OFPBIC_BAD_TABLE_ID, data, datalen) {
966  if (ofp_version < rofl::openflow12::OFP_VERSION)
967  throw eBadVersion();
968  };
970 };
971 
972 
973 
975 public:
977  uint8_t ofp_version,
978  uint32_t xid,
979  uint8_t* data = 0,
980  size_t datalen = 0) :
981  cofmsg_error(ofp_version, xid, OFPET_BAD_INSTRUCTION, OFPBIC_UNSUP_METADATA, data, datalen) {
982  if (ofp_version < rofl::openflow12::OFP_VERSION)
983  throw eBadVersion();
984  };
986 };
987 
988 
989 
991 public:
993  uint8_t ofp_version,
994  uint32_t xid,
995  uint8_t* data = 0,
996  size_t datalen = 0) :
997  cofmsg_error(ofp_version, xid, OFPET_BAD_INSTRUCTION, OFPBIC_UNSUP_METADATA_MASK, data, datalen) {
998  if (ofp_version < rofl::openflow12::OFP_VERSION)
999  throw eBadVersion();
1000  };
1002 };
1003 
1004 
1005 
1007 public:
1009  uint8_t ofp_version,
1010  uint32_t xid,
1011  uint8_t* data = 0,
1012  size_t datalen = 0) :
1013  cofmsg_error(ofp_version, xid, OFPET_BAD_INSTRUCTION, OFPBIC_BAD_EXPERIMENTER, data, datalen) {
1014  if (ofp_version < rofl::openflow12::OFP_VERSION)
1015  throw eBadVersion();
1016  };
1018 };
1019 
1020 
1021 
1023 public:
1025  uint8_t ofp_version,
1026  uint32_t xid,
1027  uint8_t* data = 0,
1028  size_t datalen = 0) :
1029  cofmsg_error(ofp_version, xid, OFPET_BAD_INSTRUCTION, OFPBIC_BAD_EXP_TYPE, data, datalen) {
1030  if (ofp_version < rofl::openflow13::OFP_VERSION)
1031  throw eBadVersion();
1032  };
1033  virtual ~cofmsg_error_bad_inst_bad_exp_type() {};
1034 };
1035 
1036 
1037 
1039 public:
1041  uint8_t ofp_version,
1042  uint32_t xid,
1043  uint8_t* data = 0,
1044  size_t datalen = 0) :
1045  cofmsg_error(ofp_version, xid, OFPET_BAD_INSTRUCTION, OFPBIC_BAD_LEN, data, datalen) {
1046  if (ofp_version < rofl::openflow13::OFP_VERSION)
1047  throw eBadVersion();
1048  };
1049  virtual ~cofmsg_error_bad_inst_bad_len() {};
1050 };
1051 
1052 
1053 
1055 public:
1057  uint8_t ofp_version,
1058  uint32_t xid,
1059  uint8_t* data = 0,
1060  size_t datalen = 0) :
1061  cofmsg_error(ofp_version, xid, OFPET_BAD_INSTRUCTION, OFPBIC_EPERM, data, datalen) {
1062  if (ofp_version < rofl::openflow13::OFP_VERSION)
1063  throw eBadVersion();
1064  };
1065  virtual ~cofmsg_error_bad_inst_eperm() {};
1066 };
1067 
1068 
1069 
1071 public:
1073  uint8_t ofp_version,
1074  uint32_t xid,
1075  uint8_t* data = 0,
1076  size_t datalen = 0) :
1077  cofmsg_error(ofp_version, xid, OFPET_BAD_MATCH, OFPBMC_BAD_TYPE, data, datalen) {
1078  if (ofp_version < rofl::openflow12::OFP_VERSION)
1079  throw eBadVersion();
1080  };
1081  virtual ~cofmsg_error_bad_match_bad_type() {};
1082 };
1083 
1084 
1085 
1087 public:
1089  uint8_t ofp_version,
1090  uint32_t xid,
1091  uint8_t* data = 0,
1092  size_t datalen = 0) :
1093  cofmsg_error(ofp_version, xid, OFPET_BAD_MATCH, OFPBMC_BAD_LEN, data, datalen) {
1094  if (ofp_version < rofl::openflow12::OFP_VERSION)
1095  throw eBadVersion();
1096  };
1097  virtual ~cofmsg_error_bad_match_bad_len() {};
1098 };
1099 
1100 
1101 
1103 public:
1105  uint8_t ofp_version,
1106  uint32_t xid,
1107  uint8_t* data = 0,
1108  size_t datalen = 0) :
1109  cofmsg_error(ofp_version, xid, OFPET_BAD_MATCH, OFPBMC_BAD_TAG, data, datalen) {
1110  if (ofp_version < rofl::openflow12::OFP_VERSION)
1111  throw eBadVersion();
1112  };
1113  virtual ~cofmsg_error_bad_match_bad_tag() {};
1114 };
1115 
1116 
1117 
1119 public:
1121  uint8_t ofp_version,
1122  uint32_t xid,
1123  uint8_t* data = 0,
1124  size_t datalen = 0) :
1125  cofmsg_error(ofp_version, xid, OFPET_BAD_MATCH, OFPBMC_BAD_DL_ADDR_MASK, data, datalen) {
1126  if (ofp_version < rofl::openflow12::OFP_VERSION)
1127  throw eBadVersion();
1128  };
1130 };
1131 
1132 
1133 
1135 public:
1137  uint8_t ofp_version,
1138  uint32_t xid,
1139  uint8_t* data = 0,
1140  size_t datalen = 0) :
1141  cofmsg_error(ofp_version, xid, OFPET_BAD_MATCH, OFPBMC_BAD_NW_ADDR_MASK, data, datalen) {
1142  if (ofp_version < rofl::openflow12::OFP_VERSION)
1143  throw eBadVersion();
1144  };
1146 };
1147 
1148 
1149 
1151 public:
1153  uint8_t ofp_version,
1154  uint32_t xid,
1155  uint8_t* data = 0,
1156  size_t datalen = 0) :
1157  cofmsg_error(ofp_version, xid, OFPET_BAD_MATCH, OFPBMC_BAD_WILDCARDS, data, datalen) {
1158  if (ofp_version < rofl::openflow12::OFP_VERSION)
1159  throw eBadVersion();
1160  };
1162 };
1163 
1164 
1165 
1167 public:
1169  uint8_t ofp_version,
1170  uint32_t xid,
1171  uint8_t* data = 0,
1172  size_t datalen = 0) :
1173  cofmsg_error(ofp_version, xid, OFPET_BAD_MATCH, OFPBMC_BAD_FIELD, data, datalen) {
1174  if (ofp_version < rofl::openflow12::OFP_VERSION)
1175  throw eBadVersion();
1176  };
1177  virtual ~cofmsg_error_bad_match_bad_field() {};
1178 };
1179 
1180 
1181 
1183 public:
1185  uint8_t ofp_version,
1186  uint32_t xid,
1187  uint8_t* data = 0,
1188  size_t datalen = 0) :
1189  cofmsg_error(ofp_version, xid, OFPET_BAD_MATCH, OFPBMC_BAD_VALUE, data, datalen) {
1190  if (ofp_version < rofl::openflow12::OFP_VERSION)
1191  throw eBadVersion();
1192  };
1193  virtual ~cofmsg_error_bad_match_bad_value() {};
1194 };
1195 
1196 
1197 
1199 public:
1201  uint8_t ofp_version,
1202  uint32_t xid,
1203  uint8_t* data = 0,
1204  size_t datalen = 0) :
1205  cofmsg_error(ofp_version, xid, OFPET_BAD_MATCH, OFPBMC_BAD_MASK, data, datalen) {
1206  if (ofp_version < rofl::openflow12::OFP_VERSION)
1207  throw eBadVersion();
1208  };
1209  virtual ~cofmsg_error_bad_match_bad_mask() {};
1210 };
1211 
1212 
1213 
1215 public:
1217  uint8_t ofp_version,
1218  uint32_t xid,
1219  uint8_t* data = 0,
1220  size_t datalen = 0) :
1221  cofmsg_error(ofp_version, xid, OFPET_BAD_MATCH, OFPBMC_BAD_PREREQ, data, datalen) {
1222  if (ofp_version < rofl::openflow12::OFP_VERSION)
1223  throw eBadVersion();
1224  };
1225  virtual ~cofmsg_error_bad_match_bad_prereq() {};
1226 };
1227 
1228 
1229 
1231 public:
1233  uint8_t ofp_version,
1234  uint32_t xid,
1235  uint8_t* data = 0,
1236  size_t datalen = 0) :
1237  cofmsg_error(ofp_version, xid, OFPET_BAD_MATCH, OFPBMC_DUP_FIELD, data, datalen) {
1238  if (ofp_version < rofl::openflow12::OFP_VERSION)
1239  throw eBadVersion();
1240  };
1241  virtual ~cofmsg_error_bad_match_dup_field() {};
1242 };
1243 
1244 
1245 
1247 public:
1249  uint8_t ofp_version,
1250  uint32_t xid,
1251  uint8_t* data = 0,
1252  size_t datalen = 0) :
1253  cofmsg_error(ofp_version, xid, OFPET_BAD_MATCH, OFPBMC_EPERM, data, datalen) {
1254  if (ofp_version < rofl::openflow12::OFP_VERSION)
1255  throw eBadVersion();
1256  };
1257  virtual ~cofmsg_error_bad_match_eperm() {};
1258 };
1259 
1260 
1261 
1263 public:
1265  uint8_t ofp_version,
1266  uint32_t xid,
1267  uint8_t* data = 0,
1268  size_t datalen = 0) :
1269  cofmsg_error(ofp_version, xid, OFPET_HELLO_FAILED, OFPHFC_INCOMPATIBLE, data, datalen) {
1270  };
1272 };
1273 
1274 
1275 
1277 public:
1279  uint8_t ofp_version,
1280  uint32_t xid,
1281  uint8_t* data = 0,
1282  size_t datalen = 0) :
1283  cofmsg_error(ofp_version, xid, OFPET_HELLO_FAILED, OFPHFC_EPERM, data, datalen) {
1284  if (ofp_version < rofl::openflow12::OFP_VERSION)
1285  throw eBadVersion();
1286  };
1287  virtual ~cofmsg_error_hello_failed_eperm() {};
1288 };
1289 
1290 
1291 
1293 public:
1295  uint8_t ofp_version,
1296  uint32_t xid,
1297  uint8_t* data = 0,
1298  size_t datalen = 0) :
1299  cofmsg_error(ofp_version, xid, OFPET_SWITCH_CONFIG_FAILED, OFPSCFC_BAD_FLAGS, data, datalen) {
1300  if (ofp_version < rofl::openflow12::OFP_VERSION)
1301  throw eBadVersion();
1302  };
1304 };
1305 
1306 
1307 
1309 public:
1311  uint8_t ofp_version,
1312  uint32_t xid,
1313  uint8_t* data = 0,
1314  size_t datalen = 0) :
1315  cofmsg_error(ofp_version, xid, OFPET_SWITCH_CONFIG_FAILED, OFPSCFC_BAD_LEN, data, datalen) {
1316  if (ofp_version < rofl::openflow12::OFP_VERSION)
1317  throw eBadVersion();
1318  };
1320 };
1321 
1322 
1323 
1325 public:
1327  uint8_t ofp_version,
1328  uint32_t xid,
1329  uint8_t* data = 0,
1330  size_t datalen = 0) :
1331  cofmsg_error(ofp_version, xid, OFPET_SWITCH_CONFIG_FAILED, OFPSCFC_EPERM, data, datalen) {
1332  if (ofp_version < rofl::openflow12::OFP_VERSION)
1333  throw eBadVersion();
1334  };
1336 };
1337 
1338 
1339 
1341 public:
1343  uint8_t ofp_version,
1344  uint32_t xid,
1345  uint8_t* data = 0,
1346  size_t datalen = 0) :
1347  cofmsg_error(ofp_version, xid, OFPET_FLOW_MOD_FAILED, OFPFMFC_UNKNOWN, data, datalen) {
1348  if (ofp_version < rofl::openflow12::OFP_VERSION)
1349  throw eBadVersion();
1350  };
1352 };
1353 
1354 
1355 
1357 public:
1359  uint8_t ofp_version,
1360  uint32_t xid,
1361  uint8_t* data = 0,
1362  size_t datalen = 0) :
1363  cofmsg_error(ofp_version, xid, 0, 0, data, datalen) {
1364  switch (ofp_version) {
1365  case rofl::openflow10::OFP_VERSION: {
1366  set_err_type(rofl::openflow10::OFPET_FLOW_MOD_FAILED);
1367  set_err_code(rofl::openflow10::OFPFMFC_ALL_TABLES_FULL);
1368  } break;
1369  case rofl::openflow12::OFP_VERSION:
1370  case rofl::openflow13::OFP_VERSION:
1371  default: {
1372  set_err_type(rofl::openflow12::OFPET_FLOW_MOD_FAILED);
1373  set_err_code(rofl::openflow12::OFPFMFC_TABLE_FULL);
1374  };
1375  }
1376  };
1378 };
1379 
1380 
1381 
1383 public:
1385  uint8_t ofp_version,
1386  uint32_t xid,
1387  uint8_t* data = 0,
1388  size_t datalen = 0) :
1389  cofmsg_error(ofp_version, xid, OFPET_FLOW_MOD_FAILED, OFPFMFC_BAD_TABLE_ID, data, datalen) {
1390  if (ofp_version < rofl::openflow12::OFP_VERSION)
1391  throw eBadVersion();
1392  };
1394 };
1395 
1396 
1397 
1399 public:
1401  uint8_t ofp_version,
1402  uint32_t xid,
1403  uint8_t* data = 0,
1404  size_t datalen = 0) :
1405  cofmsg_error(ofp_version, xid, 0, 0, data, datalen) {
1406  switch (ofp_version) {
1407  case rofl::openflow10::OFP_VERSION: {
1408  set_err_type(rofl::openflow10::OFPET_FLOW_MOD_FAILED);
1409  set_err_code(rofl::openflow10::OFPFMFC_OVERLAP);
1410  } break;
1411  case rofl::openflow12::OFP_VERSION:
1412  case rofl::openflow13::OFP_VERSION:
1413  default: {
1414  set_err_type(rofl::openflow12::OFPET_FLOW_MOD_FAILED);
1415  set_err_code(rofl::openflow12::OFPFMFC_OVERLAP);
1416  };
1417  }
1418  };
1420 };
1421 
1422 
1423 
1425 public:
1427  uint8_t ofp_version,
1428  uint32_t xid,
1429  uint8_t* data = 0,
1430  size_t datalen = 0) :
1431  cofmsg_error(ofp_version, xid, 0, 0, data, datalen) {
1432  switch (ofp_version) {
1433  case rofl::openflow10::OFP_VERSION: {
1434  set_err_type(rofl::openflow10::OFPET_FLOW_MOD_FAILED);
1435  set_err_code(rofl::openflow10::OFPFMFC_EPERM);
1436  } break;
1437  case rofl::openflow12::OFP_VERSION:
1438  case rofl::openflow13::OFP_VERSION:
1439  default: {
1440  set_err_type(rofl::openflow12::OFPET_FLOW_MOD_FAILED);
1441  set_err_code(rofl::openflow12::OFPFMFC_EPERM);
1442  };
1443  }
1444  };
1445  virtual ~cofmsg_error_flow_mod_failed_eperm() {};
1446 };
1447 
1448 
1449 
1451 public:
1453  uint8_t ofp_version,
1454  uint32_t xid,
1455  uint8_t* data = 0,
1456  size_t datalen = 0) :
1457  cofmsg_error(ofp_version, xid, 0, 0, data, datalen) {
1458  switch (ofp_version) {
1459  case rofl::openflow10::OFP_VERSION: {
1460  set_err_type(rofl::openflow10::OFPET_FLOW_MOD_FAILED);
1461  set_err_code(rofl::openflow10::OFPFMFC_BAD_EMERG_TIMEOUT);
1462  } break;
1463  case rofl::openflow12::OFP_VERSION:
1464  case rofl::openflow13::OFP_VERSION:
1465  default: {
1466  set_err_type(rofl::openflow12::OFPET_FLOW_MOD_FAILED);
1467  set_err_code(rofl::openflow12::OFPFMFC_BAD_TIMEOUT);
1468  };
1469  }
1470  };
1472 };
1473 
1474 
1475 
1477 public:
1479  uint8_t ofp_version,
1480  uint32_t xid,
1481  uint8_t* data = 0,
1482  size_t datalen = 0) :
1483  cofmsg_error(ofp_version, xid, 0, 0, data, datalen) {
1484  switch (ofp_version) {
1485  case rofl::openflow10::OFP_VERSION: {
1486  set_err_type(rofl::openflow10::OFPET_FLOW_MOD_FAILED);
1487  set_err_code(rofl::openflow10::OFPFMFC_BAD_COMMAND);
1488  } break;
1489  case rofl::openflow12::OFP_VERSION:
1490  case rofl::openflow13::OFP_VERSION:
1491  default: {
1492  set_err_type(rofl::openflow12::OFPET_FLOW_MOD_FAILED);
1493  set_err_code(rofl::openflow12::OFPFMFC_BAD_COMMAND);
1494  };
1495  }
1496  };
1498 };
1499 
1500 
1501 
1503 public:
1505  uint8_t ofp_version,
1506  uint32_t xid,
1507  uint8_t* data = 0,
1508  size_t datalen = 0) :
1509  cofmsg_error(ofp_version, xid, rofl::openflow10::OFPET_FLOW_MOD_FAILED, rofl::openflow10::OFPFMFC_UNSUPPORTED, data, datalen) {
1510  if (ofp_version > rofl::openflow10::OFP_VERSION)
1511  throw eBadVersion();
1512  };
1514 };
1515 
1516 
1517 
1519 public:
1521  uint8_t ofp_version,
1522  uint32_t xid,
1523  uint8_t* data = 0,
1524  size_t datalen = 0) :
1525  cofmsg_error(ofp_version, xid, OFPET_FLOW_MOD_FAILED, OFPFMFC_BAD_FLAGS, data, datalen) {
1526  if (ofp_version < rofl::openflow13::OFP_VERSION)
1527  throw eBadVersion();
1528  };
1530 };
1531 
1532 
1533 
1535 public:
1537  uint8_t ofp_version,
1538  uint32_t xid,
1539  uint8_t* data = 0,
1540  size_t datalen = 0) :
1541  cofmsg_error(ofp_version, xid, OFPET_GROUP_MOD_FAILED, OFPGMFC_GROUP_EXISTS, data, datalen) {
1542  if (ofp_version < rofl::openflow12::OFP_VERSION)
1543  throw eBadVersion();
1544  };
1546 };
1547 
1548 
1549 
1551 public:
1553  uint8_t ofp_version,
1554  uint32_t xid,
1555  uint8_t* data = 0,
1556  size_t datalen = 0) :
1557  cofmsg_error(ofp_version, xid, OFPET_GROUP_MOD_FAILED, OFPGMFC_INVALID_GROUP, data, datalen) {
1558  if (ofp_version < rofl::openflow12::OFP_VERSION)
1559  throw eBadVersion();
1560  };
1562 };
1563 
1564 
1565 
1567 public:
1569  uint8_t ofp_version,
1570  uint32_t xid,
1571  uint8_t* data = 0,
1572  size_t datalen = 0) :
1573  cofmsg_error(ofp_version, xid, OFPET_GROUP_MOD_FAILED, OFPGMFC_WEIGHT_UNSUPPORTED, data, datalen) {
1574  if (ofp_version < rofl::openflow12::OFP_VERSION)
1575  throw eBadVersion();
1576  };
1578 };
1579 
1580 
1581 
1583 public:
1585  uint8_t ofp_version,
1586  uint32_t xid,
1587  uint8_t* data = 0,
1588  size_t datalen = 0) :
1589  cofmsg_error(ofp_version, xid, OFPET_GROUP_MOD_FAILED, OFPGMFC_OUT_OF_GROUPS, data, datalen) {
1590  if (ofp_version < rofl::openflow12::OFP_VERSION)
1591  throw eBadVersion();
1592  };
1594 };
1595 
1596 
1597 
1599 public:
1601  uint8_t ofp_version,
1602  uint32_t xid,
1603  uint8_t* data = 0,
1604  size_t datalen = 0) :
1605  cofmsg_error(ofp_version, xid, OFPET_GROUP_MOD_FAILED, OFPGMFC_OUT_OF_BUCKETS, data, datalen) {
1606  if (ofp_version < rofl::openflow12::OFP_VERSION)
1607  throw eBadVersion();
1608  };
1610 };
1611 
1612 
1613 
1615 public:
1617  uint8_t ofp_version,
1618  uint32_t xid,
1619  uint8_t* data = 0,
1620  size_t datalen = 0) :
1621  cofmsg_error(ofp_version, xid, OFPET_GROUP_MOD_FAILED, OFPGMFC_CHAINING_UNSUPPORTED, data, datalen) {
1622  if (ofp_version < rofl::openflow12::OFP_VERSION)
1623  throw eBadVersion();
1624  };
1626 };
1627 
1628 
1629 
1631 public:
1633  uint8_t ofp_version,
1634  uint32_t xid,
1635  uint8_t* data = 0,
1636  size_t datalen = 0) :
1637  cofmsg_error(ofp_version, xid, OFPET_GROUP_MOD_FAILED, OFPGMFC_WATCH_UNSUPPORTED, data, datalen) {
1638  if (ofp_version < rofl::openflow12::OFP_VERSION)
1639  throw eBadVersion();
1640  };
1642 };
1643 
1644 
1645 
1647 public:
1649  uint8_t ofp_version,
1650  uint32_t xid,
1651  uint8_t* data = 0,
1652  size_t datalen = 0) :
1653  cofmsg_error(ofp_version, xid, OFPET_GROUP_MOD_FAILED, OFPGMFC_LOOP, data, datalen) {
1654  if (ofp_version < rofl::openflow12::OFP_VERSION)
1655  throw eBadVersion();
1656  };
1657  virtual ~cofmsg_error_group_mod_failed_loop() {};
1658 };
1659 
1660 
1661 
1663 public:
1665  uint8_t ofp_version,
1666  uint32_t xid,
1667  uint8_t* data = 0,
1668  size_t datalen = 0) :
1669  cofmsg_error(ofp_version, xid, OFPET_GROUP_MOD_FAILED, OFPGMFC_UNKNOWN_GROUP, data, datalen) {
1670  if (ofp_version < rofl::openflow12::OFP_VERSION)
1671  throw eBadVersion();
1672  };
1674 };
1675 
1676 
1677 
1679 public:
1681  uint8_t ofp_version,
1682  uint32_t xid,
1683  uint8_t* data = 0,
1684  size_t datalen = 0) :
1685  cofmsg_error(ofp_version, xid, OFPET_GROUP_MOD_FAILED, OFPGMFC_CHAINED_GROUP, data, datalen) {
1686  if (ofp_version < rofl::openflow12::OFP_VERSION)
1687  throw eBadVersion();
1688  };
1690 };
1691 
1692 
1693 
1695 public:
1697  uint8_t ofp_version,
1698  uint32_t xid,
1699  uint8_t* data = 0,
1700  size_t datalen = 0) :
1701  cofmsg_error(ofp_version, xid, OFPET_GROUP_MOD_FAILED, OFPGMFC_BAD_TYPE, data, datalen) {
1702  if (ofp_version < rofl::openflow12::OFP_VERSION)
1703  throw eBadVersion();
1704  };
1706 };
1707 
1708 
1709 
1711 public:
1713  uint8_t ofp_version,
1714  uint32_t xid,
1715  uint8_t* data = 0,
1716  size_t datalen = 0) :
1717  cofmsg_error(ofp_version, xid, OFPET_GROUP_MOD_FAILED, OFPGMFC_BAD_COMMAND, data, datalen) {
1718  if (ofp_version < rofl::openflow12::OFP_VERSION)
1719  throw eBadVersion();
1720  };
1722 };
1723 
1724 
1725 
1727 public:
1729  uint8_t ofp_version,
1730  uint32_t xid,
1731  uint8_t* data = 0,
1732  size_t datalen = 0) :
1733  cofmsg_error(ofp_version, xid, OFPET_GROUP_MOD_FAILED, OFPGMFC_BAD_BUCKET, data, datalen) {
1734  if (ofp_version < rofl::openflow12::OFP_VERSION)
1735  throw eBadVersion();
1736  };
1738 };
1739 
1740 
1741 
1743 public:
1745  uint8_t ofp_version,
1746  uint32_t xid,
1747  uint8_t* data = 0,
1748  size_t datalen = 0) :
1749  cofmsg_error(ofp_version, xid, OFPET_GROUP_MOD_FAILED, OFPGMFC_BAD_WATCH, data, datalen) {
1750  if (ofp_version < rofl::openflow12::OFP_VERSION)
1751  throw eBadVersion();
1752  };
1754 };
1755 
1756 
1757 
1759 public:
1761  uint8_t ofp_version,
1762  uint32_t xid,
1763  uint8_t* data = 0,
1764  size_t datalen = 0) :
1765  cofmsg_error(ofp_version, xid, OFPET_GROUP_MOD_FAILED, OFPGMFC_EPERM, data, datalen) {
1766  if (ofp_version < rofl::openflow12::OFP_VERSION)
1767  throw eBadVersion();
1768  };
1770 };
1771 
1772 
1773 
1775 public:
1777  uint8_t ofp_version,
1778  uint32_t xid,
1779  uint8_t* data = 0,
1780  size_t datalen = 0) :
1781  cofmsg_error(ofp_version, xid, OFPET_PORT_MOD_FAILED, OFPPMFC_BAD_PORT, data, datalen) {
1782  if (ofp_version < rofl::openflow12::OFP_VERSION)
1783  throw eBadVersion();
1784  };
1786 };
1787 
1788 
1789 
1791 public:
1793  uint8_t ofp_version,
1794  uint32_t xid,
1795  uint8_t* data = 0,
1796  size_t datalen = 0) :
1797  cofmsg_error(ofp_version, xid, OFPET_PORT_MOD_FAILED, OFPPMFC_BAD_HW_ADDR, data, datalen) {
1798  if (ofp_version < rofl::openflow12::OFP_VERSION)
1799  throw eBadVersion();
1800  };
1802 };
1803 
1804 
1805 
1807 public:
1809  uint8_t ofp_version,
1810  uint32_t xid,
1811  uint8_t* data = 0,
1812  size_t datalen = 0) :
1813  cofmsg_error(ofp_version, xid, OFPET_PORT_MOD_FAILED, OFPPMFC_BAD_CONFIG, data, datalen) {
1814  if (ofp_version < rofl::openflow12::OFP_VERSION)
1815  throw eBadVersion();
1816  };
1818 };
1819 
1820 
1821 
1823 public:
1825  uint8_t ofp_version,
1826  uint32_t xid,
1827  uint8_t* data = 0,
1828  size_t datalen = 0) :
1829  cofmsg_error(ofp_version, xid, OFPET_PORT_MOD_FAILED, OFPPMFC_BAD_ADVERTISE, data, datalen) {
1830  if (ofp_version < rofl::openflow12::OFP_VERSION)
1831  throw eBadVersion();
1832  };
1834 };
1835 
1836 
1837 
1839 public:
1841  uint8_t ofp_version,
1842  uint32_t xid,
1843  uint8_t* data = 0,
1844  size_t datalen = 0) :
1845  cofmsg_error(ofp_version, xid, OFPET_PORT_MOD_FAILED, OFPPMFC_EPERM, data, datalen) {
1846  if (ofp_version < rofl::openflow12::OFP_VERSION)
1847  throw eBadVersion();
1848  };
1849  virtual ~cofmsg_error_port_mod_failed_eperm() {};
1850 };
1851 
1852 
1853 
1855 public:
1857  uint8_t ofp_version,
1858  uint32_t xid,
1859  uint8_t* data = 0,
1860  size_t datalen = 0) :
1861  cofmsg_error(ofp_version, xid, OFPET_TABLE_MOD_FAILED, OFPTMFC_BAD_TABLE, data, datalen) {
1862  if (ofp_version < rofl::openflow12::OFP_VERSION)
1863  throw eBadVersion();
1864  };
1866 };
1867 
1868 
1869 
1871 public:
1873  uint8_t ofp_version,
1874  uint32_t xid,
1875  uint8_t* data = 0,
1876  size_t datalen = 0) :
1877  cofmsg_error(ofp_version, xid, OFPET_TABLE_MOD_FAILED, OFPTMFC_BAD_CONFIG, data, datalen) {
1878  if (ofp_version < rofl::openflow12::OFP_VERSION)
1879  throw eBadVersion();
1880  };
1882 };
1883 
1884 
1885 
1887 public:
1889  uint8_t ofp_version,
1890  uint32_t xid,
1891  uint8_t* data = 0,
1892  size_t datalen = 0) :
1893  cofmsg_error(ofp_version, xid, OFPET_TABLE_MOD_FAILED, OFPTMFC_EPERM, data, datalen) {
1894  if (ofp_version < rofl::openflow12::OFP_VERSION)
1895  throw eBadVersion();
1896  };
1898 };
1899 
1900 
1901 
1903 public:
1905  uint8_t ofp_version,
1906  uint32_t xid,
1907  uint8_t* data = 0,
1908  size_t datalen = 0) :
1909  cofmsg_error(ofp_version, xid, OFPET_ROLE_REQUEST_FAILED, OFPRRFC_STALE, data, datalen) {
1910  if (ofp_version < rofl::openflow12::OFP_VERSION)
1911  throw eBadVersion();
1912  };
1914 };
1915 
1916 
1917 
1919 public:
1921  uint8_t ofp_version,
1922  uint32_t xid,
1923  uint8_t* data = 0,
1924  size_t datalen = 0) :
1925  cofmsg_error(ofp_version, xid, OFPET_ROLE_REQUEST_FAILED, OFPRRFC_UNSUP, data, datalen) {
1926  if (ofp_version < rofl::openflow12::OFP_VERSION)
1927  throw eBadVersion();
1928  };
1930 };
1931 
1932 
1933 
1935 public:
1937  uint8_t ofp_version,
1938  uint32_t xid,
1939  uint8_t* data = 0,
1940  size_t datalen = 0) :
1941  cofmsg_error(ofp_version, xid, OFPET_ROLE_REQUEST_FAILED, OFPRRFC_BAD_ROLE, data, datalen) {
1942  if (ofp_version < rofl::openflow12::OFP_VERSION)
1943  throw eBadVersion();
1944  };
1946 };
1947 
1948 
1949 
1951 public:
1953  uint8_t ofp_version,
1954  uint32_t xid,
1955  uint8_t* data = 0,
1956  size_t datalen = 0) :
1957  cofmsg_error(ofp_version, xid, OFPET_METER_MOD_FAILED, OFPMMFC_UNKNOWN, data, datalen) {
1958  if (ofp_version < rofl::openflow13::OFP_VERSION)
1959  throw eBadVersion();
1960  };
1961  virtual ~cofmsg_error_meter_mod_unknown() {};
1962 };
1963 
1964 
1965 
1967 public:
1969  uint8_t ofp_version,
1970  uint32_t xid,
1971  uint8_t* data = 0,
1972  size_t datalen = 0) :
1973  cofmsg_error(ofp_version, xid, OFPET_METER_MOD_FAILED, OFPMMFC_METER_EXISTS, data, datalen) {
1974  if (ofp_version < rofl::openflow13::OFP_VERSION)
1975  throw eBadVersion();
1976  };
1978 };
1979 
1980 
1981 
1983 public:
1985  uint8_t ofp_version,
1986  uint32_t xid,
1987  uint8_t* data = 0,
1988  size_t datalen = 0) :
1989  cofmsg_error(ofp_version, xid, OFPET_METER_MOD_FAILED, OFPMMFC_INVALID_METER, data, datalen) {
1990  if (ofp_version < rofl::openflow13::OFP_VERSION)
1991  throw eBadVersion();
1992  };
1994 };
1995 
1996 
1997 
1999 public:
2001  uint8_t ofp_version,
2002  uint32_t xid,
2003  uint8_t* data = 0,
2004  size_t datalen = 0) :
2005  cofmsg_error(ofp_version, xid, OFPET_METER_MOD_FAILED, OFPMMFC_UNKNOWN_METER, data, datalen) {
2006  if (ofp_version < rofl::openflow13::OFP_VERSION)
2007  throw eBadVersion();
2008  };
2010 };
2011 
2012 
2013 
2015 public:
2017  uint8_t ofp_version,
2018  uint32_t xid,
2019  uint8_t* data = 0,
2020  size_t datalen = 0) :
2021  cofmsg_error(ofp_version, xid, OFPET_METER_MOD_FAILED, OFPMMFC_BAD_COMMAND, data, datalen) {
2022  if (ofp_version < rofl::openflow13::OFP_VERSION)
2023  throw eBadVersion();
2024  };
2025  virtual ~cofmsg_error_meter_mod_bad_command() {};
2026 };
2027 
2028 
2029 
2031 public:
2033  uint8_t ofp_version,
2034  uint32_t xid,
2035  uint8_t* data = 0,
2036  size_t datalen = 0) :
2037  cofmsg_error(ofp_version, xid, OFPET_METER_MOD_FAILED, OFPMMFC_BAD_FLAGS, data, datalen) {
2038  if (ofp_version < rofl::openflow13::OFP_VERSION)
2039  throw eBadVersion();
2040  };
2041  virtual ~cofmsg_error_meter_mod_bad_flags() {};
2042 };
2043 
2044 
2045 
2047 public:
2049  uint8_t ofp_version,
2050  uint32_t xid,
2051  uint8_t* data = 0,
2052  size_t datalen = 0) :
2053  cofmsg_error(ofp_version, xid, OFPET_METER_MOD_FAILED, OFPMMFC_BAD_RATE, data, datalen) {
2054  if (ofp_version < rofl::openflow13::OFP_VERSION)
2055  throw eBadVersion();
2056  };
2057  virtual ~cofmsg_error_meter_mod_bad_rate() {};
2058 };
2059 
2060 
2061 
2063 public:
2065  uint8_t ofp_version,
2066  uint32_t xid,
2067  uint8_t* data = 0,
2068  size_t datalen = 0) :
2069  cofmsg_error(ofp_version, xid, OFPET_METER_MOD_FAILED, OFPMMFC_BAD_BURST, data, datalen) {
2070  if (ofp_version < rofl::openflow13::OFP_VERSION)
2071  throw eBadVersion();
2072  };
2073  virtual ~cofmsg_error_meter_mod_bad_burst() {};
2074 };
2075 
2076 
2077 
2079 public:
2081  uint8_t ofp_version,
2082  uint32_t xid,
2083  uint8_t* data = 0,
2084  size_t datalen = 0) :
2085  cofmsg_error(ofp_version, xid, OFPET_METER_MOD_FAILED, OFPMMFC_BAD_BAND, data, datalen) {
2086  if (ofp_version < rofl::openflow13::OFP_VERSION)
2087  throw eBadVersion();
2088  };
2089  virtual ~cofmsg_error_meter_mod_bad_band() {};
2090 };
2091 
2092 
2093 
2095 public:
2097  uint8_t ofp_version,
2098  uint32_t xid,
2099  uint8_t* data = 0,
2100  size_t datalen = 0) :
2101  cofmsg_error(ofp_version, xid, OFPET_METER_MOD_FAILED, OFPMMFC_BAD_BAND_VALUE, data, datalen) {
2102  if (ofp_version < rofl::openflow13::OFP_VERSION)
2103  throw eBadVersion();
2104  };
2106 };
2107 
2108 
2109 
2111 public:
2113  uint8_t ofp_version,
2114  uint32_t xid,
2115  uint8_t* data = 0,
2116  size_t datalen = 0) :
2117  cofmsg_error(ofp_version, xid, OFPET_METER_MOD_FAILED, OFPMMFC_OUT_OF_METERS, data, datalen) {
2118  if (ofp_version < rofl::openflow13::OFP_VERSION)
2119  throw eBadVersion();
2120  };
2122 };
2123 
2124 
2125 
2127 public:
2129  uint8_t ofp_version,
2130  uint32_t xid,
2131  uint8_t* data = 0,
2132  size_t datalen = 0) :
2133  cofmsg_error(ofp_version, xid, OFPET_METER_MOD_FAILED, OFPMMFC_OUT_OF_BANDS, data, datalen) {
2134  if (ofp_version < rofl::openflow13::OFP_VERSION)
2135  throw eBadVersion();
2136  };
2138 };
2139 
2140 } // end of namespace openflow
2141 } // end of namespace rofl
2142 
2143 #endif /* COFMSG_ERROR_H_ */
Definition: cofmsg_error.h:1102
Definition: croflexception.h:73
Definition: openflow13.h:1756
virtual void reset()
Definition: cofmsg_error.cc:89
Definition: cofmsg_error.h:1950
Definition: cofmsg_error.h:1054
cofmsg_error(uint8_t of_version, uint32_t xid, uint16_t err_type=0, uint16_t err_code=0, uint8_t *data=0, size_t datalen=0)
Definition: cofmsg_error.cc:5
Definition: cofmsg_error.h:21
Definition: openflow12.h:76
virtual void pack(uint8_t *buf=(uint8_t *) 0, size_t buflen=0)
Definition: cofmsg_error.cc:126
virtual void unpack(uint8_t *buf, size_t buflen)
Definition: cofmsg_error.cc:157
virtual void validate()
Definition: cofmsg_error.cc:167
Definition: cofmsg_error.h:775
virtual size_t length() const
Definition: cofmsg_error.cc:105
Definition: openflow10.h:73
Definition: cofmsg_error.h:1246
Definition: cofmsg_error.h:1038
virtual ~cofmsg_error()
Definition: cofmsg_error.cc:81
C++ abstraction for malloc'ed memory areas.
Definition: cmemory.h:44
Definition: cofmsg_error.h:1086
Definition: logging.h:76
Definition: cofmsg.h:62