OpenFlow 1.1 through 1.4 say that the out_group in a flow_mod, for commands
other than OFPFC_DELETE or OFPFC_DELETE_STRICT, should be ignored.  OVS
actually reported an error.  This fixes the problem.

Reported-by: chen zhang <[email protected]>
Signed-off-by: Ben Pfaff <[email protected]>
---
 AUTHORS        |    1 +
 lib/ofp-util.c |   10 ++++------
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/AUTHORS b/AUTHORS
index 1c2d9ea..b1333ef 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -238,6 +238,7 @@ Yeming Zhao             [email protected]
 Ying Chen               [email protected]
 Yongqiang Liu           [email protected]
 ankur dwivedi           [email protected]
+chen zhang              [email protected]
 kk yap                  [email protected]
 likunyun                [email protected]
 rahim entezari          [email protected]
diff --git a/lib/ofp-util.c b/lib/ofp-util.c
index 7fc4c7c..709d85a 100644
--- a/lib/ofp-util.c
+++ b/lib/ofp-util.c
@@ -1559,13 +1559,11 @@ ofputil_decode_flow_mod(struct ofputil_flow_mod *fm,
         if (error) {
             return error;
         }
-        fm->out_group = ntohl(ofm->out_group);
 
-        if ((ofm->command == OFPFC_DELETE
-             || ofm->command == OFPFC_DELETE_STRICT)
-            && ofm->out_group != htonl(OFPG_ANY)) {
-            return OFPERR_OFPFMFC_UNKNOWN;
-        }
+        fm->out_group = (ofm->command == OFPFC_DELETE ||
+                         ofm->command == OFPFC_DELETE_STRICT
+                         ? ntohl(ofm->out_group)
+                         : OFPG11_ANY);
         raw_flags = ofm->flags;
     } else {
         uint16_t command;
-- 
1.7.10.4

_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to