]> git.puffer.fish Git - matthieu/frr.git/commitdiff
vrrpd: try to bind interfaces on if_down notifications
authorQuentin Young <qlyoung@cumulusnetworks.com>
Thu, 1 Aug 2019 17:38:46 +0000 (17:38 +0000)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Fri, 2 Aug 2019 17:26:05 +0000 (17:26 +0000)
Normally we only opportunistically try to bind interfaces to VRRP
instances upon getting if_add and if_up notifications; now that Zebra
sends if_down notifications when interfaces change while they are down,
we should try to bind when we get those as well.

This solves a bug where VRRP would not bind and activate virtual routers
to valid interfaces because their MACs were changed to VRRP macs while
the interface was down.

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

index 8e6c6389efd99184741786cfc9f98f590b3cc05d..da039f7a07c9e07fc37926ecd74e6e33131aefd4 100644 (file)
@@ -2133,9 +2133,13 @@ void vrrp_if_down(struct interface *ifp)
        struct listnode *ln;
        struct list *vrs;
 
+       vrrp_bind_pending(ifp);
+
        vrs = vrrp_lookup_by_if_any(ifp);
 
        for (ALL_LIST_ELEMENTS_RO(vrs, ln, vr)) {
+               vrrp_check_start(vr);
+
                if (vr->ifp == ifp || vr->v4->mvl_ifp == ifp
                    || vr->v6->mvl_ifp == ifp) {
                        DEBUGD(&vrrp_dbg_auto,