> 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

Reply via email to