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):
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
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 {
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. */
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. */
};
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
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;
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. */
* 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. */
#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.
*/
};
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. */
};
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. */
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 {
};
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. */
};
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 */
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,
/* OpenFlow 1.3 specific flags
* (struct ofp12_flow_mod, member flags). */
enum ofp13_flow_mod_flags {
- OFPFF13_NO_PKT_COUNTS = 1 << 3, /* Don\92t keep track of packet count. */
- OFPFF13_NO_BYT_COUNTS = 1 << 4 /* Don\92t 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 */
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. */
};
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);
* - 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);
* - 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);
* - 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);
* - 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);
* - 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);
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);
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);
#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. */
};
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.
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. */
};
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
};
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 */
}
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;
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;
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);
/* 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,
/* 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,
/* 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,
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);
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);
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;
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;
}
} 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);
struct ofpbuf *buf)
{
struct wc_map {
- enum ofp_flow_wildcards wc10;
+ enum ofp10_flow_wildcards wc10;
enum oxm12_ofb_match_fields mf12;
};
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);
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)
/* 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.
{
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);
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;
*
* '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'. */