diff --git a/SOURCES/openvswitch-3.1.0.patch b/SOURCES/openvswitch-3.1.0.patch index 5f26019..dcd0784 100644 --- a/SOURCES/openvswitch-3.1.0.patch +++ b/SOURCES/openvswitch-3.1.0.patch @@ -216,7 +216,7 @@ index 952d964315..fa3cc86b4e 100644 memory: 4G diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml -index 82675b9734..90d8aeb8a2 100644 +index 82675b9734..41b8133d38 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -2,13 +2,88 @@ name: Build and Test @@ -235,7 +235,7 @@ index 82675b9734..90d8aeb8a2 100644 + dependencies: gcc libnuma-dev ninja-build + CC: gcc + DPDK_GIT: https://dpdk.org/git/dpdk-stable -+ DPDK_VER: 22.11.6 ++ DPDK_VER: 22.11.7 + name: dpdk gcc + outputs: + dpdk_key: ${{ steps.gen_dpdk_key.outputs.key }} @@ -468,7 +468,7 @@ index 2df76c56f1..b29b1f4051 100644 DK Moon Ding Zhi zhi.ding@6wind.com diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst -index 9e1b422620..16735393c9 100644 +index 9e1b422620..abdc0e7e62 100644 --- a/Documentation/faq/releases.rst +++ b/Documentation/faq/releases.rst @@ -214,9 +214,9 @@ Q: What DPDK version does each Open vSwitch release work with? @@ -478,14 +478,14 @@ index 9e1b422620..16735393c9 100644 - 2.17.x 21.11.2 - 3.0.x 21.11.2 - 3.1.x 22.11.1 -+ 2.17.x 21.11.8 -+ 3.0.x 21.11.8 -+ 3.1.x 22.11.6 ++ 2.17.x 21.11.9 ++ 3.0.x 21.11.9 ++ 3.1.x 22.11.7 ============ ======== Q: Are all the DPDK releases that OVS versions work with maintained? diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst -index 63a0ebb23b..15b3079be5 100644 +index 63a0ebb23b..a9b07591e6 100644 --- a/Documentation/intro/install/dpdk.rst +++ b/Documentation/intro/install/dpdk.rst @@ -42,7 +42,7 @@ Build requirements @@ -493,7 +493,7 @@ index 63a0ebb23b..15b3079be5 100644 vSwitch with DPDK will require the following: -- DPDK 22.11.1 -+- DPDK 22.11.6 ++- DPDK 22.11.7 - A `DPDK supported NIC`_ @@ -504,9 +504,9 @@ index 63a0ebb23b..15b3079be5 100644 - $ wget https://fast.dpdk.org/rel/dpdk-22.11.1.tar.xz - $ tar xf dpdk-22.11.1.tar.xz - $ export DPDK_DIR=/usr/src/dpdk-stable-22.11.1 -+ $ wget https://fast.dpdk.org/rel/dpdk-22.11.6.tar.xz -+ $ tar xf dpdk-22.11.6.tar.xz -+ $ export DPDK_DIR=/usr/src/dpdk-stable-22.11.6 ++ $ wget https://fast.dpdk.org/rel/dpdk-22.11.7.tar.xz ++ $ tar xf dpdk-22.11.7.tar.xz ++ $ export DPDK_DIR=/usr/src/dpdk-stable-22.11.7 $ cd $DPDK_DIR #. Configure and install DPDK using Meson @@ -649,12 +649,14 @@ index e605187b81..859c746b01 100644 @if cmp -s $(@F).tmp $@; then \ touch $@; \ diff --git a/NEWS b/NEWS -index 37a01dea50..7dbed73a6d 100644 +index 37a01dea50..3d1cd838cc 100644 --- a/NEWS +++ b/NEWS -@@ -1,3 +1,40 @@ +@@ -1,3 +1,42 @@ +v3.1.7 - xx xxx xxxx +-------------------- ++ - DPDK: ++ * OVS validated with DPDK 22.11.7. + +v3.1.6 - 15 Nov 2024 +-------------------- @@ -4417,7 +4419,7 @@ index bbb31ef275..7054f8e745 100644 struct hook *h = &hooks[i]; if (h->cancel_cb) { diff --git a/lib/flow.c b/lib/flow.c -index c3a3aa3ce4..9d95d7a6e2 100644 +index c3a3aa3ce4..cc67d4337c 100644 --- a/lib/flow.c +++ b/lib/flow.c @@ -408,7 +408,8 @@ parse_ethertype(const void **datap, size_t *sizep) @@ -4439,6 +4441,15 @@ index c3a3aa3ce4..9d95d7a6e2 100644 struct eth_addr arp_buf[2]; /* This will populate whether we received Option 1 * or Option 2. */ +@@ -1139,7 +1140,7 @@ parse_dl_type(const void **datap, size_t *sizep, ovs_be16 *first_vlan_tci_p) + * If 'packet' is not an Ethernet packet embedding TCP, returns 0. + * 'dl_type_p' will be set only if the 'packet' is an Ethernet packet. + * 'nw_frag_p' will be set only if the 'packet' is an IP packet. +- * 'first_vlan_tci' will be set only if the 'packet' contains vlan header. ++ * 'first_vlan_tci_p' will be set only if the 'packet' contains vlan header. + * + * The caller must ensure that 'packet' is at least ETH_HEADER_LEN bytes + * long.'*/ @@ -3355,6 +3356,24 @@ flow_compose(struct dp_packet *p, const struct flow *flow, arp->ar_sha = flow->arp_sha; arp->ar_tha = flow->arp_tha; @@ -4489,10 +4500,38 @@ index c722f3c3cc..3d574de9b4 100644 if (n) { diff --git a/lib/ipf.c b/lib/ipf.c -index d452663743..1f22df98e0 100644 +index d452663743..e51c827442 100644 --- a/lib/ipf.c +++ b/lib/ipf.c -@@ -504,13 +504,15 @@ ipf_reassemble_v6_frags(struct ipf_list *ipf_list) +@@ -410,11 +410,12 @@ ipf_reassemble_v4_frags(struct ipf_list *ipf_list) + dp_packet_set_size(pkt, dp_packet_size(pkt) - dp_packet_l2_pad_size(pkt)); + struct ip_header *l3 = dp_packet_l3(pkt); + int len = ntohs(l3->ip_tot_len); ++ int orig_len = dp_packet_size(pkt); + + int rest_len = frag_list[ipf_list->last_inuse_idx].end_data_byte - + frag_list[1].start_data_byte + 1; + +- if (len + rest_len > IPV4_PACKET_MAX_SIZE) { ++ if (orig_len + rest_len > IPV4_PACKET_MAX_SIZE) { + ipf_print_reass_packet( + "Unsupported big reassembled v4 packet; v4 hdr:", l3); + dp_packet_delete(pkt); +@@ -457,11 +458,12 @@ ipf_reassemble_v6_frags(struct ipf_list *ipf_list) + dp_packet_set_size(pkt, dp_packet_size(pkt) - dp_packet_l2_pad_size(pkt)); + struct ovs_16aligned_ip6_hdr *l3 = dp_packet_l3(pkt); + int pl = ntohs(l3->ip6_plen) - sizeof(struct ovs_16aligned_ip6_frag); ++ int orig_len = dp_packet_size(pkt); + + int rest_len = frag_list[ipf_list->last_inuse_idx].end_data_byte - + frag_list[1].start_data_byte + 1; + +- if (pl + rest_len > IPV6_PACKET_MAX_DATA) { ++ if (orig_len + rest_len > IPV6_PACKET_MAX_DATA) { + ipf_print_reass_packet( + "Unsupported big reassembled v6 packet; v6 hdr:", l3); + dp_packet_delete(pkt); +@@ -504,13 +506,15 @@ ipf_reassemble_v6_frags(struct ipf_list *ipf_list) } /* Called when a frag list state transitions to another state. This is @@ -4510,7 +4549,7 @@ index d452663743..1f22df98e0 100644 enum ipf_list_state next_state; switch (curr_state) { case IPF_LIST_STATE_UNUSED: -@@ -560,12 +562,15 @@ ipf_list_state_transition(struct ipf *ipf, struct ipf_list *ipf_list, +@@ -560,12 +564,15 @@ ipf_list_state_transition(struct ipf *ipf, struct ipf_list *ipf_list, ipf_reassembled_list_add(&ipf->reassembled_pkt_list, rp); ipf_expiry_list_remove(ipf_list); next_state = IPF_LIST_STATE_COMPLETED; @@ -4526,7 +4565,7 @@ index d452663743..1f22df98e0 100644 } /* Some sanity checks are redundant, but prudent, in case code paths for -@@ -797,7 +802,8 @@ ipf_is_frag_duped(const struct ipf_frag *frag_list, int last_inuse_idx, +@@ -797,7 +804,8 @@ ipf_is_frag_duped(const struct ipf_frag *frag_list, int last_inuse_idx, static bool ipf_process_frag(struct ipf *ipf, struct ipf_list *ipf_list, struct dp_packet *pkt, uint16_t start_data_byte, @@ -4536,7 +4575,7 @@ index d452663743..1f22df98e0 100644 OVS_REQUIRES(ipf->ipf_lock) { bool duped_frag = ipf_is_frag_duped(ipf_list->frag_list, -@@ -818,7 +824,7 @@ ipf_process_frag(struct ipf *ipf, struct ipf_list *ipf_list, +@@ -818,7 +826,7 @@ ipf_process_frag(struct ipf *ipf, struct ipf_list *ipf_list, ipf_list->last_inuse_idx++; atomic_count_inc(&ipf->nfrag); ipf_count(ipf, v6, IPF_NFRAGS_ACCEPTED); @@ -4545,7 +4584,7 @@ index d452663743..1f22df98e0 100644 } else { OVS_NOT_REACHED(); } -@@ -851,7 +857,8 @@ ipf_list_init(struct ipf_list *ipf_list, struct ipf_list_key *key, +@@ -851,7 +859,8 @@ ipf_list_init(struct ipf_list *ipf_list, struct ipf_list_key *key, * to a list of fragemnts. */ static bool ipf_handle_frag(struct ipf *ipf, struct dp_packet *pkt, ovs_be16 dl_type, @@ -4555,7 +4594,7 @@ index d452663743..1f22df98e0 100644 OVS_REQUIRES(ipf->ipf_lock) { struct ipf_list_key key; -@@ -920,7 +927,7 @@ ipf_handle_frag(struct ipf *ipf, struct dp_packet *pkt, ovs_be16 dl_type, +@@ -920,7 +929,7 @@ ipf_handle_frag(struct ipf *ipf, struct dp_packet *pkt, ovs_be16 dl_type, } return ipf_process_frag(ipf, ipf_list, pkt, start_data_byte, @@ -4564,7 +4603,7 @@ index d452663743..1f22df98e0 100644 } /* Filters out fragments from a batch of fragments and adjust the batch. */ -@@ -939,11 +946,17 @@ ipf_extract_frags_from_batch(struct ipf *ipf, struct dp_packet_batch *pb, +@@ -939,11 +948,17 @@ ipf_extract_frags_from_batch(struct ipf *ipf, struct dp_packet_batch *pb, || (dl_type == htons(ETH_TYPE_IPV6) && ipf_is_valid_v6_frag(ipf, pkt)))) { @@ -4583,7 +4622,7 @@ index d452663743..1f22df98e0 100644 dp_packet_delete(pkt); } ovs_mutex_unlock(&ipf->ipf_lock); -@@ -1061,6 +1074,9 @@ ipf_send_completed_frags(struct ipf *ipf, struct dp_packet_batch *pb, +@@ -1061,6 +1076,9 @@ ipf_send_completed_frags(struct ipf *ipf, struct dp_packet_batch *pb, struct ipf_list *ipf_list; LIST_FOR_EACH_SAFE (ipf_list, list_node, &ipf->frag_complete_list) { @@ -4593,7 +4632,7 @@ index d452663743..1f22df98e0 100644 if (ipf_send_frags_in_list(ipf, ipf_list, pb, IPF_FRAG_COMPLETED_LIST, v6, now)) { ipf_completed_list_clean(&ipf->frag_lists, ipf_list); -@@ -1094,6 +1110,9 @@ ipf_send_expired_frags(struct ipf *ipf, struct dp_packet_batch *pb, +@@ -1094,6 +1112,9 @@ ipf_send_expired_frags(struct ipf *ipf, struct dp_packet_batch *pb, size_t lists_removed = 0; LIST_FOR_EACH_SAFE (ipf_list, list_node, &ipf->frag_exp_list) { @@ -4603,7 +4642,7 @@ index d452663743..1f22df98e0 100644 if (now <= ipf_list->expiration || lists_removed >= IPF_FRAG_LIST_MAX_EXPIRED) { break; -@@ -1114,7 +1133,8 @@ ipf_send_expired_frags(struct ipf *ipf, struct dp_packet_batch *pb, +@@ -1114,7 +1135,8 @@ ipf_send_expired_frags(struct ipf *ipf, struct dp_packet_batch *pb, /* Adds a reassmebled packet to a packet batch to be processed by the caller. */ static void @@ -4613,7 +4652,7 @@ index d452663743..1f22df98e0 100644 { if (ovs_list_is_empty(&ipf->reassembled_pkt_list)) { return; -@@ -1125,6 +1145,7 @@ ipf_execute_reass_pkts(struct ipf *ipf, struct dp_packet_batch *pb) +@@ -1125,6 +1147,7 @@ ipf_execute_reass_pkts(struct ipf *ipf, struct dp_packet_batch *pb) LIST_FOR_EACH_SAFE (rp, rp_list_node, &ipf->reassembled_pkt_list) { if (!rp->list->reass_execute_ctx && @@ -4621,7 +4660,7 @@ index d452663743..1f22df98e0 100644 ipf_dp_packet_batch_add(pb, rp->pkt, false)) { rp->list->reass_execute_ctx = rp->pkt; } -@@ -1233,7 +1254,7 @@ ipf_preprocess_conntrack(struct ipf *ipf, struct dp_packet_batch *pb, +@@ -1233,7 +1256,7 @@ ipf_preprocess_conntrack(struct ipf *ipf, struct dp_packet_batch *pb, } if (ipf_get_enabled(ipf) || atomic_count_get(&ipf->nfrag)) { @@ -16248,7 +16287,7 @@ index 07f2b8fd0e..4ab384d89c 100644 +OVS_TRAFFIC_VSWITCHD_STOP() +AT_CLEANUP diff --git a/tests/system-kmod-macros.at b/tests/system-kmod-macros.at -index 11920e60b6..cbec8de024 100644 +index 11920e60b6..9ed98951b8 100644 --- a/tests/system-kmod-macros.at +++ b/tests/system-kmod-macros.at @@ -112,6 +112,17 @@ m4_define([CHECK_CONNTRACK_ZEROIP_SNAT], @@ -16269,7 +16308,22 @@ index 11920e60b6..cbec8de024 100644 # CHECK_CONNTRACK_TIMEOUT() # # Perform requirements checks for running conntrack customized timeout tests. -@@ -224,3 +235,13 @@ m4_define([VSCTL_ADD_DATAPATH_TABLE], +@@ -182,6 +193,14 @@ m4_define([DPCTL_CHECK_FRAGMENTATION_FAIL], + + ]) + ++# OVS_CHECK_FRAG_LARGE ++# ++# This check isn't valid for kernel ++m4_define([OVS_CHECK_FRAG_LARGE], ++[ ++ ++]) ++ + # OVS_CHECK_MIN_KERNEL([minversion], [minsublevel]) + # + # Skip test if kernel version falls below minversion.minsublevel +@@ -224,3 +243,13 @@ m4_define([VSCTL_ADD_DATAPATH_TABLE], # or necessary for the userspace datapath as it is checking for a kernel # specific regression. m4_define([CHECK_L3L4_CONNTRACK_REASM]) @@ -16892,7 +16946,7 @@ index 871a3bda4f..3d84a53182 100644 ]) diff --git a/tests/system-traffic.at b/tests/system-traffic.at -index 221d96aefb..f9bb67a63b 100644 +index 221d96aefb..9f6fc5363d 100644 --- a/tests/system-traffic.at +++ b/tests/system-traffic.at @@ -10,13 +10,13 @@ ADD_NAMESPACES(at_ns0, at_ns1) @@ -17593,17 +17647,17 @@ index 221d96aefb..f9bb67a63b 100644 +dnl p1(at_ns1) interface. +NS_CHECK_EXEC([at_ns0], [$PYTHON3 $srcdir/sendpkt.py p0 \ + $(ovs-ofctl compose-packet --bare 'ICMP_PKT')], [0], [ignore]) -+ -+dnl Check the expected mpls encapsulated packet on the egress interface. -+m4_define([MPLS_HEADER], [m4_join([,], -+ [eth_src=00:00:00:00:00:01,eth_dst=00:00:00:00:00:02,eth_type=0x8847], -+ [mpls_label=2,mpls_ttl=64,mpls_bos=1])]) -dnl Check the expected mpls encapsulated packet on the egress interface -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0000: *0000 *0000 *0002 *0000 *0000 *0001 *8847 *0000" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0010: *2140 *36b1 *ee7c *0102 *36b1 *ee7c *0103 *0800" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0020: *4500 *0054 *0344 *4000 *4001 *2161 *0a01 *0101" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0030: *0a01 *0102 *0800 *efac *7ce4 *0003 *5b2c *1f61" 2>&1 1>/dev/null]) ++dnl Check the expected mpls encapsulated packet on the egress interface. ++m4_define([MPLS_HEADER], [m4_join([,], ++ [eth_src=00:00:00:00:00:01,eth_dst=00:00:00:00:00:02,eth_type=0x8847], ++ [mpls_label=2,mpls_ttl=64,mpls_bos=1])]) ++ +OVS_WAIT_UNTIL([ovs-pcap p1.pcap | grep -q "m4_join([], [^], + $(ovs-ofctl compose-packet --bare 'MPLS_HEADER'), + $(ovs-ofctl compose-packet --bare 'ICMP_PKT'), [\$])"]) @@ -17634,17 +17688,17 @@ index 221d96aefb..f9bb67a63b 100644 +dnl p1(at_ns1) interface. +NS_CHECK_EXEC([at_ns0], [$PYTHON3 $srcdir/sendpkt.py p0 \ + $(ovs-ofctl compose-packet --bare 'ICMP_PKT')], [0], [ignore]) -+ -+dnl Check the expected mpls encapsulated packet on the egress interface. -+m4_define([MPLS_HEADER], [m4_join([,], -+ [eth_src=00:00:00:00:00:01,eth_dst=00:00:00:00:00:02,eth_type=0x8847], -+ [mpls_label=2,mpls_ttl=64,mpls_bos=1])]) -dnl Check the expected mpls encapsulated packet on the egress interface -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0000: *0000 *0000 *0002 *0000 *0000 *0001 *8847 *0000" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0010: *2140 *36b1 *ee7c *0102 *36b1 *ee7c *0103 *0800" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0020: *4500 *0054 *0344 *4000 *4001 *2161 *0a01 *0101" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0030: *0a01 *0102 *0800 *efac *7ce4 *0003 *5b2c *1f61" 2>&1 1>/dev/null]) ++dnl Check the expected mpls encapsulated packet on the egress interface. ++m4_define([MPLS_HEADER], [m4_join([,], ++ [eth_src=00:00:00:00:00:01,eth_dst=00:00:00:00:00:02,eth_type=0x8847], ++ [mpls_label=2,mpls_ttl=64,mpls_bos=1])]) ++ +OVS_WAIT_UNTIL([ovs-pcap p1.pcap | grep -q "m4_join([], [^], + $(ovs-ofctl compose-packet --bare 'MPLS_HEADER'), + $(ovs-ofctl compose-packet --bare 'ICMP_PKT'), [\$])"]) @@ -17675,17 +17729,17 @@ index 221d96aefb..f9bb67a63b 100644 +dnl p1(at_ns1) interface. +NS_CHECK_EXEC([at_ns0], [$PYTHON3 $srcdir/sendpkt.py p0 \ + $(ovs-ofctl compose-packet --bare 'ICMP_PKT')], [0], [ignore]) -+ -+dnl Check the expected mpls encapsulated packet on the egress interface. -+m4_define([MPLS_HEADER], [m4_join([,], -+ [eth_src=00:00:00:00:00:01,eth_dst=00:00:00:00:00:02,eth_type=0x8848], -+ [mpls_label=2,mpls_ttl=64,mpls_bos=1])]) -dnl Check the expected mpls encapsulated packet on the egress interface -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0000: *0000 *0000 *0002 *0000 *0000 *0001 *8848 *0000" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0010: *2140 *36b1 *ee7c *0102 *36b1 *ee7c *0103 *0800" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0020: *4500 *0054 *0344 *4000 *4001 *2161 *0a01 *0101" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0030: *0a01 *0102 *0800 *efac *7ce4 *0003 *5b2c *1f61" 2>&1 1>/dev/null]) ++dnl Check the expected mpls encapsulated packet on the egress interface. ++m4_define([MPLS_HEADER], [m4_join([,], ++ [eth_src=00:00:00:00:00:01,eth_dst=00:00:00:00:00:02,eth_type=0x8848], ++ [mpls_label=2,mpls_ttl=64,mpls_bos=1])]) ++ +OVS_WAIT_UNTIL([ovs-pcap p1.pcap | grep -q "m4_join([], [^], + $(ovs-ofctl compose-packet --bare 'MPLS_HEADER'), + $(ovs-ofctl compose-packet --bare 'ICMP_PKT'), [\$])"]) @@ -17716,17 +17770,17 @@ index 221d96aefb..f9bb67a63b 100644 +dnl p1(at_ns1) interface. +NS_CHECK_EXEC([at_ns0], [$PYTHON3 $srcdir/sendpkt.py p0 \ + $(ovs-ofctl compose-packet --bare 'ICMP_PKT')], [0], [ignore]) -+ -+dnl Check the expected mpls encapsulated packet on the egress interface. -+m4_define([MPLS_HEADER], [m4_join([,], -+ [eth_src=00:00:00:00:00:01,eth_dst=00:00:00:00:00:02,eth_type=0x8848], -+ [mpls_label=2,mpls_ttl=64,mpls_bos=1])]) -dnl Check the expected mpls encapsulated packet on the egress interface -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0000: *0000 *0000 *0002 *0000 *0000 *0001 *8848 *0000" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0010: *2140 *36b1 *ee7c *0102 *36b1 *ee7c *0103 *0800" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0020: *4500 *0054 *0344 *4000 *4001 *2161 *0a01 *0101" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0030: *0a01 *0102 *0800 *efac *7ce4 *0003 *5b2c *1f61" 2>&1 1>/dev/null]) ++dnl Check the expected mpls encapsulated packet on the egress interface. ++m4_define([MPLS_HEADER], [m4_join([,], ++ [eth_src=00:00:00:00:00:01,eth_dst=00:00:00:00:00:02,eth_type=0x8848], ++ [mpls_label=2,mpls_ttl=64,mpls_bos=1])]) ++ +OVS_WAIT_UNTIL([ovs-pcap p1.pcap | grep -q "m4_join([], [^], + $(ovs-ofctl compose-packet --bare 'MPLS_HEADER'), + $(ovs-ofctl compose-packet --bare 'ICMP_PKT'), [\$])"]) @@ -17751,12 +17805,6 @@ index 221d96aefb..f9bb67a63b 100644 +m4_define([MPLS_HEADER], [m4_join([,], + [eth_src=00:00:00:00:00:01,eth_dst=00:00:00:00:00:02,eth_type=0x8847], + [mpls_label=2,mpls_ttl=64,mpls_bos=1])]) -+ -+m4_define([ICMP_PKT], [m4_join([,], -+ [eth_src=36:b1:ee:7c:01:03,eth_dst=36:b1:ee:7c:01:02,eth_type=0x0800], -+ [nw_src=10.1.1.1,nw_dst=10.1.1.2], -+ [nw_proto=1,nw_ttl=64,nw_frag=no], -+ [icmp_type=8,icmp_code=0])]) -dnl Check the expected decapsulated on the egress interface -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0000: *36b1 *ee7c *0102 *36b1 *ee7c *0103 *0800 *4500" 2>&1 1>/dev/null]) @@ -17766,13 +17814,19 @@ index 221d96aefb..f9bb67a63b 100644 -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0040: *1617 *1819 *1a1b *1c1d *1e1f *2021 *2223 *2425" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0050: *2627 *2829 *2a2b *2c2d *2e2f *3031 *3233 *3435" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0060: *3637" 2>&1 1>/dev/null]) ++m4_define([ICMP_PKT], [m4_join([,], ++ [eth_src=36:b1:ee:7c:01:03,eth_dst=36:b1:ee:7c:01:02,eth_type=0x0800], ++ [nw_src=10.1.1.1,nw_dst=10.1.1.2], ++ [nw_proto=1,nw_ttl=64,nw_frag=no], ++ [icmp_type=8,icmp_code=0])]) + +dnl The packet is an eth/mpls/eth/ip/icmp sent from p0(at_ns0) interface +dnl directed to p1(at_ns1) interface. +NS_CHECK_EXEC([at_ns0], [$PYTHON3 $srcdir/sendpkt.py p0 \ + "$(ovs-ofctl compose-packet --bare 'MPLS_HEADER')" \ + "$(ovs-ofctl compose-packet --bare 'ICMP_PKT')"], + [0], [ignore]) - ++ +dnl Check the expected decapsulated on the egress interface. +OVS_WAIT_UNTIL([ovs-pcap p1.pcap | grep -q \ + "^$(ovs-ofctl compose-packet --bare 'ICMP_PKT')\$"]) @@ -17797,12 +17851,6 @@ index 221d96aefb..f9bb67a63b 100644 +m4_define([MPLS_HEADER], [m4_join([,], + [eth_src=00:00:00:00:00:01,eth_dst=00:00:00:00:00:02,eth_type=0x8847], + [mpls_label=2,mpls_ttl=64,mpls_bos=1])]) -+ -+m4_define([ICMP_PKT], [m4_join([,], -+ [eth_src=36:b1:ee:7c:01:03,eth_dst=36:b1:ee:7c:01:02,eth_type=0x0800], -+ [nw_src=10.1.1.1,nw_dst=10.1.1.2], -+ [nw_proto=1,nw_ttl=64,nw_frag=no], -+ [icmp_type=8,icmp_code=0])]) -dnl Check the expected decapsulated on the egress interface -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0000: *36b1 *ee7c *0102 *36b1 *ee7c *0103 *0800 *4500" 2>&1 1>/dev/null]) @@ -17812,13 +17860,19 @@ index 221d96aefb..f9bb67a63b 100644 -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0040: *1617 *1819 *1a1b *1c1d *1e1f *2021 *2223 *2425" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0050: *2627 *2829 *2a2b *2c2d *2e2f *3031 *3233 *3435" 2>&1 1>/dev/null]) -OVS_WAIT_UNTIL([cat p1.pcap | grep -E "0x0060: *3637" 2>&1 1>/dev/null]) ++m4_define([ICMP_PKT], [m4_join([,], ++ [eth_src=36:b1:ee:7c:01:03,eth_dst=36:b1:ee:7c:01:02,eth_type=0x0800], ++ [nw_src=10.1.1.1,nw_dst=10.1.1.2], ++ [nw_proto=1,nw_ttl=64,nw_frag=no], ++ [icmp_type=8,icmp_code=0])]) + +dnl The packet is an eth/mpls/eth/ip/icmp sent from p0(at_ns0) interface +dnl directed to p1(at_ns1) interface. +NS_CHECK_EXEC([at_ns0], [$PYTHON3 $srcdir/sendpkt.py p0 \ + "$(ovs-ofctl compose-packet --bare 'MPLS_HEADER')" \ + "$(ovs-ofctl compose-packet --bare 'ICMP_PKT')"], + [0], [ignore]) - ++ +dnl Check the expected decapsulated on the egress interface. +OVS_WAIT_UNTIL([ovs-pcap p1.pcap | grep -q \ + "^$(ovs-ofctl compose-packet --bare 'ICMP_PKT')\$"]) @@ -17981,7 +18035,7 @@ index 221d96aefb..f9bb67a63b 100644 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -3579,12 +3842,12 @@ dnl Modify userspace conntrack fragmentation handling. +@@ -3579,19 +3842,23 @@ dnl Modify userspace conntrack fragmentation handling. DPCTL_MODIFY_FRAGMENTATION() dnl Ipv4 fragmentation connectivity check. @@ -17996,7 +18050,19 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -@@ -3656,12 +3919,12 @@ dnl Modify userspace conntrack fragmentation handling. + dnl Check userspace conntrack fragmentation counters. + DPCTL_CHECK_FRAGMENTATION_PASS() + +-OVS_TRAFFIC_VSWITCHD_STOP ++dnl Ipv4 max packet size fragmentation dropped. ++NS_EXEC([at_ns0], [ping -s 65507 -q -c 1 -W 0.5 10.1.1.2]) ++OVS_CHECK_FRAG_LARGE() ++ ++OVS_TRAFFIC_VSWITCHD_STOP(["/Unsupported big reassembled v4 packet/d"]) + AT_CLEANUP + + AT_SETUP([conntrack - IPv4 fragmentation expiry]) +@@ -3656,12 +3923,12 @@ dnl Modify userspace conntrack fragmentation handling. DPCTL_MODIFY_FRAGMENTATION() dnl Ipv4 fragmentation connectivity check. @@ -18011,7 +18077,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -@@ -3701,22 +3964,22 @@ AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) +@@ -3701,22 +3968,22 @@ AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.2.2.2]) dnl Ipv4 fragmentation connectivity check. @@ -18038,7 +18104,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -@@ -3875,12 +4138,12 @@ dnl "connect: Cannot assign requested address" +@@ -3875,16 +4142,20 @@ dnl "connect: Cannot assign requested address" OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::2]) dnl Ipv6 fragmentation connectivity check. @@ -18053,7 +18119,16 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -@@ -3957,12 +4220,12 @@ dnl "connect: Cannot assign requested address" +-OVS_TRAFFIC_VSWITCHD_STOP ++dnl Ipv6 max packet size fragmentation dropped. ++NS_EXEC([at_ns0], [ping6 -s 65487 -q -c 1 -W 0.5 fc00::2]) ++OVS_CHECK_FRAG_LARGE() ++ ++OVS_TRAFFIC_VSWITCHD_STOP(["/Unsupported big reassembled v6 packet/d"]) + AT_CLEANUP + + AT_SETUP([conntrack - IPv6 fragmentation expiry]) +@@ -3957,12 +4228,12 @@ dnl "connect: Cannot assign requested address" OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::2]) dnl Ipv4 fragmentation connectivity check. @@ -18068,7 +18143,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -@@ -4000,22 +4263,22 @@ AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) +@@ -4000,22 +4271,22 @@ AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00:1::4]) dnl Ipv6 fragmentation connectivity check. @@ -18095,7 +18170,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -@@ -4226,18 +4489,18 @@ ADD_NATIVE_TUNNEL([vxlan], [at_vxlan1], [at_ns0], [172.31.1.100], [10.1.1.1/24], +@@ -4226,18 +4497,18 @@ ADD_NATIVE_TUNNEL([vxlan], [at_vxlan1], [at_ns0], [172.31.1.100], [10.1.1.1/24], [id 0 dstport 4789]) dnl First, check the underlay @@ -18118,7 +18193,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -@@ -4286,18 +4549,18 @@ dnl "connect: Cannot assign requested address" +@@ -4286,18 +4557,18 @@ dnl "connect: Cannot assign requested address" OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::2]) dnl First, check the underlay @@ -18141,7 +18216,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -@@ -4410,7 +4673,7 @@ dnl The default udp_single and icmp_first timeouts are 30 seconds in +@@ -4410,7 +4681,7 @@ dnl The default udp_single and icmp_first timeouts are 30 seconds in dnl kernel DP, and 60 seconds in userspace DP. dnl Send ICMP and UDP traffic @@ -18150,7 +18225,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 packet=50540000000a50540000000908004500001c000000000011a4cd0a0101010a0101020001000200080000 actions=resubmit(,0)"]) -@@ -4436,7 +4699,7 @@ done +@@ -4436,7 +4707,7 @@ done AT_CHECK([ovs-vsctl --may-exist add-zone-tp $DP_TYPE zone=5 udp_first=1 udp_single=1 icmp_first=1 icmp_reply=1]) dnl Send ICMP and UDP traffic @@ -18159,7 +18234,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 packet=50540000000a50540000000908004500001c000000000011a4cd0a0101010a0101020001000200080000 actions=resubmit(,0)"]) -@@ -4454,7 +4717,7 @@ AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(10.1.1.2)], [0], [dnl +@@ -4454,7 +4725,7 @@ AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(10.1.1.2)], [0], [dnl ]) dnl Re-send ICMP and UDP traffic to test conntrack cache @@ -18168,7 +18243,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 packet=50540000000a50540000000908004500001c000000000011a4cd0a0101010a0101020001000200080000 actions=resubmit(,0)"]) -@@ -4475,7 +4738,7 @@ dnl Set the timeout policy to default again. +@@ -4475,7 +4746,7 @@ dnl Set the timeout policy to default again. AT_CHECK([ovs-vsctl del-zone-tp $DP_TYPE zone=5]) dnl Send ICMP and UDP traffic @@ -18177,7 +18252,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) AT_CHECK([ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 packet=50540000000a50540000000908004500001c000000000011a4cd0a0101010a0101020001000200080000 actions=resubmit(,0)"]) -@@ -4668,7 +4931,7 @@ table=2,in_port=1,ip,ct_state=+trk+est,ct_zone=2,action=LOCAL +@@ -4668,7 +4939,7 @@ table=2,in_port=1,ip,ct_state=+trk+est,ct_zone=2,action=LOCAL AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) @@ -18186,7 +18261,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -@@ -4739,7 +5002,7 @@ table=4,priority=100,ip,action=output:NXM_NX_REG0[[]] +@@ -4739,7 +5010,7 @@ table=4,priority=100,ip,action=output:NXM_NX_REG0[[]] AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) @@ -18195,7 +18270,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -@@ -5434,11 +5697,11 @@ ADD_NAMESPACES(at_ns0, at_ns1) +@@ -5434,11 +5705,11 @@ ADD_NAMESPACES(at_ns0, at_ns1) ADD_VETH(p0, at_ns0, br0, "10.1.1.1/24") NS_CHECK_EXEC([at_ns0], [ip link set dev p0 address 80:88:88:88:88:88]) ADD_VETH(p1, at_ns1, br0, "10.1.1.2/24") @@ -18209,7 +18284,7 @@ index 221d96aefb..f9bb67a63b 100644 in_port=2,ct_state=-trk,tcp,tp_dst=34568,action=ct(table=0,zone=1,nat) in_port=2,ct_state=+trk,ct_zone=1,tcp,action=1 dnl -@@ -5462,17 +5725,29 @@ AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) +@@ -5462,17 +5733,29 @@ AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) dnl HTTP requests from p0->p1 should work fine. OVS_START_L7([at_ns1], [http]) @@ -18243,7 +18318,7 @@ index 221d96aefb..f9bb67a63b 100644 AT_CLEANUP AT_SETUP([conntrack - more complex SNAT]) -@@ -5763,7 +6038,7 @@ table=10 priority=0 action=drop +@@ -5763,7 +6046,7 @@ table=10 priority=0 action=drop AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) rm p0.pcap @@ -18252,7 +18327,7 @@ index 221d96aefb..f9bb67a63b 100644 sleep 1 dnl UDP packets from ns0->ns1 should solicit "destination unreachable" response. -@@ -5787,7 +6062,7 @@ AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(10.1.1.2) | sed -e 's/dst= +@@ -5787,7 +6070,7 @@ AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(10.1.1.2) | sed -e 's/dst= udp,orig=(src=10.1.1.1,dst=10.1.1.2,sport=,dport=),reply=(src=10.1.1.2,dst=10.1.1.2XX,sport=,dport=),mark=1 ]) @@ -18261,7 +18336,7 @@ index 221d96aefb..f9bb67a63b 100644 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -6477,7 +6752,7 @@ dnl waiting, we get occasional failures due to the following error: +@@ -6477,7 +6760,7 @@ 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::240]) @@ -18270,7 +18345,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -@@ -6531,13 +6806,13 @@ OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::2]) +@@ -6531,13 +6814,13 @@ OVS_WAIT_UNTIL([ip netns exec at_ns0 ping6 -c 1 fc00::2]) AT_CHECK([ovs-appctl dpctl/flush-conntrack]) rm p0.pcap @@ -18286,7 +18361,7 @@ index 221d96aefb..f9bb67a63b 100644 AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(fc00::2)], [0], [dnl udp,orig=(src=fc00::1,dst=fc00::2,sport=,dport=),reply=(src=fc00::2,dst=fc00::240,sport=,dport=) -@@ -7125,10 +7400,18 @@ table=2,priority=10 ct_state=+trk+est action=drop +@@ -7125,10 +7408,18 @@ table=2,priority=10 ct_state=+trk+est action=drop AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) @@ -18308,7 +18383,7 @@ index 221d96aefb..f9bb67a63b 100644 sleep 1 -@@ -7172,12 +7455,12 @@ ADD_NATIVE_TUNNEL([geneve], [ns_gnv0], [at_ns0], [172.31.1.100], [10.1.1.1/24], +@@ -7172,12 +7463,12 @@ ADD_NATIVE_TUNNEL([geneve], [ns_gnv0], [at_ns0], [172.31.1.100], [10.1.1.1/24], [vni 0]) dnl First, check the underlay @@ -18323,7 +18398,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -@@ -7220,7 +7503,7 @@ table=2,in_port=ovs-server,ip,ct_state=+trk+rpl,actions=output:ovs-client +@@ -7220,7 +7511,7 @@ table=2,in_port=ovs-server,ip,ct_state=+trk+rpl,actions=output:ovs-client AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) rm server.pcap @@ -18332,7 +18407,7 @@ index 221d96aefb..f9bb67a63b 100644 OVS_WAIT_UNTIL([grep "listening" tcpdump0_err]) dnl Send UDP client->server -@@ -7262,7 +7545,7 @@ dnl Check the ICMP error in reply direction +@@ -7262,7 +7553,7 @@ dnl Check the ICMP error in reply direction AT_CHECK([ovs-appctl dpctl/flush-conntrack zone=42]) rm client.pcap @@ -18341,7 +18416,7 @@ index 221d96aefb..f9bb67a63b 100644 OVS_WAIT_UNTIL([grep "listening" tcpdump1_err]) dnl Send UDP client->server -@@ -7300,6 +7583,65 @@ AT_CHECK([ovs-pcap client.pcap | grep 000000002010000000002000], [0], [dnl +@@ -7300,6 +7591,65 @@ AT_CHECK([ovs-pcap client.pcap | grep 000000002010000000002000], [0], [dnl OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -18407,7 +18482,7 @@ index 221d96aefb..f9bb67a63b 100644 AT_BANNER([IGMP]) AT_SETUP([IGMP - flood under normal action]) -@@ -7404,7 +7746,7 @@ dnl CVLAN traffic should match the flow and drop +@@ -7404,7 +7754,7 @@ dnl CVLAN traffic should match the flow and drop AT_CHECK([ovs-appctl revalidator/purge]) AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:vlan-limit=1]) AT_CHECK([ovs-ofctl add-flow br0 "priority=100 dl_type=0x8100 action=drop"]) @@ -18416,7 +18491,7 @@ index 221d96aefb..f9bb67a63b 100644 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -7454,11 +7796,11 @@ AT_CHECK([ovs-ofctl --bundle add-flows br2 flows-customer-br.txt]) +@@ -7454,11 +7804,11 @@ AT_CHECK([ovs-ofctl --bundle add-flows br2 flows-customer-br.txt]) OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.2.2.2]) @@ -18430,7 +18505,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -@@ -7510,11 +7852,11 @@ AT_CHECK([ovs-ofctl --bundle add-flows br2 flows-customer-br.txt]) +@@ -7510,11 +7860,11 @@ AT_CHECK([ovs-ofctl --bundle add-flows br2 flows-customer-br.txt]) OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.2.2.2]) @@ -18444,7 +18519,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -@@ -7562,24 +7904,24 @@ AT_CHECK([ovs-vsctl set port ovs-p2 vlan_mode=dot1q-tunnel tag=4094 cvlans=100,2 +@@ -7562,24 +7912,24 @@ AT_CHECK([ovs-vsctl set port ovs-p2 vlan_mode=dot1q-tunnel tag=4094 cvlans=100,2 OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.2.2.2]) OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.3.2.2]) @@ -18474,7 +18549,7 @@ index 221d96aefb..f9bb67a63b 100644 OVS_TRAFFIC_VSWITCHD_STOP(["/dropping VLAN \(0\|300\) packet received on dot1q-tunnel port/d"]) AT_CLEANUP -@@ -7608,11 +7950,11 @@ AT_CHECK([ovs-ofctl --bundle add-flows br0 flows-br0.txt]) +@@ -7608,11 +7958,11 @@ AT_CHECK([ovs-ofctl --bundle add-flows br0 flows-br0.txt]) OVS_WAIT_UNTIL([ip netns exec at_ns0 ping -c 1 10.2.2.2]) @@ -18488,7 +18563,7 @@ index 221d96aefb..f9bb67a63b 100644 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -@@ -7634,21 +7976,29 @@ dnl The flow will encap a nsh header to the TCP syn packet +@@ -7634,21 +7984,29 @@ dnl The flow will encap a nsh header to the TCP syn packet dnl eth/ip/tcp --> OVS --> eth/nsh/eth/ip/tcp AT_CHECK([ovs-ofctl -Oopenflow13 add-flow br0 "table=0,priority=100,in_port=ovs-p0,ip,actions=encap(nsh(md_type=1)),set_field:0x1234->nsh_spi,set_field:0x11223344->nsh_c1,encap(ethernet),set_field:f2:ff:00:00:00:02->dl_dst,set_field:f2:ff:00:00:00:01->dl_src,ovs-p1"]) @@ -18531,7 +18606,7 @@ index 221d96aefb..f9bb67a63b 100644 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -7666,19 +8016,31 @@ dnl The flow will decap a nsh header which in turn carries a TCP syn packet +@@ -7666,19 +8024,31 @@ dnl The flow will decap a nsh header which in turn carries a TCP syn packet dnl eth/nsh/eth/ip/tcp --> OVS --> eth/ip/tcp AT_CHECK([ovs-ofctl -Oopenflow13 add-flow br0 "table=0,priority=100,in_port=ovs-p0,dl_type=0x894f, actions=decap(),decap(), ovs-p1"]) @@ -18573,7 +18648,7 @@ index 221d96aefb..f9bb67a63b 100644 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -7698,22 +8060,38 @@ dnl The flow will add another NSH header with nsh_spi=0x101, nsh_si=4, +@@ -7698,22 +8068,38 @@ dnl The flow will add another NSH header with nsh_spi=0x101, nsh_si=4, dnl nsh_ttl=7 and change the md1 context AT_CHECK([ovs-ofctl -Oopenflow13 add-flow br0 "table=0,priority=100,in_port=ovs-p0,dl_type=0x894f,nsh_spi=0x100,nsh_si=0x03,actions=decap(),decap(),encap(nsh(md_type=1)),set_field:0x07->nsh_ttl,set_field:0x0101->nsh_spi,set_field:0x04->nsh_si,set_field:0x100f0e0d->nsh_c1,set_field:0x0c0b0a09->nsh_c2,set_field:0x08070605->nsh_c3,set_field:0x04030201->nsh_c4,encap(ethernet),set_field:f2:ff:00:00:00:02->dl_dst,set_field:f2:ff:00:00:00:01->dl_src,ovs-p1"]) @@ -18626,7 +18701,7 @@ index 221d96aefb..f9bb67a63b 100644 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -7734,31 +8112,50 @@ dnl packet to to at_ns2. +@@ -7734,31 +8120,50 @@ dnl packet to to at_ns2. AT_CHECK([ovs-ofctl -Oopenflow13 add-flow br0 "table=0,priority=100,dl_type=0x894f,nsh_spi=0x100,nsh_si=0x02,actions=ovs-p1"]) AT_CHECK([ovs-ofctl -Oopenflow13 add-flow br0 "table=0,priority=100,dl_type=0x894f,nsh_spi=0x100,nsh_si=0x01,actions=ovs-p2"]) @@ -18703,7 +18778,7 @@ index 221d96aefb..f9bb67a63b 100644 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP diff --git a/tests/system-userspace-macros.at b/tests/system-userspace-macros.at -index b34a84775b..2db62bf8d9 100644 +index b34a84775b..7984b41f0e 100644 --- a/tests/system-userspace-macros.at +++ b/tests/system-userspace-macros.at @@ -106,6 +106,16 @@ m4_define([CHECK_CONNTRACK_NAT]) @@ -18723,7 +18798,22 @@ index b34a84775b..2db62bf8d9 100644 # CHECK_CONNTRACK_TIMEOUT() # # Perform requirements checks for running conntrack customized timeout tests. -@@ -325,3 +335,11 @@ m4_define([CHECK_L3L4_CONNTRACK_REASM], +@@ -285,6 +295,14 @@ AT_CHECK([ovs-appctl dpctl/ipf-get-status -m | FORMAT_FRAG_LIST()], [], [dnl + ]) + ]) + ++# OVS_CHECK_FRAG_LARGE() ++# ++# The userspace needs to check that ipf larger fragments have occurred. ++m4_define([OVS_CHECK_FRAG_LARGE], ++[ ++ OVS_WAIT_UNTIL([grep -Eq 'Unsupported big reassembled (v4|v6) packet' ovs-vswitchd.log]) ++]) ++ + # OVS_CHECK_MIN_KERNEL([minversion], [maxversion]) + # + # The userspace skips all tests that check kernel version. +@@ -325,3 +343,11 @@ m4_define([CHECK_L3L4_CONNTRACK_REASM], [ AT_SKIP_IF([:]) ]) diff --git a/SPECS/openvswitch3.1.spec b/SPECS/openvswitch3.1.spec index 851091c..6a46827 100644 --- a/SPECS/openvswitch3.1.spec +++ b/SPECS/openvswitch3.1.spec @@ -57,7 +57,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 3.1.0 -Release: 142%{?dist} +Release: 144%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -756,6 +756,19 @@ exit 0 %endif %changelog +* Fri Jan 24 2025 Open vSwitch CI - 3.1.0-144 +- Merging upstream branch-3.1 [RH git: 87b63de1e2] + Commit list: + c2f239e213 dpdk: Use DPDK 22.11.7 release for OVS 3.1. + + +* Wed Jan 15 2025 Open vSwitch CI - 3.1.0-143 +- Merging upstream branch-3.1 [RH git: bcec8e9426] + Commit list: + a797d1aa52 dpif-netdev: Modify code comments for function parse_tcp_flags. + ab3088079a ipf: Fix the over-sized reassembly. + + * Wed Dec 11 2024 Open vSwitch CI - 3.1.0-142 - Merging upstream branch-3.1 [RH git: 0228a8e8ec] Commit list: