From patchwork Tue Apr 2 15:31:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dumitru Ceara X-Patchwork-Id: 1918910 X-Patchwork-Delegate: dceara@redhat.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=cvIKbAwp; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=140.211.166.138; helo=smtp1.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4V8Bh70s7Yz1yY4 for ; Wed, 3 Apr 2024 02:32:06 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 3C31F81309; Tue, 2 Apr 2024 15:32:04 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id OJc6SrBNfYb3; Tue, 2 Apr 2024 15:32:02 +0000 (UTC) X-Comment: SPF check N/A for local connections - client-ip=2605:bc80:3010:104::8cd3:938; helo=lists.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver= DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org C14318131D Authentication-Results: smtp1.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=cvIKbAwp Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp1.osuosl.org (Postfix) with ESMTPS id C14318131D; Tue, 2 Apr 2024 15:32:02 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 6D8DBC0072; Tue, 2 Apr 2024 15:32:02 +0000 (UTC) X-Original-To: ovs-dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 4CBA8C0037 for ; Tue, 2 Apr 2024 15:32:01 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 3A9B740857 for ; Tue, 2 Apr 2024 15:32:01 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id mlFPRiqNW2lq for ; Tue, 2 Apr 2024 15:32:00 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=170.10.133.124; helo=us-smtp-delivery-124.mimecast.com; envelope-from=dceara@redhat.com; receiver= DMARC-Filter: OpenDMARC Filter v1.4.2 smtp4.osuosl.org BF96340851 Authentication-Results: smtp4.osuosl.org; dmarc=pass (p=none dis=none) header.from=redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org BF96340851 Authentication-Results: smtp4.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=cvIKbAwp Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by smtp4.osuosl.org (Postfix) with ESMTPS id BF96340851 for ; Tue, 2 Apr 2024 15:31:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712071918; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=W9UlpiEb4YZFi55/CXcwbj/LGZjmEZ8y1p2sA1LBIdA=; b=cvIKbAwp91iPGd8f6BSR+HqlmcDG/MdZzRf2+w7v2Oh/gSjDj+BfXYvbp3cPS/OVBUW07l th+6rohJdwIF8Q/6AqOAqK/YeSdm1froCWOW5SMSqe+jO2j/31Bf0KI2EZs0+ShRr1zXBY BFvBYLxELFXXqkdqoaSGLsSElI7qED4= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-116-sM3BVG7WMBKfH5V2kIlztg-1; Tue, 02 Apr 2024 11:31:55 -0400 X-MC-Unique: sM3BVG7WMBKfH5V2kIlztg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 05CDE3C025B9; Tue, 2 Apr 2024 15:31:55 +0000 (UTC) Received: from cecil-rh.redhat.com (unknown [10.39.194.220]) by smtp.corp.redhat.com (Postfix) with ESMTP id C884C111CD57; Tue, 2 Apr 2024 15:31:53 +0000 (UTC) From: Dumitru Ceara To: ovs-dev@openvswitch.org Date: Tue, 2 Apr 2024 17:31:34 +0200 Message-ID: <20240402153134.261811-1-dceara@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.3 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [ovs-dev] [PATCH ovn] actions: Remove ct_commit_v1. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" 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 Acked-by: Ales Musil --- 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;