import kronosnet-1.24-2.el8
This commit is contained in:
parent
33cd248af5
commit
fd7361f618
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
SOURCES/kronosnet-1.22.tar.gz
|
SOURCES/kronosnet-1.24.tar.gz
|
||||||
|
@ -1 +1 @@
|
|||||||
00f8110dfa4ec8d07511d48017d75441516c3b4b SOURCES/kronosnet-1.22.tar.gz
|
3e653668f59bc6d9eeb876cbe840b1080161c11c SOURCES/kronosnet-1.24.tar.gz
|
||||||
|
@ -1,44 +0,0 @@
|
|||||||
commit 62271c5c0b08041b24930310c04e3933720917c6
|
|
||||||
Author: Fabio M. Di Nitto <fdinitto@redhat.com>
|
|
||||||
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 <fdinitto@redhat.com>
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
@ -1,82 +0,0 @@
|
|||||||
commit 28ddb87a2f4562c5d1752a778744cc56136f81c1
|
|
||||||
Author: Fabio M. Di Nitto <fdinitto@redhat.com>
|
|
||||||
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 <fdinitto@redhat.com>
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
@ -82,15 +82,12 @@
|
|||||||
|
|
||||||
Name: kronosnet
|
Name: kronosnet
|
||||||
Summary: Multipoint-to-Multipoint VPN daemon
|
Summary: Multipoint-to-Multipoint VPN daemon
|
||||||
Version: 1.22
|
Version: 1.24
|
||||||
Release: 2%{?dist}
|
Release: 2%{?dist}
|
||||||
License: GPLv2+ and LGPLv2+
|
License: GPLv2+ and LGPLv2+
|
||||||
URL: http://www.kronosnet.org
|
URL: http://www.kronosnet.org
|
||||||
Source0: http://www.kronosnet.org/releases/kronosnet-%{version}.tar.gz
|
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
|
# Build dependencies
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
# required to build man pages
|
# required to build man pages
|
||||||
@ -138,8 +135,6 @@ BuildRequires: autoconf
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %{name}-%{version}
|
%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
|
%build
|
||||||
%if %{defined buildautogen}
|
%if %{defined buildautogen}
|
||||||
@ -513,7 +508,7 @@ meta package to install all of libknet1 plugins
|
|||||||
%package -n kronosnet-tests
|
%package -n kronosnet-tests
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
Summary: kronosnet test suite
|
Summary: kronosnet test suite
|
||||||
Requires: libknet1%{_isa} = %{version}-%{release}
|
Requires: libknet1 = %{version}-%{release}
|
||||||
Requires: libnozzle1%{_isa} = %{version}-%{release}
|
Requires: libnozzle1%{_isa} = %{version}-%{release}
|
||||||
|
|
||||||
%description -n kronosnet-tests
|
%description -n kronosnet-tests
|
||||||
@ -530,15 +525,19 @@ Requires: libnozzle1%{_isa} = %{version}-%{release}
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Wed Aug 03 2022 Christine Caulfield <ccaulfie@redhat.com> - 1.22-2
|
* Wed Jul 27 2022 Christine Caulfield <ccaulfie@redhat.com> - 1.24-2
|
||||||
Fix "node randomly not rejoining cluster after a pcs cluster stop/start"
|
Don't run nozzle_up_down tests, as they don't work in RH CI
|
||||||
Resolves: rhbz#2112924
|
Resolves: rhbz#2024095
|
||||||
|
|
||||||
|
* Wed Jul 27 2022 Christine Caulfield <ccaulfie@redhat.com> - 1.24-1
|
||||||
|
Rebase to 1.24
|
||||||
|
Resolves: rhbz#2024095
|
||||||
|
|
||||||
* Thu Sep 16 2021 Christine Caulfield <ccaulfie@redhat.com> - 1.22-1
|
* Thu Sep 16 2021 Christine Caulfield <ccaulfie@redhat.com> - 1.22-1
|
||||||
Rebase to 1.22
|
Rebase to 1.22
|
||||||
Resolves: rhbz#1999976
|
Resolves: rhbz#1999976
|
||||||
|
|
||||||
* Wed Sep 23 2020 Christine Caulfield <ccaulfie@redhat.com> - 1.18-1
|
* Wed Sep 23 2020 Christine Caulfield <ccaulfie@redhat.com> - 1.18-1
|
||||||
Rebase to 1.18
|
Rebase to 1.18
|
||||||
Resolves: rhbz#1855301
|
Resolves: rhbz#1855301
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user