From 5d1c81890c21a2a400da469750c0fb18c545387d Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Thu, 23 Jul 2015 15:45:05 -0700 Subject: [PATCH] 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 --- ofproto/ofproto-dpif-xlate.c | 1 + tests/ofproto-dpif.at | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) 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) -- 2.20.1