diff --git a/SOURCES/openvswitch-2.16.0.patch b/SOURCES/openvswitch-2.16.0.patch index 37fd1ca..e49c0e5 100644 --- a/SOURCES/openvswitch-2.16.0.patch +++ b/SOURCES/openvswitch-2.16.0.patch @@ -83466,6 +83466,19 @@ index 34fc042373..537d3951af 100644 return true; } +diff --git a/lib/dpif.c b/lib/dpif.c +index 8c4aed47bd..1a028d50ce 100644 +--- a/lib/dpif.c ++++ b/lib/dpif.c +@@ -1209,7 +1209,7 @@ dpif_execute_helper_cb(void *aux_, struct dp_packet_batch *packets_, + /* The Linux kernel datapath throws away the tunnel information + * that we supply as metadata. We have to use a "set" action to + * supply it. */ +- if (md->tunnel.ip_dst) { ++ if (flow_tnl_dst_is_set(&md->tunnel)) { + odp_put_tunnel_action(&md->tunnel, &execute_actions, NULL); + } + ofpbuf_put(&execute_actions, action, NLA_ALIGN(action->nla_len)); diff --git a/lib/flow.c b/lib/flow.c index 89837de95d..a021bc0eba 100644 --- a/lib/flow.c @@ -92863,7 +92876,7 @@ 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..bb7b77ebb7 100644 +index f400cfabc9..437ff1a5c3 100644 --- a/tests/system-traffic.at +++ b/tests/system-traffic.at @@ -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 @@ -93066,15 +93079,64 @@ index f400cfabc9..bb7b77ebb7 100644 OVS_CHECK_GENEVE_UDP6ZEROCSUM() OVS_TRAFFIC_VSWITCHD_START() -@@ -723,6 +822,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -722,7 +821,56 @@ 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 ++AT_SETUP([datapath - slow_action on geneve6 tunnel]) ++AT_SKIP_IF([test $HAVE_TCPDUMP = no]) ++OVS_CHECK_TUNNEL_TSO() ++OVS_CHECK_GENEVE_UDP6ZEROCSUM() ++ ++OVS_TRAFFIC_VSWITCHD_START() ++ADD_BR([br-underlay]) ++ ++AT_CHECK([ovs-ofctl add-flow br0 "actions=normal"]) ++AT_CHECK([ovs-ofctl add-flow br-underlay "actions=normal"]) ++ ++ADD_NAMESPACES(at_ns0) ++ ++dnl Set up underlay link from host into the namespace using veth pair. ++ADD_VETH(p0, at_ns0, br-underlay, "fc00::1/64", [], [], "nodad") ++AT_CHECK([ip addr add dev br-underlay "fc00::100/64" nodad]) ++AT_CHECK([ip link set dev br-underlay up]) ++ ++dnl Set up tunnel endpoints on OVS outside the namespace and with a native ++dnl linux device inside the namespace. ++ADD_OVS_TUNNEL6([geneve], [br0], [at_gnv0], [fc00::1], [10.1.1.100/24]) ++ADD_NATIVE_TUNNEL6([geneve], [ns_gnv0], [at_ns0], [fc00::100], [10.1.1.1/24], ++ [vni 0 udp6zerocsumtx udp6zerocsumrx]) ++AT_CHECK([ovs-ofctl add-flow br0 "table=37,actions=at_gnv0"]) ++ ++OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::100]) ++ ++dnl First, check the underlay. ++NS_CHECK_EXEC([at_ns0], [ping6 -q -c 3 -i 0.3 -w 2 fc00::100 | FORMAT_PING], [0], [dnl ++3 packets transmitted, 3 received, 0% packet loss, time 0ms ++]) ++ ++dnl Start tcpdump to capture the encapsulated packets. ++NETNS_DAEMONIZE([at_ns0], [tcpdump -U -i p0 -w p0.pcap], [tcpdump.pid]) ++sleep 1 ++ ++dnl Generate a single packet trough the controler that needs an ARP modification ++AT_CHECK([ovs-ofctl -O OpenFlow15 packet-out br0 "in_port=controller packet=fffffffffffffa163e949d8008060001080006040001fa163e949d80c0a820300000000000000a0000fe actions=set_field:0xa0000f4->reg1,move:NXM_NX_XXREG0[[64..95]]->NXM_OF_ARP_SPA[[]],resubmit(,37)"]) ++sleep 1 ++ ++dnl Stop OVS and tcpdump and verify the results. ++OVS_TRAFFIC_VSWITCHD_STOP ++ ++ovs-pcap p0.pcap ++ ++AT_CHECK([ovs-pcap p0.pcap | grep -Eq "^[[[:xdigit:]]]{24}86dd60000000003a1140fc000000000000000000000000000100fc000000000000000000000000000001[[[:xdigit:]]]{4}17c1003a[[[:xdigit:]]]{4}0000655800000000fffffffffffffa163e949d8008060001080006040001[[[:xdigit:]]]{12}0a0000f40000000000000a0000fe$"]) ++AT_CLEANUP ++ AT_SETUP([datapath - ping over gre tunnel by simulated packets]) +OVS_CHECK_TUNNEL_TSO() OVS_CHECK_MIN_KERNEL(3, 10) OVS_TRAFFIC_VSWITCHD_START() -@@ -769,6 +869,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -769,6 +917,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over erspan v1 tunnel by simulated packets]) @@ -93082,7 +93144,7 @@ index f400cfabc9..bb7b77ebb7 100644 OVS_CHECK_MIN_KERNEL(3, 10) OVS_TRAFFIC_VSWITCHD_START() -@@ -817,6 +918,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -817,6 +966,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over erspan v2 tunnel by simulated packets]) @@ -93090,7 +93152,7 @@ index f400cfabc9..bb7b77ebb7 100644 OVS_CHECK_MIN_KERNEL(3, 10) OVS_TRAFFIC_VSWITCHD_START() -@@ -870,6 +972,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -870,6 +1020,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over ip6erspan v1 tunnel by simulated packets]) @@ -93098,7 +93160,7 @@ index f400cfabc9..bb7b77ebb7 100644 OVS_CHECK_MIN_KERNEL(3, 10) OVS_TRAFFIC_VSWITCHD_START() -@@ -925,6 +1028,7 @@ OVS_TRAFFIC_VSWITCHD_STOP +@@ -925,6 +1076,7 @@ OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP AT_SETUP([datapath - ping over ip6erspan v2 tunnel by simulated packets]) @@ -93106,7 +93168,7 @@ index f400cfabc9..bb7b77ebb7 100644 OVS_CHECK_MIN_KERNEL(3, 10) OVS_TRAFFIC_VSWITCHD_START() -@@ -1454,6 +1558,42 @@ AT_CHECK([ovs-ofctl dump-flows br0 | grep "in_port=4" | ofctl_strip], [0], [dnl +@@ -1454,6 +1606,42 @@ AT_CHECK([ovs-ofctl dump-flows br0 | grep "in_port=4" | ofctl_strip], [0], [dnl OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -93149,7 +93211,7 @@ index f400cfabc9..bb7b77ebb7 100644 AT_BANNER([conntrack]) AT_SETUP([conntrack - controller]) -@@ -1981,6 +2121,111 @@ tcp,orig=(src=10.1.1.3,dst=10.1.1.4,sport=,dport=),reply=(src= +@@ -1981,6 +2169,111 @@ tcp,orig=(src=10.1.1.3,dst=10.1.1.4,sport=,dport=),reply=(src= OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -93261,7 +93323,7 @@ index f400cfabc9..bb7b77ebb7 100644 AT_SETUP([conntrack - multiple bridges]) CHECK_CONNTRACK() OVS_TRAFFIC_VSWITCHD_START( -@@ -2384,6 +2629,15 @@ NXST_FLOW reply: +@@ -2384,6 +2677,15 @@ NXST_FLOW reply: table=1, priority=100,ct_state=+est+trk,in_port=1 actions=output:2 ]) @@ -93277,7 +93339,7 @@ index f400cfabc9..bb7b77ebb7 100644 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -2749,6 +3003,11 @@ AT_CHECK([ovs-ofctl bundle br0 bundle.txt]) +@@ -2749,6 +3051,11 @@ AT_CHECK([ovs-ofctl bundle br0 bundle.txt]) AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(10.1.1.2)], [0], [dnl ]) @@ -93289,7 +93351,7 @@ index f400cfabc9..bb7b77ebb7 100644 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -3305,6 +3564,46 @@ NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING +@@ -3305,6 +3612,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 @@ -93336,7 +93398,7 @@ index f400cfabc9..bb7b77ebb7 100644 AT_SETUP([conntrack - resubmit to ct multiple times]) CHECK_CONNTRACK() -@@ -3464,15 +3763,15 @@ action=normal +@@ -3464,15 +3811,15 @@ action=normal AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) @@ -93355,7 +93417,7 @@ index f400cfabc9..bb7b77ebb7 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 +6116,7 @@ on_exit 'ovs-appctl revalidator/purge' +@@ -5817,7 +6164,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 @@ -93364,7 +93426,7 @@ index f400cfabc9..bb7b77ebb7 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 +6405,132 @@ AT_CHECK([ovs-ofctl dump-flows br0 | grep table=2, | OFPROTO_CLEAR_DURATION_IDLE +@@ -6106,6 +6453,132 @@ AT_CHECK([ovs-ofctl dump-flows br0 | grep table=2, | OFPROTO_CLEAR_DURATION_IDLE OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP diff --git a/SPECS/openvswitch2.16.spec b/SPECS/openvswitch2.16.spec index 8b6c78a..47d07fc 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: 109%{?dist} +Release: 110%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -699,6 +699,12 @@ exit 0 %endif %changelog +* Fri Jan 06 2023 Open vSwitch CI - 2.16.0-110 +- Merging upstream branch-2.16 [RH git: 01d0b688c8] + Commit list: + 8d9177f6b1 dpif: Fix tunnel key set for IPv6 tunnels with SLOW_ACTION. + + * Tue Jan 03 2023 Open vSwitch CI - 2.16.0-109 - Merging upstream branch-2.16 [RH git: 53d801289d] Commit list: