summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/ofp-parse.c4
-rw-r--r--lib/ofp-print.c4
-rw-r--r--lib/ofp-util.c7
3 files changed, 14 insertions, 1 deletions
diff --git a/lib/ofp-parse.c b/lib/ofp-parse.c
index 71c5cdfe7..4af6d9ba2 100644
--- a/lib/ofp-parse.c
+++ b/lib/ofp-parse.c
@@ -1380,6 +1380,10 @@ parse_ofp_group_mod_str__(struct ofputil_group_mod *gm, uint16_t command,
fields = F_GROUP_TYPE | F_BUCKETS;
break;
+ case OFPGC11_ADD_OR_MOD:
+ fields = F_GROUP_TYPE | F_BUCKETS;
+ break;
+
case OFPGC15_INSERT_BUCKET:
fields = F_BUCKETS | F_COMMAND_BUCKET_ID;
*usable_protocols &= OFPUTIL_P_OF15_UP;
diff --git a/lib/ofp-print.c b/lib/ofp-print.c
index 5747ec68f..919c95d64 100644
--- a/lib/ofp-print.c
+++ b/lib/ofp-print.c
@@ -2703,6 +2703,10 @@ ofp_print_group_mod__(struct ds *s, enum ofp_version ofp_version,
ds_put_cstr(s, "MOD");
break;
+ case OFPGC11_ADD_OR_MOD:
+ ds_put_cstr(s, "ADD_OR_MOD");
+ break;
+
case OFPGC11_DELETE:
ds_put_cstr(s, "DEL");
break;
diff --git a/lib/ofp-util.c b/lib/ofp-util.c
index cc9f5e0ec..2b214ea3b 100644
--- a/lib/ofp-util.c
+++ b/lib/ofp-util.c
@@ -8896,6 +8896,7 @@ parse_group_prop_ntr_selection_method(struct ofpbuf *payload,
switch (group_cmd) {
case OFPGC15_ADD:
case OFPGC15_MODIFY:
+ case OFPGC15_ADD_OR_MOD:
break;
case OFPGC15_DELETE:
case OFPGC15_INSERT_BUCKET:
@@ -9224,6 +9225,7 @@ bad_group_cmd(enum ofp15_group_mod_command cmd)
switch (cmd) {
case OFPGC15_ADD:
case OFPGC15_MODIFY:
+ case OFPGC15_ADD_OR_MOD:
case OFPGC15_DELETE:
version = "1.1";
opt_version = "11";
@@ -9245,6 +9247,7 @@ bad_group_cmd(enum ofp15_group_mod_command cmd)
break;
case OFPGC15_MODIFY:
+ case OFPGC15_ADD_OR_MOD:
cmd_str = "mod-group";
break;
@@ -9284,7 +9287,7 @@ ofputil_encode_group_mod(enum ofp_version ofp_version,
case OFP12_VERSION:
case OFP13_VERSION:
case OFP14_VERSION:
- if (gm->command > OFPGC11_DELETE) {
+ if (gm->command > OFPGC11_DELETE && gm->command != OFPGC11_ADD_OR_MOD) {
bad_group_cmd(gm->command);
}
return ofputil_encode_ofp11_group_mod(ofp_version, gm);
@@ -9355,6 +9358,7 @@ ofputil_pull_ofp15_group_mod(struct ofpbuf *msg, enum ofp_version ofp_version,
case OFPGC11_ADD:
case OFPGC11_MODIFY:
+ case OFPGC11_ADD_OR_MOD:
case OFPGC11_DELETE:
default:
if (gm->command_bucket_id == OFPG15_BUCKET_ALL) {
@@ -9433,6 +9437,7 @@ ofputil_decode_group_mod(const struct ofp_header *oh,
switch (gm->command) {
case OFPGC11_ADD:
case OFPGC11_MODIFY:
+ case OFPGC11_ADD_OR_MOD:
case OFPGC11_DELETE:
case OFPGC15_INSERT_BUCKET:
break;