ovs-ofctl: Add "out_group" keyword for OF1.1+ matching on output group.
authorBen Pfaff <blp@ovn.org>
Tue, 8 Sep 2015 22:21:45 +0000 (15:21 -0700)
committerBen Pfaff <blp@ovn.org>
Sun, 29 Nov 2015 18:56:41 +0000 (10:56 -0800)
It seems that OVS has never supported this OpenFlow feature in ovs-ofctl,
which makes it hard to test.  This commit adds support.

(Open vSwitch has supported this in OpenFlow for a long time; it's only
ovs-ofctl that didn't.)

Signed-off-by: Ben Pfaff <blp@ovn.org>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
NEWS
lib/ofp-parse.c
utilities/ovs-ofctl.8.in

diff --git a/NEWS b/NEWS
index cf99844..d827084 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -10,6 +10,8 @@ Post-v2.4.0
      * OpenFlow 1.4+ OFPTC_EVICTION is now implemented.
      * OpenFlow 1.4+ OFPMP_TABLE_DESC is now implemented.
      * Allow modifying the ICMPv4/ICMPv6 type and code fields.
+   - ovs-ofctl:
+     * New "out_group" keyword for OpenFlow 1.1+ matching on output group.
    - Support for matching/generating options as well as the OAM bit with
      Geneve tunnels.
    - Support Multicast Listener Discovery (MLDv1 and MLDv2).
index fe372cb..ea7938e 100644 (file)
@@ -403,6 +403,12 @@ parse_ofp_str__(struct ofputil_flow_mod *fm, int command, char *string,
                     error = xasprintf("%s is not a valid OpenFlow port",
                                       value);
                 }
+            } else if (fields & F_OUT_PORT && !strcmp(name, "out_group")) {
+                *usable_protocols &= OFPUTIL_P_OF11_UP;
+                if (!ofputil_group_from_string(value, &fm->out_group)) {
+                    error = xasprintf("%s is not a valid OpenFlow group",
+                                      value);
+                }
             } else if (fields & F_PRIORITY && !strcmp(name, "priority")) {
                 uint16_t priority = 0;
 
index 468f7d9..a186055 100644 (file)
@@ -2469,13 +2469,20 @@ check is expensive so it is best to avoid it.)
 .
 .PP
 The \fBdump\-flows\fR, \fBdump\-aggregate\fR, \fBdel\-flow\fR 
-and \fBdel\-flows\fR commands support one additional optional field:
+and \fBdel\-flows\fR commands support these additional optional fields:
 .
 .TP
 \fBout_port=\fIport\fR
 If set, a matching flow must include an output action to \fIport\fR,
 which must be an OpenFlow port number or name (e.g. \fBlocal\fR).
 .
+.TP
+\fBout_group=\fIport\fR
+If set, a matching flow must include an \fBgroup\fR action naming
+\fIgroup\fR, which must be an OpenFlow group number.  This field
+is supported in Open vSwitch 2.5 and later and requires OpenFlow 1.1
+or later.
+.
 .SS "Table Entry Output"
 .
 The \fBdump\-tables\fR and \fBdump\-aggregate\fR commands print information