8 #ifndef OPENFLOW_COMMON_H_
9 #define OPENFLOW_COMMON_H_ 1
12 #include <linux/types.h>
18 #define OFP_ASSERT(EXPR)
19 #elif !defined(__cplusplus)
21 #define OFP_ASSERT(EXPR) \
22 extern int (*build_assert(void))[ sizeof(struct { \
23 unsigned int build_assert_failed : (EXPR) ? 1 : -1; })]
25 #define OFP_ASSERT(_EXPR) typedef int build_assert_failed[(_EXPR) ? 1 : -1]
29 #define OFP_PACKED __attribute__((packed))
37 #define OFP_MAX_TABLE_NAME_LEN 32
38 #define OFP_MAX_PORT_NAME_LEN 16
40 #define OFP_TCP_PORT 6633
41 #define OFP_SSL_PORT 6633
45 #define OFP_ETH_ALEN 6
50 OFP_VERSION_UNKNOWN = 0,
54 OFP_NO_BUFFER = 0xffffffff,
73 OFPT_ECHO_REQUEST = 2,
75 OFPT_EXPERIMENTER = 4,
78 OFPT_FEATURES_REQUEST = 5,
79 OFPT_FEATURES_REPLY = 6,
80 OFPT_GET_CONFIG_REQUEST = 7,
81 OFPT_GET_CONFIG_REPLY = 8,
86 OFPT_FLOW_REMOVED = 11,
87 OFPT_PORT_STATUS = 12,
97 OFPT_MULTIPART_REQUEST = 18,
98 OFPT_MULTIPART_REPLY = 19,
99 OFPT_STATS_REQUEST = 18,
100 OFPT_STATS__REPLY = 19,
103 OFPT_BARRIER_REQUEST = 20,
104 OFPT_BARRIER_REPLY = 21,
107 OFPT_QUEUE_GET_CONFIG_REQUEST = 22,
108 OFPT_QUEUE_GET_CONFIG_REPLY = 23,
111 OFPT_ROLE_REQUEST = 24,
112 OFPT_ROLE_REPLY = 25,
115 OFPT_GET_ASYNC_REQUEST = 26,
116 OFPT_GET_ASYNC_REPLY = 27,
135 enum ofp_flow_mod_command {
146 enum ofp_group_mod_command {
153 enum ofp_port_reason {
160 enum ofp_instruction_type {
161 OFPIT_GOTO_TABLE = 1,
163 OFPIT_WRITE_METADATA = 2,
165 OFPIT_WRITE_ACTIONS = 3,
167 OFPIT_APPLY_ACTIONS = 4,
168 OFPIT_CLEAR_ACTIONS = 5,
171 OFPIT_EXPERIMENTER = 0xFFFF
212 enum ofp_action_type {
215 OFPAT_SET_VLAN_VID = 1,
216 OFPAT_SET_VLAN_PCP = 2,
217 OFPAT_STRIP_VLAN = 3,
218 OFPAT_SET_DL_SRC = 4,
219 OFPAT_SET_DL_DST = 5,
220 OFPAT_SET_NW_SRC = 6,
221 OFPAT_SET_NW_DST = 7,
222 OFPAT_SET_NW_TOS = 8,
223 OFPAT_SET_TP_SRC = 9,
224 OFPAT_SET_TP_DST = 10,
227 OFPAT_COPY_TTL_OUT = 11,
228 OFPAT_COPY_TTL_IN = 12,
229 OFPAT_SET_MPLS_TTL = 15,
230 OFPAT_DEC_MPLS_TTL = 16,
231 OFPAT_PUSH_VLAN = 17,
233 OFPAT_PUSH_MPLS = 19,
235 OFPAT_SET_QUEUE = 21,
237 OFPAT_SET_NW_TTL = 23,
238 OFPAT_DEC_NW_TTL = 24,
239 OFPAT_SET_FIELD = 25,
242 OFPAT_EXPERIMENTER = 0xffff
250 } __attribute__((packed));
257 } __attribute__((packed));
274 } __attribute__((packed));
290 } __attribute__((packed));
298 } __attribute__((packed));
313 } __attribute__((packed));
322 } __attribute__((packed));
329 } __attribute__((packed));
336 uint8_t addr[OFP_ETH_ALEN];
337 uint8_t mask[OFP_ETH_ALEN];
338 } __attribute__((packed));
348 } __attribute__((packed));
357 OFPXMC_NXM_0 = 0x0000,
358 OFPXMC_NXM_1 = 0x0001,
359 OFPXMC_OPENFLOW_BASIC = 0x8000,
360 OFPXMC_EXPERIMENTER = 0xFFFF,
365 enum ofp_flow_mod_flags {
366 OFPFF_SEND_FLOW_REM = 1 << 0,
368 OFPFF_CHECK_OVERLAP = 1 << 1,
372 enum oxm_ofb_match_fields {
373 OFPXMT_OFB_IN_PORT = 0,
374 OFPXMT_OFB_IN_PHY_PORT = 1,
375 OFPXMT_OFB_METADATA = 2,
376 OFPXMT_OFB_ETH_DST = 3,
377 OFPXMT_OFB_ETH_SRC = 4,
378 OFPXMT_OFB_ETH_TYPE = 5,
379 OFPXMT_OFB_VLAN_VID = 6,
380 OFPXMT_OFB_VLAN_PCP = 7,
381 OFPXMT_OFB_IP_DSCP = 8,
382 OFPXMT_OFB_IP_ECN = 9,
383 OFPXMT_OFB_IP_PROTO = 10,
384 OFPXMT_OFB_IPV4_SRC = 11,
385 OFPXMT_OFB_IPV4_DST = 12,
386 OFPXMT_OFB_TCP_SRC = 13,
387 OFPXMT_OFB_TCP_DST = 14,
388 OFPXMT_OFB_UDP_SRC = 15,
389 OFPXMT_OFB_UDP_DST = 16,
390 OFPXMT_OFB_SCTP_SRC = 17,
391 OFPXMT_OFB_SCTP_DST = 18,
392 OFPXMT_OFB_ICMPV4_TYPE = 19,
393 OFPXMT_OFB_ICMPV4_CODE = 20,
394 OFPXMT_OFB_ARP_OP = 21,
395 OFPXMT_OFB_ARP_SPA = 22,
396 OFPXMT_OFB_ARP_TPA = 23,
397 OFPXMT_OFB_ARP_SHA = 24,
398 OFPXMT_OFB_ARP_THA = 25,
399 OFPXMT_OFB_IPV6_SRC = 26,
400 OFPXMT_OFB_IPV6_DST = 27,
401 OFPXMT_OFB_IPV6_FLABEL = 28,
402 OFPXMT_OFB_ICMPV6_TYPE = 29,
403 OFPXMT_OFB_ICMPV6_CODE = 30,
404 OFPXMT_OFB_IPV6_ND_TARGET = 31,
405 OFPXMT_OFB_IPV6_ND_SLL = 32,
406 OFPXMT_OFB_IPV6_ND_TLL = 33,
407 OFPXMT_OFB_MPLS_LABEL = 34,
408 OFPXMT_OFB_MPLS_TC = 35,
409 OFPXMT_OFB_MPLS_BOS = 36,
410 OFPXMT_OFB_PBB_ISID = 37,
411 OFPXMT_OFB_TUNNEL_ID = 38,
412 OFPXMT_OFB_IPV6_EXTHDR = 39,
417 #define HAS_MASK_FLAG (1 << 8)
420 enum oxm_tlv_match_fields {
421 OXM_TLV_BASIC_IN_PORT = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IN_PORT << 9) | 4,
422 OXM_TLV_BASIC_IN_PHY_PORT = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IN_PHY_PORT << 9) | 4,
423 OXM_TLV_BASIC_METADATA = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_METADATA << 9) | 8,
424 OXM_TLV_BASIC_METADATA_MASK = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_METADATA << 9) | 16 | HAS_MASK_FLAG,
425 OXM_TLV_BASIC_ETH_DST = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ETH_DST << 9) | 6,
426 OXM_TLV_BASIC_ETH_DST_MASK = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ETH_DST << 9) | 12 | HAS_MASK_FLAG,
427 OXM_TLV_BASIC_ETH_SRC = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ETH_SRC << 9) | 6,
428 OXM_TLV_BASIC_ETH_SRC_MASK = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ETH_SRC << 9) | 12 | HAS_MASK_FLAG,
429 OXM_TLV_BASIC_ETH_TYPE = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ETH_TYPE << 9) | 2,
430 OXM_TLV_BASIC_VLAN_VID = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_VLAN_VID << 9) | 2,
431 OXM_TLV_BASIC_VLAN_VID_MASK = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_VLAN_VID << 9) | 4 | HAS_MASK_FLAG,
432 OXM_TLV_BASIC_VLAN_PCP = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_VLAN_PCP << 9) | 1,
433 OXM_TLV_BASIC_IP_DSCP = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IP_DSCP << 9) | 1,
434 OXM_TLV_BASIC_IP_ECN = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IP_ECN << 9) | 1,
435 OXM_TLV_BASIC_IP_PROTO = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IP_PROTO << 9) | 1,
436 OXM_TLV_BASIC_IPV4_SRC = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IPV4_SRC << 9) | 4,
437 OXM_TLV_BASIC_IPV4_SRC_MASK = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IPV4_SRC << 9) | 8 | HAS_MASK_FLAG,
438 OXM_TLV_BASIC_IPV4_DST = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IPV4_DST << 9) | 4,
439 OXM_TLV_BASIC_IPV4_DST_MASK = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IPV4_DST << 9) | 8 | HAS_MASK_FLAG,
440 OXM_TLV_BASIC_TCP_SRC = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_TCP_SRC << 9) | 2,
441 OXM_TLV_BASIC_TCP_DST = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_TCP_DST << 9) | 2,
442 OXM_TLV_BASIC_UDP_SRC = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_UDP_SRC << 9) | 2,
443 OXM_TLV_BASIC_UDP_DST = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_UDP_DST << 9) | 2,
444 OXM_TLV_BASIC_SCTP_SRC = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_SCTP_SRC << 9) | 2,
445 OXM_TLV_BASIC_SCTP_DST = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_SCTP_DST << 9) | 2,
446 OXM_TLV_BASIC_ICMPV4_TYPE = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ICMPV4_TYPE << 9) | 1,
447 OXM_TLV_BASIC_ICMPV4_CODE = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ICMPV4_CODE << 9) | 1,
448 OXM_TLV_BASIC_ARP_OP = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ARP_OP << 9) | 2,
449 OXM_TLV_BASIC_ARP_SPA = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ARP_SPA << 9) | 4,
450 OXM_TLV_BASIC_ARP_SPA_MASK = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ARP_SPA << 9) | 8 | HAS_MASK_FLAG,
451 OXM_TLV_BASIC_ARP_TPA = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ARP_TPA << 9) | 4,
452 OXM_TLV_BASIC_ARP_TPA_MASK = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ARP_TPA << 9) | 8 | HAS_MASK_FLAG,
453 OXM_TLV_BASIC_ARP_SHA = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ARP_SHA << 9) | 6,
454 OXM_TLV_BASIC_ARP_SHA_MASK = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ARP_SHA << 9) | 12 | HAS_MASK_FLAG,
455 OXM_TLV_BASIC_ARP_THA = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ARP_THA << 9) | 6,
456 OXM_TLV_BASIC_ARP_THA_MASK = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ARP_THA << 9) | 12 | HAS_MASK_FLAG,
457 OXM_TLV_BASIC_IPV6_SRC = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IPV6_SRC << 9) | 16,
458 OXM_TLV_BASIC_IPV6_SRC_MASK = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IPV6_SRC << 9) | 32 | HAS_MASK_FLAG,
459 OXM_TLV_BASIC_IPV6_DST = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IPV6_DST << 9) | 16,
460 OXM_TLV_BASIC_IPV6_DST_MASK = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IPV6_DST << 9) | 32 | HAS_MASK_FLAG,
461 OXM_TLV_BASIC_IPV6_FLABEL = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IPV6_FLABEL << 9) | 4,
462 OXM_TLV_BASIC_IPV6_FLABEL_MASK = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IPV6_FLABEL << 9) | 8| HAS_MASK_FLAG,
463 OXM_TLV_BASIC_ICMPV6_TYPE = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ICMPV6_TYPE << 9) | 1,
464 OXM_TLV_BASIC_ICMPV6_CODE = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_ICMPV6_CODE << 9) | 1,
465 OXM_TLV_BASIC_IPV6_ND_TARGET= (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IPV6_ND_TARGET << 9) | 16,
466 OXM_TLV_BASIC_IPV6_ND_SLL = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IPV6_ND_SLL << 9) | 6,
467 OXM_TLV_BASIC_IPV6_ND_TLL = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IPV6_ND_TLL << 9) | 6,
468 OXM_TLV_BASIC_MPLS_LABEL = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_MPLS_LABEL << 9) | 4,
469 OXM_TLV_BASIC_MPLS_TC = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_MPLS_TC << 9) | 1,
470 OXM_TLV_BASIC_MPLS_BOS = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_MPLS_BOS << 9) | 1,
471 OXM_TLV_BASIC_PBB_ISID = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_PBB_ISID << 9) | 3,
472 OXM_TLV_BASIC_PBB_ISID_MASK = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_PBB_ISID << 9) | 6 | HAS_MASK_FLAG,
473 OXM_TLV_BASIC_TUNNEL_ID = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_TUNNEL_ID << 9) | 8,
474 OXM_TLV_BASIC_TUNNEL_ID_MASK= (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_TUNNEL_ID << 9) | 16 | HAS_MASK_FLAG,
475 OXM_TLV_BASIC_IPV6_EXTHDR = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IPV6_EXTHDR << 9) | 4,
476 OXM_TLV_BASIC_IPV6_EXTHDR_MASK = (OFPXMC_OPENFLOW_BASIC << 16) | (OFPXMT_OFB_IPV6_EXTHDR << 9) | 8 | HAS_MASK_FLAG,
484 OFPVID_PRESENT = 0x1000,
485 OFPVID_NONE = 0x0000,
503 uint8_t oxm_fields[4];
506 OFP_ASSERT(
sizeof(
struct ofp_match) == 8);
516 enum ofp_match_type {
524 OFPP_MAX = 0xffffff00,
527 OFPP_IN_PORT = 0xfffffff8,
531 OFPP_TABLE = 0xfffffff9,
534 OFPP_NORMAL = 0xfffffffa,
535 OFPP_FLOOD = 0xfffffffb,
537 OFPP_ALL = 0xfffffffc,
538 OFPP_CONTROLLER = 0xfffffffd,
539 OFPP_LOCAL = 0xfffffffe,
540 OFPP_ANY = 0xffffffff
550 OFPG_MAX = 0xffffff00,
553 OFPG_ALL = 0xfffffffc,
555 OFPG_ANY = 0xffffffff
561 enum ofp_group_type {
578 uint32_t watch_group;
593 enum ofp_error_type {
594 OFPET_HELLO_FAILED = 0,
595 OFPET_BAD_REQUEST = 1,
596 OFPET_BAD_ACTION = 2,
597 OFPET_BAD_INSTRUCTION = 3,
599 OFPET_FLOW_MOD_FAILED = 5,
600 OFPET_GROUP_MOD_FAILED = 6,
601 OFPET_PORT_MOD_FAILED = 7,
602 OFPET_TABLE_MOD_FAILED = 8,
603 OFPET_QUEUE_OP_FAILED = 9,
604 OFPET_SWITCH_CONFIG_FAILED = 10,
605 OFPET_ROLE_REQUEST_FAILED = 11,
606 OFPET_METER_MOD_FAILED = 12,
607 OFPET_TABLE_FEATURES_FAILED = 13,
608 OFPET_EXPERIMENTER = 0xffff
614 enum ofp_hello_failed_code {
615 OFPHFC_INCOMPATIBLE = 0,
621 enum ofp_bad_request_code {
622 OFPBRC_BAD_VERSION = 0,
625 OFPBRC_BAD_EXPERIMENTER = 3,
628 OFPBRC_BAD_EXP_TYPE = 4,
631 OFPBRC_BUFFER_EMPTY = 7,
632 OFPBRC_BUFFER_UNKNOWN = 8,
633 OFPBRC_BAD_TABLE_ID = 9,
635 OFPBRC_IS_SLAVE = 10,
636 OFPBRC_BAD_PORT = 11,
637 OFPBRC_BAD_PACKET = 12,
638 OFPBRC_MULTIPART_BUFFER_OVERFLOW = 13,
645 enum ofp_bad_action_code {
648 OFPBAC_BAD_EXPERIMENTER = 2,
649 OFPBAC_BAD_EXP_TYPE = 3,
650 OFPBAC_BAD_OUT_PORT = 4,
651 OFPBAC_BAD_ARGUMENT = 5,
654 OFPBAC_BAD_QUEUE = 8,
655 OFPBAC_BAD_OUT_GROUP = 9,
656 OFPBAC_MATCH_INCONSISTENT = 10,
657 OFPBAC_UNSUPPORTED_ORDER = 11,
661 OFPBAC_BAD_SET_TYPE = 13,
662 OFPBAC_BAD_SET_LEN = 14,
663 OFPBAC_BAD_SET_ARGUMENT = 15,
668 enum ofp_bad_instruction_code {
669 OFPBIC_UNKNOWN_INST = 0,
670 OFPBIC_UNSUP_INST = 1,
672 OFPBIC_BAD_TABLE_ID = 2,
673 OFPBIC_UNSUP_METADATA = 3,
674 OFPBIC_UNSUP_METADATA_MASK = 4,
676 OFPBIC_BAD_EXPERIMENTER = 5,
678 OFPBIC_BAD_EXP_TYPE = 6,
685 enum ofp_bad_match_code {
689 OFPBMC_BAD_DL_ADDR_MASK = 3,
692 OFPBMC_BAD_NW_ADDR_MASK = 4,
695 OFPBMC_BAD_WILDCARDS = 5,
697 OFPBMC_BAD_FIELD = 6,
698 OFPBMC_BAD_VALUE = 7,
701 OFPBMC_BAD_PREREQ = 9,
702 OFPBMC_DUP_FIELD = 10,
708 enum ofp_flow_mod_failed_code {
710 OFPFMFC_TABLE_FULL = 1,
711 OFPFMFC_BAD_TABLE_ID = 2,
715 OFPFMFC_BAD_TIMEOUT = 5,
717 OFPFMFC_BAD_COMMAND = 6,
718 OFPFMFC_BAD_FLAGS = 7,
723 enum ofp_group_mod_failed_code {
724 OFPGMFC_GROUP_EXISTS = 0,
727 OFPGMFC_INVALID_GROUP = 1,
729 OFPGMFC_WEIGHT_UNSUPPORTED = 2,
731 OFPGMFC_OUT_OF_GROUPS = 3,
732 OFPGMFC_OUT_OF_BUCKETS = 4,
734 OFPGMFC_CHAINING_UNSUPPORTED = 5,
736 OFPGMFC_WATCH_UNSUPPORTED = 6,
739 OFPGMFC_UNKNOWN_GROUP = 8,
742 OFPGMFC_CHAINED_GROUP = 9,
744 OFPGMFC_BAD_TYPE = 10,
745 OFPGMFC_BAD_COMMAND = 11,
746 OFPGMFC_BAD_BUCKET = 12,
747 OFPGMFC_BAD_WATCH = 13,
753 enum ofp_port_mod_failed_code {
754 OFPPMFC_BAD_PORT = 0,
755 OFPPMFC_BAD_HW_ADDR = 1,
757 OFPPMFC_BAD_CONFIG = 2,
758 OFPPMFC_BAD_ADVERTISE = 3,
764 enum ofp_table_mod_failed_code {
765 OFPTMFC_BAD_TABLE = 0,
766 OFPTMFC_BAD_CONFIG = 1,
772 enum ofp_queue_op_failed_code {
773 OFPQOFC_BAD_PORT = 0,
774 OFPQOFC_BAD_QUEUE = 1,
780 enum ofp_switch_config_failed_code {
781 OFPSCFC_BAD_FLAGS = 0,
788 enum ofp_role_request_failed_code {
791 OFPRRFC_BAD_ROLE = 2,
796 enum ofp_meter_mod_failed_code {
798 OFPMMFC_METER_EXISTS = 1,
800 OFPMMFC_INVALID_METER = 2,
802 OFPMMFC_UNKNOWN_METER = 3,
805 OFPMMFC_BAD_COMMAND = 4,
806 OFPMMFC_BAD_FLAGS = 5,
807 OFPMMFC_BAD_RATE = 6,
808 OFPMMFC_BAD_BURST = 7,
809 OFPMMFC_BAD_BAND = 8,
810 OFPMMFC_BAD_BAND_VALUE = 9,
811 OFPMMFC_OUT_OF_METERS = 10,
812 OFPMMFC_OUT_OF_BANDS = 11,
818 enum ofp_table_features_failed_code {
819 OFPTFFC_BAD_TABLE = 0,
820 OFPTFFC_BAD_METADATA = 1,
821 OFPTFFC_BAD_TYPE = 2,
823 OFPTFFC_BAD_ARGUMENT = 4,
830 OFPETC_HELLO_FAILED_INCOMPATIBLE = (OFPET_HELLO_FAILED << 16) | OFPHFC_INCOMPATIBLE,
831 OFPETC_HELLO_FAILED_EPERM = (OFPET_HELLO_FAILED << 16) | OFPHFC_EPERM,
835 OFPETC_BAD_REQUEST_BAD_VERSION = (OFPET_BAD_REQUEST << 16) | OFPBRC_BAD_VERSION,
836 OFPETC_BAD_REQUEST_BAD_TYPE = (OFPET_BAD_REQUEST << 16) | OFPBRC_BAD_TYPE,
837 OFPETC_BAD_REQUEST_BAD_STAT = (OFPET_BAD_REQUEST << 16) | OFPBRC_BAD_STAT,
838 OFPETC_BAD_REQUEST_BAD_EXPERIMENTER = (OFPET_BAD_REQUEST << 16) | OFPBRC_BAD_EXPERIMENTER,
843 OFPETC_BAD_REQUEST_BAD_EXP_TYPE = (OFPET_BAD_REQUEST << 16) | OFPBRC_BAD_EXP_TYPE,
844 OFPETC_BAD_REQUEST_EPERM = (OFPET_BAD_REQUEST << 16) | OFPBRC_EPERM,
845 OFPETC_BAD_REQUEST_BAD_LEN = (OFPET_BAD_REQUEST << 16) | OFPBRC_BAD_LEN,
846 OFPETC_BAD_REQUEST_BUFFER_EMPTY = (OFPET_BAD_REQUEST << 16) | OFPBRC_BUFFER_EMPTY,
847 OFPETC_BAD_REQUEST_BUFFER_UNKNOWN = (OFPET_BAD_REQUEST << 16) | OFPBRC_BUFFER_UNKNOWN,
848 OFPETC_BAD_REQUEST_BAD_TABLE_ID = (OFPET_BAD_REQUEST << 16) | OFPBRC_BAD_TABLE_ID,
849 OFPETC_BAD_REQUEST_IS_SLAVE = (OFPET_BAD_REQUEST << 16) | OFPBRC_IS_SLAVE,
850 OFPETC_BAD_REQUEST_BAD_PORT = (OFPET_BAD_REQUEST << 16) | OFPBRC_BAD_PORT,
851 OFPETC_BAD_REQUEST_BAD_PACKET = (OFPET_BAD_REQUEST << 16) | OFPBRC_BAD_PACKET,
852 OFPETC_BAD_REQUEST_MULTIPART_BUFFER_OVERFLOW = (OFPET_BAD_REQUEST << 16) | OFPBRC_MULTIPART_BUFFER_OVERFLOW,
858 OFPETC_BAD_ACTION_BAD_TYPE = (OFPET_BAD_ACTION << 16) | OFPBAC_BAD_TYPE,
859 OFPETC_BAD_ACTION_BAD_LEN = (OFPET_BAD_ACTION << 16) | OFPBAC_BAD_LEN,
860 OFPETC_BAD_ACTION_BAD_EXPERIMENTER = (OFPET_BAD_ACTION << 16) | OFPBAC_BAD_EXPERIMENTER,
861 OFPETC_BAD_ACTION_BAD_EXP_TYPE = (OFPET_BAD_ACTION << 16) | OFPBAC_BAD_EXP_TYPE,
862 OFPETC_BAD_ACTION_BAD_OUT_PORT = (OFPET_BAD_ACTION << 16) | OFPBAC_BAD_OUT_PORT,
863 OFPETC_BAD_ACTION_BAD_ARGUMENT = (OFPET_BAD_ACTION << 16) | OFPBAC_BAD_ARGUMENT,
864 OFPETC_BAD_ACTION_EPERM = (OFPET_BAD_ACTION << 16) | OFPBAC_EPERM,
865 OFPETC_BAD_ACTION_TOO_MANY = (OFPET_BAD_ACTION << 16) | OFPBAC_TOO_MANY,
866 OFPETC_BAD_ACTION_BAD_QUEUE = (OFPET_BAD_ACTION << 16) | OFPBAC_BAD_QUEUE,
867 OFPETC_BAD_ACTION_BAD_OUT_GROUP = (OFPET_BAD_ACTION << 16) | OFPBAC_BAD_OUT_GROUP,
868 OFPETC_BAD_ACTION_MATCH_INCONSISTENT= (OFPET_BAD_ACTION << 16) | OFPBAC_MATCH_INCONSISTENT,
869 OFPETC_BAD_ACTION_UNSUPPORTED_ORDER = (OFPET_BAD_ACTION << 16) | OFPBAC_UNSUPPORTED_ORDER,
871 OFPETC_BAD_ACTION_BAD_TAG = (OFPET_BAD_ACTION << 16) | OFPBAC_BAD_TAG,
873 OFPETC_BAD_ACTION_BAD_SET_TYPE = (OFPET_BAD_ACTION << 16) | OFPBAC_BAD_SET_TYPE,
874 OFPETC_BAD_ACTION_BAD_SET_LEN = (OFPET_BAD_ACTION << 16) | OFPBAC_BAD_SET_LEN,
875 OFPETC_BAD_ACTION_BAD_SET_ARGUMENT = (OFPET_BAD_ACTION << 16) | OFPBAC_BAD_SET_ARGUMENT,
880 OFPETC_BAD_INSTRUCTION_UNKNOWN_INST = (OFPET_BAD_INSTRUCTION << 16) | OFPBIC_UNKNOWN_INST,
881 OFPETC_BAD_INSTRUCTION_UNSUP_INST = (OFPET_BAD_INSTRUCTION << 16) | OFPBIC_UNSUP_INST,
883 OFPETC_BAD_INSTRUCTION_BAD_TABLE_ID = (OFPET_BAD_INSTRUCTION << 16) | OFPBIC_BAD_TABLE_ID,
884 OFPETC_BAD_INSTRUCTION_UNSUP_METADATA = (OFPET_BAD_INSTRUCTION << 16) | OFPBIC_UNSUP_METADATA,
885 OFPETC_BAD_INSTRUCTION_UNSUP_METADATA_MASK = (OFPET_BAD_INSTRUCTION << 16) | OFPBIC_UNSUP_METADATA_MASK,
887 OFPETC_BAD_INSTRUCTION_BAD_EXPERIMENTER = (OFPET_BAD_INSTRUCTION << 16) | OFPBIC_BAD_EXPERIMENTER,
889 OFPETC_BAD_INSTRUCTION_BAD_EXP_TYPE = (OFPET_BAD_INSTRUCTION << 16) | OFPBIC_BAD_EXP_TYPE,
890 OFPETC_BAD_INSTRUCTION_BAD_LEN = (OFPET_BAD_INSTRUCTION << 16) | OFPBIC_BAD_LEN,
891 OFPETC_BAD_INSTRUCTION_EPERM = (OFPET_BAD_INSTRUCTION << 16) | OFPBIC_EPERM,
895 OFPETC_BAD_MATCH_BAD_TYPE = (OFPET_BAD_MATCH << 16) | OFPBMC_BAD_TYPE,
896 OFPETC_BAD_MATCH_BAD_LEN = (OFPET_BAD_MATCH << 16) | OFPBMC_BAD_LEN,
897 OFPETC_BAD_MATCH_BAD_TAG = (OFPET_BAD_MATCH << 16) | OFPBMC_BAD_TAG,
898 OFPETC_BAD_MATCH_BAD_DL_ADDR_MASK = (OFPET_BAD_MATCH << 16) | OFPBMC_BAD_DL_ADDR_MASK,
901 OFPETC_BAD_MATCH_BAD_NW_ADDR_MASK = (OFPET_BAD_MATCH << 16) | OFPBMC_BAD_NW_ADDR_MASK,
904 OFPETC_BAD_MATCH_BAD_WILDCARDS = (OFPET_BAD_MATCH << 16) | OFPBMC_BAD_WILDCARDS,
906 OFPETC_BAD_MATCH_BAD_FIELD = (OFPET_BAD_MATCH << 16) | OFPBMC_BAD_FIELD,
907 OFPETC_BAD_MATCH_BAD_VALUE = (OFPET_BAD_MATCH << 16) | OFPBMC_BAD_VALUE,
908 OFPETC_BAD_MATCH_BAD_MASK = (OFPET_BAD_MATCH << 16) | OFPBMC_BAD_MASK,
910 OFPETC_BAD_MATCH_BAD_PREREQ = (OFPET_BAD_MATCH << 16) | OFPBMC_BAD_PREREQ,
911 OFPETC_BAD_MATCH_DUP_FIELD = (OFPET_BAD_MATCH << 16) | OFPBMC_DUP_FIELD,
912 OFPETC_BAD_MATCH_EPERM = (OFPET_BAD_MATCH << 16) | OFPBMC_EPERM,
916 OFPETC_FLOW_MOD_UNKNOWN = (OFPET_FLOW_MOD_FAILED << 16) | OFPFMFC_UNKNOWN,
917 OFPETC_FLOW_MOD_TABLE_FULL = (OFPET_FLOW_MOD_FAILED << 16) | OFPFMFC_TABLE_FULL,
918 OFPETC_FLOW_MOD_BAD_TABLE_ID = (OFPET_FLOW_MOD_FAILED << 16) | OFPFMFC_BAD_TABLE_ID,
919 OFPETC_FLOW_MOD_OVERLAP = (OFPET_FLOW_MOD_FAILED << 16) | OFPFMFC_OVERLAP,
921 OFPETC_FLOW_MOD_EPERM = (OFPET_FLOW_MOD_FAILED << 16) | OFPFMFC_EPERM,
922 OFPETC_FLOW_MOD_BAD_TIMEOUT = (OFPET_FLOW_MOD_FAILED << 16) | OFPFMFC_BAD_TIMEOUT,
924 OFPETC_FLOW_MOD_BAD_COMMAND = (OFPET_FLOW_MOD_FAILED << 16) | OFPFMFC_BAD_COMMAND,
925 OFPETC_FLOW_MOD_BAD_FLAGS = (OFPET_FLOW_MOD_FAILED << 16) | OFPFMFC_BAD_FLAGS,
928 OFPETC_GROUP_MOD_GROUP_EXISTS = (OFPET_GROUP_MOD_FAILED << 16) | OFPGMFC_GROUP_EXISTS,
931 OFPETC_GROUP_MOD_INVALID_GROUP = (OFPET_GROUP_MOD_FAILED << 16) | OFPGMFC_INVALID_GROUP,
933 OFPETC_GROUP_MOD_WEIGHT_UNSUPPORTED = (OFPET_GROUP_MOD_FAILED << 16) | OFPGMFC_WEIGHT_UNSUPPORTED,
935 OFPETC_GROUP_MOD_OUT_OF_GROUPS = (OFPET_GROUP_MOD_FAILED << 16) | OFPGMFC_OUT_OF_GROUPS,
936 OFPETC_GROUP_MOD_OUT_OF_BUCKETS = (OFPET_GROUP_MOD_FAILED << 16) | OFPGMFC_OUT_OF_BUCKETS,
938 OFPETC_GROUP_MOD_CHAINING_UNSUPPORTED= (OFPET_GROUP_MOD_FAILED << 16) | OFPGMFC_CHAINING_UNSUPPORTED,
940 OFPETC_GROUP_MOD_WATCH_UNSUPPORTED = (OFPET_GROUP_MOD_FAILED << 16) | OFPGMFC_WATCH_UNSUPPORTED,
942 OFPETC_GROUP_MOD_LOOP = (OFPET_GROUP_MOD_FAILED << 16) | OFPGMFC_LOOP,
943 OFPETC_GROUP_MOD_UNKNOWN_GROUP = (OFPET_GROUP_MOD_FAILED << 16) | OFPGMFC_UNKNOWN_GROUP,
946 OFPETC_GROUP_MOD_CHAINED_GROUP = (OFPET_GROUP_MOD_FAILED << 16) | OFPGMFC_CHAINED_GROUP,
948 OFPETC_GROUP_MOD_BAD_TYPE = (OFPET_GROUP_MOD_FAILED << 16) | OFPGMFC_BAD_TYPE,
949 OFPETC_GROUP_MOD_BAD_COMMAND = (OFPET_GROUP_MOD_FAILED << 16) | OFPGMFC_BAD_COMMAND,
950 OFPETC_GROUP_MOD_BAD_BUCKET = (OFPET_GROUP_MOD_FAILED << 16) | OFPGMFC_BAD_BUCKET,
951 OFPETC_GROUP_MOD_BAD_WATCH = (OFPET_GROUP_MOD_FAILED << 16) | OFPGMFC_BAD_WATCH,
952 OFPETC_GROUP_MOD_EPERM = (OFPET_GROUP_MOD_FAILED << 16) | OFPGMFC_EPERM,
955 OFPETC_PORT_MOD_BAD_PORT = (OFPET_PORT_MOD_FAILED << 16) | OFPPMFC_BAD_PORT,
956 OFPETC_PORT_MOD_BAD_HW_ADDR = (OFPET_PORT_MOD_FAILED << 16) | OFPPMFC_BAD_HW_ADDR,
958 OFPETC_PORT_MOD_BAD_CONFIG = (OFPET_PORT_MOD_FAILED << 16) | OFPPMFC_BAD_CONFIG,
959 OFPETC_PORT_MOD_BAD_ADVERTISE = (OFPET_PORT_MOD_FAILED << 16) | OFPPMFC_BAD_ADVERTISE,
960 OFPETC_PORT_MOD_EPERM = (OFPET_PORT_MOD_FAILED << 16) | OFPPMFC_EPERM,
963 OFPETC_TABLE_MOD_BAD_TABLE = (OFPET_TABLE_MOD_FAILED << 16) | OFPTMFC_BAD_TABLE,
964 OFPETC_TABLE_MOD_BAD_CONFIG = (OFPET_TABLE_MOD_FAILED << 16) | OFPTMFC_BAD_CONFIG,
965 OFPETC_TABLE_MOD_EPERM = (OFPET_TABLE_MOD_FAILED << 16) | OFPTMFC_EPERM,
968 OFPETC_QUEUE_OP_BAD_PORT = (OFPET_QUEUE_OP_FAILED << 16) | OFPQOFC_BAD_PORT,
969 OFPETC_QUEUE_OP_BAD_QUEUE = (OFPET_QUEUE_OP_FAILED << 16) | OFPQOFC_BAD_QUEUE,
970 OFPETC_QUEUE_OP_EPERM = (OFPET_QUEUE_OP_FAILED << 16) | OFPQOFC_EPERM,
973 OFPETC_SWITCH_CONFIG_BAD_FLAGS = (OFPET_SWITCH_CONFIG_FAILED << 16) | OFPSCFC_BAD_FLAGS,
974 OFPETC_SWITCH_CONFIG_BAD_LEN = (OFPET_SWITCH_CONFIG_FAILED << 16) | OFPSCFC_BAD_LEN,
975 OFPETC_SWITCH_CONFIG_EPERM = (OFPET_SWITCH_CONFIG_FAILED << 16) | OFPSCFC_EPERM,
978 OFPETC_ROLE_REQUEST_STALE = (OFPET_ROLE_REQUEST_FAILED << 16) | OFPRRFC_STALE,
979 OFPETC_ROLE_REQUEST_UNSUP = (OFPET_ROLE_REQUEST_FAILED << 16) | OFPRRFC_UNSUP,
980 OFPETC_ROLE_REQUEST_BAD_ROLE = (OFPET_ROLE_REQUEST_FAILED << 16) | OFPRRFC_BAD_ROLE,
983 OFPETC_METER_MOD_UNKNOWN = (OFPET_METER_MOD_FAILED << 16) | OFPMMFC_UNKNOWN,
984 OFPETC_METER_MOD_METER_EXISTS = (OFPET_METER_MOD_FAILED << 16) | OFPMMFC_METER_EXISTS,
986 OFPETC_METER_MOD_INVALID_METER = (OFPET_METER_MOD_FAILED << 16) | OFPMMFC_INVALID_METER,
988 OFPETC_METER_MOD_UNKNOWN_METER = (OFPET_METER_MOD_FAILED << 16) | OFPMMFC_UNKNOWN_METER,
991 OFPETC_METER_MOD_BAD_COMMAND = (OFPET_METER_MOD_FAILED << 16) | OFPMMFC_BAD_COMMAND,
992 OFPETC_METER_MOD_BAD_FLAGS = (OFPET_METER_MOD_FAILED << 16) | OFPMMFC_BAD_FLAGS,
993 OFPETC_METER_MOD_BAD_RATE = (OFPET_METER_MOD_FAILED << 16) | OFPMMFC_BAD_RATE,
994 OFPETC_METER_MOD_BAD_BURST = (OFPET_METER_MOD_FAILED << 16) | OFPMMFC_BAD_BURST,
995 OFPETC_METER_MOD_BAD_BAND = (OFPET_METER_MOD_FAILED << 16) | OFPMMFC_BAD_BAND,
996 OFPETC_METER_MOD_BAD_BAND_VALUE = (OFPET_METER_MOD_FAILED << 16) | OFPMMFC_BAD_BAND_VALUE,
997 OFPETC_METER_MOD_OUT_OF_METERS = (OFPET_METER_MOD_FAILED << 16) | OFPMMFC_OUT_OF_METERS,
998 OFPETC_METER_MOD_OUT_OF_BANDS = (OFPET_METER_MOD_FAILED << 16) | OFPMMFC_OUT_OF_BANDS,
1002 OFPETC_TABLE_FEATURES_BAD_TABLE = (OFPET_TABLE_FEATURES_FAILED << 16) | OFPTFFC_BAD_TABLE,
1003 OFPETC_TABLE_FEATURES_BAD_METADATA = (OFPET_TABLE_FEATURES_FAILED << 16) | OFPTFFC_BAD_METADATA,
1004 OFPETC_TABLE_FEATURES_BAD_TYPE = (OFPET_TABLE_FEATURES_FAILED << 16) | OFPTFFC_BAD_TYPE,
1005 OFPETC_TABLE_FEATURES_BAD_LEN = (OFPET_TABLE_FEATURES_FAILED << 16) | OFPTFFC_BAD_LEN,
1006 OFPETC_TABLE_FEATURES_BAD_ARGUMENT = (OFPET_TABLE_FEATURES_FAILED << 16) | OFPTFFC_BAD_ARGUMENT,
1007 OFPETC_TABLE_FEATURES_EPERM = (OFPET_TABLE_FEATURES_FAILED << 16) | OFPTFFC_EPERM,
1010 OFPETC_EXPERIMENTER = (OFPET_EXPERIMENTER << 16),
1015 enum ofp_multipart_types {
1029 OFPMP_AGGREGATE = 2,
1039 OFPMP_PORT_STATS = 4,
1054 OFPMP_GROUP_DESC = 7,
1059 OFPMP_GROUP_FEATURES = 8,
1069 OFPMP_METER_CONFIG = 10,
1074 OFPMP_METER_FEATURES = 11,
1082 OFPMP_TABLE_FEATURES = 12,
1087 OFPMP_PORT_DESC = 13,
1093 OFPMP_EXPERIMENTER = 0xffff
1100 #include "rofl/common/openflow/openflow_experimental.h"
Definition: openflow_common.h:493
Definition: openflow_common.h:247
Definition: openflow_common.h:309
Definition: openflow_common.h:270
Definition: openflow_common.h:286
Definition: openflow_common.h:569
Definition: openflow_common.h:318
Definition: openflow_common.h:176
Definition: openflow_common.h:325
Definition: openflow_common.h:294
Definition: openflow_common.h:186
Definition: openflow_common.h:124
Definition: openflow_common.h:334
Definition: openflow_common.h:253
Definition: openflow_common.h:344