diff --git a/SOURCES/openvswitch-2.13.0.patch b/SOURCES/openvswitch-2.13.0.patch index f021065..9098a0d 100644 --- a/SOURCES/openvswitch-2.13.0.patch +++ b/SOURCES/openvswitch-2.13.0.patch @@ -115829,7 +115829,7 @@ index b77317bca1..9941c9ba8a 100644 /* Disables or enables conntrack fragment reassembly. The default diff --git a/lib/dpif.c b/lib/dpif.c -index 9d9c716c13..8ff7ea2adf 100644 +index 9d9c716c13..0e41869caa 100644 --- a/lib/dpif.c +++ b/lib/dpif.c @@ -24,22 +24,18 @@ @@ -115873,6 +115873,15 @@ index 9d9c716c13..8ff7ea2adf 100644 VLOG_DEFINE_THIS_MODULE(dpif); +@@ -1205,7 +1206,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)); @@ -1235,6 +1236,7 @@ dpif_execute_helper_cb(void *aux_, struct dp_packet_batch *packets_, execute.needs_help = false; execute.probe = false; @@ -128866,7 +128875,7 @@ index 0000000000..1714273e35 +OVS_TRAFFIC_VSWITCHD_STOP +AT_CLEANUP diff --git a/tests/system-traffic.at b/tests/system-traffic.at -index 4a39c929c2..a9f304fb15 100644 +index 4a39c929c2..82643871cb 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 @@ -129047,7 +129056,61 @@ index 4a39c929c2..a9f304fb15 100644 OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -1398,6 +1548,42 @@ AT_CHECK([ovs-ofctl dump-flows br0 | grep "in_port=4" | ofctl_strip], [0], [dnl +@@ -658,6 +808,53 @@ 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_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_MIN_KERNEL(3, 10) + +@@ -1398,6 +1595,42 @@ AT_CHECK([ovs-ofctl dump-flows br0 | grep "in_port=4" | ofctl_strip], [0], [dnl OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -129090,7 +129153,7 @@ index 4a39c929c2..a9f304fb15 100644 AT_BANNER([conntrack]) AT_SETUP([conntrack - controller]) -@@ -1925,6 +2111,111 @@ tcp,orig=(src=10.1.1.3,dst=10.1.1.4,sport=,dport=),reply=(src= +@@ -1925,6 +2158,111 @@ tcp,orig=(src=10.1.1.3,dst=10.1.1.4,sport=,dport=),reply=(src= OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -129202,7 +129265,7 @@ index 4a39c929c2..a9f304fb15 100644 AT_SETUP([conntrack - multiple bridges]) CHECK_CONNTRACK() OVS_TRAFFIC_VSWITCHD_START( -@@ -2328,6 +2619,44 @@ NXST_FLOW reply: +@@ -2328,6 +2666,44 @@ NXST_FLOW reply: table=1, priority=100,ct_state=+est+trk,in_port=1 actions=output:2 ]) @@ -129247,7 +129310,7 @@ index 4a39c929c2..a9f304fb15 100644 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -2664,6 +2993,11 @@ AT_CHECK([ovs-ofctl bundle br0 bundle.txt]) +@@ -2664,6 +3040,11 @@ AT_CHECK([ovs-ofctl bundle br0 bundle.txt]) AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(10.1.1.2)], [0], [dnl ]) @@ -129259,7 +129322,7 @@ index 4a39c929c2..a9f304fb15 100644 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -3220,6 +3554,46 @@ NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING +@@ -3220,6 +3601,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 @@ -129306,7 +129369,7 @@ index 4a39c929c2..a9f304fb15 100644 AT_SETUP([conntrack - resubmit to ct multiple times]) CHECK_CONNTRACK() -@@ -3356,15 +3730,15 @@ action=normal +@@ -3356,15 +3777,15 @@ action=normal AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) @@ -129325,7 +129388,7 @@ index 4a39c929c2..a9f304fb15 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 +4753,52 @@ tcp,orig=(src=10.1.1.1,dst=10.1.1.2,sport=,dport=),reply=(src= +@@ -4379,6 +4800,52 @@ tcp,orig=(src=10.1.1.1,dst=10.1.1.2,sport=,dport=),reply=(src= OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -129378,7 +129441,7 @@ index 4a39c929c2..a9f304fb15 100644 AT_SETUP([conntrack - simple DNAT]) CHECK_CONNTRACK() CHECK_CONNTRACK_NAT() -@@ -4434,6 +4854,41 @@ tcp,orig=(src=10.1.1.1,dst=10.1.1.2,sport=,dport=),reply=(src= +@@ -4434,6 +4901,41 @@ tcp,orig=(src=10.1.1.1,dst=10.1.1.2,sport=,dport=),reply=(src= OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -129420,7 +129483,7 @@ index 4a39c929c2..a9f304fb15 100644 AT_SETUP([conntrack - more complex DNAT]) CHECK_CONNTRACK() CHECK_CONNTRACK_NAT() -@@ -5628,7 +6083,7 @@ on_exit 'ovs-appctl revalidator/purge' +@@ -5628,7 +6130,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 @@ -129429,7 +129492,7 @@ index 4a39c929c2..a9f304fb15 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 +6328,96 @@ ovs-appctl dpif/dump-flows br0 +@@ -5873,6 +6375,96 @@ ovs-appctl dpif/dump-flows br0 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP diff --git a/SPECS/openvswitch2.13.spec b/SPECS/openvswitch2.13.spec index 61af5e9..8422ba4 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: 210%{?commit0:.%{date}git%{shortcommit0}}%{?commit1:dpdk%{shortcommit1}}%{?dist} +Release: 211%{?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 Jan 06 2023 Open vSwitch CI - 2.13.0-211 +- Merging upstream branch-2.13 [RH git: 6116eb6235] + Commit list: + 301b0a075f dpif: Fix tunnel key set for IPv6 tunnels with SLOW_ACTION. + + * Wed Jan 04 2023 Open vSwitch CI - 2.13.0-210 - Merging upstream branch-2.13 [RH git: 3202b9a8cf] Commit list: