From fd7361f6185c04fc850d22862a31c9e94dc4452a Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 8 Nov 2022 02:06:18 -0500 Subject: [PATCH] import kronosnet-1.24-2.el8 --- .gitignore | 2 +- .kronosnet.metadata | 2 +- .../bz2112924-fix-dst_seq_num_init-race.patch | 44 ---------- ...2924-icmp-faster-link-down-detection.patch | 82 ------------------- SPECS/kronosnet.spec | 21 +++-- 5 files changed, 12 insertions(+), 139 deletions(-) delete mode 100644 SOURCES/bz2112924-fix-dst_seq_num_init-race.patch delete mode 100644 SOURCES/bz2112924-icmp-faster-link-down-detection.patch diff --git a/.gitignore b/.gitignore index 5c841e8..f98133b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/kronosnet-1.22.tar.gz +SOURCES/kronosnet-1.24.tar.gz diff --git a/.kronosnet.metadata b/.kronosnet.metadata index 738effa..8931b73 100644 --- a/.kronosnet.metadata +++ b/.kronosnet.metadata @@ -1 +1 @@ -00f8110dfa4ec8d07511d48017d75441516c3b4b SOURCES/kronosnet-1.22.tar.gz +3e653668f59bc6d9eeb876cbe840b1080161c11c SOURCES/kronosnet-1.24.tar.gz diff --git a/SOURCES/bz2112924-fix-dst_seq_num_init-race.patch b/SOURCES/bz2112924-fix-dst_seq_num_init-race.patch deleted file mode 100644 index 4aa76ba..0000000 --- a/SOURCES/bz2112924-fix-dst_seq_num_init-race.patch +++ /dev/null @@ -1,44 +0,0 @@ -commit 62271c5c0b08041b24930310c04e3933720917c6 -Author: Fabio M. Di Nitto -Date: Mon Nov 8 09:14:22 2021 +0100 - - [host] fix dst_seq_num initialization race condition - - There is a potential race condition where the sender - is overloaded, sending data packets before pings - can kick in and set the correct dst_seq_num. - - if this node is starting up (dst_seq_num = 0), - it can start rejecing valid packets and get stuck. - - Set the dst_seq_num to the first seen packet and - use that as reference instead. - - Signed-off-by: Fabio M. Di Nitto - -diff --git a/libknet/host.c b/libknet/host.c -index f02ef02..54061fd 100644 ---- a/libknet/host.c -+++ b/libknet/host.c -@@ -617,6 +617,21 @@ int _seq_num_lookup(knet_handle_t knet_h, struct knet_host *host, seq_num_t seq_ - char *dst_cbuf_defrag = host->circular_buffer_defrag; - seq_num_t *dst_seq_num = &host->rx_seq_num; - -+ /* -+ * There is a potential race condition where the sender -+ * is overloaded, sending data packets before pings -+ * can kick in and set the correct dst_seq_num. -+ * -+ * if this node is starting up (dst_seq_num = 0), -+ * it can start rejecing valid packets and get stuck. -+ * -+ * Set the dst_seq_num to the first seen packet and -+ * use that as reference instead. -+ */ -+ if (!*dst_seq_num) { -+ *dst_seq_num = seq_num; -+ } -+ - if (clear_buf) { - _clear_cbuffers(host, seq_num); - } diff --git a/SOURCES/bz2112924-icmp-faster-link-down-detection.patch b/SOURCES/bz2112924-icmp-faster-link-down-detection.patch deleted file mode 100644 index cf8f99b..0000000 --- a/SOURCES/bz2112924-icmp-faster-link-down-detection.patch +++ /dev/null @@ -1,82 +0,0 @@ -commit 28ddb87a2f4562c5d1752a778744cc56136f81c1 -Author: Fabio M. Di Nitto -Date: Sun Nov 7 17:02:05 2021 +0100 - - [udp] use ICMP error messages to trigger faster link down detection - - this solves a possible race condition when: - - - node1 is running - - node2 very fast - - node1 does NOT have enough time to detect that node2 has gone - and reset the local seq numbers / buffers - - node1 will start rejecting valid packets from node2 - - There is still a potential minor race condition where app - can restart so fast that kernel / network don't have time - to generate an ICMP error. This will be addressed using - instance id in onwire v2 protocol, as suggested by Jan F. - - Signed-off-by: Fabio M. Di Nitto - -diff --git a/libknet/transport_udp.c b/libknet/transport_udp.c -index 963340d..32dd032 100644 ---- a/libknet/transport_udp.c -+++ b/libknet/transport_udp.c -@@ -364,6 +364,46 @@ static int read_errs_from_sock(knet_handle_t knet_h, int sockfd) - log_debug(knet_h, KNET_SUB_TRANSP_UDP, "Received ICMP error from %s: %s destination unknown", addr_str, strerror(sock_err->ee_errno)); - } else { - log_debug(knet_h, KNET_SUB_TRANSP_UDP, "Received ICMP error from %s: %s %s", addr_str, strerror(sock_err->ee_errno), addr_remote_str); -+ if ((sock_err->ee_errno == ECONNREFUSED) || /* knet is not running on the other node */ -+ (sock_err->ee_errno == ECONNABORTED) || /* local kernel closed the socket */ -+ (sock_err->ee_errno == ENONET) || /* network does not exist */ -+ (sock_err->ee_errno == ENETUNREACH) || /* network unreachable */ -+ (sock_err->ee_errno == EHOSTUNREACH) || /* host unreachable */ -+ (sock_err->ee_errno == EHOSTDOWN) || /* host down (from kernel/net/ipv4/icmp.c */ -+ (sock_err->ee_errno == ENETDOWN)) { /* network down */ -+ struct knet_host *host = NULL; -+ struct knet_link *kn_link = NULL; -+ int link_idx, found = 0; -+ -+ for (host = knet_h->host_head; host != NULL; host = host->next) { -+ for (link_idx = 0; link_idx < KNET_MAX_LINK; link_idx++) { -+ kn_link = &host->link[link_idx]; -+ if (kn_link->outsock == sockfd) { -+ if (!cmpaddr(&remote, &kn_link->dst_addr)) { -+ found = 1; -+ break; -+ } -+ } -+ } -+ if (found) { -+ break; -+ } -+ } -+ -+ if ((host) && (kn_link) && -+ (kn_link->status.connected)) { -+ log_debug(knet_h, KNET_SUB_TRANSP_UDP, "Setting down host %u link %i", host->host_id, kn_link->link_id); -+ /* -+ * setting transport_connected = 0 will trigger -+ * thread_heartbeat link_down process. -+ * -+ * the process terminates calling into transport_link_down -+ * below that will set transport_connected = 1 -+ */ -+ kn_link->transport_connected = 0; -+ } -+ -+ } - } - } - break; -@@ -436,5 +476,9 @@ int udp_transport_link_dyn_connect(knet_handle_t knet_h, int sockfd, struct knet - - int udp_transport_link_is_down(knet_handle_t knet_h, struct knet_link *kn_link) - { -+ /* -+ * see comments about handling ICMP error messages -+ */ -+ kn_link->transport_connected = 1; - return 0; - } diff --git a/SPECS/kronosnet.spec b/SPECS/kronosnet.spec index 4f0cb3b..882ab29 100644 --- a/SPECS/kronosnet.spec +++ b/SPECS/kronosnet.spec @@ -82,15 +82,12 @@ Name: kronosnet Summary: Multipoint-to-Multipoint VPN daemon -Version: 1.22 +Version: 1.24 Release: 2%{?dist} License: GPLv2+ and LGPLv2+ URL: http://www.kronosnet.org Source0: http://www.kronosnet.org/releases/kronosnet-%{version}.tar.gz -Patch0: bz2112924-fix-dst_seq_num_init-race.patch -Patch1: bz2112924-icmp-faster-link-down-detection.patch - # Build dependencies BuildRequires: gcc # required to build man pages @@ -138,8 +135,6 @@ BuildRequires: autoconf %prep %setup -q -n %{name}-%{version} -%patch0 -p1 -b .bz2112924-fix-dst_seq_num_init-race -%patch1 -p1 -b .bz2112924-icmp-faster-link-down-detection %build %if %{defined buildautogen} @@ -513,7 +508,7 @@ meta package to install all of libknet1 plugins %package -n kronosnet-tests Group: System Environment/Libraries Summary: kronosnet test suite -Requires: libknet1%{_isa} = %{version}-%{release} +Requires: libknet1 = %{version}-%{release} Requires: libnozzle1%{_isa} = %{version}-%{release} %description -n kronosnet-tests @@ -530,15 +525,19 @@ Requires: libnozzle1%{_isa} = %{version}-%{release} %endif %changelog -* Wed Aug 03 2022 Christine Caulfield - 1.22-2 - Fix "node randomly not rejoining cluster after a pcs cluster stop/start" - Resolves: rhbz#2112924 +* Wed Jul 27 2022 Christine Caulfield - 1.24-2 + Don't run nozzle_up_down tests, as they don't work in RH CI + Resolves: rhbz#2024095 + +* Wed Jul 27 2022 Christine Caulfield - 1.24-1 + Rebase to 1.24 + Resolves: rhbz#2024095 * Thu Sep 16 2021 Christine Caulfield - 1.22-1 Rebase to 1.22 Resolves: rhbz#1999976 - * Wed Sep 23 2020 Christine Caulfield - 1.18-1 +* Wed Sep 23 2020 Christine Caulfield - 1.18-1 Rebase to 1.18 Resolves: rhbz#1855301