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 <3zhangchen9...@gmail.com> Signed-off-by: Ben Pfaff <b...@nicira.com> --- 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 zhaoyem...@gmail.com Ying Chen yingc...@vmware.com Yongqiang Liu liuyq7...@gmail.com ankur dwivedi ankurengg2...@gmail.com +chen zhang 3zhangchen9...@gmail.com kk yap yap...@stanford.edu likunyun kunyu...@hotmail.com rahim entezari rahim.entez...@gmail.com 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 dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev