]> git.proxmox.com Git - mirror_frr.git/commitdiff
vrrpd: allow centisecond precision for vrrpv2
authorQuentin Young <qlyoung@cumulusnetworks.com>
Tue, 12 Mar 2019 17:31:39 +0000 (17:31 +0000)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Fri, 17 May 2019 00:27:08 +0000 (00:27 +0000)
The RFC is not clear about how precise the skew time calculation should
be in VRRPv2. The advertisement interval is given in seconds, and the
field in the advertisement packet only supports non-fractional seconds,
so I was following this for calculating skew time as well. However the
skew time formula in vrrpv2 always yields a fractional amount of seconds
in the range (0-1), which right now means we always truncate to 0
seconds. I doubt this is what the RFC wanted so I'm allowing centisecond
precision for skew time.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
vrrpd/vrrp.c

index cba79b544ed75713891a68e3b57f44bd36d19ca8..3f93ac441c56745b1eb6a13e85bc94168eeacd48 100644 (file)
@@ -97,7 +97,7 @@ static void vrrp_mac_set(struct ethaddr *mac, bool v6, uint8_t vrid)
  */
 static void vrrp_recalculate_timers(struct vrrp_router *r)
 {
-       uint16_t skm = (r->vr->version == 3) ? r->master_adver_interval : 1;
+       uint16_t skm = (r->vr->version == 3) ? r->master_adver_interval : 100;
        r->skew_time = ((256 - r->vr->priority) * skm) / 256;
        r->master_down_interval = (3 * r->master_adver_interval);
        r->master_down_interval += r->skew_time;