[ovs-dev] [PATCH] include/openflow: Moved remaining common definitions from openflow-1.0.h
Jarno Rajahalme
jarno.rajahalme at nsn.com
Mon Dec 3 10:37:56 UTC 2012
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 <jarno.rajahalme at nsn.com>
---
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 e50e310..0428abf 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 f891086..76a8f06 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 ae1e1b8..c30fa92 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 9b2f754..8dfd795 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 61c4598..b7b877c 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, /* Dont keep track of packet count. */
- OFPFF13_NO_BYT_COUNTS = 1 << 4 /* Dont 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 d216f0e..3cc22c9 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 564e420..9c458a9 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 496d120..8d28ce3 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 49cbe2d..320bfde 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 421adb1..6d08d8a 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 bc3eb54..1130eb7 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 71be34a..902b19d 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'. */
--
1.7.10.4
More information about the dev
mailing list