summaryrefslogtreecommitdiff
path: root/shared
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2018-05-17 16:40:37 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2018-05-29 11:18:30 +0200
commit2f4b3392d511ee3a87db3ffc0704e8974f2ec2b1 (patch)
treed83420ebcb0b1f5db62ae70cacf9f32f1319a092 /shared
parentd97eab6c5a809a114cdd1cc54e447503ad253835 (diff)
downloadNetworkManager-2f4b3392d511ee3a87db3ffc0704e8974f2ec2b1.tar.gz
n-acd: use RFC 5227 timeout for announcements
When doing announcements, use the the timeout specified by RFC 5227. Note that timeout_multiplier might be 0. This aligns behavior to upstream version of n-acd.
Diffstat (limited to 'shared')
-rw-r--r--shared/n-acd/src/n-acd.c9
-rw-r--r--shared/n-acd/src/n-acd.h2
2 files changed, 10 insertions, 1 deletions
diff --git a/shared/n-acd/src/n-acd.c b/shared/n-acd/src/n-acd.c
index ae149abbf0..42307aa3d6 100644
--- a/shared/n-acd/src/n-acd.c
+++ b/shared/n-acd/src/n-acd.c
@@ -563,7 +563,14 @@ static int n_acd_handle_timeout(NAcd *acd) {
return r;
if (++acd->n_iteration < N_ACD_RFC_ANNOUNCE_NUM) {
- r = n_acd_schedule(acd, acd->timeout_multiplier * N_ACD_RFC_ANNOUNCE_INTERVAL_USEC, 0);
+ /*
+ * Announcements are always scheduled according to the
+ * time-intervals specified in the spec. We always use
+ * the RFC5227-mandated multiplier.
+ * If you reconsider this, note that timeout_multiplier
+ * might be 0 here.
+ */
+ r = n_acd_schedule(acd, N_ACD_TIMEOUT_RFC5227 * N_ACD_RFC_ANNOUNCE_INTERVAL_USEC, 0);
if (r < 0)
return r;
}
diff --git a/shared/n-acd/src/n-acd.h b/shared/n-acd/src/n-acd.h
index 46394dcaa3..75646243d8 100644
--- a/shared/n-acd/src/n-acd.h
+++ b/shared/n-acd/src/n-acd.h
@@ -15,6 +15,8 @@ extern "C" {
#include <netinet/in.h>
#include <stdbool.h>
+#define N_ACD_TIMEOUT_RFC5227 (UINT64_C(9000))
+
enum {
_N_ACD_E_SUCCESS,