[ovs-dev] [PATCH 1/2] ofproto-dpif-xlate: Don't stop processing after ct.

Joe Stringer joestringer at nicira.com
Mon Nov 9 20:50:48 UTC 2015


On 9 November 2015 at 10:56, Joe Stringer <joestringer at nicira.com> 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 <rbryant at redhat.com>
> Signed-off-by: Joe Stringer <joestringer at nicira.com>

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.



More information about the dev mailing list