summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorBen Pfaff <blp@ovn.org>2018-05-09 17:03:56 -0700
committerBen Pfaff <blp@ovn.org>2018-05-17 08:16:06 -0700
commit7b809df9529d32f61e5b501366ae1f99ed84c9e5 (patch)
tree67804f011bc4ccf93a2430f5cf9ef3afbf85495d /include
parent720c104c93ecb3954890a4b25bf03af668026f63 (diff)
downloadopenvswitch-7b809df9529d32f61e5b501366ae1f99ed84c9e5.tar.gz
Add OpenFlow extensions for group support in OpenFlow 1.0.
Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
Diffstat (limited to 'include')
-rw-r--r--include/openflow/openflow-1.5.h3
-rw-r--r--include/openvswitch/ofp-errors.h54
-rw-r--r--include/openvswitch/ofp-msgs.h35
3 files changed, 57 insertions, 35 deletions
diff --git a/include/openflow/openflow-1.5.h b/include/openflow/openflow-1.5.h
index d9b867cf2..c146052af 100644
--- a/include/openflow/openflow-1.5.h
+++ b/include/openflow/openflow-1.5.h
@@ -77,12 +77,11 @@ struct ofp15_bucket {
64-bit aligned. */
ovs_be16 action_array_len; /* Length of all actions in bytes. */
ovs_be32 bucket_id; /* Bucket Id used to identify bucket*/
- /* Followed by exactly len - 8 bytes of group bucket properties. */
/* Followed by:
* - Exactly 'action_array_len' bytes containing an array of
* struct ofp_action_*.
* - Zero or more bytes of group bucket properties to fill out the
- * overall length in header.length. */
+ * overall length in 'len'. */
};
OFP_ASSERT(sizeof(struct ofp15_bucket) == 8);
diff --git a/include/openvswitch/ofp-errors.h b/include/openvswitch/ofp-errors.h
index 16feacb55..6e8e55ab4 100644
--- a/include/openvswitch/ofp-errors.h
+++ b/include/openvswitch/ofp-errors.h
@@ -254,7 +254,7 @@ enum ofperr {
/* OF1.0+(2,8). Problem validating output queue. */
OFPERR_OFPBAC_BAD_QUEUE,
- /* OF1.1+(2,9). Invalid group id in output action. */
+ /* NX1.0(2,9), OF1.1+(2,9). Invalid group id in output action. */
OFPERR_OFPBAC_BAD_OUT_GROUP,
/* NX1.0(1,522), OF1.1+(2,10). Action can't apply for this match or a
@@ -460,63 +460,65 @@ enum ofperr {
/* ## OFPET_GROUP_MOD_FAILED ## */
/* ## ---------------------- ## */
- /* OF1.1+(6,0). Group not added because a group ADD attempted to replace
- * an already-present group. */
+ /* NX1.0(6,0), OF1.1+(6,0). Group not added because a group ADD attempted
+ * to replace an already-present group. */
OFPERR_OFPGMFC_GROUP_EXISTS,
- /* OF1.1+(6,1). Group not added because Group specified is invalid. */
+ /* NX1.0(6,1), OF1.1+(6,1). Group not added because Group specified is
+ * invalid. */
OFPERR_OFPGMFC_INVALID_GROUP,
- /* OF1.1+(6,2). Switch does not support unequal load sharing with select
- * groups. */
+ /* NX1.0(6,2), OF1.1+(6,2). Switch does not support unequal load sharing
+ * with select groups. */
OFPERR_OFPGMFC_WEIGHT_UNSUPPORTED,
- /* OF1.1+(6,3). The group table is full. */
+ /* NX1.0(6,3), OF1.1+(6,3). The group table is full. */
OFPERR_OFPGMFC_OUT_OF_GROUPS,
- /* OF1.1+(6,4). The maximum number of action buckets for a group has been
- * exceeded. */
+ /* NX1.0(6,4), OF1.1+(6,4). The maximum number of action buckets for a
+ * group has been exceeded. */
OFPERR_OFPGMFC_OUT_OF_BUCKETS,
- /* OF1.1+(6,5). Switch does not support groups that forward to groups. */
+ /* NX1.0(6,5), OF1.1+(6,5). Switch does not support groups that forward to
+ * groups. */
OFPERR_OFPGMFC_CHAINING_UNSUPPORTED,
- /* OF1.1+(6,6). This group cannot watch the watch_port or watch_group
- * specified. */
+ /* NX1.0(6,6), OF1.1+(6,6). This group cannot watch the watch_port or
+ * watch_group specified. */
OFPERR_OFPGMFC_WATCH_UNSUPPORTED,
- /* OF1.1+(6,7). Group entry would cause a loop. */
+ /* NX1.0(6,7), OF1.1+(6,7). Group entry would cause a loop. */
OFPERR_OFPGMFC_LOOP,
- /* OF1.1+(6,8). Group not modified because a group MODIFY attempted to
- * modify a non-existent group. */
+ /* NX1.0(6,8), OF1.1+(6,8). Group not modified because a group MODIFY
+ * attempted to modify a non-existent group. */
OFPERR_OFPGMFC_UNKNOWN_GROUP,
- /* OF1.2+(6,9). Group not deleted because another
- group is forwarding to it. */
+ /* NX1.0(6,9), OF1.2+(6,9). Group not deleted because another group is
+ * forwarding to it. */
OFPERR_OFPGMFC_CHAINED_GROUP,
- /* OF1.2+(6,10). Unsupported or unknown group type. */
+ /* NX1.0(6,10), OF1.2+(6,10). Unsupported or unknown group type. */
OFPERR_OFPGMFC_BAD_TYPE,
- /* OF1.2+(6,11). Unsupported or unknown command. */
+ /* NX1.0(6,11), OF1.2+(6,11). Unsupported or unknown command. */
OFPERR_OFPGMFC_BAD_COMMAND,
- /* OF1.2+(6,12). Error in bucket. */
+ /* NX1.0(6,12), OF1.2+(6,12). Error in bucket. */
OFPERR_OFPGMFC_BAD_BUCKET,
- /* OF1.2+(6,13). Error in watch port/group. */
+ /* NX1.0(6,13), OF1.2+(6,13). Error in watch port/group. */
OFPERR_OFPGMFC_BAD_WATCH,
- /* OF1.2+(6,14). Permissions error. */
+ /* NX1.0(6,14), OF1.2+(6,14). Permissions error. */
OFPERR_OFPGMFC_EPERM,
- /* OF1.5+(6,15). Invalid bucket identifier used in
- * INSERT BUCKET or REMOVE BUCKET command. */
+ /* NX1.0(6,15), OF1.5+(6,15). Invalid bucket identifier used in INSERT
+ * BUCKET or REMOVE BUCKET command. */
OFPERR_OFPGMFC_UNKNOWN_BUCKET,
- /* OF1.5+(6,16). Can't insert bucket because a bucket
- * already exist with that bucket-id. */
+ /* NX1.0(6,16), OF1.5+(6,16). Can't insert bucket because a bucket already
+ * exist with that bucket-id. */
OFPERR_OFPGMFC_BUCKET_EXISTS,
/* ## --------------------- ## */
diff --git a/include/openvswitch/ofp-msgs.h b/include/openvswitch/ofp-msgs.h
index ea2fa5bb0..f18027302 100644
--- a/include/openvswitch/ofp-msgs.h
+++ b/include/openvswitch/ofp-msgs.h
@@ -195,6 +195,8 @@ enum ofpraw {
/* NXT 1.0+ (13): struct nx_flow_mod, uint8_t[8][]. */
OFPRAW_NXT_FLOW_MOD,
+ /* NXT 1.0 (31): struct ofp15_group_mod, uint8_t[8][]. */
+ OFPRAW_NXT_GROUP_MOD,
/* OFPT 1.1-1.4 (15): struct ofp11_group_mod, uint8_t[8][]. */
OFPRAW_OFPT11_GROUP_MOD,
/* OFPT 1.5+ (15): struct ofp15_group_mod, uint8_t[8][]. */
@@ -367,25 +369,37 @@ enum ofpraw {
/* OFPST 1.4+ (5): uint8_t[8][]. */
OFPRAW_OFPST14_QUEUE_REPLY,
+ /* NXST 1.0 (7): struct ofp11_group_stats_request. */
+ OFPRAW_NXST_GROUP_REQUEST,
/* OFPST 1.1+ (6): struct ofp11_group_stats_request. */
OFPRAW_OFPST11_GROUP_REQUEST,
+ /* NXST 1.0 (7): uint8_t[8][]. */
+ OFPRAW_NXST_GROUP_REPLY,
/* OFPST 1.1-1.2 (6): uint8_t[8][]. */
OFPRAW_OFPST11_GROUP_REPLY,
/* OFPST 1.3+ (6): uint8_t[8][]. */
OFPRAW_OFPST13_GROUP_REPLY,
+ /* NXST 1.0 (8): struct ofp15_group_desc_request. */
+ OFPRAW_NXST_GROUP_DESC_REQUEST,
/* OFPST 1.1-1.4 (7): void. */
OFPRAW_OFPST11_GROUP_DESC_REQUEST,
/* OFPST 1.5+ (7): struct ofp15_group_desc_request. */
OFPRAW_OFPST15_GROUP_DESC_REQUEST,
+ /* NXST 1.0 (8): uint8_t[8][]. */
+ OFPRAW_NXST_GROUP_DESC_REPLY,
/* OFPST 1.1+ (7): uint8_t[8][]. */
OFPRAW_OFPST11_GROUP_DESC_REPLY,
+ /* NXST 1.0-1.1 (9): void. */
+ OFPRAW_NXST_GROUP_FEATURES_REQUEST,
/* OFPST 1.2+ (8): void. */
OFPRAW_OFPST12_GROUP_FEATURES_REQUEST,
+ /* NXST 1.0-1.1 (9): struct ofp12_group_features_stats. */
+ OFPRAW_NXST_GROUP_FEATURES_REPLY,
/* OFPST 1.2+ (8): struct ofp12_group_features_stats. */
OFPRAW_OFPST12_GROUP_FEATURES_REPLY,
@@ -583,7 +597,8 @@ enum ofptype {
OFPTYPE_FLOW_MOD, /* OFPRAW_OFPT10_FLOW_MOD.
* OFPRAW_OFPT11_FLOW_MOD.
* OFPRAW_NXT_FLOW_MOD. */
- OFPTYPE_GROUP_MOD, /* OFPRAW_OFPT11_GROUP_MOD.
+ OFPTYPE_GROUP_MOD, /* OFPRAW_NXT_GROUP_MOD.
+ * OFPRAW_OFPT11_GROUP_MOD.
* OFPRAW_OFPT15_GROUP_MOD. */
OFPTYPE_PORT_MOD, /* OFPRAW_OFPT10_PORT_MOD.
* OFPRAW_OFPT11_PORT_MOD.
@@ -677,19 +692,25 @@ enum ofptype {
* OFPRAW_OFPST13_QUEUE_REPLY.
* OFPRAW_OFPST14_QUEUE_REPLY. */
- OFPTYPE_GROUP_STATS_REQUEST, /* OFPRAW_OFPST11_GROUP_REQUEST. */
+ OFPTYPE_GROUP_STATS_REQUEST, /* OFPRAW_NXST_GROUP_REQUEST.
+ * OFPRAW_OFPST11_GROUP_REQUEST. */
- OFPTYPE_GROUP_STATS_REPLY, /* OFPRAW_OFPST11_GROUP_REPLY.
+ OFPTYPE_GROUP_STATS_REPLY, /* OFPRAW_NXST_GROUP_REPLY.
+ * OFPRAW_OFPST11_GROUP_REPLY.
* OFPRAW_OFPST13_GROUP_REPLY. */
- OFPTYPE_GROUP_DESC_STATS_REQUEST, /* OFPRAW_OFPST11_GROUP_DESC_REQUEST.
+ OFPTYPE_GROUP_DESC_STATS_REQUEST, /* OFPRAW_NXST_GROUP_DESC_REQUEST.
+ * OFPRAW_OFPST11_GROUP_DESC_REQUEST.
* OFPRAW_OFPST15_GROUP_DESC_REQUEST. */
- OFPTYPE_GROUP_DESC_STATS_REPLY, /* OFPRAW_OFPST11_GROUP_DESC_REPLY. */
+ OFPTYPE_GROUP_DESC_STATS_REPLY, /* OFPRAW_NXST_GROUP_DESC_REPLY.
+ * OFPRAW_OFPST11_GROUP_DESC_REPLY. */
- OFPTYPE_GROUP_FEATURES_STATS_REQUEST, /* OFPRAW_OFPST12_GROUP_FEATURES_REQUEST. */
+ OFPTYPE_GROUP_FEATURES_STATS_REQUEST, /* OFPRAW_NXST_GROUP_FEATURES_REQUEST.
+ * OFPRAW_OFPST12_GROUP_FEATURES_REQUEST. */
- OFPTYPE_GROUP_FEATURES_STATS_REPLY, /* OFPRAW_OFPST12_GROUP_FEATURES_REPLY. */
+ OFPTYPE_GROUP_FEATURES_STATS_REPLY, /* OFPRAW_NXST_GROUP_FEATURES_REPLY.
+ * OFPRAW_OFPST12_GROUP_FEATURES_REPLY. */
OFPTYPE_METER_STATS_REQUEST, /* OFPRAW_OFPST13_METER_REQUEST. */