diff --git a/SOURCES/openvswitch-2.13.0.patch b/SOURCES/openvswitch-2.13.0.patch index 787f54f..fcc3f49 100644 --- a/SOURCES/openvswitch-2.13.0.patch +++ b/SOURCES/openvswitch-2.13.0.patch @@ -87258,7 +87258,7 @@ index 114aff8ea3..0fc6d2ea60 100644 enum xc_type type; union { diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c -index 4407f9c97a..0189a1ae82 100644 +index 4407f9c97a..2ec1f4eb85 100644 --- a/ofproto/ofproto-dpif-xlate.c +++ b/ofproto/ofproto-dpif-xlate.c @@ -460,7 +460,7 @@ static void xlate_commit_actions(struct xlate_ctx *ctx); @@ -87604,7 +87604,18 @@ index 4407f9c97a..0189a1ae82 100644 /* Check if need to store the remaining actions for later * execution. */ if (ctx->freezing) { -@@ -7085,17 +7157,18 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len, +@@ -7067,7 +7139,9 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len, + break; + + case OFPACT_CT_CLEAR: +- compose_ct_clear_action(ctx); ++ if (ctx->conntracked) { ++ compose_ct_clear_action(ctx); ++ } + break; + + case OFPACT_NAT: +@@ -7085,17 +7159,18 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len, break; case OFPACT_CHECK_PKT_LARGER: { @@ -87628,7 +87639,7 @@ index 4407f9c97a..0189a1ae82 100644 break; } } -@@ -7519,7 +7592,8 @@ xlate_actions(struct xlate_in *xin, struct xlate_out *xout) +@@ -7519,7 +7594,8 @@ xlate_actions(struct xlate_in *xin, struct xlate_out *xout) /* Restore pipeline metadata. May change flow's in_port and other * metadata to the values that existed when freezing was triggered. */ @@ -87638,7 +87649,7 @@ index 4407f9c97a..0189a1ae82 100644 /* Restore stack, if any. */ if (state->stack) { -@@ -7571,14 +7645,10 @@ xlate_actions(struct xlate_in *xin, struct xlate_out *xout) +@@ -7571,14 +7647,10 @@ xlate_actions(struct xlate_in *xin, struct xlate_out *xout) ctx.error = XLATE_INVALID_TUNNEL_METADATA; goto exit; } @@ -90652,7 +90663,7 @@ index 4893280a99..a0487341c9 100644 bad_action 'fin_timeout(foo=bar)' "invalid key 'foo' in 'fin_timeout' argument" diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at -index ff1cc93707..0dc2ef7dc2 100644 +index ff1cc93707..70a4f6b8a6 100644 --- a/tests/ofproto-dpif.at +++ b/tests/ofproto-dpif.at @@ -4534,6 +4534,54 @@ recirc_id(0),in_port(90),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,fr @@ -90877,10 +90888,38 @@ index ff1cc93707..0dc2ef7dc2 100644 AT_SETUP([ofproto-dpif - ICMPv6]) OVS_VSWITCHD_START add_of_ports br0 1 -@@ -10540,6 +10711,62 @@ udp,vlan_tci=0x0000,dl_src=50:54:00:00:00:0a,dl_dst=50:54:00:00:00:09,nw_src=10. - OVS_VSWITCHD_STOP - AT_CLEANUP - +@@ -10537,6 +10708,87 @@ dnl + NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=106 in_port=2 (via action) data_len=106 (unbuffered) + udp,vlan_tci=0x0000,dl_src=50:54:00:00:00:0a,dl_dst=50:54:00:00:00:09,nw_src=10.1.1.2,nw_dst=10.1.1.1,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=2,tp_dst=1 udp_csum:553 + ]) ++ ++dnl The next test verifies that ct_clear at the datapath only gets executed ++dnl if conntrack information is present. ++AT_DATA([flows.txt], [dnl ++table=0 in_port=1 actions=ct_clear,ct_clear,ct_clear,p2 ++]) ++AT_CHECK([ovs-ofctl del-flows br0]) ++AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) ++AT_CHECK([ovs-appctl ofproto/trace br0 'in_port=p1,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2'], [0], [stdout]) ++AT_CHECK([tail -1 stdout], [0], ++ [Datapath actions: 2 ++]) ++AT_DATA([flows.txt], [dnl ++table=0 in_port=1 ip actions=ct_clear,ct(table=1) ++table=1 in_port=1 actions=ct_clear,ct_clear,goto_table:2 ++table=2 in_port=1 actions=ct_clear,p2 ++]) ++AT_CHECK([ovs-ofctl del-flows br0]) ++AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) ++AT_CHECK([ovs-appctl ofproto/trace br0 'in_port=p1,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2'], [0], [stdout]) ++AT_CHECK([grep Datapath stdout | sed 's/recirc(.*)/recirc(X)/'], [0], ++ [Datapath actions: ct,recirc(X) ++Datapath actions: ct_clear,2 ++]) ++ ++OVS_VSWITCHD_STOP ++AT_CLEANUP ++ +AT_SETUP([ofproto-dpif - conntrack - match masked ct fields]) +OVS_VSWITCHD_START + @@ -90934,13 +90973,10 @@ index ff1cc93707..0dc2ef7dc2 100644 +udp,vlan_tci=0x0000,dl_src=50:54:00:00:00:0a,dl_dst=50:54:00:00:00:09,nw_src=10.1.1.2,nw_dst=10.1.1.1,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=2,tp_dst=1 udp_csum:553 +]) + -+OVS_VSWITCHD_STOP -+AT_CLEANUP -+ - AT_SETUP([ofproto-dpif - conntrack - ofproto/trace]) - OVS_VSWITCHD_START + OVS_VSWITCHD_STOP + AT_CLEANUP -@@ -10807,6 +11034,23 @@ Megaflow: recirc_id=0x3,eth,ip,in_port=1,nw_frag=no +@@ -10807,6 +11059,23 @@ Megaflow: recirc_id=0x3,eth,ip,in_port=1,nw_frag=no Datapath actions: 4 ]) diff --git a/SPECS/openvswitch2.13.spec b/SPECS/openvswitch2.13.spec index 1f1daf2..39f8afa 100644 --- a/SPECS/openvswitch2.13.spec +++ b/SPECS/openvswitch2.13.spec @@ -59,7 +59,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 2.13.0 -Release: 166%{?commit0:.%{date}git%{shortcommit0}}%{?commit1:dpdk%{shortcommit1}}%{?dist} +Release: 167%{?commit0:.%{date}git%{shortcommit0}}%{?commit1:dpdk%{shortcommit1}}%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -715,6 +715,12 @@ exit 0 %endif %changelog +* Fri Mar 18 2022 Open vSwitch CI - 2.13.0-167 +- Merging upstream branch-2.13 [RH git: 98b4b38f08] + Commit list: + 69645206b8 ofproto-dpif-xlate: Avoid successive ct_clear datapath actions. + + * Fri Mar 11 2022 Open vSwitch CI - 2.13.0-166 - Merging upstream branch-2.13 [RH git: 0fb64d739c] Commit list: