/* The most significant bit being set in the version field indicates an
* experimental OpenFlow version.
*/
-#define OFP10_VERSION 0x01
-#define OFP11_VERSION 0x02
-#define OFP12_VERSION 0x03
+enum ofp_version {
+ OFP10_VERSION = 0x01,
+ OFP11_VERSION = 0x02,
+ OFP12_VERSION = 0x03,
+};
#define OFP_MAX_TABLE_NAME_LEN 32
#define OFP_MAX_PORT_NAME_LEN 16
OFPR_N_REASONS
};
+enum ofp_flow_mod_command {
+ OFPFC_ADD, /* New flow. */
+ OFPFC_MODIFY, /* Modify all matching flows. */
+ OFPFC_MODIFY_STRICT, /* Modify entry strictly matching wildcards */
+ OFPFC_DELETE, /* Delete all matching flows. */
+ OFPFC_DELETE_STRICT /* Strictly match wildcards and priority. */
+};
+
+enum ofp_flow_mod_flags {
+ OFPFF_SEND_FLOW_REM = 1 << 0, /* Send flow removed message when flow
+ * expires or is deleted. */
+ OFPFF_CHECK_OVERLAP = 1 << 1, /* Check for overlapping entries first. */
+};
+
/* 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);
+#define DESC_STR_LEN 256
+#define SERIAL_NUM_LEN 32
+/* Body of reply to OFPST_DESC request. Each entry is a NULL-terminated ASCII
+ * string. */
+struct ofp_desc_stats {
+ char mfr_desc[DESC_STR_LEN]; /* Manufacturer description. */
+ char hw_desc[DESC_STR_LEN]; /* Hardware description. */
+ char sw_desc[DESC_STR_LEN]; /* Software description. */
+ char serial_num[SERIAL_NUM_LEN]; /* Serial number. */
+ char dp_desc[DESC_STR_LEN]; /* Human readable description of
+ the datapath. */
+};
+OFP_ASSERT(sizeof(struct ofp_desc_stats) == 1056);
+
+/* Reply to OFPST_AGGREGATE request. */
+struct ofp_aggregate_stats_reply {
+ ovs_32aligned_be64 packet_count; /* Number of packets in flows. */
+ ovs_32aligned_be64 byte_count; /* Number of bytes in flows. */
+ ovs_be32 flow_count; /* Number of flows. */
+ uint8_t pad[4]; /* Align to 64 bits. */
+};
+OFP_ASSERT(sizeof(struct ofp_aggregate_stats_reply) == 24);
+
/* The match type indicates the match structure (set of fields that compose the
* match) in use. The match type is placed in the type field at the beginning
* of all match structures. The "OpenFlow Extensible Match" type corresponds
OFPMT_OXM = 1, /* OpenFlow Extensible Match */
};
+/* Group numbering. Groups can use any number up to OFPG_MAX. */
+enum ofp_group {
+ /* Last usable group number. */
+ OFPG_MAX = 0xffffff00,
+
+ /* Fake groups. */
+ OFPG_ALL = 0xfffffffc, /* All groups, for group delete commands. */
+ OFPG_ANY = 0xffffffff /* Wildcard, for flow stats requests. */
+};
+
#endif /* openflow/openflow-common.h */