diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2018-05-17 16:40:37 +0200 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2018-05-29 11:18:30 +0200 |
commit | 2f4b3392d511ee3a87db3ffc0704e8974f2ec2b1 (patch) | |
tree | d83420ebcb0b1f5db62ae70cacf9f32f1319a092 | |
parent | d97eab6c5a809a114cdd1cc54e447503ad253835 (diff) | |
download | NetworkManager-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.
-rw-r--r-- | shared/n-acd/src/n-acd.c | 9 | ||||
-rw-r--r-- | shared/n-acd/src/n-acd.h | 2 |
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, |