The ct_lb action was deprecated for the 26.03 release, we can safely remove it.
Assisted-by: Claude Opus 4.6, OpenCode Signed-off-by: Ales Musil <[email protected]> --- NEWS | 1 + TODO.rst | 1 + br-controller/en-lflow.c | 2 +- include/ovn/actions.h | 4 +- lib/actions.c | 36 ++-------- lib/ovn-util.c | 2 +- northd/northd.c | 4 +- ovn-sb.xml | 29 +++----- tests/ovn.at | 145 ++++++++++++++++---------------------- utilities/ovn-trace.8.xml | 6 +- utilities/ovn-trace.c | 15 ++-- 11 files changed, 91 insertions(+), 154 deletions(-) diff --git a/NEWS b/NEWS index 8d88a9a9b..5782df27d 100644 --- a/NEWS +++ b/NEWS @@ -51,6 +51,7 @@ Post v26.03.0 "ovn-ct-lb-related" feature flags. At the same time mark "mac-binding-timestamp", "fdb-timestamp" and "ls-dpg-column" feature flags as deprecated. + - Removed the deprecated "ct_lb" action. OVN v26.03.0 - xxx xx xxxx -------------------------- diff --git a/TODO.rst b/TODO.rst index 75a99601d..beca38daf 100644 --- a/TODO.rst +++ b/TODO.rst @@ -207,6 +207,7 @@ when the feature/action will move from ``Deprecated`` to ``Removed``. * ``OVN_FEATURE_PORT_UP_NOTIF`` feature. * ``OVN_FEATURE_CT_NO_MASKED_LABEL`` feature. * ``OVN_FEATURE_CT_LB_RELATED`` feature. + * ``ct_lb`` action. * 26.09 Deprecated diff --git a/br-controller/en-lflow.c b/br-controller/en-lflow.c index b73c36c4f..389137ecc 100644 --- a/br-controller/en-lflow.c +++ b/br-controller/en-lflow.c @@ -51,7 +51,7 @@ struct ed_type_lflow_output_data { /* Since we use the common action parsing code between ovn-controller * and br-controller, ovnacts_encode() expects to pass a - * group table and meter table for the actions - ct_lb, select, log and + * group table and meter table for the actions - ct_lb_*, select, log and * set_meter. Until we have a separate action parsing definitions * for br-controller, we just maintain these tables and pass it in * the 'struct ovnact_encode_params' in the ovnact_encode() to make diff --git a/include/ovn/actions.h b/include/ovn/actions.h index 4473e3297..1d32998f7 100644 --- a/include/ovn/actions.h +++ b/include/ovn/actions.h @@ -73,7 +73,6 @@ struct collector_set_ids; OVNACT(CT_SNAT, ovnact_ct_nat) \ OVNACT(CT_DNAT_IN_CZONE, ovnact_ct_nat) \ OVNACT(CT_SNAT_IN_CZONE, ovnact_ct_nat) \ - OVNACT(CT_LB, ovnact_ct_lb) \ OVNACT(CT_LB_MARK, ovnact_ct_lb) \ OVNACT(CT_LB_MARK_LOCAL, ovnact_ct_lb) \ OVNACT(SELECT, ovnact_select) \ @@ -314,7 +313,6 @@ struct ovnact_ct_commit_to_zone { }; enum ovnact_ct_lb_type { - OVNACT_CT_LB_TYPE_LABEL, OVNACT_CT_LB_TYPE_MARK, OVNACT_CT_LB_LOCAL_TYPE_MARK, }; @@ -335,7 +333,7 @@ struct ovnact_ct_lb_dst { char *port_name; }; -/* OVNACT_CT_LB/OVNACT_CT_LB_MARK. */ +/* OVNACT_CT_LB_MARK. */ struct ovnact_ct_lb { struct ovnact ovnact; struct ovnact_ct_lb_dst *dsts; diff --git a/lib/actions.c b/lib/actions.c index e0291d535..256114e6e 100644 --- a/lib/actions.c +++ b/lib/actions.c @@ -1208,7 +1208,8 @@ parse_ct_lb_action(struct action_context *ctx, enum ovnact_ct_lb_type type) { if (ctx->pp->cur_ltable >= ctx->pp->n_tables) { - lexer_error(ctx->lexer, "\"ct_lb\" action not allowed in last table."); + lexer_error(ctx->lexer, "\"ct_lb_*\" action not allowed " + "in last table."); return; } @@ -1329,9 +1330,6 @@ parse_ct_lb_action(struct action_context *ctx, struct ovnact_ct_lb *cl; switch (type) { - case OVNACT_CT_LB_TYPE_LABEL: - cl = ovnact_put_CT_LB(ctx->ovnacts); - break; case OVNACT_CT_LB_TYPE_MARK: cl = ovnact_put_CT_LB_MARK(ctx->ovnacts); break; @@ -1354,7 +1352,6 @@ format_ct_lb(const struct ovnact_ct_lb *cl, struct ds *s, enum ovnact_ct_lb_type type) { static const char *const lb_action_strings[] = { - [OVNACT_CT_LB_TYPE_LABEL] = "ct_lb", [OVNACT_CT_LB_TYPE_MARK] = "ct_lb_mark", [OVNACT_CT_LB_LOCAL_TYPE_MARK] = "ct_lb_mark_local", }; @@ -1408,12 +1405,6 @@ format_ct_lb(const struct ovnact_ct_lb *cl, struct ds *s, ds_put_char(s, ';'); } -static void -format_CT_LB(const struct ovnact_ct_lb *cl, struct ds *s) -{ - format_ct_lb(cl, s, OVNACT_CT_LB_TYPE_LABEL); -} - static void format_CT_LB_MARK(const struct ovnact_ct_lb *cl, struct ds *s) { @@ -1434,7 +1425,7 @@ encode_ct_lb(const struct ovnact_ct_lb *cl, { uint8_t recirc_table = cl->ltable + first_ptable(ep, ep->pipeline); if (!cl->n_dsts) { - /* ct_lb without any destinations means that this is an established + /* ct_lb_* without any destinations means that this is an established * connection and we just need to do a NAT. */ const size_t ct_offset = ofpacts->size; @@ -1462,8 +1453,6 @@ encode_ct_lb(const struct ovnact_ct_lb *cl, struct ofpact_group *og; uint32_t zone_reg = ep->is_switch ? MFF_LOG_CT_ZONE - MFF_REG0 : MFF_LOG_DNAT_ZONE - MFF_REG0; - const char *flag_reg = (type == OVNACT_CT_LB_TYPE_LABEL) - ? "ct_label" : "ct_mark"; const char *ct_flag_value; switch (cl->ct_flag) { @@ -1522,10 +1511,10 @@ encode_ct_lb(const struct ovnact_ct_lb *cl, ds_put_format(&ds, "),commit,table=%d,zone=NXM_NX_REG%d[0..15]," "exec(set_field:" OVN_CT_MASKED_STR(OVN_CT_NATTED) - "->%s", - recirc_table, zone_reg, flag_reg); + "->ct_mark", + recirc_table, zone_reg); if (ct_flag_value) { - ds_put_format(&ds, ",set_field:%s->%s", ct_flag_value, flag_reg); + ds_put_format(&ds, ",set_field:%s->ct_mark", ct_flag_value); } ds_put_cstr(&ds, "))"); @@ -1549,14 +1538,6 @@ encode_ct_lb(const struct ovnact_ct_lb *cl, og->group_id = table_id; } -static void -encode_CT_LB(const struct ovnact_ct_lb *cl, - const struct ovnact_encode_params *ep, - struct ofpbuf *ofpacts) -{ - encode_ct_lb(cl, ep, ofpacts, OVNACT_CT_LB_TYPE_LABEL); -} - static void encode_CT_LB_MARK(const struct ovnact_ct_lb *cl, const struct ovnact_encode_params *ep, @@ -6042,7 +6023,6 @@ parse_action(struct action_context *ctx) return false; } - static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(5, 1); enum lex_type lookahead = lexer_lookahead(ctx->lexer); if (lookahead == LEX_T_EQUALS || lookahead == LEX_T_EXCHANGE || lookahead == LEX_T_LSQUARE) { @@ -6071,10 +6051,6 @@ parse_action(struct action_context *ctx) parse_CT_DNAT_IN_CZONE(ctx); } else if (lexer_match_id(ctx->lexer, "ct_snat_in_czone")) { parse_CT_SNAT_IN_CZONE(ctx); - } else if (lexer_match_id(ctx->lexer, "ct_lb")) { - VLOG_WARN_RL(&rl, "The \"ct_lb\" action is deprecated please " - "consider using a different action."); - parse_ct_lb_action(ctx, OVNACT_CT_LB_TYPE_LABEL); } else if (lexer_match_id(ctx->lexer, "ct_lb_mark")) { parse_ct_lb_action(ctx, OVNACT_CT_LB_TYPE_MARK); } else if (lexer_match_id(ctx->lexer, "ct_lb_mark_local")) { diff --git a/lib/ovn-util.c b/lib/ovn-util.c index 3a26e7689..80346d5bb 100644 --- a/lib/ovn-util.c +++ b/lib/ovn-util.c @@ -1007,7 +1007,7 @@ ip_address_and_port_from_lb_key(const char *key, char **ip_address, * * NOTE: If OVN_NORTHD_PIPELINE_CSUM is updated make sure to double check * whether an update of OVN_INTERNAL_MINOR_VER is required. */ -#define OVN_NORTHD_PIPELINE_CSUM "826401206 11374" +#define OVN_NORTHD_PIPELINE_CSUM "118971668 11318" #define OVN_INTERNAL_MINOR_VER 15 /* Returns the OVN version. The caller must free the returned value. */ diff --git a/northd/northd.c b/northd/northd.c index aa332c449..ee45de3db 100644 --- a/northd/northd.c +++ b/northd/northd.c @@ -13314,11 +13314,11 @@ build_lrouter_flows_for_lb_stateless(struct lrouter_nat_lb_flows_ctx *ctx, * IP action to perform stateless NAT pipeline completely when the * outgoing packet is redirected to a chassis that does not have an * active conntrack entry. Otherwise, it will not be SNATed by the - * ct_lb action because it does not refer to a valid created flow. The + * ct_lb_mark action because it does not refer to a valid created flow. The * use case for responding to a packet in different chassis is multipath * via ECMP. So, the LB lr_out_snat is created with a lower priority than * the other router pipeline entries, in this case, if the packet is not - * SNATed by ct_lb (conntrack lost), it will be SNATed by the LB + * SNATed by ct_lb_mark (conntrack lost), it will be SNATed by the LB * stateless NAT rule. Also, SNAT is performed only when the packet * matches the configured LB backend IPs, ports and protocols. Otherwise, * the packet will be forwarded without being SNATed. diff --git a/ovn-sb.xml b/ovn-sb.xml index 2bb375f89..0d3ec6c2c 100644 --- a/ovn-sb.xml +++ b/ovn-sb.xml @@ -1138,7 +1138,7 @@ </ul> <p> The <code>ct_dnat</code>, <code>ct_snat</code>, and - <code>ct_lb</code> actions initialize the following subfields: + <code>ct_lb_mark</code> actions initialize the following subfields: </p> <ul> <li> @@ -2128,11 +2128,11 @@ <p><b>Example:</b> <code>set_queue(10);</code></p> </dd> - <dt><code>ct_lb;</code></dt> - <dt><code>ct_lb(backends=<var>ip</var>[:<var>port</var>][,...][; hash_fields=<var>field1</var>,<var>field2</var>,...][; ct_flag]);</code></dt> + <dt><code>ct_lb_mark;</code></dt> + <dt><code>ct_lb_mark(backends=<var>ip</var>[:<var>port</var>][,...][; hash_fields=<var>field1</var>,<var>field2</var>,...][; ct_flag]);</code></dt> <dd> <p> - With arguments, <code>ct_lb</code> commits the packet + With arguments, <code>ct_lb_mark</code> commits the packet to the connection tracking table and DNATs the packet's destination IP address (and port) to the IP address or addresses (and optional ports) specified in the <code>backends</code>. If multiple @@ -2144,15 +2144,16 @@ listed are used as the hash fields. The <code>ct_flag</code> field represents one of supported flag: <code>skip_snat</code> or <code>force_snat</code>, this flag will be stored in - <code>ct_label</code> register. + <code>ct_mark</code> register. </p> <p> - Without arguments, <code>ct_lb</code> sends the packet to the + Without arguments, <code>ct_lb_mark</code> sends the packet to the connection tracking table to NAT the packets. If the packet is part of an established connection that was previously committed to - the connection tracker via <code>ct_lb(</code>...<code>)</code>, it - will automatically get DNATed to the same IP address as the first - packet in that connection. + the connection tracker via + <code>ct_lb_mark(</code>...<code>)</code>, it will automatically + get DNATed to the same IP address as the first packet in that + connection. </p> <p> Processing automatically moves on to the next table, @@ -2165,16 +2166,6 @@ </p> </dd> - <dt><code>ct_lb_mark;</code></dt> - <dt><code>ct_lb_mark(backends=<var>ip</var>[:<var>port</var>][,...][; hash_fields=<var>field1</var>,<var>field2</var>,...][; ct_flag]);</code></dt> - <dd> - <p> - Same as <code>ct_lb</code>, except that it internally uses ct_mark - to store the NAT flag, while <code>ct_lb</code> uses ct_label for - the same purpose. - </p> - </dd> - <dt><code>ct_lb_mark_local;</code></dt> <dt><code>ct_lb_mark_local(backends=<var>lport_name</var>[<var>ip</var>[:<var>port</var>][,...][; hash_fields=<var>field1</var>,<var>field2</var>,...][; ct_flag]);</code></dt> <dd> diff --git a/tests/ovn.at b/tests/ovn.at index c6be58288..e414e4318 100644 --- a/tests/ovn.at +++ b/tests/ovn.at @@ -1011,104 +1011,79 @@ pkt.mark = "foo"; Integer field pkt.mark is not compatible with string constant. # load balancing. -ct_lb; +ct_lb_mark; encodes as ct(table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],nat) has prereqs ip -ct_lb(); - formats as ct_lb; +ct_lb_mark(); + formats as ct_lb_mark; encodes as ct(table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],nat) has prereqs ip -ct_clear; ct_lb; reg8[[7]] = 1; +ct_clear; ct_lb_mark; reg8[[7]] = 1; encodes as ct_clear,ct(table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],nat),set_field:0x8000000000/0x8000000000->xreg4 has prereqs ip -ct_lb(192.168.1.2:80, 192.168.1.3:80); +ct_lb_mark(192.168.1.2:80, 192.168.1.3:80); Syntax error at `192.168.1.2' expecting backends. -ct_lb(backends=192.168.1.2:80,192.168.1.3:80); +ct_lb_mark(backends=192.168.1.2:80,192.168.1.3:80); encodes as group:1 - uses group: id(1), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label))) + uses group: id(1), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) has prereqs ip -ct_lb(backends=192.168.1.2:80,192.168.1.3:80; skip_snat); +ct_lb_mark(backends=192.168.1.2:80,192.168.1.3:80; skip_snat); encodes as group:2 - uses group: id(2), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label,set_field:4/4->ct_label)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label,set_field:4/4->ct_label))) + uses group: id(2), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:4/4->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:4/4->ct_mark))) has prereqs ip -ct_lb(backends=192.168.1.2:80,192.168.1.3:80; force_snat); +ct_lb_mark(backends=192.168.1.2:80,192.168.1.3:80; force_snat); encodes as group:3 - uses group: id(3), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label,set_field:8/8->ct_label)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label,set_field:8/8->ct_label))) + uses group: id(3), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:8/8->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:8/8->ct_mark))) has prereqs ip -ct_lb(backends=192.168.1.2, 192.168.1.3, ); - formats as ct_lb(backends=192.168.1.2,192.168.1.3); +ct_lb_mark(backends=192.168.1.2, 192.168.1.3, ); + formats as ct_lb_mark(backends=192.168.1.2,192.168.1.3); encodes as group:4 - uses group: id(4), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label))) + uses group: id(4), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) has prereqs ip -ct_lb(backends=fd0f::2, fd0f::3, ); - formats as ct_lb(backends=fd0f::2,fd0f::3); +ct_lb_mark(backends=fd0f::2, fd0f::3, ); + formats as ct_lb_mark(backends=fd0f::2,fd0f::3); encodes as group:5 - uses group: id(5), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=fd0f::3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label))) + uses group: id(5), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=fd0f::3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) has prereqs ip -ct_lb(backends=192.168.1.2:); +ct_lb_mark(backends=192.168.1.2:); Syntax error at `)' expecting port number. -ct_lb(backends=192.168.1.2:123456); +ct_lb_mark(backends=192.168.1.2:123456); Syntax error at `123456' expecting port number. -ct_lb(backends=foo); +ct_lb_mark(backends=foo); Syntax error at `foo' expecting IP address. -ct_lb(backends=[[192.168.1.2]]); +ct_lb_mark(backends=[[192.168.1.2]]); Syntax error at `192.168.1.2' expecting IPv6 address. -ct_lb(backends=192.168.1.2:80,192.168.1.3:80; hash_fields=eth_src,eth_dst,ip_src); +ct_lb_mark(backends=192.168.1.2:80,192.168.1.3:80; hash_fields=eth_src,eth_dst,ip_src); Syntax error at `eth_src' invalid hash_fields. -ct_lb(backends=192.168.1.2:80,192.168.1.3:80; hash_fields="eth_src,eth_dst,ip_src"); +ct_lb_mark(backends=192.168.1.2:80,192.168.1.3:80; hash_fields="eth_src,eth_dst,ip_src"); encodes as group:6 - uses group: id(6), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label))) + uses group: id(6), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) has prereqs ip -ct_lb(backends=fd0f::2,fd0f::3; hash_fields="eth_src,eth_dst,ip_src,ip_dst,tp_src,tp_dst"); +ct_lb_mark(backends=fd0f::2,fd0f::3; hash_fields="eth_src,eth_dst,ip_src,ip_dst,tp_src,tp_dst"); encodes as group:7 - uses group: id(7), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,tp_src,tp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=fd0f::3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label))) + uses group: id(7), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,tp_src,tp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=fd0f::3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) has prereqs ip -ct_lb(backends=fd0f::2,fd0f::3; hash_fields="eth_src,eth_dst,ip_src,ip_dst,tcp_src,tcp_dst"); +ct_lb_mark(backends=fd0f::2,fd0f::3; hash_fields="eth_src,eth_dst,ip_src,ip_dst,tcp_src,tcp_dst"); encodes as group:8 - uses group: id(8), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,tcp_src,tcp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=fd0f::3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label))) + uses group: id(8), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,tcp_src,tcp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=fd0f::3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) has prereqs ip -ct_lb(backends=fd0f::2,fd0f::3; hash_fields="eth_src,eth_dst,ip_src,ip_dst,udp_src,udp_dst"); +ct_lb_mark(backends=fd0f::2,fd0f::3; hash_fields="eth_src,eth_dst,ip_src,ip_dst,udp_src,udp_dst"); encodes as group:9 - uses group: id(9), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,udp_src,udp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=fd0f::3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label))) + uses group: id(9), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,udp_src,udp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=fd0f::3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) has prereqs ip -ct_lb(backends=fd0f::2,fd0f::3; hash_fields="eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst"); +ct_lb_mark(backends=fd0f::2,fd0f::3; hash_fields="eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst"); encodes as group:10 - uses group: id(10), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=fd0f::3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label))) + uses group: id(10), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=fd0f::3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) has prereqs ip -ct_lb(backends=fd0f::2,fd0f::3; hash_fields="eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst"; skip_snat); +ct_lb_mark(backends=fd0f::2,fd0f::3; hash_fields="eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst"; skip_snat); encodes as group:11 - uses group: id(11), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label,set_field:4/4->ct_label)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=fd0f::3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label,set_field:4/4->ct_label))) + uses group: id(11), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:4/4->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=fd0f::3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:4/4->ct_mark))) has prereqs ip -ct_lb(backends=fd0f::2,fd0f::3; hash_fields="eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst"; force_snat); +ct_lb_mark(backends=fd0f::2,fd0f::3; hash_fields="eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst"; force_snat); encodes as group:12 - uses group: id(12), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label,set_field:8/8->ct_label)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=fd0f::3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_label,set_field:8/8->ct_label))) - has prereqs ip - -ct_lb_mark(backends=192.168.1.2:80,192.168.1.3:80); - encodes as group:13 - uses group: id(13), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) - has prereqs ip -ct_lb_mark(backends=192.168.1.2:80,192.168.1.3:80; skip_snat); - encodes as group:14 - uses group: id(14), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:4/4->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:4/4->ct_mark))) - has prereqs ip -ct_lb_mark(backends=192.168.1.2:80,192.168.1.3:80; force_snat); - encodes as group:15 - uses group: id(15), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:8/8->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:8/8->ct_mark))) - has prereqs ip -ct_lb_mark(backends=192.168.1.2:80,192.168.1.3:80; hash_fields="eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst"); - encodes as group:16 - uses group: id(16), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) - has prereqs ip -ct_lb_mark(backends=192.168.1.2:80,192.168.1.3:80; hash_fields="eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst"; skip_snat); - encodes as group:17 - uses group: id(17), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:4/4->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:4/4->ct_mark))) - has prereqs ip -ct_lb_mark(backends=192.168.1.2:80,192.168.1.3:80; hash_fields="eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst"; force_snat); - encodes as group:18 - uses group: id(18), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.1.2:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:8/8->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=192.168.1.3:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:8/8->ct_mark))) + uses group: id(12), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:8/8->ct_mark)),bucket=bucket_id=1,weight:100,actions=ct(nat(dst=fd0f::3),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark,set_field:8/8->ct_mark))) has prereqs ip # ct_next @@ -1975,23 +1950,23 @@ handle_svc_check(reg0); # select reg9[[16..31]] = select(1=50, 2=100, 3, ); formats as reg9[[16..31]] = select(1=50, 2=100, 3=100); - encodes as group:19 - uses group: id(19), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:50,actions=load:1->xreg4[[16..31]],resubmit(,oflow_in_table),bucket=bucket_id=1,weight:100,actions=load:2->xreg4[[16..31]],resubmit(,oflow_in_table),bucket=bucket_id=2,weight:100,actions=load:3->xreg4[[16..31]],resubmit(,oflow_in_table)) + encodes as group:13 + uses group: id(13), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:50,actions=load:1->xreg4[[16..31]],resubmit(,oflow_in_table),bucket=bucket_id=1,weight:100,actions=load:2->xreg4[[16..31]],resubmit(,oflow_in_table),bucket=bucket_id=2,weight:100,actions=load:3->xreg4[[16..31]],resubmit(,oflow_in_table)) reg0 = select(1, 2); formats as reg0 = select(1=100, 2=100); - encodes as group:20 - uses group: id(20), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=load:1->xxreg0[[96..127]],resubmit(,oflow_in_table),bucket=bucket_id=1,weight:100,actions=load:2->xxreg0[[96..127]],resubmit(,oflow_in_table)) + encodes as group:14 + uses group: id(14), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=load:1->xxreg0[[96..127]],resubmit(,oflow_in_table),bucket=bucket_id=1,weight:100,actions=load:2->xxreg0[[96..127]],resubmit(,oflow_in_table)) reg9[[16..31]] = select(values=(1=50, 2=100, 3); hash_fields="ip_src,ip_dst"); formats as reg9[[16..31]] = select(values=(1=50, 2=100, 3=100); hash_fields="ip_src,ip_dst"); - encodes as group:21 - uses group: id(21), name(type=select,selection_method=hash,fields(ip_src,ip_dst),bucket=bucket_id=0,weight:50,actions=load:1->xreg4[[16..31]],resubmit(,oflow_in_table),bucket=bucket_id=1,weight:100,actions=load:2->xreg4[[16..31]],resubmit(,oflow_in_table),bucket=bucket_id=2,weight:100,actions=load:3->xreg4[[16..31]],resubmit(,oflow_in_table)) + encodes as group:15 + uses group: id(15), name(type=select,selection_method=hash,fields(ip_src,ip_dst),bucket=bucket_id=0,weight:50,actions=load:1->xreg4[[16..31]],resubmit(,oflow_in_table),bucket=bucket_id=1,weight:100,actions=load:2->xreg4[[16..31]],resubmit(,oflow_in_table),bucket=bucket_id=2,weight:100,actions=load:3->xreg4[[16..31]],resubmit(,oflow_in_table)) reg0 = select(values=(1, 2); hash_fields="ip_dst,ip_src"); formats as reg0 = select(values=(1=100, 2=100); hash_fields="ip_dst,ip_src"); - encodes as group:22 - uses group: id(22), name(type=select,selection_method=hash,fields(ip_dst,ip_src),bucket=bucket_id=0,weight:100,actions=load:1->xxreg0[[96..127]],resubmit(,oflow_in_table),bucket=bucket_id=1,weight:100,actions=load:2->xxreg0[[96..127]],resubmit(,oflow_in_table)) + encodes as group:16 + uses group: id(16), name(type=select,selection_method=hash,fields(ip_dst,ip_src),bucket=bucket_id=0,weight:100,actions=load:1->xxreg0[[96..127]],resubmit(,oflow_in_table),bucket=bucket_id=1,weight:100,actions=load:2->xxreg0[[96..127]],resubmit(,oflow_in_table)) reg0 = select(1=, 2); Syntax error at `,' expecting weight. @@ -2016,12 +1991,12 @@ reg0[[0..14]] = select(1, 2, 3); fwd_group(liveness=true, childports="eth0", "lsp1"); formats as fwd_group(liveness="true", childports="eth0", "lsp1"); - encodes as group:23 - uses group: id(23), name(type=select,selection_method=dp_hash,bucket=watch_port:5,load=0x5->NXM_NX_REG15[[0..15]],resubmit(,OFTABLE_SAVE_INPORT),bucket=watch_port:17,load=0x17->NXM_NX_REG15[[0..15]],resubmit(,OFTABLE_SAVE_INPORT)) + encodes as group:17 + uses group: id(17), name(type=select,selection_method=dp_hash,bucket=watch_port:5,load=0x5->NXM_NX_REG15[[0..15]],resubmit(,OFTABLE_SAVE_INPORT),bucket=watch_port:17,load=0x17->NXM_NX_REG15[[0..15]],resubmit(,OFTABLE_SAVE_INPORT)) fwd_group(childports="eth0", "lsp1"); - encodes as group:24 - uses group: id(24), name(type=select,selection_method=dp_hash,bucket=load=0x5->NXM_NX_REG15[[0..15]],resubmit(,OFTABLE_SAVE_INPORT),bucket=load=0x17->NXM_NX_REG15[[0..15]],resubmit(,OFTABLE_SAVE_INPORT)) + encodes as group:18 + uses group: id(18), name(type=select,selection_method=dp_hash,bucket=load=0x5->NXM_NX_REG15[[0..15]],resubmit(,OFTABLE_SAVE_INPORT),bucket=load=0x17->NXM_NX_REG15[[0..15]],resubmit(,OFTABLE_SAVE_INPORT)) fwd_group(childports=eth0); Syntax error at `eth0' expecting logical switch port. @@ -2030,8 +2005,8 @@ fwd_group(); Syntax error at `)' expecting `;'. fwd_group(childports="eth0", "lsp1"); - encodes as group:24 - uses group: id(24), name(type=select,selection_method=dp_hash,bucket=load=0x5->NXM_NX_REG15[[0..15]],resubmit(,OFTABLE_SAVE_INPORT),bucket=load=0x17->NXM_NX_REG15[[0..15]],resubmit(,OFTABLE_SAVE_INPORT)) + encodes as group:18 + uses group: id(18), name(type=select,selection_method=dp_hash,bucket=load=0x5->NXM_NX_REG15[[0..15]],resubmit(,OFTABLE_SAVE_INPORT),bucket=load=0x17->NXM_NX_REG15[[0..15]],resubmit(,OFTABLE_SAVE_INPORT)) fwd_group(liveness=xyzzy, childports="eth0", "lsp1"); Syntax error at `xyzzy' expecting true or false. @@ -2416,18 +2391,18 @@ mirror(lsp1); Syntax error at `lsp1' expecting port name string. ct_lb_mark_local(backends="lsp1":192.168.0.101); - encodes as group:25 - uses group: id(25), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.0.101),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) + encodes as group:19 + uses group: id(19), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.0.101),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) has prereqs ip ct_lb_mark_local(backends="lsp1":192.168.0.101:10880); - encodes as group:26 - uses group: id(26), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.0.101:10880),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) + encodes as group:20 + uses group: id(20), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.0.101:10880),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) has prereqs ip ct_lb_mark_local(backends="lsp1":192.168.0.101:10880; hash_fields="eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst"); - encodes as group:27 - uses group: id(27), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.0.101:10880),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) + encodes as group:21 + uses group: id(21), name(type=select,selection_method=hash,fields(eth_src,eth_dst,ip_src,ip_dst,sctp_src,sctp_dst),bucket=bucket_id=0,weight:100,actions=ct(nat(dst=192.168.0.101:10880),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) has prereqs ip ct_lb_mark_local(backends=192.168.0.101:80); @@ -2438,13 +2413,13 @@ ct_lb_mark_local(backends=lsp1:192.168.0.101:10880); # add hash fields parsing ct_lb_mark_local(backends="lsp1":fd0f::2); - encodes as group:28 - uses group: id(28), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) + encodes as group:22 + uses group: id(22), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=fd0f::2),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) has prereqs ip ct_lb_mark_local(backends="lsp1":[[fd0f::2]]:80); - encodes as group:29 - uses group: id(29), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=[[fd0f::2]]:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) + encodes as group:23 + uses group: id(23), name(type=select,selection_method=dp_hash,bucket=bucket_id=0,weight:100,actions=ct(nat(dst=[[fd0f::2]]:80),commit,table=oflow_in_table,zone=NXM_NX_REG13[[0..15]],exec(set_field:2/2->ct_mark))) has prereqs ip # Miscellaneous negative tests. diff --git a/utilities/ovn-trace.8.xml b/utilities/ovn-trace.8.xml index d017a943e..a608bb1f1 100644 --- a/utilities/ovn-trace.8.xml +++ b/utilities/ovn-trace.8.xml @@ -255,8 +255,8 @@ <code>ct_snat</code>) action. </dd> - <dt><code>ct_lb;</code></dt> - <dt><code>ct_lb(<var>ip</var></code>[<code>:<var>port</var></code>]...<code>);</code></dt> + <dt><code>ct_lb_mark;</code></dt> + <dt><code>ct_lb_mark(<var>ip</var></code>[<code>:<var>port</var></code>]...<code>);</code></dt> <dd> Forks the pipeline. In one fork, sets <code>ip4.dst</code> (or <code>ip6.dst</code>) to one of the load-balancer addresses and the @@ -265,7 +265,7 @@ to the address specified on <code>--lb-dst</code>, if any; without arguments, uses the address and port specified on <code>--lb-dst</code>. In the other fork, the pipeline continues without change after the - <code>ct_lb</code> action. + <code>ct_lb_mark</code> action. </dd> <dt><code>ct_commit</code></dt> diff --git a/utilities/ovn-trace.c b/utilities/ovn-trace.c index c0e04262c..e928ccbc0 100644 --- a/utilities/ovn-trace.c +++ b/utilities/ovn-trace.c @@ -2656,7 +2656,7 @@ execute_ct_lb(const struct ovnact_ct_lb *ct_lb, if (family != AF_UNSPEC) { const struct ovnact_ct_lb_dst *dst = NULL; if (ct_lb->n_dsts) { - /* For ct_lb with addresses, choose one of the addresses. */ + /* For ct_lb_* with addresses, choose one of the addresses. */ int n = 0; for (int i = 0; i < ct_lb->n_dsts; i++) { const struct ovnact_ct_lb_dst *d = &ct_lb->dsts[i]; @@ -2686,7 +2686,7 @@ execute_ct_lb(const struct ovnact_ct_lb *ct_lb, "(use --lb-dst)"); } } else if (lb_dst.family == family) { - /* For ct_lb without addresses, use user-specified address. */ + /* For ct_lb_* without addresses, use user-specified address. */ dst = &lb_dst; } @@ -2708,10 +2708,9 @@ execute_ct_lb(const struct ovnact_ct_lb *ct_lb, } const char *action_type = - ct_lb->ovnact.type == OVNACT_CT_LB_MARK ? "ct_lb_mark" : - ct_lb->ovnact.type == OVNACT_CT_LB_MARK_LOCAL ? "ct_lb_mark_local" : - "ct_lb"; - + ct_lb->ovnact.type == OVNACT_CT_LB_MARK + ? "ct_lb_mark" + : "ct_lb_mark_local"; struct ovntrace_node *node = ovntrace_node_append( super, OVNTRACE_NODE_TRANSFORMATION, "%s%s", action_type, ds_cstr_ro(&comment)); @@ -3361,10 +3360,6 @@ trace_actions(const struct ovnact *ovnacts, size_t ovnacts_len, pipeline, super); break; - case OVNACT_CT_LB: - execute_ct_lb(ovnact_get_CT_LB(a), dp, uflow, pipeline, super); - break; - case OVNACT_CT_LB_MARK: execute_ct_lb(ovnact_get_CT_LB_MARK(a), dp, uflow, pipeline, super); -- 2.54.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
