From: Ben Pfaff Date: Thu, 23 Jul 2015 22:45:05 +0000 (-0700) Subject: ofproto-dpif-xlate: Fix handling of write_actions(group(5),output(10)). X-Git-Tag: v2.4.0~26 X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fovs.git;a=commitdiff_plain;h=5d1c81890c21a2a400da469750c0fb18c545387d ofproto-dpif-xlate: Fix handling of write_actions(group(5),output(10)). This keeps actset_output as OFPP_UNSET in the special case where a single write_actions() contains a group action followed by an output action. The presumably more common case where instructions in separate action lists contained output and group actions was already properly handled. Without the fix added by this commit, the test case as updated by this commit fails. Found by inspection. Signed-off-by: Ben Pfaff Acked-by: Jarno Rajahalme --- diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c index 5c1e63c56..a002bda64 100644 --- a/ofproto/ofproto-dpif-xlate.c +++ b/ofproto/ofproto-dpif-xlate.c @@ -3958,6 +3958,7 @@ xlate_write_actions(struct xlate_ctx *ctx, const struct ofpact *a) } else if (inner->type == OFPACT_GROUP) { ctx->xin->flow.actset_output = OFPP_UNSET; ctx->action_set_has_group = true; + break; } } } diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at index bd1b21c8e..2ae017ca9 100644 --- a/tests/ofproto-dpif.at +++ b/tests/ofproto-dpif.at @@ -630,8 +630,9 @@ table=2,priority=10 actions=5,goto_table(3) table=3,priority=20,xreg0=2 actions=6,goto_table(4) table=3,priority=10 actions=7,goto_table(4) -# Verify that adding a group action unsets actset_output. -table=4 actions=write_actions(group(5)),goto_table(5) +# Verify that adding a group action unsets actset_output, +# even if output follows group. +table=4 actions=write_actions(group(5),output(10)),goto_table(5) table=5,priority=20,actset_output=unset actions=8,goto_table(6) table=5,priority=10 actions=9,goto_table(6)