On 9 November 2015 at 10:56, 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
> 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]>

FWIW, the main change in this commit is actually to avoid the
following instruction in ctx_trigger_recirculation():

ctx->exit = true;

>  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;

This is actually indicating that the current action set should be
preserved for the recirculated packet. At minimum the
documentation/commit message should be updated to reflect this. I also
welcome discussion on the implications of preserving the action set
across recirculation.
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to