5 #ifndef _OPENFLOW_OPENFLOW13_H
6 #define _OPENFLOW_OPENFLOW13_H 1
8 #include "rofl/common/openflow/openflow_common.h"
11 namespace openflow13 {
17 #define OFP13_VERSION 4
20 OFP_NO_BUFFER = 0xffffffff,
40 OFPT_ECHO_REQUEST = 2,
42 OFPT_EXPERIMENTER = 4,
45 OFPT_FEATURES_REQUEST = 5,
46 OFPT_FEATURES_REPLY = 6,
47 OFPT_GET_CONFIG_REQUEST = 7,
48 OFPT_GET_CONFIG_REPLY = 8,
53 OFPT_FLOW_REMOVED = 11,
54 OFPT_PORT_STATUS = 12,
64 OFPT_MULTIPART_REQUEST = 18,
65 OFPT_MULTIPART_REPLY = 19,
68 OFPT_BARRIER_REQUEST = 20,
69 OFPT_BARRIER_REPLY = 21,
72 OFPT_QUEUE_GET_CONFIG_REQUEST = 22,
73 OFPT_QUEUE_GET_CONFIG_REPLY = 23,
76 OFPT_ROLE_REQUEST = 24,
80 OFPT_GET_ASYNC_REQUEST = 26,
81 OFPT_GET_ASYNC_REPLY = 27,
93 OFPP_MAX = 0xffffff00,
96 OFPP_IN_PORT = 0xfffffff8,
100 OFPP_TABLE = 0xfffffff9,
103 OFPP_NORMAL = 0xfffffffa,
104 OFPP_FLOOD = 0xfffffffb,
106 OFPP_ALL = 0xfffffffc,
107 OFPP_CONTROLLER = 0xfffffffd,
108 OFPP_LOCAL = 0xfffffffe,
109 OFPP_ANY = 0xffffffff
119 uint8_t hw_addr[OFP_ETH_ALEN];
121 char name[OFP_MAX_PORT_NAME_LEN];
136 OFP_ASSERT(
sizeof(
struct ofp_port) == 64);
142 enum ofp_port_config {
143 OFPPC_PORT_DOWN = 1 << 0,
145 OFPPC_NO_RECV = 1 << 2,
146 OFPPC_NO_FWD = 1 << 5,
147 OFPPC_NO_PACKET_IN = 1 << 6
153 enum ofp_port_state {
154 OFPPS_LINK_DOWN = 1 << 0,
155 OFPPS_BLOCKED = 1 << 1,
160 enum ofp_port_features {
161 OFPPF_10MB_HD = 1 << 0,
162 OFPPF_10MB_FD = 1 << 1,
163 OFPPF_100MB_HD = 1 << 2,
164 OFPPF_100MB_FD = 1 << 3,
165 OFPPF_1GB_HD = 1 << 4,
166 OFPPF_1GB_FD = 1 << 5,
167 OFPPF_10GB_FD = 1 << 6,
168 OFPPF_40GB_FD = 1 << 7,
169 OFPPF_100GB_FD = 1 << 8,
170 OFPPF_1TB_FD = 1 << 9,
171 OFPPF_OTHER = 1 << 10,
173 OFPPF_COPPER = 1 << 11,
174 OFPPF_FIBER = 1 << 12,
175 OFPPF_AUTONEG = 1 << 13,
176 OFPPF_PAUSE = 1 << 14,
177 OFPPF_PAUSE_ASYM = 1 << 15
183 #define OFPQ_ALL 0xffffffff
186 #define OFPQ_MIN_RATE_UNCFG 0xffff
187 #define OFPQ_MAX_RATE_UNCFG 0xffff
189 enum ofp_queue_properties {
194 OFPQT_EXPERIMENTER = 0xffff,
234 uint32_t experimenter;
255 uint8_t oxm_fields[0];
258 OFP_ASSERT(
sizeof(
struct ofp_match) == 8);
261 static int const OFP_MATCH_STATIC_LEN = 2 *
sizeof(uint16_t);
270 enum ofp_match_type {
283 OFPXMC_NXM_0 = 0x0000,
284 OFPXMC_NXM_1 = 0x0001,
285 OFPXMC_OPENFLOW_BASIC = 0x8000,
286 OFPXMC_EXPERIMENTER = 0xFFFF,
292 enum ofp_oxm_ofb_match_fields {
293 OFPXMT_OFB_IN_PORT = 0,
294 OFPXMT_OFB_IN_PHY_PORT = 1,
295 OFPXMT_OFB_METADATA = 2,
296 OFPXMT_OFB_ETH_DST = 3,
297 OFPXMT_OFB_ETH_SRC = 4,
298 OFPXMT_OFB_ETH_TYPE = 5,
299 OFPXMT_OFB_VLAN_VID = 6,
300 OFPXMT_OFB_VLAN_PCP = 7,
301 OFPXMT_OFB_IP_DSCP = 8,
302 OFPXMT_OFB_IP_ECN = 9,
303 OFPXMT_OFB_IP_PROTO = 10,
304 OFPXMT_OFB_IPV4_SRC = 11,
305 OFPXMT_OFB_IPV4_DST = 12,
306 OFPXMT_OFB_TCP_SRC = 13,
307 OFPXMT_OFB_TCP_DST = 14,
308 OFPXMT_OFB_UDP_SRC = 15,
309 OFPXMT_OFB_UDP_DST = 16,
310 OFPXMT_OFB_SCTP_SRC = 17,
311 OFPXMT_OFB_SCTP_DST = 18,
312 OFPXMT_OFB_ICMPV4_TYPE = 19,
313 OFPXMT_OFB_ICMPV4_CODE = 20,
314 OFPXMT_OFB_ARP_OP = 21,
315 OFPXMT_OFB_ARP_SPA = 22,
316 OFPXMT_OFB_ARP_TPA = 23,
317 OFPXMT_OFB_ARP_SHA = 24,
318 OFPXMT_OFB_ARP_THA = 25,
319 OFPXMT_OFB_IPV6_SRC = 26,
320 OFPXMT_OFB_IPV6_DST = 27,
321 OFPXMT_OFB_IPV6_FLABEL = 28,
322 OFPXMT_OFB_ICMPV6_TYPE = 29,
323 OFPXMT_OFB_ICMPV6_CODE = 30,
324 OFPXMT_OFB_IPV6_ND_TARGET = 31,
325 OFPXMT_OFB_IPV6_ND_SLL = 32,
326 OFPXMT_OFB_IPV6_ND_TLL = 33,
327 OFPXMT_OFB_MPLS_LABEL = 34,
328 OFPXMT_OFB_MPLS_TC = 35,
329 OFPXMT_OFB_MPLS_BOS = 36,
330 OFPXMT_OFB_PBB_ISID = 37,
331 OFPXMT_OFB_TUNNEL_ID = 38,
332 OFPXMT_OFB_IPV6_EXTHDR = 39,
337 #define OXM_TLV_HAS_MASK (1 << 8)
338 #define OXM_TLV_PAYLOAD_1BYTE (1)
339 #define OXM_TLV_PAYLOAD_2BYTES (2)
340 #define OXM_TLV_PAYLOAD_3BYTES (3)
341 #define OXM_TLV_PAYLOAD_4BYTES (4)
342 #define OXM_TLV_PAYLOAD_6BYTES (6)
343 #define OXM_TLV_PAYLOAD_8BYTES (8)
344 #define OXM_TLV_PAYLOAD_16BYTES (16)
346 #define OXM_TLV_OFB_IN_PORT ((OFPXMC_OPENFLOW_BASIC << 16) + (OFPXMT_OFB_IN_PORT << 9) + OXM_TLV_PAYLOAD_4BYTES)
347 #define OXM_TLV_OFB_IN_PHY_PORT ((OFPXMC_OPENFLOW_BASIC << 16) + (OFPXMT_OFB_IN_PHY_PORT << 9) + OXM_TLV_PAYLOAD_4BYTES)
348 #define OXM_TLV_OFB_METADATA ((OFPXMC_OPENFLOW_BASIC << 16) + (OFPXMT_OFB_METADATA << 9) + OXM_TLV_PAYLOAD_8BYTES)
349 #define OXM_TLV_OFB_METADATA_MASK ((OFPXMC_OPENFLOW_BASIC << 16) + (OFPXMT_OFB_METADATA << 9) + 2*OXM_TLV_PAYLOAD_8BYTES + OXM_TLV_HAS_MASK)
350 #define OXM_TLV_OFB_ETH_DST ((OFPXMC_OPENFLOW_BASIC << 16) + (OFPXMT_OFB_ETH_DST << 9) + OXM_TLV_PAYLOAD_6BYTES)
351 #define OXM_TLV_OFB_ETH_DST_MASK ((OFPXMC_OPENFLOW_BASIC << 16) + (OFPXMT_OFB_ETH_DST << 9) + 2*OXM_TLV_PAYLOAD_6BYTES + OXM_TLV_HAS_MASK)
352 #define OXM_TLV_OFB_ETH_SRC ((OFPXMC_OPENFLOW_BASIC << 16) + (OFPXMT_OFB_ETH_SRC << 9) + OXM_TLV_PAYLOAD_6BYTES)
353 #define OXM_TLV_OFB_ETH_SRC_MASK ((OFPXMC_OPENFLOW_BASIC << 16) + (OFPXMT_OFB_ETH_SRC << 9) + 2*OXM_TLV_PAYLOAD_6BYTES + OXM_TLV_HAS_MASK)
354 #define OXM_TLV_OFB_ETH_TYPE ((OFPXMC_OPENFLOW_BASIC << 16) + (OFPXMT_OFB_ETH_TYPE << 9) + OXM_TLV_PAYLOAD_2BYTES)
361 OFPVID_PRESENT = 0x1000,
362 OFPVID_NONE = 0x0000,
366 enum ofp_ipv6exthdr_flags {
367 OFPIEH_NONEXT = 1 << 0,
369 OFPIEH_AUTH = 1 << 2,
370 OFPIEH_DEST = 1 << 3,
371 OFPIEH_FRAG = 1 << 4,
372 OFPIEH_ROUTER = 1 << 5,
374 OFPIEH_UNREP = 1 << 7,
375 OFPIEH_UNSEQ = 1 << 8,
451 uint8_t addr[OFP_ETH_ALEN];
452 uint8_t mask[OFP_ETH_ALEN];
470 uint32_t experimenter;
482 enum ofp_instruction_type {
483 OFPIT_GOTO_TABLE = 1,
485 OFPIT_WRITE_METADATA = 2,
487 OFPIT_WRITE_ACTIONS = 3,
489 OFPIT_APPLY_ACTIONS = 4,
490 OFPIT_CLEAR_ACTIONS = 5,
493 OFPIT_EXPERIMENTER = 0xFFFF
520 uint64_t metadata_mask;
560 uint32_t experimenter;
576 enum ofp_action_type {
578 OFPAT_COPY_TTL_OUT = 11,
579 OFPAT_COPY_TTL_IN = 12,
580 OFPAT_SET_MPLS_TTL = 15,
581 OFPAT_DEC_MPLS_TTL = 16,
582 OFPAT_PUSH_VLAN = 17,
584 OFPAT_PUSH_MPLS = 19,
586 OFPAT_SET_QUEUE = 21,
588 OFPAT_SET_NW_TTL = 23,
589 OFPAT_DEC_NW_TTL = 24,
590 OFPAT_SET_FIELD = 25,
593 OFPAT_EXPERIMENTER = 0xffff
609 enum ofp_controller_max_len {
611 OFPCML_NO_BUFFER = 0xffff,
686 uint32_t experimenter;
701 uint64_t datapath_id;
706 uint8_t auxiliary_id;
709 uint32_t capabilities;
715 enum ofp_capabilities {
716 OFPC_FLOW_STATS = 1 << 0,
717 OFPC_TABLE_STATS = 1 << 1,
718 OFPC_PORT_STATS = 1 << 2,
719 OFPC_GROUP_STATS = 1 << 3,
720 OFPC_IP_REASM = 1 << 5,
721 OFPC_QUEUE_STATS = 1 << 6,
723 OFPC_PORT_BLOCKED = 1 << 8,
734 uint16_t miss_send_len;
739 enum ofp_config_flags {
741 OFPC_FRAG_NORMAL = 0,
742 OFPC_FRAG_DROP = 1 << 0,
743 OFPC_FRAG_REASM = 1 << 1,
773 enum ofp_table_config {
774 OFPTC_DEPRECATED_MASK = 3,
786 uint64_t cookie_mask;
794 uint16_t idle_timeout;
795 uint16_t hard_timeout;
814 enum ofp_flow_mod_command {
817 OFPFC_MODIFY_STRICT = 2,
820 OFPFC_DELETE_STRICT = 4,
824 enum ofp_flow_mod_flags {
825 OFPFF_SEND_FLOW_REM = 1 << 0,
826 OFPFF_CHECK_OVERLAP = 1 << 1,
827 OFPFF_RESET_COUNTS = 1 << 2,
828 OFPFF_NO_PKT_COUNTS = 1 << 3,
829 OFPFF_NO_BYT_COUNTS = 1 << 4,
832 static int const OFP_FLOW_MOD_STATIC_HDR_LEN =
sizeof(
struct ofp_flow_mod) - sizeof(struct ofp_match);
848 uint32_t watch_group;
871 enum ofp_group_mod_command {
879 enum ofp_group_type {
889 OFPG_MAX = 0xffffff00,
892 OFPG_ALL = 0xfffffffc,
894 OFPG_ANY = 0xffffffff
909 uint8_t hw_addr[OFP_ETH_ALEN];
925 enum ofp_packet_in_reason {
959 OFPM_MAX = 0xffff0000,
962 OFPM_SLOWPATH = 0xfffffffd,
963 OFPM_CONTROLLER = 0xfffffffe,
964 OFPM_ALL = 0xffffffff,
968 enum ofp_meter_mod_command {
975 enum ofp_meter_flags {
977 OFPMF_PKTPS = 1 << 1,
978 OFPMF_BURST = 1 << 2,
979 OFPMF_STATS = 1 << 3,
983 enum ofp_meter_band_type {
985 OFPMBT_DSCP_REMARK = 2,
986 OFPMBT_EXPERIMENTER = 0xFFFF,
1004 uint32_t burst_size;
1015 uint32_t burst_size;
1016 uint32_t experimenter;
1044 enum ofp_multipart_request_flags {
1045 OFPMPF_REQ_MORE = 1 << 0
1048 enum ofp_multipart_reply_flags {
1049 OFPMPF_REPLY_MORE = 1 << 0
1052 enum ofp_multipart_types {
1066 OFPMP_AGGREGATE = 2,
1076 OFPMP_PORT_STATS = 4,
1091 OFPMP_GROUP_DESC = 7,
1096 OFPMP_GROUP_FEATURES = 8,
1106 OFPMP_METER_CONFIG = 10,
1111 OFPMP_METER_FEATURES = 11,
1119 OFPMP_TABLE_FEATURES = 12,
1124 OFPMP_PORT_DESC = 13,
1130 OFPMP_EXPERIMENTER = 0xffff
1134 struct ofp_stats_request {
1135 struct ofp_header header;
1141 OFP_ASSERT(
sizeof(
struct ofp_stats_request) == 16);
1143 enum ofp_stats_reply_flags {
1144 OFPSF_REPLY_MORE = 1 << 0
1147 struct ofp_stats_reply {
1148 struct ofp_header header;
1154 OFP_ASSERT(
sizeof(
struct ofp_stats_reply) == 16);
1161 #define DESC_STR_LEN 256
1162 #define SERIAL_NUM_LEN 32
1167 char mfr_desc[DESC_STR_LEN];
1168 char hw_desc[DESC_STR_LEN];
1169 char sw_desc[DESC_STR_LEN];
1170 char serial_num[SERIAL_NUM_LEN];
1171 char dp_desc[DESC_STR_LEN];
1173 OFP_ASSERT(
sizeof(
struct ofp_desc) == 1056);
1188 uint64_t cookie_mask;
1198 uint32_t duration_sec;
1199 uint32_t duration_nsec;
1203 uint16_t idle_timeout;
1204 uint16_t hard_timeout;
1208 uint64_t packet_count;
1209 uint64_t byte_count;
1229 uint64_t cookie_mask;
1238 uint64_t packet_count;
1239 uint64_t byte_count;
1240 uint32_t flow_count;
1253 uint32_t active_count;
1254 uint64_t lookup_count;
1255 uint64_t matched_count;
1270 #define OFP_MAX_TABLE_NAME_LEN 32
1278 char name[OFP_MAX_TABLE_NAME_LEN];
1279 uint64_t metadata_match;
1280 uint64_t metadata_write;
1282 uint32_t max_entries;
1292 enum ofp_table_feature_prop_type {
1293 OFPTFPT_INSTRUCTIONS = 0,
1294 OFPTFPT_INSTRUCTIONS_MISS = 1,
1295 OFPTFPT_NEXT_TABLES = 2,
1296 OFPTFPT_NEXT_TABLES_MISS = 3,
1297 OFPTFPT_WRITE_ACTIONS = 4,
1298 OFPTFPT_WRITE_ACTIONS_MISS = 5,
1299 OFPTFPT_APPLY_ACTIONS = 6,
1300 OFPTFPT_APPLY_ACTIONS_MISS = 7,
1302 OFPTFPT_WILDCARDS = 10,
1303 OFPTFPT_WRITE_SETFIELD = 12,
1304 OFPTFPT_WRITE_SETFIELD_MISS = 13,
1305 OFPTFPT_APPLY_SETFIELD = 14,
1306 OFPTFPT_APPLY_SETFIELD_MISS = 15,
1307 OFPTFPT_EXPERIMENTER = 0xFFFE,
1308 OFPTFPT_EXPERIMENTER_MISS = 0xFFFF,
1332 uint8_t next_table_ids[0];
1356 uint32_t oxm_ids[0];
1364 uint32_t experimenter;
1370 uint32_t experimenter_data[0];
1395 uint64_t rx_packets;
1396 uint64_t tx_packets;
1399 uint64_t rx_dropped;
1400 uint64_t tx_dropped;
1409 uint64_t rx_frame_err;
1410 uint64_t rx_over_err;
1411 uint64_t rx_crc_err;
1412 uint64_t collisions;
1413 uint32_t duration_sec;
1414 uint32_t duration_nsec;
1439 uint64_t tx_packets;
1441 uint32_t duration_sec;
1442 uint32_t duration_nsec;
1460 uint64_t packet_count;
1461 uint64_t byte_count;
1472 uint64_t packet_count;
1473 uint64_t byte_count;
1474 uint32_t duration_sec;
1475 uint32_t duration_nsec;
1501 uint32_t capabilities;
1502 uint32_t max_groups[4];
1503 uint32_t actions[4];
1508 enum ofp_group_capabilities {
1509 OFPGFC_SELECT_WEIGHT = 1 << 0,
1510 OFPGFC_SELECT_LIVENESS = 1 << 1,
1511 OFPGFC_CHAINING = 1 << 2,
1512 OFPGFC_CHAINING_CHECKS = 1 << 3,
1528 uint64_t packet_band_count;
1529 uint64_t byte_band_count;
1538 uint32_t flow_count;
1539 uint64_t packet_in_count;
1540 uint64_t byte_in_count;
1541 uint32_t duration_sec;
1542 uint32_t duration_nsec;
1569 uint32_t band_types;
1570 uint32_t capabilities;
1583 uint32_t experimenter;
1620 uint16_t actions_len;
1644 uint64_t generation_id;
1649 enum ofp_controller_role {
1650 OFPCR_ROLE_NOCHANGE = 0,
1651 OFPCR_ROLE_EQUAL = 1,
1652 OFPCR_ROLE_MASTER = 2,
1653 OFPCR_ROLE_SLAVE = 3,
1663 uint32_t packet_in_mask[2];
1664 uint32_t port_status_mask[2];
1665 uint32_t flow_removed_mask[2];
1712 uint32_t duration_sec;
1713 uint32_t duration_nsec;
1715 uint16_t idle_timeout;
1716 uint16_t hard_timeout;
1717 uint64_t packet_count;
1718 uint64_t byte_count;
1724 enum ofp_flow_removed_reason {
1725 OFPRR_IDLE_TIMEOUT = 0,
1726 OFPRR_HARD_TIMEOUT = 1,
1728 OFPRR_GROUP_DELETE = 3,
1745 enum ofp_port_reason {
1768 enum ofp_error_type {
1769 OFPET_HELLO_FAILED = 0,
1770 OFPET_BAD_REQUEST = 1,
1771 OFPET_BAD_ACTION = 2,
1772 OFPET_BAD_INSTRUCTION = 3,
1773 OFPET_BAD_MATCH = 4,
1774 OFPET_FLOW_MOD_FAILED = 5,
1775 OFPET_GROUP_MOD_FAILED = 6,
1776 OFPET_PORT_MOD_FAILED = 7,
1777 OFPET_TABLE_MOD_FAILED = 8,
1778 OFPET_QUEUE_OP_FAILED = 9,
1779 OFPET_SWITCH_CONFIG_FAILED = 10,
1780 OFPET_ROLE_REQUEST_FAILED = 11,
1781 OFPET_METER_MOD_FAILED = 12,
1782 OFPET_TABLE_FEATURES_FAILED = 13,
1783 OFPET_EXPERIMENTER = 0xffff
1789 enum ofp_hello_failed_code {
1790 OFPHFC_INCOMPATIBLE = 0,
1796 enum ofp_bad_request_code {
1797 OFPBRC_BAD_VERSION = 0,
1798 OFPBRC_BAD_TYPE = 1,
1799 OFPBRC_BAD_STAT = 2,
1800 OFPBRC_BAD_EXPERIMENTER = 3,
1803 OFPBRC_BAD_EXP_TYPE = 4,
1806 OFPBRC_BUFFER_EMPTY = 7,
1807 OFPBRC_BUFFER_UNKNOWN = 8,
1808 OFPBRC_BAD_TABLE_ID = 9,
1810 OFPBRC_IS_SLAVE = 10,
1811 OFPBRC_BAD_PORT = 11,
1812 OFPBRC_BAD_PACKET = 12,
1813 OFPBRC_MULTIPART_BUFFER_OVERFLOW = 13,
1820 enum ofp_bad_action_code {
1821 OFPBAC_BAD_TYPE = 0,
1823 OFPBAC_BAD_EXPERIMENTER = 2,
1824 OFPBAC_BAD_EXP_TYPE = 3,
1825 OFPBAC_BAD_OUT_PORT = 4,
1826 OFPBAC_BAD_ARGUMENT = 5,
1828 OFPBAC_TOO_MANY = 7,
1829 OFPBAC_BAD_QUEUE = 8,
1830 OFPBAC_BAD_OUT_GROUP = 9,
1831 OFPBAC_MATCH_INCONSISTENT = 10,
1832 OFPBAC_UNSUPPORTED_ORDER = 11,
1834 OFPBAC_BAD_TAG = 12,
1836 OFPBAC_BAD_SET_TYPE = 13,
1837 OFPBAC_BAD_SET_LEN = 14,
1838 OFPBAC_BAD_SET_ARGUMENT = 15,
1843 enum ofp_bad_instruction_code {
1844 OFPBIC_UNKNOWN_INST = 0,
1845 OFPBIC_UNSUP_INST = 1,
1847 OFPBIC_BAD_TABLE_ID = 2,
1848 OFPBIC_UNSUP_METADATA = 3,
1849 OFPBIC_UNSUP_METADATA_MASK = 4,
1851 OFPBIC_BAD_EXPERIMENTER = 5,
1853 OFPBIC_BAD_EXP_TYPE = 6,
1860 enum ofp_bad_match_code {
1861 OFPBMC_BAD_TYPE = 0,
1864 OFPBMC_BAD_DL_ADDR_MASK = 3,
1867 OFPBMC_BAD_NW_ADDR_MASK = 4,
1870 OFPBMC_BAD_WILDCARDS = 5,
1872 OFPBMC_BAD_FIELD = 6,
1873 OFPBMC_BAD_VALUE = 7,
1874 OFPBMC_BAD_MASK = 8,
1876 OFPBMC_BAD_PREREQ = 9,
1877 OFPBMC_DUP_FIELD = 10,
1883 enum ofp_flow_mod_failed_code {
1884 OFPFMFC_UNKNOWN = 0,
1885 OFPFMFC_TABLE_FULL = 1,
1886 OFPFMFC_BAD_TABLE_ID = 2,
1887 OFPFMFC_OVERLAP = 3,
1890 OFPFMFC_BAD_TIMEOUT = 5,
1892 OFPFMFC_BAD_COMMAND = 6,
1893 OFPFMFC_BAD_FLAGS = 7,
1898 enum ofp_group_mod_failed_code {
1899 OFPGMFC_GROUP_EXISTS = 0,
1902 OFPGMFC_INVALID_GROUP = 1,
1904 OFPGMFC_WEIGHT_UNSUPPORTED = 2,
1906 OFPGMFC_OUT_OF_GROUPS = 3,
1907 OFPGMFC_OUT_OF_BUCKETS = 4,
1909 OFPGMFC_CHAINING_UNSUPPORTED = 5,
1911 OFPGMFC_WATCH_UNSUPPORTED = 6,
1914 OFPGMFC_UNKNOWN_GROUP = 8,
1917 OFPGMFC_CHAINED_GROUP = 9,
1919 OFPGMFC_BAD_TYPE = 10,
1920 OFPGMFC_BAD_COMMAND = 11,
1921 OFPGMFC_BAD_BUCKET = 12,
1922 OFPGMFC_BAD_WATCH = 13,
1928 enum ofp_port_mod_failed_code {
1929 OFPPMFC_BAD_PORT = 0,
1930 OFPPMFC_BAD_HW_ADDR = 1,
1932 OFPPMFC_BAD_CONFIG = 2,
1933 OFPPMFC_BAD_ADVERTISE = 3,
1939 enum ofp_table_mod_failed_code {
1940 OFPTMFC_BAD_TABLE = 0,
1941 OFPTMFC_BAD_CONFIG = 1,
1947 enum ofp_queue_op_failed_code {
1948 OFPQOFC_BAD_PORT = 0,
1949 OFPQOFC_BAD_QUEUE = 1,
1955 enum ofp_switch_config_failed_code {
1956 OFPSCFC_BAD_FLAGS = 0,
1957 OFPSCFC_BAD_LEN = 1,
1963 enum ofp_role_request_failed_code {
1966 OFPRRFC_BAD_ROLE = 2,
1971 enum ofp_meter_mod_failed_code {
1972 OFPMMFC_UNKNOWN = 0,
1973 OFPMMFC_METER_EXISTS = 1,
1975 OFPMMFC_INVALID_METER = 2,
1977 OFPMMFC_UNKNOWN_METER = 3,
1980 OFPMMFC_BAD_COMMAND = 4,
1981 OFPMMFC_BAD_FLAGS = 5,
1982 OFPMMFC_BAD_RATE = 6,
1983 OFPMMFC_BAD_BURST = 7,
1984 OFPMMFC_BAD_BAND = 8,
1985 OFPMMFC_BAD_BAND_VALUE = 9,
1986 OFPMMFC_OUT_OF_METERS = 10,
1987 OFPMMFC_OUT_OF_BANDS = 11,
1993 enum ofp_table_features_failed_code {
1994 OFPTFFC_BAD_TABLE = 0,
1995 OFPTFFC_BAD_METADATA = 1,
1996 OFPTFFC_BAD_TYPE = 2,
1997 OFPTFFC_BAD_LEN = 3,
1998 OFPTFFC_BAD_ARGUMENT = 4,
2007 uint32_t experimenter;
2038 OFP_ASSERT(
sizeof(
struct ofp_hello) == 8);
2042 enum ofp_hello_elem_type {
2043 OFPHET_VERSIONBITMAP = 1,
2054 uint32_t bitmaps[0];
2065 uint32_t experimenter;
Definition: openflow13.h:224
Definition: openflow13.h:449
Definition: openflow13.h:1181
Definition: openflow13.h:1035
Definition: openflow13.h:410
Definition: openflow13.h:216
Definition: openflow13.h:1237
Definition: openflow13.h:1756
Definition: openflow13.h:633
Definition: openflow13.h:1392
Definition: openflow13.h:783
Definition: openflow13.h:557
Definition: openflow13.h:1594
Definition: openflow13.h:1250
Definition: openflow13.h:936
Definition: openflow13.h:1678
Definition: openflow13.h:1603
Definition: openflow13.h:499
Definition: openflow13.h:1527
Definition: openflow13.h:1520
Definition: openflow13.h:1274
Definition: openflow13.h:1459
Definition: openflow13.h:946
Definition: openflow13.h:1452
Definition: openflow13.h:394
Definition: openflow13.h:625
Definition: openflow13.h:1429
Definition: openflow13.h:859
Definition: openflow13.h:669
Definition: openflow13.h:245
Definition: openflow13.h:1567
Definition: openflow13.h:1466
Definition: openflow13.h:1337
Definition: openflow13.h:549
Definition: openflow13.h:1380
Definition: openflow13.h:990
Definition: openflow13.h:206
Definition: openflow13.h:1616
Definition: openflow13.h:2033
Definition: openflow13.h:1485
Definition: openflow13.h:459
Definition: openflow13.h:1011
Definition: openflow13.h:617
Definition: openflow13.h:1000
Definition: openflow13.h:642
Definition: openflow13.h:1736
Definition: openflow13.h:434
Definition: openflow13.h:1194
Definition: openflow13.h:506
Definition: openflow13.h:905
Definition: openflow13.h:1640
Definition: openflow13.h:2047
Definition: openflow13.h:1361
Definition: openflow13.h:1704
Definition: openflow13.h:425
Definition: openflow13.h:660
Definition: openflow13.h:116
Definition: openflow13.h:839
Definition: openflow13.h:699
Definition: openflow13.h:731
Definition: openflow13.h:1325
Definition: openflow13.h:1534
Definition: openflow13.h:232
Definition: openflow13.h:600
Definition: openflow13.h:1435
Definition: openflow13.h:378
Definition: openflow13.h:2003
Definition: openflow13.h:1026
Definition: openflow13.h:762
Definition: openflow13.h:1661
Definition: openflow13.h:1499
Definition: openflow13.h:538
Definition: openflow13.h:441
Definition: openflow13.h:1166
Definition: openflow13.h:1349
Definition: openflow13.h:1216
Definition: openflow13.h:1554
Definition: openflow13.h:651
Definition: openflow13.h:1312