diff --git a/SOURCES/openvswitch-2.15.0.patch b/SOURCES/openvswitch-2.15.0.patch index 4ecd366..b155673 100644 --- a/SOURCES/openvswitch-2.15.0.patch +++ b/SOURCES/openvswitch-2.15.0.patch @@ -20342,7 +20342,7 @@ index d9db3c915c..8655f76d92 100644 #define CMAP_CURSOR_FOR_EACH(NODE, MEMBER, CURSOR, CMAP) \ for (*(CURSOR) = cmap_cursor_start(CMAP); \ diff --git a/lib/conntrack.c b/lib/conntrack.c -index feaaec1c3f..15d1cde79d 100644 +index feaaec1c3f..96c896dfb9 100644 --- a/lib/conntrack.c +++ b/lib/conntrack.c @@ -46,6 +46,7 @@ VLOG_DEFINE_THIS_MODULE(conntrack); @@ -20453,6 +20453,15 @@ index feaaec1c3f..15d1cde79d 100644 } } +@@ -2196,7 +2239,7 @@ nat_range_hash(const struct conn *conn, uint32_t basis) + hash = ct_addr_hash_add(hash, &conn->nat_info->min_addr); + hash = ct_addr_hash_add(hash, &conn->nat_info->max_addr); + hash = hash_add(hash, +- (conn->nat_info->max_port << 16) ++ ((uint32_t) conn->nat_info->max_port << 16) + | conn->nat_info->min_port); + hash = ct_endpoint_hash_add(hash, &conn->key.src); + hash = ct_endpoint_hash_add(hash, &conn->key.dst); diff --git a/lib/ct-dpif.c b/lib/ct-dpif.c index 6a5ba052dd..cfc2315e3d 100644 --- a/lib/ct-dpif.c @@ -22320,7 +22329,7 @@ index 47077e9478..5cb96fa6ec 100644 } else { txn->error = 0; diff --git a/lib/odp-util.c b/lib/odp-util.c -index a8598d52af..4983ab114b 100644 +index a8598d52af..f1158cbf21 100644 --- a/lib/odp-util.c +++ b/lib/odp-util.c @@ -2937,7 +2937,7 @@ odp_nsh_key_from_attr__(const struct nlattr *attr, bool is_mask, @@ -22367,6 +22376,28 @@ index a8598d52af..4983ab114b 100644 &opts, sizeof(opts)); } nl_msg_end_nested(a, tun_key_ofs); +@@ -3396,16 +3396,16 @@ format_eth(struct ds *ds, const char *name, const struct eth_addr key, + + static void + format_be64(struct ds *ds, const char *name, ovs_be64 key, +- const ovs_be64 *mask, bool verbose) ++ const ovs_32aligned_be64 *mask_, bool verbose) + { +- bool mask_empty = mask && !*mask; ++ ovs_be64 mask = mask_ ? get_32aligned_be64(mask_) : htonll(0); + +- if (verbose || !mask_empty) { +- bool mask_full = !mask || *mask == OVS_BE64_MAX; ++ if (verbose || mask) { ++ bool mask_full = !mask_ || mask == OVS_BE64_MAX; + + ds_put_format(ds, "%s=0x%"PRIx64, name, ntohll(key)); + if (!mask_full) { /* Partially masked. */ +- ds_put_format(ds, "/%#"PRIx64, ntohll(*mask)); ++ ds_put_format(ds, "/%#"PRIx64, ntohll(mask)); + } + ds_put_char(ds, ','); + } @@ -4597,6 +4597,11 @@ odp_flow_format(const struct nlattr *key, size_t key_len, ds_put_char(ds, ','); } @@ -22580,6 +22611,21 @@ index 4579548ee1..9485ddfc93 100644 break; } +diff --git a/lib/ofpbuf.c b/lib/ofpbuf.c +index 4edb3c114a..05c0b5711d 100644 +--- a/lib/ofpbuf.c ++++ b/lib/ofpbuf.c +@@ -422,6 +422,10 @@ void + ofpbuf_reserve(struct ofpbuf *b, size_t size) + { + ovs_assert(!b->size); ++ ++ if (!size) { ++ return; ++ } + ofpbuf_prealloc_tailroom(b, size); + b->data = (char*)b->data + size; + } diff --git a/lib/ovs-actions.xml b/lib/ovs-actions.xml index a2778de4bc..3894cb3c33 100644 --- a/lib/ovs-actions.xml @@ -26992,6 +27038,20 @@ index 2862a3c9b9..16402ebae2 100644 +OVS_VSWITCHD_STOP(["/flow: in_port is not an exact match/d +/failed to put/d"]) +AT_CLEANUP +diff --git a/tests/drop-stats.at b/tests/drop-stats.at +index 94528f5562..fb2998ffe1 100644 +--- a/tests/drop-stats.at ++++ b/tests/drop-stats.at +@@ -83,6 +83,9 @@ AT_CHECK([ + ovs-ofctl -Oopenflow13 add-flows br0 flows.txt + ovs-ofctl -Oopenflow13 dump-flows br0 | ofctl_strip | sort | grep actions ], [0], [ignore]) + ++ovs-appctl time/warp 15000 ++AT_CHECK([ovs-appctl revalidator/wait]) ++ + AT_CHECK([ + ovs-appctl netdev-dummy/receive p1 'in_port(1),packet_type(ns=0,id=0),eth(src=3a:6d:d2:09:9c:ab,dst=1e:2c:e9:2a:66:9e),ipv4(src=192.168.10.10,dst=192.168.10.30,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)' + ], [0], [ignore]) diff --git a/tests/flowgen.py b/tests/flowgen.py index 7ef32d13cb..cb0e9df388 100755 --- a/tests/flowgen.py diff --git a/SPECS/openvswitch2.15.spec b/SPECS/openvswitch2.15.spec index f9805a5..e89f8f5 100644 --- a/SPECS/openvswitch2.15.spec +++ b/SPECS/openvswitch2.15.spec @@ -57,7 +57,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 2.15.0 -Release: 106%{?dist} +Release: 107%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -702,6 +702,15 @@ exit 0 %endif %changelog +* Mon Jun 27 2022 Open vSwitch CI - 2.15.0-107 +- Merging upstream branch-2.15 [RH git: 9bc851aa76] + Commit list: + 386f0af8f5 conntrack: Fix incorrect bit shift while hashing nat range. + 7ecfaf9562 odp-util: Fix unaligned access to tunnel id. + 019df265ae ofpbuf: Fix offsetting a NULL pointer in ofpbuf_reserve. + aeac1a781a drop-stats.at: Fix frequent failures of the recursion too deep test. + + * Wed Jun 15 2022 Open vSwitch CI - 2.15.0-106 - Merging upstream branch-2.15 [RH git: ab1d6faf99] Commit list: