diff --git a/SOURCES/openvswitch-2.16.0.patch b/SOURCES/openvswitch-2.16.0.patch index dd23f9b..e9d843e 100644 --- a/SOURCES/openvswitch-2.16.0.patch +++ b/SOURCES/openvswitch-2.16.0.patch @@ -11366,6 +11366,24 @@ index e0e750fde5..512aa87d4c 100644 AT_CHECK([ovs-appctl dpif-netdev/miniflow-parser-set autovalidator], [0], [dnl Miniflow extract implementation set to autovalidator. ]) +diff --git a/tests/system-kmod-macros.at b/tests/system-kmod-macros.at +index 86d633ac4f..f0aaae63eb 100644 +--- a/tests/system-kmod-macros.at ++++ b/tests/system-kmod-macros.at +@@ -200,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-route.at b/tests/system-route.at index 1714273e35..270956d13f 100644 --- a/tests/system-route.at @@ -11385,15 +11403,16 @@ index 1714273e35..270956d13f 100644 dnl Delete ip address. AT_CHECK([ip addr del 10.0.0.17/24 dev p1-route], [0], [stdout]) diff --git a/tests/system-traffic.at b/tests/system-traffic.at -index f400cfabc9..a24d59ef1c 100644 +index f400cfabc9..0f09d37139 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"]) + @@ -11402,17 +11421,21 @@ index f400cfabc9..a24d59ef1c 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 @@ -11430,7 +11453,7 @@ index f400cfabc9..a24d59ef1c 100644 AT_SETUP([datapath - ping over bond]) OVS_TRAFFIC_VSWITCHD_START() -@@ -218,6 +253,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -218,6 +258,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over vxlan tunnel]) @@ -11438,7 +11461,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_VXLAN() OVS_TRAFFIC_VSWITCHD_START() -@@ -258,7 +294,55 @@ NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 -w 2 10.1.1.100 | FORMAT_PI +@@ -258,7 +299,55 @@ 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 @@ -11494,7 +11517,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_VXLAN_UDP6ZEROCSUM() OVS_TRAFFIC_VSWITCHD_START() -@@ -302,6 +386,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -302,6 +391,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over gre tunnel]) @@ -11502,7 +11525,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_KERNEL_EXCL(3, 10, 4, 15) OVS_CHECK_GRE() -@@ -343,6 +428,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -343,6 +433,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over ip6gre L2 tunnel]) @@ -11510,7 +11533,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_KERNEL_EXCL(3, 10, 4, 15) OVS_CHECK_GRE() OVS_CHECK_ERSPAN() -@@ -383,6 +469,7 @@ AT_CLEANUP +@@ -383,6 +474,7 @@ AT_CLEANUP AT_SETUP([datapath - ping over erspan v1 tunnel]) @@ -11518,7 +11541,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_KERNEL_EXCL(3, 10, 4, 15) OVS_CHECK_GRE() OVS_CHECK_ERSPAN() -@@ -419,6 +506,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -419,6 +511,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over erspan v2 tunnel]) @@ -11526,7 +11549,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_KERNEL_EXCL(3, 10, 4, 15) OVS_CHECK_GRE() OVS_CHECK_ERSPAN() -@@ -455,6 +543,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -455,6 +548,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over ip6erspan v1 tunnel]) @@ -11534,7 +11557,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_KERNEL_EXCL(3, 10, 4, 15) OVS_CHECK_GRE() OVS_CHECK_ERSPAN() -@@ -494,6 +583,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -494,6 +588,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over ip6erspan v2 tunnel]) @@ -11542,7 +11565,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_KERNEL_EXCL(3, 10, 4, 15) OVS_CHECK_GRE() OVS_CHECK_ERSPAN() -@@ -534,6 +624,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -534,6 +629,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over geneve tunnel]) @@ -11550,7 +11573,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_GENEVE() OVS_TRAFFIC_VSWITCHD_START() -@@ -575,6 +666,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -575,6 +671,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over geneve tunnel, delete flow regression]) @@ -11558,7 +11581,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_GENEVE() OVS_TRAFFIC_VSWITCHD_START() -@@ -629,6 +721,7 @@ OVS_TRAFFIC_VSWITCHD_STOP(["/|ERR|/d +@@ -629,6 +726,7 @@ OVS_TRAFFIC_VSWITCHD_STOP(["/|ERR|/d AT_CLEANUP AT_SETUP([datapath - flow resume with geneve tun_metadata]) @@ -11566,7 +11589,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_GENEVE() OVS_TRAFFIC_VSWITCHD_START() -@@ -666,7 +759,7 @@ NS_CHECK_EXEC([at_ns0], [ping -q -c 3 10.1.1.100 | FORMAT_PING], [0], [dnl +@@ -666,7 +764,7 @@ NS_CHECK_EXEC([at_ns0], [ping -q -c 3 10.1.1.100 | FORMAT_PING], [0], [dnl ]) dnl Test OVS handles TLV map modifictions properly when restores frozen state. @@ -11575,7 +11598,7 @@ index f400cfabc9..a24d59ef1c 100644 AT_CHECK([ovs-ofctl add-tlv-map br0 "{class=0xffff,type=0x88,len=4}->tun_metadata1"]) sleep 1 -@@ -680,6 +773,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -680,6 +778,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over geneve6 tunnel]) @@ -11583,7 +11606,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_GENEVE_UDP6ZEROCSUM() OVS_TRAFFIC_VSWITCHD_START() -@@ -723,6 +817,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -723,6 +822,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over gre tunnel by simulated packets]) @@ -11591,7 +11614,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_MIN_KERNEL(3, 10) OVS_TRAFFIC_VSWITCHD_START() -@@ -769,6 +864,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -769,6 +869,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over erspan v1 tunnel by simulated packets]) @@ -11599,7 +11622,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_MIN_KERNEL(3, 10) OVS_TRAFFIC_VSWITCHD_START() -@@ -817,6 +913,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -817,6 +918,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over erspan v2 tunnel by simulated packets]) @@ -11607,7 +11630,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_MIN_KERNEL(3, 10) OVS_TRAFFIC_VSWITCHD_START() -@@ -870,6 +967,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -870,6 +972,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over ip6erspan v1 tunnel by simulated packets]) @@ -11615,7 +11638,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_MIN_KERNEL(3, 10) OVS_TRAFFIC_VSWITCHD_START() -@@ -925,6 +1023,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -925,6 +1028,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over ip6erspan v2 tunnel by simulated packets]) @@ -11623,7 +11646,7 @@ index f400cfabc9..a24d59ef1c 100644 OVS_CHECK_MIN_KERNEL(3, 10) OVS_TRAFFIC_VSWITCHD_START() -@@ -1981,6 +2080,111 @@ tcp,orig=(src=10.1.1.3,dst=10.1.1.4,sport=,dport=),reply=(src= +@@ -1981,6 +2085,111 @@ tcp,orig=(src=10.1.1.3,dst=10.1.1.4,sport=,dport=),reply=(src= OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -11735,7 +11758,7 @@ index f400cfabc9..a24d59ef1c 100644 AT_SETUP([conntrack - multiple bridges]) CHECK_CONNTRACK() OVS_TRAFFIC_VSWITCHD_START( -@@ -2384,6 +2588,15 @@ NXST_FLOW reply: +@@ -2384,6 +2593,15 @@ NXST_FLOW reply: table=1, priority=100,ct_state=+est+trk,in_port=1 actions=output:2 ]) @@ -11751,7 +11774,19 @@ index f400cfabc9..a24d59ef1c 100644 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -3305,6 +3518,46 @@ NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING +@@ -2749,6 +2967,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 + +@@ -3305,6 +3528,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 @@ -11798,7 +11833,7 @@ index f400cfabc9..a24d59ef1c 100644 AT_SETUP([conntrack - resubmit to ct multiple times]) CHECK_CONNTRACK() -@@ -3464,15 +3717,15 @@ action=normal +@@ -3464,15 +3727,15 @@ action=normal AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) @@ -11817,7 +11852,7 @@ index f400cfabc9..a24d59ef1c 100644 "1616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161610a, actions=ct(table=1)"]) AT_CHECK([ovs-appctl dpctl/dump-flows | head -2 | tail -1 | grep -q -e ["]udp[(]src=5001["]]) -@@ -5817,7 +6070,7 @@ on_exit 'ovs-appctl revalidator/purge' +@@ -5817,7 +6080,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 @@ -11826,7 +11861,7 @@ index f400cfabc9..a24d59ef1c 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 -@@ -6106,6 +6359,132 @@ AT_CHECK([ovs-ofctl dump-flows br0 | grep table=2, | OFPROTO_CLEAR_DURATION_IDLE +@@ -6106,6 +6369,132 @@ AT_CHECK([ovs-ofctl dump-flows br0 | grep table=2, | OFPROTO_CLEAR_DURATION_IDLE OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -11969,6 +12004,22 @@ index 406334f3e0..1a80047619 100644 ) + +m4_define([CHECK_SYSTEM_TSO], []) +diff --git a/tests/system-userspace-macros.at b/tests/system-userspace-macros.at +index f639ba53a2..da3a4caca9 100644 +--- a/tests/system-userspace-macros.at ++++ b/tests/system-userspace-macros.at +@@ -299,6 +299,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/test-cmap.c b/tests/test-cmap.c index 0705475606..f8cc4dd80a 100644 --- a/tests/test-cmap.c diff --git a/SPECS/openvswitch2.16.spec b/SPECS/openvswitch2.16.spec index 7e1bcea..e5ed7da 100644 --- a/SPECS/openvswitch2.16.spec +++ b/SPECS/openvswitch2.16.spec @@ -57,7 +57,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 2.16.0 -Release: 91%{?dist} +Release: 92%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -699,6 +699,14 @@ exit 0 %endif %changelog +* Mon Aug 08 2022 Open vSwitch CI - 2.16.0-92 +- Merging upstream branch-2.16 [RH git: 6cd148d13d] + Commit list: + b8fc670ae6 system-traffic: Fix IPv4 fragmentation test sequence for check-kernel. + 23d514dd25 system-traffic: Fix incorrect neigh entry in ipv6 header modification test. + da1f5a95cf system-traffic: Don't run IPv6 header modification test on kernels < 5.19. + + * Fri Aug 05 2022 Open vSwitch CI - 2.16.0-91 - Merging upstream branch-2.16 [RH git: ca5dd54f22] Commit list: