On Tue, Apr 2, 2024 at 5:31 PM Dumitru Ceara <[email protected]> wrote:

> It's not used by any logical flow since v20.12.0.  It was kept for
> backwards compatibility reasons in 4799f73fd6ed ("Fix OVN update
> issue when ovn-controller is updated first from 20.06 to 20.09.") but
> now there's no supported release that uses it.
>
> Therefore the action is safe to be removed.  Update the tests to reflect
> the fact that the action is not supported anymore.
>
> Signed-off-by: Dumitru Ceara <[email protected]>
> ---
>  include/ovn/actions.h |   9 +--
>  lib/actions.c         | 141 ------------------------------------------
>  tests/ovn.at          |  41 ++++--------
>  utilities/ovn-trace.c |   1 -
>  4 files changed, 12 insertions(+), 180 deletions(-)
>
> diff --git a/include/ovn/actions.h b/include/ovn/actions.h
> index dcacbb1fff..8e794450cf 100644
> --- a/include/ovn/actions.h
> +++ b/include/ovn/actions.h
> @@ -66,7 +66,7 @@ struct collector_set_ids;
>      OVNACT(EXCHANGE,          ovnact_move)            \
>      OVNACT(DEC_TTL,           ovnact_null)            \
>      OVNACT(CT_NEXT,           ovnact_ct_next)         \
> -    OVNACT(CT_COMMIT_V1,      ovnact_ct_commit_v1)    \
> +    /* CT_COMMIT_V1 is not supported anymore. */      \
>      OVNACT(CT_COMMIT_V2,      ovnact_nest)            \
>      OVNACT(CT_DNAT,           ovnact_ct_nat)          \
>      OVNACT(CT_SNAT,           ovnact_ct_nat)          \
> @@ -260,13 +260,6 @@ struct ovnact_ct_next {
>      uint8_t ltable;                /* Logical table ID of next table. */
>  };
>
> -/* OVNACT_CT_COMMIT_V1. */
> -struct ovnact_ct_commit_v1 {
> -    struct ovnact ovnact;
> -    uint32_t ct_mark, ct_mark_mask;
> -    ovs_be128 ct_label, ct_label_mask;
> -};
> -
>  /* Type of NAT used for the particular action.
>   * UNSPEC translates to applying NAT that works for both directions. */
>  enum ovnact_ct_nat_type {
> diff --git a/lib/actions.c b/lib/actions.c
> index 71615fc53c..7c20535717 100644
> --- a/lib/actions.c
> +++ b/lib/actions.c
> @@ -729,71 +729,12 @@ ovnact_ct_next_free(struct ovnact_ct_next *a
> OVS_UNUSED)
>  {
>  }
>
> -static void
> -parse_ct_commit_v1_arg(struct action_context *ctx,
> -                       struct ovnact_ct_commit_v1 *cc)
> -{
> -    if (lexer_match_id(ctx->lexer, "ct_mark")) {
> -        if (!lexer_force_match(ctx->lexer, LEX_T_EQUALS)) {
> -            return;
> -        }
> -        if (ctx->lexer->token.type == LEX_T_INTEGER) {
> -            cc->ct_mark = ntohll(ctx->lexer->token.value.integer);
> -            cc->ct_mark_mask = UINT32_MAX;
> -        } else if (ctx->lexer->token.type == LEX_T_MASKED_INTEGER) {
> -            cc->ct_mark = ntohll(ctx->lexer->token.value.integer);
> -            cc->ct_mark_mask = ntohll(ctx->lexer->token.mask.integer);
> -        } else {
> -            lexer_syntax_error(ctx->lexer, "expecting integer");
> -            return;
> -        }
> -        lexer_get(ctx->lexer);
> -    } else if (lexer_match_id(ctx->lexer, "ct_label")) {
> -        if (!lexer_force_match(ctx->lexer, LEX_T_EQUALS)) {
> -            return;
> -        }
> -        if (ctx->lexer->token.type == LEX_T_INTEGER) {
> -            cc->ct_label = ctx->lexer->token.value.be128_int;
> -            cc->ct_label_mask = OVS_BE128_MAX;
> -        } else if (ctx->lexer->token.type == LEX_T_MASKED_INTEGER) {
> -            cc->ct_label = ctx->lexer->token.value.be128_int;
> -            cc->ct_label_mask = ctx->lexer->token.mask.be128_int;
> -        } else {
> -            lexer_syntax_error(ctx->lexer, "expecting integer");
> -            return;
> -        }
> -        lexer_get(ctx->lexer);
> -    } else {
> -        lexer_syntax_error(ctx->lexer, NULL);
> -    }
> -}
> -
> -static void
> -parse_CT_COMMIT_V1(struct action_context *ctx)
> -{
> -    add_prerequisite(ctx, "ip");
> -
> -    struct ovnact_ct_commit_v1 *ct_commit =
> -        ovnact_put_CT_COMMIT_V1(ctx->ovnacts);
> -    if (lexer_match(ctx->lexer, LEX_T_LPAREN)) {
> -        while (!lexer_match(ctx->lexer, LEX_T_RPAREN)) {
> -            parse_ct_commit_v1_arg(ctx, ct_commit);
> -            if (ctx->lexer->error) {
> -                return;
> -            }
> -            lexer_match(ctx->lexer, LEX_T_COMMA);
> -        }
> -    }
> -}
> -
>  static void
>  parse_CT_COMMIT(struct action_context *ctx)
>  {
>      if (ctx->lexer->token.type == LEX_T_LCURLY) {
>          parse_nested_action(ctx, OVNACT_CT_COMMIT_V2, "ip",
>                              WR_CT_COMMIT);
> -    } else if (ctx->lexer->token.type == LEX_T_LPAREN) {
> -        parse_CT_COMMIT_V1(ctx);
>      } else {
>          /* Add an empty nested action to allow for "ct_commit;" syntax */
>          add_prerequisite(ctx, "ip");
> @@ -804,88 +745,6 @@ parse_CT_COMMIT(struct action_context *ctx)
>      }
>  }
>
> -static void
> -format_CT_COMMIT_V1(const struct ovnact_ct_commit_v1 *cc, struct ds *s)
> -{
> -    ds_put_cstr(s, "ct_commit(");
> -    if (cc->ct_mark_mask) {
> -        ds_put_format(s, "ct_mark=%#"PRIx32, cc->ct_mark);
> -        if (cc->ct_mark_mask != UINT32_MAX) {
> -            ds_put_format(s, "/%#"PRIx32, cc->ct_mark_mask);
> -        }
> -    }
> -    if (!ovs_be128_is_zero(cc->ct_label_mask)) {
> -        if (ds_last(s) != '(') {
> -            ds_put_cstr(s, ", ");
> -        }
> -
> -        ds_put_format(s, "ct_label=");
> -        ds_put_hex(s, &cc->ct_label, sizeof cc->ct_label);
> -        if (!ovs_be128_equals(cc->ct_label_mask, OVS_BE128_MAX)) {
> -            ds_put_char(s, '/');
> -            ds_put_hex(s, &cc->ct_label_mask, sizeof cc->ct_label_mask);
> -        }
> -    }
> -    if (!ds_chomp(s, '(')) {
> -        ds_put_char(s, ')');
> -    }
> -    ds_put_char(s, ';');
> -}
> -
> -static void
> -encode_CT_COMMIT_V1(const struct ovnact_ct_commit_v1 *cc,
> -                    const struct ovnact_encode_params *ep OVS_UNUSED,
> -                    struct ofpbuf *ofpacts)
> -{
> -    struct ofpact_conntrack *ct = ofpact_put_CT(ofpacts);
> -    ct->flags = NX_CT_F_COMMIT;
> -    ct->recirc_table = NX_CT_RECIRC_NONE;
> -    ct->zone_src.field = mf_from_id(MFF_LOG_CT_ZONE);
> -    ct->zone_src.ofs = 0;
> -    ct->zone_src.n_bits = 16;
> -
> -    /* If the datapath supports all-zero SNAT then use it to avoid tuple
> -     * collisions at commit time between NATed and firewalled-only
> sessions.
> -     */
> -
> -    if (ovs_feature_is_supported(OVS_CT_ZERO_SNAT_SUPPORT)) {
> -        size_t nat_offset = ofpacts->size;
> -        ofpbuf_pull(ofpacts, nat_offset);
> -
> -        struct ofpact_nat *nat = ofpact_put_NAT(ofpacts);
> -        nat->flags = 0;
> -        nat->range_af = AF_UNSPEC;
> -        nat->flags |= NX_NAT_F_SRC;
> -        ofpacts->header = ofpbuf_push_uninit(ofpacts, nat_offset);
> -        ct = ofpacts->header;
> -    }
> -
> -    size_t set_field_offset = ofpacts->size;
> -    ofpbuf_pull(ofpacts, set_field_offset);
> -
> -    if (cc->ct_mark_mask) {
> -        const ovs_be32 value = htonl(cc->ct_mark);
> -        const ovs_be32 mask = htonl(cc->ct_mark_mask);
> -        ofpact_put_set_field(ofpacts, mf_from_id(MFF_CT_MARK), &value,
> &mask);
> -    }
> -
> -    if (!ovs_be128_is_zero(cc->ct_label_mask)) {
> -        ofpact_put_set_field(ofpacts, mf_from_id(MFF_CT_LABEL),
> &cc->ct_label,
> -                             &cc->ct_label_mask);
> -    }
> -
> -    ofpacts->header = ofpbuf_push_uninit(ofpacts, set_field_offset);
> -    ct = ofpacts->header;
> -    ofpact_finish(ofpacts, &ct->ofpact);
> -}
> -
> -static void
> -ovnact_ct_commit_v1_free(struct ovnact_ct_commit_v1 *cc OVS_UNUSED)
> -{
> -}
> -
> -
> -
>  static void
>  format_CT_COMMIT_V2(const struct ovnact_nest *on, struct ds *s)
>  {
> diff --git a/tests/ovn.at b/tests/ovn.at
> index dd2ebce98e..f05437b9cd 100644
> --- a/tests/ovn.at
> +++ b/tests/ovn.at
> @@ -1318,47 +1318,28 @@ ct_commit { ip4.dst = 192.168.0.1; };
>
>  # Legact ct_commit_v1 action.
>  ct_commit();
> -    formats as ct_commit;
> -    encodes as ct(commit,zone=NXM_NX_REG13[[0..15]])
> -    has prereqs ip
> +    Syntax error at `(' expecting `;'.
>  ct_commit(ct_mark=1);
> -    formats as ct_commit(ct_mark=0x1);
> -    encodes as
> ct(commit,zone=NXM_NX_REG13[[0..15]],exec(set_field:0x1->ct_mark))
> -    has prereqs ip
> +    Syntax error at `(' expecting `;'.
>  ct_commit(ct_mark=1/1);
> -    formats as ct_commit(ct_mark=0x1/0x1);
> -    encodes as
> ct(commit,zone=NXM_NX_REG13[[0..15]],exec(set_field:0x1/0x1->ct_mark))
> -    has prereqs ip
> +    Syntax error at `(' expecting `;'.
>  ct_commit(ct_label=1);
> -    formats as ct_commit(ct_label=0x1);
> -    encodes as
> ct(commit,zone=NXM_NX_REG13[[0..15]],exec(set_field:0x1->ct_label))
> -    has prereqs ip
> +    Syntax error at `(' expecting `;'.
>  ct_commit(ct_label=1/1);
> -    formats as ct_commit(ct_label=0x1/0x1);
> -    encodes as
> ct(commit,zone=NXM_NX_REG13[[0..15]],exec(set_field:0x1/0x1->ct_label))
> -    has prereqs ip
> +    Syntax error at `(' expecting `;'.
>  ct_commit(ct_mark=1, ct_label=2);
> -    formats as ct_commit(ct_mark=0x1, ct_label=0x2);
> -    encodes as
> ct(commit,zone=NXM_NX_REG13[[0..15]],exec(set_field:0x1->ct_mark,set_field:0x2->ct_label))
> -    has prereqs ip
> +    Syntax error at `(' expecting `;'.
>
>  ct_commit(ct_label=0x01020304050607080910111213141516);
> -    formats as ct_commit(ct_label=0x1020304050607080910111213141516);
> -    encodes as
> ct(commit,zone=NXM_NX_REG13[[0..15]],exec(set_field:0x1020304050607080910111213141516->ct_label))
> -    has prereqs ip
> +    Syntax error at `(' expecting `;'.
>  ct_commit(ct_label=0x181716151413121110090807060504030201);
> -    formats as ct_commit(ct_label=0x16151413121110090807060504030201);
> -    encodes as
> ct(commit,zone=NXM_NX_REG13[[0..15]],exec(set_field:0x16151413121110090807060504030201->ct_label))
> -    has prereqs ip
> +    Syntax error at `(' expecting `;'.
>
>  
> ct_commit(ct_label=0x1000000000000000000000000000000/0x1000000000000000000000000000000);
> -    encodes as
> ct(commit,zone=NXM_NX_REG13[[0..15]],exec(set_field:0x1000000000000000000000000000000/0x1000000000000000000000000000000->ct_label))
> -    has prereqs ip
> +    Syntax error at `(' expecting `;'.
>  ct_commit(ct_label=18446744073709551615);
> -    formats as ct_commit(ct_label=0xffffffffffffffff);
> -    encodes as
> ct(commit,zone=NXM_NX_REG13[[0..15]],exec(set_field:0xffffffffffffffff->ct_label))
> -    has prereqs ip
> +    Syntax error at `(' expecting `;'.
>  ct_commit(ct_label=18446744073709551616);
> -    Decimal constants must be less than 2**64.
> +    Syntax error at `(' expecting `;'.
>
>  ct_mark = 12345
>      Field ct_mark is not modifiable.
> diff --git a/utilities/ovn-trace.c b/utilities/ovn-trace.c
> index e0f1c3ec9a..5e55fbbcc0 100644
> --- a/utilities/ovn-trace.c
> +++ b/utilities/ovn-trace.c
> @@ -3107,7 +3107,6 @@ trace_actions(const struct ovnact *ovnacts, size_t
> ovnacts_len,
>              execute_ct_next(ovnact_get_CT_NEXT(a), dp, uflow, pipeline,
> super);
>              break;
>
> -        case OVNACT_CT_COMMIT_V1:
>          case OVNACT_CT_COMMIT_V2:
>              /* Nothing to do. */
>              break;
> --
> 2.44.0
>
>
Makes sense, thanks!

Acked-by: Ales Musil <[email protected]>

-- 

Ales Musil

Senior Software Engineer - OVN Core

Red Hat EMEA <https://www.redhat.com>

[email protected]
<https://red.ht/sig>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to