36 #ifndef _OPENFLOW_OPENFLOW10_H
37 #define _OPENFLOW_OPENFLOW10_H 1
39 #include "rofl/common/openflow/openflow_common.h"
43 namespace openflow10 {
57 #define OFP10_VERSION 1
95 OFPP_IN_PORT = 0xfff8,
102 OFPP_NORMAL = 0xfffa,
106 OFPP_CONTROLLER = 0xfffd,
112 OFP_NO_BUFFER = 0xffffffff,
119 OFPT_ECHO_REQUEST = 2,
124 OFPT_FEATURES_REQUEST = 5,
125 OFPT_FEATURES_REPLY = 6,
126 OFPT_GET_CONFIG_REQUEST = 7,
127 OFPT_GET_CONFIG_REPLY = 8,
132 OFPT_FLOW_REMOVED = 11,
133 OFPT_PORT_STATUS = 12,
136 OFPT_PACKET_OUT = 13,
141 OFPT_STATS_REQUEST = 16,
142 OFPT_STATS_REPLY = 17,
145 OFPT_BARRIER_REQUEST = 18,
146 OFPT_BARRIER_REPLY = 19,
149 OFPT_QUEUE_GET_CONFIG_REQUEST = 20,
150 OFPT_QUEUE_GET_CONFIG_REPLY = 21,
162 #define OFP_DEFAULT_MISS_SEND_LEN 128
164 enum ofp_config_flags {
166 OFPC_FRAG_NORMAL = 0,
176 uint16_t miss_send_len;
182 enum ofp_capabilities {
183 OFPC_FLOW_STATS = 1 << 0,
184 OFPC_TABLE_STATS = 1 << 1,
185 OFPC_PORT_STATS = 1 << 2,
187 OFPC_RESERVED = 1 << 4,
188 OFPC_IP_REASM = 1 << 5,
189 OFPC_QUEUE_STATS = 1 << 6,
190 OFPC_ARP_MATCH_IP = 1 << 7
197 enum ofp_port_config {
198 OFPPC_PORT_DOWN = 1 << 0,
200 OFPPC_NO_STP = 1 << 1,
201 OFPPC_NO_RECV = 1 << 2,
203 OFPPC_NO_RECV_STP = 1 << 3,
204 OFPPC_NO_FLOOD = 1 << 4,
205 OFPPC_NO_FWD = 1 << 5,
206 OFPPC_NO_PACKET_IN = 1 << 6
212 enum ofp_port_state {
213 OFPPS_LINK_DOWN = 1 << 0,
219 OFPPS_STP_LISTEN = 0 << 8,
220 OFPPS_STP_LEARN = 1 << 8,
221 OFPPS_STP_FORWARD = 2 << 8,
222 OFPPS_STP_BLOCK = 3 << 8,
223 OFPPS_STP_MASK = 3 << 8
227 enum ofp_port_features {
228 OFPPF_10MB_HD = 1 << 0,
229 OFPPF_10MB_FD = 1 << 1,
230 OFPPF_100MB_HD = 1 << 2,
231 OFPPF_100MB_FD = 1 << 3,
232 OFPPF_1GB_HD = 1 << 4,
233 OFPPF_1GB_FD = 1 << 5,
234 OFPPF_10GB_FD = 1 << 6,
235 OFPPF_COPPER = 1 << 7,
236 OFPPF_FIBER = 1 << 8,
237 OFPPF_AUTONEG = 1 << 9,
238 OFPPF_PAUSE = 1 << 10,
239 OFPPF_PAUSE_ASYM = 1 << 11
245 uint8_t hw_addr[OFP_ETH_ALEN];
246 char name[OFP_MAX_PORT_NAME_LEN];
258 OFP_ASSERT(
sizeof(
struct ofp_port) == 48);
263 uint64_t datapath_id;
273 uint32_t capabilities;
284 enum ofp_port_reason {
303 uint8_t hw_addr[OFP_ETH_ALEN];
319 enum ofp_packet_in_reason {
341 static int const OFP_PACKET_IN_STATIC_HDR_LEN =
sizeof(
struct ofp_packet_in) - 2;
343 OFP_ASSERT(OFP_PACKET_IN_STATIC_HDR_LEN == 18);
345 enum ofp_action_type {
358 OFPAT_VENDOR = 0xffff
392 static int const OFP_VLAN_NONE = 0xffff;
398 OFPVID_NONE = 0xffff,
423 uint8_t dl_addr[OFP_ETH_ALEN];
480 uint16_t actions_len;
488 enum ofp_flow_mod_command {
496 enum flow_mod_header_len {
497 OFP_FLOW_MOD_STATIC_HDR_LEN = 72,
501 enum ofp_flow_wildcards {
502 OFPFW_IN_PORT = 1 << 0,
503 OFPFW_DL_VLAN = 1 << 1,
504 OFPFW_DL_SRC = 1 << 2,
505 OFPFW_DL_DST = 1 << 3,
506 OFPFW_DL_TYPE = 1 << 4,
507 OFPFW_NW_PROTO = 1 << 5,
508 OFPFW_TP_SRC = 1 << 6,
509 OFPFW_TP_DST = 1 << 7,
515 OFPFW_NW_SRC_SHIFT = 8,
516 OFPFW_NW_SRC_BITS = 6,
517 OFPFW_NW_SRC_MASK = ((1 << OFPFW_NW_SRC_BITS) - 1) << OFPFW_NW_SRC_SHIFT,
518 OFPFW_NW_SRC_ALL = 32 << OFPFW_NW_SRC_SHIFT,
521 OFPFW_NW_DST_SHIFT = 14,
522 OFPFW_NW_DST_BITS = 6,
523 OFPFW_NW_DST_MASK = ((1 << OFPFW_NW_DST_BITS) - 1) << OFPFW_NW_DST_SHIFT,
524 OFPFW_NW_DST_ALL = 32 << OFPFW_NW_DST_SHIFT,
526 OFPFW_DL_VLAN_PCP = 1 << 20,
527 OFPFW_NW_TOS = 1 << 21,
530 OFPFW_ALL = ((1 << 22) - 1)
535 #define OFPFW_ICMP_TYPE OFPFW_TP_SRC
536 #define OFPFW_ICMP_CODE OFPFW_TP_DST
542 #define OFP_DL_TYPE_ETH2_CUTOFF 0x0600
547 #define OFP_DL_TYPE_NOT_ETH_TYPE 0x05ff
554 uint8_t dl_src[OFP_ETH_ALEN];
555 uint8_t dl_dst[OFP_ETH_ALEN];
569 OFP_ASSERT(
sizeof(
struct ofp_match) == 40);
571 static int const OFP_MATCH_STATIC_LEN =
sizeof(
struct ofp_match);
575 #define icmp_type tp_src
576 #define icmp_code tp_dst
580 #define OFP_FLOW_PERMANENT 0
583 #define OFP_DEFAULT_PRIORITY 0x8000
585 enum ofp_flow_mod_flags {
586 OFPFF_SEND_FLOW_REM = 1 << 0,
588 OFPFF_CHECK_OVERLAP = 1 << 1,
600 uint16_t idle_timeout;
601 uint16_t hard_timeout;
617 enum ofp_flow_removed_reason {
633 uint32_t duration_sec;
634 uint32_t duration_nsec;
636 uint16_t idle_timeout;
638 uint64_t packet_count;
646 enum ofp_error_type {
650 OFPET_FLOW_MOD_FAILED,
651 OFPET_PORT_MOD_FAILED,
652 OFPET_QUEUE_OP_FAILED
657 enum ofp_hello_failed_code {
664 enum ofp_bad_request_code {
674 OFPBRC_BUFFER_UNKNOWN
679 enum ofp_bad_action_code {
683 OFPBAC_BAD_VENDOR_TYPE,
693 enum ofp_flow_mod_failed_code {
694 OFPFMFC_ALL_TABLES_FULL,
698 OFPFMFC_BAD_EMERG_TIMEOUT,
707 enum ofp_port_mod_failed_code {
714 enum ofp_queue_op_failed_code {
721 enum ofp_stats_types {
756 OFPST_VENDOR = 0xffff
767 enum ofp_stats_reply_flags {
768 OFPSF_REPLY_MORE = 1 << 0
779 #define DESC_STR_LEN 256
780 #define SERIAL_NUM_LEN 32
784 char mfr_desc[DESC_STR_LEN];
785 char hw_desc[DESC_STR_LEN];
786 char sw_desc[DESC_STR_LEN];
787 char serial_num[SERIAL_NUM_LEN];
788 char dp_desc[DESC_STR_LEN];
810 uint32_t duration_sec;
811 uint32_t duration_nsec;
815 uint16_t idle_timeout;
816 uint16_t hard_timeout;
819 uint64_t packet_count;
839 uint64_t packet_count;
851 char name[OFP_MAX_TABLE_NAME_LEN];
854 uint32_t max_entries;
855 uint32_t active_count;
856 uint64_t lookup_count;
857 uint64_t matched_count;
890 uint64_t rx_frame_err;
891 uint64_t rx_over_err;
918 #define OFPQ_ALL 0xffffffff
921 #define OFPQ_MIN_RATE_UNCFG 0xffff
923 enum ofp_queue_properties {
Definition: openflow10.h:838
Definition: openflow10.h:862
Definition: openflow10.h:420
Definition: openflow10.h:873
Definition: openflow10.h:429
Definition: openflow10.h:847
Definition: openflow10.h:974
Definition: openflow10.h:261
Definition: openflow10.h:826
Definition: openflow10.h:593
Definition: openflow10.h:437
Definition: openflow10.h:300
Definition: openflow10.h:243
Definition: openflow10.h:551
Definition: openflow10.h:793
Definition: openflow10.h:624
Definition: openflow10.h:402
Definition: openflow10.h:381
Definition: openflow10.h:158
Definition: openflow10.h:73
Definition: openflow10.h:291
Definition: openflow10.h:956
Definition: openflow10.h:805
Definition: openflow10.h:985
Definition: openflow10.h:325
Definition: openflow10.h:783
Definition: openflow10.h:939
Definition: openflow10.h:947
Definition: openflow10.h:446
Definition: openflow10.h:476
Definition: openflow10.h:411
Definition: openflow10.h:992
Definition: openflow10.h:965
Definition: openflow10.h:771
Definition: openflow10.h:759
Definition: openflow10.h:173