[ovs-dev] [PATCH v2] Allow bare ct_commits when no nested actions are required.

Numan Siddique numans at ovn.org
Thu Aug 6 16:16:26 UTC 2020


On Thu, Aug 6, 2020 at 8:22 PM Mark Michelson <mmichels at redhat.com> wrote:

> In the fixes commit below, ct_commit was changed to use nested actions.
> This requires that curly braces be present for all ct_commits. When
> adjusting ovn-northd, some ct_commits were not updated to have them.
> This commit changes the behavior of the ct_commit action not to require
> curly braces if there are no nested actions required.
>
> Fixes: 6cfb44a76c61("Used nested actions in ct_commit")
> Signed-off-by: Mark Michelson <mmichels at redhat.com>
>

Thanks for the fix.
Acked-by: Numan Siddique <numans at ovn.org>

The system test case - 29: ovn --Test packet drops due to incorrect flows
in physical table 33 FAILED (system-ovn.at:4538) is failing
on my setup. But this patch is not the issue. I see failure with the master
too. Just FYI.

Thanks
Numan


> ---
>  lib/actions.c | 20 ++++++++++++++++----
>  tests/ovn.at  |  5 ++++-
>  2 files changed, 20 insertions(+), 5 deletions(-)
>
> diff --git a/lib/actions.c b/lib/actions.c
> index 05fa44b60..4afc23d66 100644
> --- a/lib/actions.c
> +++ b/lib/actions.c
> @@ -630,15 +630,27 @@ ovnact_ct_next_free(struct ovnact_ct_next *a
> OVS_UNUSED)
>  static void
>  parse_CT_COMMIT(struct action_context *ctx)
>  {
> -
> -    parse_nested_action(ctx, OVNACT_CT_COMMIT, "ip",
> -                        WR_CT_COMMIT);
> +    if (ctx->lexer->token.type == LEX_T_LCURLY) {
> +        parse_nested_action(ctx, OVNACT_CT_COMMIT, "ip",
> +                            WR_CT_COMMIT);
> +    } else {
> +        /* Add an empty nested action to allow for "ct_commit;" syntax */
> +        add_prerequisite(ctx, "ip");
> +        struct ovnact_nest *on = ovnact_put(ctx->ovnacts,
> OVNACT_CT_COMMIT,
> +                                            OVNACT_ALIGN(sizeof *on));
> +        on->nested_len = 0;
> +        on->nested = NULL;
> +    }
>  }
>
>  static void
>  format_CT_COMMIT(const struct ovnact_nest *on, struct ds *s)
>  {
> -    format_nested_action(on, "ct_commit", s);
> +    if (on->nested_len) {
> +        format_nested_action(on, "ct_commit", s);
> +    } else {
> +        ds_put_cstr(s, "ct_commit;");
> +    }
>  }
>
>  static void
> diff --git a/tests/ovn.at b/tests/ovn.at
> index b0179a8db..7236eeb8e 100644
> --- a/tests/ovn.at
> +++ b/tests/ovn.at
> @@ -1050,8 +1050,11 @@ ct_next;
>      has prereqs ip
>
>  # ct_commit
> +ct_commit;
> +    encodes as ct(commit,zone=NXM_NX_REG13[0..15])
> +    has prereqs ip
>  ct_commit { };
> -    formats as ct_commit { drop; };
> +    formats as ct_commit;
>      encodes as ct(commit,zone=NXM_NX_REG13[0..15])
>      has prereqs ip
>  ct_commit { ct_mark=1; };
> --
> 2.25.4
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
>


More information about the dev mailing list