diff --git a/SOURCES/openvswitch-2.13.0.patch b/SOURCES/openvswitch-2.13.0.patch index b8c1bc3..408f960 100644 --- a/SOURCES/openvswitch-2.13.0.patch +++ b/SOURCES/openvswitch-2.13.0.patch @@ -95827,7 +95827,7 @@ index 68c8774d1a..9d5e24a292 100644 # # Do basic check for vxlan functionality, skip the test if it's not there. diff --git a/tests/system-kmod-macros.at b/tests/system-kmod-macros.at -index daf66bdec8..26beefcf44 100644 +index daf66bdec8..1c5e095a67 100644 --- a/tests/system-kmod-macros.at +++ b/tests/system-kmod-macros.at @@ -99,6 +99,17 @@ m4_define([CHECK_CONNTRACK_FRAG_OVERLAP], @@ -95848,6 +95848,20 @@ index daf66bdec8..26beefcf44 100644 # CHECK_CONNTRACK_TIMEOUT() # # Perform requirements checks for running conntrack customized timeout tests. +@@ -189,6 +200,13 @@ m4_define([OVS_CHECK_KERNEL_EXCL], + AT_SKIP_IF([ ! ( test $version -lt $1 || ( test $version -eq $1 && test $sublevel -lt $2 ) || test $version -gt $3 || ( test $version -eq $3 && test $sublevel -gt $4 ) ) ]) + ]) + ++# CHECK_LATER_IPV6_FRAGMENTS() ++# ++# Upstream kernels beetween 4.20 and 5.19 are not parsing IPv6 fragments ++# correctly. The issue was also backported in some older distribution ++# kernels, so kernels below 4.20 are not reliable. ++m4_define([CHECK_LATER_IPV6_FRAGMENTS], [OVS_CHECK_MIN_KERNEL(5, 19)]) ++ + # VSCTL_ADD_DATAPATH_TABLE() + # + # Create system datapath table "system" for kernel tests in ovsdb diff --git a/tests/system-offloads-traffic.at b/tests/system-offloads-traffic.at index 379a8a5e92..bfad66e051 100644 --- a/tests/system-offloads-traffic.at @@ -95941,15 +95955,16 @@ index 0000000000..1714273e35 +OVS_TRAFFIC_VSWITCHD_STOP +AT_CLEANUP diff --git a/tests/system-traffic.at b/tests/system-traffic.at -index 4a39c929c2..ccabb517f2 100644 +index 4a39c929c2..9f905455c4 100644 --- a/tests/system-traffic.at +++ b/tests/system-traffic.at -@@ -192,6 +192,41 @@ NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00:1::2 | FORMAT_PI +@@ -192,6 +192,46 @@ NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00:1::2 | FORMAT_PI OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP +AT_SETUP([datapath - ping6 between two ports with header modify]) +OVS_TRAFFIC_VSWITCHD_START() ++CHECK_LATER_IPV6_FRAGMENTS() + +AT_CHECK([ovs-ofctl add-flow br0 "actions=normal"]) + @@ -95958,17 +95973,21 @@ index 4a39c929c2..ccabb517f2 100644 +ADD_VETH(p0, at_ns0, br0, "fc00::1/96", e4:11:22:33:44:55) +ADD_VETH(p1, at_ns1, br0, "fc00::2/96", e4:11:22:33:44:54) +NS_CHECK_EXEC([at_ns0], [ip -6 neigh add fc00::3 lladdr e4:11:22:33:44:54 dev p0]) -+NS_CHECK_EXEC([at_ns0], [ip -6 neigh add fc00::2 lladdr e4:11:22:33:44:54 dev p0]) -+NS_CHECK_EXEC([at_ns0], [ip -6 neigh add fc00::1 lladdr e4:11:22:33:44:55 dev p0]) + +dnl Linux seems to take a little time to get its IPv6 stack in order. Without +dnl waiting, we get occasional failures due to the following error: +dnl "connect: Cannot assign requested address" +OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::2]) ++OVS_WAIT_UNTIL([ip netns exec at_ns1 ping6 -c 1 fc00::1]) + -+AT_CHECK([ovs-ofctl del-flows -OOpenFlow15 br0]) -+AT_CHECK([ovs-ofctl add-flow -OOpenFlow15 br0 in_port=ovs-p0,ipv6,ipv6_dst=fc00::3,ipv6_src=fc00::1,actions=set_field:fc00::2-\>ipv6_dst,ovs-p1]) -+AT_CHECK([ovs-ofctl add-flow -OOpenFlow15 br0 in_port=ovs-p1,ipv6,ipv6_dst=fc00::1,ipv6_src=fc00::2,actions=set_field:fc00::3-\>ipv6_src,ovs-p0]) ++AT_DATA([flows.txt], [dnl ++priority=100,in_port=ovs-p0,ipv6,ipv6_src=fc00::1,ipv6_dst=fc00::3,actions=set_field:fc00::2->ipv6_dst,ovs-p1 ++priority=100,in_port=ovs-p1,ipv6,ipv6_src=fc00::2,ipv6_dst=fc00::1,actions=set_field:fc00::3->ipv6_src,ovs-p0 ++priority=0,actions=NORMAL ++]) ++ ++AT_CHECK([ovs-ofctl del-flows br0]) ++AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) + +NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00::3 | FORMAT_PING], [0], [dnl +3 packets transmitted, 3 received, 0% packet loss, time 0ms @@ -95986,7 +96005,7 @@ index 4a39c929c2..ccabb517f2 100644 AT_SETUP([datapath - ping over bond]) OVS_TRAFFIC_VSWITCHD_START() -@@ -258,6 +293,52 @@ NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PI +@@ -258,6 +298,52 @@ NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PI OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -96039,7 +96058,7 @@ index 4a39c929c2..ccabb517f2 100644 AT_SETUP([datapath - ping over vxlan6 tunnel]) OVS_CHECK_VXLAN_UDP6ZEROCSUM() -@@ -574,6 +655,60 @@ NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PI +@@ -574,6 +660,60 @@ NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PI OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -96100,7 +96119,7 @@ index 4a39c929c2..ccabb517f2 100644 AT_SETUP([datapath - flow resume with geneve tun_metadata]) OVS_CHECK_GENEVE() -@@ -611,6 +746,16 @@ NS_CHECK_EXEC([at_ns0], [ping -q -c 3 10.1.1.100 | FORMAT_PING], [0], [dnl +@@ -611,6 +751,16 @@ NS_CHECK_EXEC([at_ns0], [ping -q -c 3 10.1.1.100 | FORMAT_PING], [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -96117,7 +96136,7 @@ index 4a39c929c2..ccabb517f2 100644 OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -1925,6 +2070,111 @@ tcp,orig=(src=10.1.1.3,dst=10.1.1.4,sport=,dport=),reply=(src= +@@ -1925,6 +2075,111 @@ tcp,orig=(src=10.1.1.3,dst=10.1.1.4,sport=,dport=),reply=(src= OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -96229,7 +96248,7 @@ index 4a39c929c2..ccabb517f2 100644 AT_SETUP([conntrack - multiple bridges]) CHECK_CONNTRACK() OVS_TRAFFIC_VSWITCHD_START( -@@ -2328,6 +2578,44 @@ NXST_FLOW reply: +@@ -2328,6 +2583,44 @@ NXST_FLOW reply: table=1, priority=100,ct_state=+est+trk,in_port=1 actions=output:2 ]) @@ -96274,7 +96293,19 @@ index 4a39c929c2..ccabb517f2 100644 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -3220,6 +3508,46 @@ NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING +@@ -2664,6 +2957,11 @@ AT_CHECK([ovs-ofctl bundle br0 bundle.txt]) + AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(10.1.1.2)], [0], [dnl + ]) + ++dnl Send the second fragment in order to avoid keeping the first fragment ++dnl in the queue until the expiration occurs. Fragments already queued, if resent, ++dnl may lead to failures on the kernel datapath. ++AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1, packet=50540000000a505400000009080045000030000100320011a4860a0101010a01010200010002000800000010203040506070809000010203040506070809, actions=ct(commit)"]) ++ + OVS_TRAFFIC_VSWITCHD_STOP + AT_CLEANUP + +@@ -3220,6 +3518,46 @@ NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -96321,7 +96352,7 @@ index 4a39c929c2..ccabb517f2 100644 AT_SETUP([conntrack - resubmit to ct multiple times]) CHECK_CONNTRACK() -@@ -3356,15 +3684,15 @@ action=normal +@@ -3356,15 +3694,15 @@ action=normal AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) @@ -96340,7 +96371,7 @@ index 4a39c929c2..ccabb517f2 100644 "1616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161610a, actions=ct(table=1)"]) AT_CHECK([ovs-appctl dpctl/dump-flows | head -2 | tail -1 | grep -q -e ["]udp[(]src=5001["]]) -@@ -4379,6 +4707,52 @@ tcp,orig=(src=10.1.1.1,dst=10.1.1.2,sport=,dport=),reply=(src= +@@ -4379,6 +4717,52 @@ tcp,orig=(src=10.1.1.1,dst=10.1.1.2,sport=,dport=),reply=(src= OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -96393,7 +96424,7 @@ index 4a39c929c2..ccabb517f2 100644 AT_SETUP([conntrack - simple DNAT]) CHECK_CONNTRACK() CHECK_CONNTRACK_NAT() -@@ -4434,6 +4808,41 @@ tcp,orig=(src=10.1.1.1,dst=10.1.1.2,sport=,dport=),reply=(src= +@@ -4434,6 +4818,41 @@ tcp,orig=(src=10.1.1.1,dst=10.1.1.2,sport=,dport=),reply=(src= OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -96435,7 +96466,7 @@ index 4a39c929c2..ccabb517f2 100644 AT_SETUP([conntrack - more complex DNAT]) CHECK_CONNTRACK() CHECK_CONNTRACK_NAT() -@@ -5628,7 +6037,7 @@ on_exit 'ovs-appctl revalidator/purge' +@@ -5628,7 +6047,7 @@ on_exit 'ovs-appctl revalidator/purge' on_exit 'ovs-appctl dpif/dump-flows br0' dnl Should work with the virtual IP address through NAT @@ -96444,7 +96475,7 @@ index 4a39c929c2..ccabb517f2 100644 echo Request $i NS_CHECK_EXEC([at_ns1], [wget 10.1.1.64 -t 5 -T 1 --retry-connrefused -v -o wget$i.log]) done -@@ -5873,6 +6282,96 @@ ovs-appctl dpif/dump-flows br0 +@@ -5873,6 +6292,96 @@ ovs-appctl dpif/dump-flows br0 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -96542,7 +96573,7 @@ index 4a39c929c2..ccabb517f2 100644 AT_SETUP([802.1ad - vlan_limit]) diff --git a/tests/system-userspace-macros.at b/tests/system-userspace-macros.at -index ba7f4102f4..5c96f943df 100644 +index ba7f4102f4..fc203daec0 100644 --- a/tests/system-userspace-macros.at +++ b/tests/system-userspace-macros.at @@ -96,6 +96,16 @@ m4_define([CHECK_CONNTRACK_FRAG_OVERLAP]) @@ -96562,6 +96593,18 @@ index ba7f4102f4..5c96f943df 100644 # CHECK_CONNTRACK_TIMEOUT() # # Perform requirements checks for running conntrack customized timeout tests. +@@ -295,6 +305,11 @@ m4_define([OVS_CHECK_KERNEL_EXCL], + AT_SKIP_IF([:]) + ]) + ++# CHECK_LATER_IPV6_FRAGMENTS() ++# ++# Userspace is parsing later IPv6 fragments correctly. ++m4_define([CHECK_LATER_IPV6_FRAGMENTS], []) ++ + # VSCTL_ADD_DATAPATH_TABLE() + # + # Create datapath table "netdev" for userspace tests in ovsdb diff --git a/tests/system-userspace-packet-type-aware.at b/tests/system-userspace-packet-type-aware.at index c2246316de..974304758f 100644 --- a/tests/system-userspace-packet-type-aware.at diff --git a/SPECS/openvswitch2.13.spec b/SPECS/openvswitch2.13.spec index 9972f48..e2c565a 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: 194%{?commit0:.%{date}git%{shortcommit0}}%{?commit1:dpdk%{shortcommit1}}%{?dist} +Release: 195%{?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,14 @@ exit 0 %endif %changelog +* Mon Aug 08 2022 Open vSwitch CI - 2.13.0-195 +- Merging upstream branch-2.13 [RH git: 30c4266e60] + Commit list: + e9723839eb system-traffic: Fix IPv4 fragmentation test sequence for check-kernel. + b8f68c6496 system-traffic: Fix incorrect neigh entry in ipv6 header modification test. + 8fe257af53 system-traffic: Don't run IPv6 header modification test on kernels < 5.19. + + * Thu Aug 04 2022 Open vSwitch CI - 2.13.0-194 - Merging upstream branch-2.13 [RH git: 7d779052a1] Commit list: