]> git.puffer.fish Git - mirror/frr.git/commitdiff
vrrpd: fix v2 master_down_interval computation
authorQuentin Young <qlyoung@cumulusnetworks.com>
Wed, 13 Mar 2019 18:37:48 +0000 (18:37 +0000)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Fri, 17 May 2019 00:27:08 +0000 (00:27 +0000)
VRRPv2 uses the configured advertisement interval to compute the master
down timer, whereas VRRPv3 uses the one advertised by the master. Fix
computation to use the configured in in v2.

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

index 3f93ac441c56745b1eb6a13e85bc94168eeacd48..4ab660591806760d8ed4f42b979f1e225cde4d75 100644 (file)
@@ -97,9 +97,11 @@ static void vrrp_mac_set(struct ethaddr *mac, bool v6, uint8_t vrid)
  */
 static void vrrp_recalculate_timers(struct vrrp_router *r)
 {
+       uint16_t mdiadv = r->vr->version == 3 ? r->master_adver_interval
+                                             : r->vr->advertisement_interval;
        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 = 3 * mdiadv;
        r->master_down_interval += r->skew_time;
 }