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
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev