From 31a9e63f0f7e771c849f7ef45c9827fcc78abe03 Mon Sep 17 00:00:00 2001 From: Jarno Rajahalme Date: Mon, 3 Dec 2012 12:37:56 +0200 Subject: [PATCH] include/openflow: Moved remaining common definitions from openflow-1.0.h Moved remaining common definitions from openflow-1.0.h to openflow-common.h and renamed 1.0 specific definitions with the "10" infix. Added hstamp rules for new headers, fixed non-ASCII characters in openflow-1.3.h, Commented out trailing zero-length data members. Signed-off-by: Jarno Rajahalme Signed-off-by: Ben Pfaff --- build-aux/check-structs | 2 +- include/openflow/automake.mk | 22 ++++-- include/openflow/openflow-1.0.h | 107 +++-------------------------- include/openflow/openflow-1.1.h | 2 +- include/openflow/openflow-1.3.h | 24 +++---- include/openflow/openflow-common.h | 92 +++++++++++++++++++++++++ lib/ofp-actions.c | 6 +- lib/ofp-msgs.h | 8 +-- lib/ofp-util.c | 18 ++--- lib/ofp-util.def | 2 +- ofproto/ofproto.c | 4 +- ofproto/pktbuf.c | 4 +- 12 files changed, 153 insertions(+), 138 deletions(-) diff --git a/build-aux/check-structs b/build-aux/check-structs index e50e31011..0428abf51 100755 --- a/build-aux/check-structs +++ b/build-aux/check-structs @@ -190,7 +190,7 @@ def parseStruct(): forceMatch(';') if size % alignment: shortage = alignment - (size % alignment) - if (structName == "struct ofp_packet_in" and + if (structName == "struct ofp10_packet_in" and shortage == 2 and memberName == 'data' and count == 0): diff --git a/include/openflow/automake.mk b/include/openflow/automake.mk index f8910867b..76a8f062c 100644 --- a/include/openflow/automake.mk +++ b/include/openflow/automake.mk @@ -15,23 +15,35 @@ SUFFIXES += .h .hstamp touch $@ HSTAMP_FILES = \ - include/openflow/nicira.hstamp \ + include/openflow/nicira-ext.hstamp \ include/openflow/openflow-1.0.hstamp \ include/openflow/openflow-1.1.hstamp \ include/openflow/openflow-1.2.hstamp \ + include/openflow/openflow-1.3.hstamp \ + include/openflow/openflow-common.hstamp \ include/openflow/openflow.hstamp CLEANFILES += $(HSTAMP_FILES) ALL_LOCAL += $(HSTAMP_FILES) $(HSTAMP_FILES): build-aux/check-structs -include/openflow/openflow-1.0.hstamp: include/openflow/openflow-common.h -include/openflow/openflow-1.1.hstamp: include/openflow/openflow-common.h +include/openflow/openflow-1.0.hstamp: \ + include/openflow/openflow-common.h +include/openflow/openflow-1.1.hstamp: \ + include/openflow/openflow-common.h +include/openflow/openflow-1.2.hstamp: \ + include/openflow/openflow-common.h \ + include/openflow/openflow-1.1.h +include/openflow/openflow-1.3.hstamp: \ + include/openflow/openflow-common.h \ + include/openflow/openflow-1.1.h \ + include/openflow/openflow-1.2.h include/openflow/nicira-ext.hstamp: \ + include/openflow/openflow.h \ + include/openflow/openflow-common.h \ include/openflow/openflow-1.0.h \ include/openflow/openflow-1.1.h \ include/openflow/openflow-1.2.h \ - include/openflow/openflow-common.h \ - include/openflow/openflow.h + include/openflow/openflow-1.3.h endif EXTRA_DIST += build-aux/check-structs diff --git a/include/openflow/openflow-1.0.h b/include/openflow/openflow-1.0.h index ae1e1b8b0..c30fa9215 100644 --- a/include/openflow/openflow-1.0.h +++ b/include/openflow/openflow-1.0.h @@ -51,31 +51,6 @@ enum ofp_port { OFPP_NONE = 0xffff /* Not associated with a physical port. */ }; -#define OFP_DEFAULT_MISS_SEND_LEN 128 - -enum ofp_config_flags { - /* Handling of IP fragments. */ - OFPC_FRAG_NORMAL = 0, /* No special handling for fragments. */ - OFPC_FRAG_DROP = 1, /* Drop fragments. */ - OFPC_FRAG_REASM = 2, /* Reassemble (only if OFPC_IP_REASM set). */ - OFPC_FRAG_NX_MATCH = 3, /* Make first fragments available for matching. */ - OFPC_FRAG_MASK = 3, - - /* OFPC_INVALID_TTL_TO_CONTROLLER is deprecated in OpenFlow 1.3 */ - - /* TTL processing - applicable for IP and MPLS packets. */ - OFPC_INVALID_TTL_TO_CONTROLLER = 1 << 2, /* Send packets with invalid TTL - to the controller. */ -}; - -/* Switch configuration. */ -struct ofp_switch_config { - ovs_be16 flags; /* OFPC_* flags. */ - ovs_be16 miss_send_len; /* Max bytes of new flow that datapath should - send to the controller. */ -}; -OFP_ASSERT(sizeof(struct ofp_switch_config) == 4); - /* OpenFlow 1.0 specific capabilities supported by the datapath (struct * ofp_switch_features, member capabilities). */ enum ofp10_capabilities { @@ -177,7 +152,7 @@ struct ofp10_queue_get_config_reply { OFP_ASSERT(sizeof(struct ofp10_queue_get_config_reply) == 8); /* Packet received on port (datapath -> controller). */ -struct ofp_packet_in { +struct ofp10_packet_in { ovs_be32 buffer_id; /* ID assigned by datapath. */ ovs_be16 total_len; /* Full length of frame. */ ovs_be16 in_port; /* Port on which frame was received. */ @@ -190,7 +165,7 @@ struct ofp_packet_in { offsetof(struct ofp_packet_in, data) == sizeof(struct ofp_packet_in) - 2. */ }; -OFP_ASSERT(sizeof(struct ofp_packet_in) == 12); +OFP_ASSERT(sizeof(struct ofp10_packet_in) == 12); enum ofp10_action_type { OFPAT10_OUTPUT, /* Output to switch port. */ @@ -220,30 +195,8 @@ struct ofp10_action_output { }; OFP_ASSERT(sizeof(struct ofp10_action_output) == 8); -/* Action header for OFPAT10_VENDOR. The rest of the body is vendor-defined. */ -struct ofp_action_vendor_header { - ovs_be16 type; /* OFPAT10_VENDOR. */ - ovs_be16 len; /* Length is a multiple of 8. */ - ovs_be32 vendor; /* Vendor ID, which takes the same form - as in "struct ofp_vendor_header". */ -}; -OFP_ASSERT(sizeof(struct ofp_action_vendor_header) == 8); - -/* Action header that is common to all actions. The length includes the - * header and any padding used to make the action 64-bit aligned. - * NB: The length of an action *must* always be a multiple of eight. */ -struct ofp_action_header { - ovs_be16 type; /* One of OFPAT10_*. */ - ovs_be16 len; /* Length of action, including this - header. This is the length of action, - including any padding to make it - 64-bit aligned. */ - uint8_t pad[4]; -}; -OFP_ASSERT(sizeof(struct ofp_action_header) == 8); - /* OFPAT10_ENQUEUE action struct: send packets to given queue on port. */ -struct ofp_action_enqueue { +struct ofp10_action_enqueue { ovs_be16 type; /* OFPAT10_ENQUEUE. */ ovs_be16 len; /* Len is 16. */ ovs_be16 port; /* Port that queue belongs. Should @@ -252,7 +205,7 @@ struct ofp_action_enqueue { uint8_t pad[6]; /* Pad for 64-bit alignment. */ ovs_be32 queue_id; /* Where to enqueue the packets. */ }; -OFP_ASSERT(sizeof(struct ofp_action_enqueue) == 16); +OFP_ASSERT(sizeof(struct ofp10_action_enqueue) == 16); union ofp_action { ovs_be16 type; @@ -268,7 +221,7 @@ union ofp_action { OFP_ASSERT(sizeof(union ofp_action) == 8); /* Send packet (controller -> datapath). */ -struct ofp_packet_out { +struct ofp10_packet_out { ovs_be32 buffer_id; /* ID assigned by datapath or UINT32_MAX. */ ovs_be16 in_port; /* Packet's input port (OFPP_NONE if none). */ ovs_be16 actions_len; /* Size of action array in bytes. */ @@ -279,10 +232,10 @@ struct ofp_packet_out { * of the message length. */ }; -OFP_ASSERT(sizeof(struct ofp_packet_out) == 8); +OFP_ASSERT(sizeof(struct ofp10_packet_out) == 8); /* Flow wildcards. */ -enum ofp_flow_wildcards { +enum ofp10_flow_wildcards { OFPFW10_IN_PORT = 1 << 0, /* Switch input port. */ OFPFW10_DL_VLAN = 1 << 1, /* VLAN vid. */ OFPFW10_DL_SRC = 1 << 2, /* Ethernet source address. */ @@ -321,17 +274,6 @@ enum ofp_flow_wildcards { #define OFPFW10_ICMP_TYPE OFPFW10_TP_SRC #define OFPFW10_ICMP_CODE OFPFW10_TP_DST -/* Values below this cutoff are 802.3 packets and the two bytes - * following MAC addresses are used as a frame length. Otherwise, the - * two bytes are used as the Ethernet type. - */ -#define OFP_DL_TYPE_ETH2_CUTOFF 0x0600 - -/* Value of dl_type to indicate that the frame does not include an - * Ethernet type. - */ -#define OFP_DL_TYPE_NOT_ETH_TYPE 0x05ff - /* The VLAN id is 12-bits, so we can use the entire 16 bits to indicate * special conditions. All ones indicates that 802.1Q header is not present. */ @@ -358,13 +300,6 @@ struct ofp10_match { }; OFP_ASSERT(sizeof(struct ofp10_match) == 40); -/* Value used in "idle_timeout" and "hard_timeout" to indicate that the entry - * is permanent. */ -#define OFP_FLOW_PERMANENT 0 - -/* By default, choose a priority in the middle. */ -#define OFP_DEFAULT_PRIORITY 0x8000 - enum ofp10_flow_mod_flags { OFPFF10_EMERG = 1 << 2 /* Ramark this is for emergency. */ }; @@ -393,7 +328,7 @@ struct ofp10_flow_mod { OFP_ASSERT(sizeof(struct ofp10_flow_mod) == 64); /* Flow removed (datapath -> controller). */ -struct ofp_flow_removed { +struct ofp10_flow_removed { struct ofp10_match match; /* Description of fields. */ ovs_be64 cookie; /* Opaque controller-issued identifier. */ @@ -409,16 +344,7 @@ struct ofp_flow_removed { ovs_be64 packet_count; ovs_be64 byte_count; }; -OFP_ASSERT(sizeof(struct ofp_flow_removed) == 80); - -/* OFPT_ERROR: Error message (datapath -> controller). */ -struct ofp_error_msg { - ovs_be16 type; - ovs_be16 code; - uint8_t data[0]; /* Variable-length data. Interpreted based - on the type and code. */ -}; -OFP_ASSERT(sizeof(struct ofp_error_msg) == 4); +OFP_ASSERT(sizeof(struct ofp10_flow_removed) == 80); /* Statistics request or reply message. */ struct ofp10_stats_msg { @@ -429,10 +355,6 @@ struct ofp10_stats_msg { }; OFP_ASSERT(sizeof(struct ofp10_stats_msg) == 12); -enum ofp_stats_reply_flags { - OFPSF_REPLY_MORE = 1 << 0 /* More replies to follow. */ -}; - /* Stats request of type OFPST_AGGREGATE or OFPST_FLOW. */ struct ofp10_flow_stats_request { struct ofp10_match match; /* Fields to match. */ @@ -548,15 +470,4 @@ struct ofp10_vendor_stats_msg { }; OFP_ASSERT(sizeof(struct ofp10_vendor_stats_msg) == 16); -/* Vendor extension. */ -struct ofp_vendor_header { - struct ofp_header header; /* Type OFPT_VENDOR. */ - ovs_be32 vendor; /* Vendor ID: - * - MSB 0: low-order bytes are IEEE OUI. - * - MSB != 0: defined by OpenFlow - * consortium. */ - /* Vendor-defined arbitrary additional data. */ -}; -OFP_ASSERT(sizeof(struct ofp_vendor_header) == 12); - #endif /* openflow/openflow-1.0.h */ diff --git a/include/openflow/openflow-1.1.h b/include/openflow/openflow-1.1.h index 9b2f75435..8dfd795c6 100644 --- a/include/openflow/openflow-1.1.h +++ b/include/openflow/openflow-1.1.h @@ -753,7 +753,7 @@ struct ofp11_packet_in { ovs_be16 total_len; /* Full length of frame. */ uint8_t reason; /* Reason packet is being sent (one of OFPR_*) */ uint8_t table_id; /* ID of the table that was looked up */ - uint8_t data[0]; /* Ethernet frame, halfway through 32-bit word, + /* uint8_t data[0]; Ethernet frame, halfway through 32-bit word, so the IP header is 32-bit aligned. The amount of data is inferred from the length field in the header. Because of padding, diff --git a/include/openflow/openflow-1.3.h b/include/openflow/openflow-1.3.h index 61c4598c0..b7b877c6b 100644 --- a/include/openflow/openflow-1.3.h +++ b/include/openflow/openflow-1.3.h @@ -119,8 +119,8 @@ enum ofp13_table_config { /* OpenFlow 1.3 specific flags * (struct ofp12_flow_mod, member flags). */ enum ofp13_flow_mod_flags { - OFPFF13_NO_PKT_COUNTS = 1 << 3, /* Don’t keep track of packet count. */ - OFPFF13_NO_BYT_COUNTS = 1 << 4 /* Don’t keep track of byte count. */ + OFPFF13_NO_PKT_COUNTS = 1 << 3, /* Don't keep track of packet count. */ + OFPFF13_NO_BYT_COUNTS = 1 << 4 /* Don't keep track of byte count. */ }; /* Common header for all meter bands */ @@ -137,7 +137,7 @@ struct ofp13_meter_mod { ovs_be16 command; /* One of OFPMC_*. */ ovs_be16 flags; /* Set of OFPMF_*. */ ovs_be32 meter_id; /* Meter instance. */ - struct ofp13_meter_band_header bands[0]; /* The bands length is inferred + /* struct ofp13_meter_band_header bands[0]; The bands length is inferred from the length field in the header. */ }; @@ -246,7 +246,7 @@ struct ofp13_table_features { ovs_be32 max_entries; /* Max number of entries supported. */ /* Table Feature Property list */ - struct ofp13_table_feature_prop_header properties[0]; + /* struct ofp13_table_feature_prop_header properties[0]; */ }; OFP_ASSERT(sizeof(struct ofp13_table_features) == 64); @@ -281,8 +281,8 @@ struct ofp13_table_feature_prop_instructions { * - Exactly (length - 4) bytes containing the instruction ids, then * - Exactly (length + 7)/8*8 - (length) (between 0 and 7) * bytes of all-zero bytes */ - struct ofp11_instruction instruction_ids[0]; /* List of instructions - without any data */ + /* struct ofp11_instruction instruction_ids[0]; List of instructions + without any data */ }; OFP_ASSERT(sizeof(struct ofp13_table_feature_prop_instructions) == 4); @@ -295,7 +295,7 @@ struct ofp13_table_feature_prop_next_tables { * - Exactly (length - 4) bytes containing the table_ids, then * - Exactly (length + 7)/8*8 - (length) (between 0 and 7) * bytes of all-zero bytes */ - uint8_t next_table_ids[0]; + /* uint8_t next_table_ids[0]; */ }; OFP_ASSERT(sizeof(struct ofp13_table_feature_prop_next_tables) == 4); @@ -310,7 +310,7 @@ struct ofp13_table_feature_prop_actions { * - Exactly (length - 4) bytes containing the action_ids, then * - Exactly (length + 7)/8*8 - (length) (between 0 and 7) * bytes of all-zero bytes */ - struct ofp_action_header action_ids[0]; /* List of actions + /* struct ofp_action_header action_ids[0]; List of actions without any data */ }; OFP_ASSERT(sizeof(struct ofp13_table_feature_prop_actions) == 4); @@ -328,7 +328,7 @@ struct ofp13_table_feature_prop_oxm { * - Exactly (length - 4) bytes containing the oxm_ids, then * - Exactly (length + 7)/8*8 - (length) (between 0 and 7) * bytes of all-zero bytes */ - ovs_be32 oxm_ids[0]; /* Array of OXM headers */ + /* ovs_be32 oxm_ids[0]; Array of OXM headers */ }; OFP_ASSERT(sizeof(struct ofp13_table_feature_prop_oxm) == 4); @@ -344,7 +344,7 @@ struct ofp13_table_feature_prop_experimenter { * - Exactly (length - 12) bytes containing the experimenter data, then * - Exactly (length + 7)/8*8 - (length) (between 0 and 7) * bytes of all-zero bytes */ - ovs_be32 experimenter_data[0]; + /* ovs_be32 experimenter_data[0]; */ }; OFP_ASSERT(sizeof(struct ofp13_table_feature_prop_experimenter) == 12); @@ -402,7 +402,7 @@ struct ofp13_meter_stats { ovs_be32 duration_sec; /* Time meter has been alive in seconds. */ ovs_be32 duration_nsec; /* Time meter has been alive in nanoseconds beyond duration_sec. */ - struct ofp13_meter_band_stats band_stats[0]; /* The band_stats length is + /* struct ofp13_meter_band_stats band_stats[0]; The band_stats length is inferred from the length field. */ }; OFP_ASSERT(sizeof(struct ofp13_meter_stats) == 40); @@ -412,7 +412,7 @@ struct ofp13_meter_config { ovs_be16 length; /* Length of this entry. */ ovs_be16 flags; /* Set of OFPMC_* that apply. */ ovs_be32 meter_id; /* Meter instance. */ - struct ofp13_meter_band_header bands[0]; /* The bands length is inferred + /* struct ofp13_meter_band_header bands[0]; The bands length is inferred from the length field. */ }; OFP_ASSERT(sizeof(struct ofp13_meter_config) == 8); diff --git a/include/openflow/openflow-common.h b/include/openflow/openflow-common.h index d216f0eec..3cc22c9a8 100644 --- a/include/openflow/openflow-common.h +++ b/include/openflow/openflow-common.h @@ -86,6 +86,27 @@ enum ofp_version { #define OFP_ETH_ALEN 6 /* Bytes in an Ethernet address. */ +#define OFP_DEFAULT_MISS_SEND_LEN 128 + +/* Values below this cutoff are 802.3 packets and the two bytes + * following MAC addresses are used as a frame length. Otherwise, the + * two bytes are used as the Ethernet type. + */ +#define OFP_DL_TYPE_ETH2_CUTOFF 0x0600 + +/* Value of dl_type to indicate that the frame does not include an + * Ethernet type. + */ +#define OFP_DL_TYPE_NOT_ETH_TYPE 0x05ff + +/* Value used in "idle_timeout" and "hard_timeout" to indicate that the entry + * is permanent. */ +#define OFP_FLOW_PERMANENT 0 + +/* By default, choose a priority in the middle. */ +#define OFP_DEFAULT_PRIORITY 0x8000 + + /* Header on all OpenFlow packets. */ struct ofp_header { uint8_t version; /* An OpenFlow version number, e.g. OFP10_VERSION. */ @@ -97,6 +118,39 @@ struct ofp_header { }; OFP_ASSERT(sizeof(struct ofp_header) == 8); +/* OFPT_ERROR: Error message (datapath -> controller). */ +struct ofp_error_msg { + ovs_be16 type; + ovs_be16 code; + uint8_t data[0]; /* Variable-length data. Interpreted based + on the type and code. */ +}; +OFP_ASSERT(sizeof(struct ofp_error_msg) == 4); + +enum ofp_config_flags { + /* Handling of IP fragments. */ + OFPC_FRAG_NORMAL = 0, /* No special handling for fragments. */ + OFPC_FRAG_DROP = 1, /* Drop fragments. */ + OFPC_FRAG_REASM = 2, /* Reassemble (only if OFPC_IP_REASM set). */ + OFPC_FRAG_NX_MATCH = 3, /* Make first fragments available for matching. */ + OFPC_FRAG_MASK = 3, + + /* OFPC_INVALID_TTL_TO_CONTROLLER is deprecated in OpenFlow 1.3 */ + + /* TTL processing - applicable for IP and MPLS packets. */ + OFPC_INVALID_TTL_TO_CONTROLLER = 1 << 2, /* Send packets with invalid TTL + to the controller. */ +}; + +/* Switch configuration. */ +struct ofp_switch_config { + ovs_be16 flags; /* OFPC_* flags. */ + ovs_be16 miss_send_len; /* Max bytes of new flow that datapath should + send to the controller. */ +}; +OFP_ASSERT(sizeof(struct ofp_switch_config) == 4); + + /* Common flags to indicate behavior of the physical port. These flags are * used in ofp_port to describe the current configuration. They are used in * the ofp_port_mod message to configure the port's behavior. @@ -215,6 +269,29 @@ enum ofp_flow_mod_flags { OFPFF_CHECK_OVERLAP = 1 << 1, /* Check for overlapping entries first. */ }; +/* Action header for OFPAT10_VENDOR and OFPAT11_EXPERIMEMNTER. + * The rest of the body is vendor-defined. */ +struct ofp_action_vendor_header { + ovs_be16 type; /* OFPAT10_VENDOR. */ + ovs_be16 len; /* Length is a multiple of 8. */ + ovs_be32 vendor; /* Vendor ID, which takes the same form + as in "struct ofp_vendor_header". */ +}; +OFP_ASSERT(sizeof(struct ofp_action_vendor_header) == 8); + +/* Action header that is common to all actions. The length includes the + * header and any padding used to make the action 64-bit aligned. + * NB: The length of an action *must* always be a multiple of eight. */ +struct ofp_action_header { + ovs_be16 type; /* One of OFPAT10_*. */ + ovs_be16 len; /* Length of action, including this + header. This is the length of action, + including any padding to make it + 64-bit aligned. */ + uint8_t pad[4]; +}; +OFP_ASSERT(sizeof(struct ofp_action_header) == 8); + /* Action structure for OFPAT10_SET_VLAN_VID and OFPAT11_SET_VLAN_VID. */ struct ofp_action_vlan_vid { ovs_be16 type; /* Type. */ @@ -292,6 +369,10 @@ struct ofp_port_status { }; OFP_ASSERT(sizeof(struct ofp_port_status) == 8); +enum ofp_stats_reply_flags { + OFPSF_REPLY_MORE = 1 << 0 /* More replies to follow. */ +}; + #define DESC_STR_LEN 256 #define SERIAL_NUM_LEN 32 /* Body of reply to OFPST_DESC request. Each entry is a NULL-terminated ASCII @@ -349,4 +430,15 @@ struct ofp_hello_elem_header { }; OFP_ASSERT(sizeof(struct ofp_hello_elem_header) == 4); +/* Vendor extension. */ +struct ofp_vendor_header { + struct ofp_header header; /* Type OFPT_VENDOR or OFPT_EXPERIMENTER. */ + ovs_be32 vendor; /* Vendor ID: + * - MSB 0: low-order bytes are IEEE OUI. + * - MSB != 0: defined by OpenFlow + * consortium. */ + /* Vendor-defined arbitrary additional data. */ +}; +OFP_ASSERT(sizeof(struct ofp_vendor_header) == 12); + #endif /* openflow/openflow-common.h */ diff --git a/lib/ofp-actions.c b/lib/ofp-actions.c index 564e4206e..9c458a936 100644 --- a/lib/ofp-actions.c +++ b/lib/ofp-actions.c @@ -49,7 +49,7 @@ output_from_openflow10(const struct ofp10_action_output *oao, } static enum ofperr -enqueue_from_openflow10(const struct ofp_action_enqueue *oae, +enqueue_from_openflow10(const struct ofp10_action_enqueue *oae, struct ofpbuf *out) { struct ofpact_enqueue *enqueue; @@ -479,7 +479,7 @@ ofpact_from_openflow10(const union ofp_action *a, struct ofpbuf *out) break; case OFPUTIL_OFPAT10_ENQUEUE: - error = enqueue_from_openflow10((const struct ofp_action_enqueue *) a, + error = enqueue_from_openflow10((const struct ofp10_action_enqueue *) a, out); break; @@ -1404,7 +1404,7 @@ static void ofpact_enqueue_to_openflow10(const struct ofpact_enqueue *enqueue, struct ofpbuf *out) { - struct ofp_action_enqueue *oae; + struct ofp10_action_enqueue *oae; oae = ofputil_put_OFPAT10_ENQUEUE(out); oae->port = htons(enqueue->port); diff --git a/lib/ofp-msgs.h b/lib/ofp-msgs.h index 496d120a4..8d28ce368 100644 --- a/lib/ofp-msgs.h +++ b/lib/ofp-msgs.h @@ -142,9 +142,9 @@ enum ofpraw { /* OFPT 1.0+ (9): struct ofp_switch_config. */ OFPRAW_OFPT_SET_CONFIG, - /* OFPT 1.0 (10): struct ofp_packet_in up to data, uint8_t[]. */ + /* OFPT 1.0 (10): struct ofp10_packet_in up to data, uint8_t[]. */ OFPRAW_OFPT10_PACKET_IN, - /* OFPT 1.1 (10): struct ofp11_packet_in up to data, uint8_t[]. */ + /* OFPT 1.1 (10): struct ofp11_packet_in, uint8_t[]. */ OFPRAW_OFPT11_PACKET_IN, /* OFPT 1.2 (10): struct ofp12_packet_in, uint8_t[]. */ OFPRAW_OFPT12_PACKET_IN, @@ -153,7 +153,7 @@ enum ofpraw { /* NXT 1.0+ (17): struct nx_packet_in, uint8_t[]. */ OFPRAW_NXT_PACKET_IN, - /* OFPT 1.0 (11): struct ofp_flow_removed. */ + /* OFPT 1.0 (11): struct ofp10_flow_removed. */ OFPRAW_OFPT10_FLOW_REMOVED, /* OFPT 1.1+ (11): struct ofp11_flow_removed, uint8_t[8][]. */ OFPRAW_OFPT11_FLOW_REMOVED, @@ -165,7 +165,7 @@ enum ofpraw { /* OFPT 1.1+ (12): struct ofp_port_status, struct ofp11_port. */ OFPRAW_OFPT11_PORT_STATUS, - /* OFPT 1.0 (13): struct ofp_packet_out, uint8_t[]. */ + /* OFPT 1.0 (13): struct ofp10_packet_out, uint8_t[]. */ OFPRAW_OFPT10_PACKET_OUT, /* OFPT 1.1+ (13): struct ofp11_packet_out, uint8_t[]. */ OFPRAW_OFPT11_PACKET_OUT, diff --git a/lib/ofp-util.c b/lib/ofp-util.c index 49cbe2d5e..320bfde47 100644 --- a/lib/ofp-util.c +++ b/lib/ofp-util.c @@ -2288,7 +2288,7 @@ ofputil_decode_flow_removed(struct ofputil_flow_removed *fr, fr->packet_count = ntohll(ofr->packet_count); fr->byte_count = ntohll(ofr->byte_count); } else if (raw == OFPRAW_OFPT10_FLOW_REMOVED) { - const struct ofp_flow_removed *ofr; + const struct ofp10_flow_removed *ofr; ofr = ofpbuf_pull(&b, sizeof *ofr); @@ -2368,7 +2368,7 @@ ofputil_encode_flow_removed(const struct ofputil_flow_removed *fr, case OFPUTIL_P_OF10_STD: case OFPUTIL_P_OF10_STD_TID: { - struct ofp_flow_removed *ofr; + struct ofp10_flow_removed *ofr; msg = ofpraw_alloc_xid(OFPRAW_OFPT10_FLOW_REMOVED, OFP10_VERSION, htonl(0), 0); @@ -2472,9 +2472,9 @@ ofputil_decode_packet_in(struct ofputil_packet_in *pin, ofputil_decode_packet_in_finish(pin, &match, &b); } else if (raw == OFPRAW_OFPT10_PACKET_IN) { - const struct ofp_packet_in *opi; + const struct ofp10_packet_in *opi; - opi = ofpbuf_pull(&b, offsetof(struct ofp_packet_in, data)); + opi = ofpbuf_pull(&b, offsetof(struct ofp10_packet_in, data)); pin->packet = opi->data; pin->packet_len = b.size; @@ -2585,11 +2585,11 @@ ofputil_encode_packet_in(const struct ofputil_packet_in *pin, opi->cookie = pin->cookie; } } else if (packet_in_format == NXPIF_OPENFLOW10) { - struct ofp_packet_in *opi; + struct ofp10_packet_in *opi; packet = ofpraw_alloc_xid(OFPRAW_OFPT10_PACKET_IN, OFP10_VERSION, htonl(0), send_len); - opi = ofpbuf_put_zeros(packet, offsetof(struct ofp_packet_in, data)); + opi = ofpbuf_put_zeros(packet, offsetof(struct ofp10_packet_in, data)); opi->total_len = htons(pin->total_len); opi->in_port = htons(pin->fmd.in_port); opi->reason = pin->reason; @@ -2698,7 +2698,7 @@ ofputil_decode_packet_out(struct ofputil_packet_out *po, } } else if (raw == OFPRAW_OFPT10_PACKET_OUT) { enum ofperr error; - const struct ofp_packet_out *opo = ofpbuf_pull(&b, sizeof *opo); + const struct ofp10_packet_out *opo = ofpbuf_pull(&b, sizeof *opo); po->buffer_id = ntohl(opo->buffer_id); po->in_port = ntohs(opo->in_port); @@ -3353,7 +3353,7 @@ ofputil_put_ofp10_table_stats(const struct ofp12_table_stats *in, struct ofpbuf *buf) { struct wc_map { - enum ofp_flow_wildcards wc10; + enum ofp10_flow_wildcards wc10; enum oxm12_ofb_match_fields mf12; }; @@ -3778,7 +3778,7 @@ ofputil_encode_packet_out(const struct ofputil_packet_out *po, switch (ofp_version) { case OFP10_VERSION: { - struct ofp_packet_out *opo; + struct ofp10_packet_out *opo; size_t actions_ofs; msg = ofpraw_alloc(OFPRAW_OFPT10_PACKET_OUT, OFP10_VERSION, size); diff --git a/lib/ofp-util.def b/lib/ofp-util.def index 421adb154..6d08d8a38 100644 --- a/lib/ofp-util.def +++ b/lib/ofp-util.def @@ -14,7 +14,7 @@ OFPAT10_ACTION(OFPAT10_SET_NW_DST, ofp_action_nw_addr, "mod_nw_dst") OFPAT10_ACTION(OFPAT10_SET_NW_TOS, ofp_action_nw_tos, "mod_nw_tos") OFPAT10_ACTION(OFPAT10_SET_TP_SRC, ofp_action_tp_port, "mod_tp_src") OFPAT10_ACTION(OFPAT10_SET_TP_DST, ofp_action_tp_port, "mod_tp_dst") -OFPAT10_ACTION(OFPAT10_ENQUEUE, ofp_action_enqueue, "enqueue") +OFPAT10_ACTION(OFPAT10_ENQUEUE, ofp10_action_enqueue, "enqueue") #ifndef OFPAT11_ACTION #define OFPAT11_ACTION(ENUM, STRUCT, EXTENSIBLE, NAME) diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index bc3eb5412..1130eb748 100644 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -2158,7 +2158,7 @@ ofoperation_has_out_port(const struct ofoperation *op, uint16_t out_port) /* Executes the actions indicated by 'rule' on 'packet' and credits 'rule''s * statistics appropriately. 'packet' must have at least sizeof(struct - * ofp_packet_in) bytes of headroom. + * ofp10_packet_in) bytes of headroom. * * 'packet' doesn't necessarily have to match 'rule'. 'rule' will be credited * with statistics for 'packet' either way. @@ -2169,7 +2169,7 @@ rule_execute(struct rule *rule, uint16_t in_port, struct ofpbuf *packet) { struct flow flow; - assert(ofpbuf_headroom(packet) >= sizeof(struct ofp_packet_in)); + assert(ofpbuf_headroom(packet) >= sizeof(struct ofp10_packet_in)); flow_extract(packet, 0, 0, NULL, in_port, &flow); return rule->ofproto->ofproto_class->rule_execute(rule, &flow, packet); diff --git a/ofproto/pktbuf.c b/ofproto/pktbuf.c index 71be34a61..902b19dd7 100644 --- a/ofproto/pktbuf.c +++ b/ofproto/pktbuf.c @@ -120,7 +120,7 @@ pktbuf_save(struct pktbuf *pb, const void *buffer, size_t buffer_size, p->cookie = 0; } p->buffer = ofpbuf_clone_data_with_headroom(buffer, buffer_size, - sizeof(struct ofp_packet_in)); + sizeof(struct ofp10_packet_in)); p->timeout = time_msec() + OVERWRITE_MSECS; @@ -165,7 +165,7 @@ pktbuf_get_null(void) * * 'in_port' may be NULL if the input port is not of interest. * - * A returned packet will have at least sizeof(struct ofp_packet_in) bytes of + * A returned packet will have at least sizeof(struct ofp10_packet_in) bytes of * headroom. * * On failure, stores NULL in in '*bufferp' and UINT16_MAX in '*in_port'. */ -- 2.43.0