> On Nov 9, 2015, at 10:56 AM, Joe Stringer <[email protected]> wrote: > > If conntrack recirculates, it should not stop processing the current > pipeline. The cloned packet will begin with a fresh action set in the > table specified with the current metadata; The current copy of the
As discussed, the action set is forked as well. Assuming the commit message and the comment above the new function is fixed: Acked-by: Jarno Rajahalme <[email protected]> Jarno > packet will continue processing, including to return back to prior > resubmit() calls. > > Reported-by: Russell Bryant <[email protected]> > Signed-off-by: Joe Stringer <[email protected]> > --- > ofproto/ofproto-dpif-xlate.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c > index 325e308e3340..bc21fa894682 100644 > --- a/ofproto/ofproto-dpif-xlate.c > +++ b/ofproto/ofproto-dpif-xlate.c > @@ -3591,6 +3591,16 @@ compose_recirculate_action(struct xlate_ctx *ctx) > compose_recirculate_action__(ctx, 0); > } > > +/* Fork the pipeline here. The recirculated packet will continue processing > in > + * 'table' with an empty action set, and the current packet will continue > + * processing the current action list. */ > +static void > +compose_recirculate_and_fork(struct xlate_ctx *ctx, uint8_t table) > +{ > + ctx->recirc_action_offset = ctx->action_set.size; > + compose_recirculate_action__(ctx, table); > +} > + > static void > compose_mpls_push_action(struct xlate_ctx *ctx, struct ofpact_push_mpls *mpls) > { > @@ -4239,8 +4249,7 @@ compose_conntrack_action(struct xlate_ctx *ctx, struct > ofpact_conntrack *ofc) > } else { > /* Use ct_* fields from datapath during recirculation upcall. */ > ctx->conntracked = true; > - ctx_trigger_recirculation(ctx); > - compose_recirculate_action__(ctx, ofc->recirc_table); > + compose_recirculate_and_fork(ctx, ofc->recirc_table); > } > } > > -- > 2.1.4 > _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
