]> git.puffer.fish Git - matthieu/frr.git/commitdiff
vrrpd: don't update interface addrs on ifup
authorQuentin Young <qlyoung@cumulusnetworks.com>
Tue, 19 Feb 2019 22:36:34 +0000 (22:36 +0000)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Fri, 17 May 2019 00:27:08 +0000 (00:27 +0000)
Updating interface addresses on autoconfigured VRRP instances when we
receive notification that an interface is up will cause us to delete
that VRRP instance because Zebra deletes all interface addresses when an
interfaces goes down so when it comes back up it has no addresses which
causes us to delete the instance, then Zebra subsequently sends us the
addresses which causes the instance to get recreated, however in a
non-owner scenario this will merely cause us to start in Backup, wait a
while, transition to Master, protodown off our interface, get an
interface up notification, delete all our ip addresses, destroy
ourselves, receive address notifications, recreate ourselves, reenter
Backup and cycle through it all over again.

So we just have to assume that no addresses went away since this
interface was last up.

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

index 28ff2fa3c763c99e90ec89e0c049df7c9e90e076..449b2aca7dadb032b2ad7a9e59b85d0a02261486 100644 (file)
@@ -1680,8 +1680,8 @@ static int vrrp_autoconfig_if_del(struct interface *ifp)
 /*
  * Callback to notify autoconfig of interface up.
  *
- * Roughly equivalent to vrrp_autoconfig_if_add, except that addresses are
- * refreshed if an autoconfigured virtual router already exists.
+ * Creates VRRP instance on interface if it does not exist. Otherwise does
+ * nothing.
  *
  * ifp
  *    Interface to operate on
@@ -1705,8 +1705,6 @@ static int vrrp_autoconfig_if_up(struct interface *ifp)
                return 0;
        }
 
-       vrrp_autoconfig_autoaddrupdate(vr);
-
        return 0;
 }
 
index 7a68f1bbcdfabf5e17572292665f51b33128bafd..223d61001eff814532c1572f3a276470b4e27821 100644 (file)
@@ -54,9 +54,6 @@ static void vrrp_zebra_debug_if_dump_address(struct interface *ifp,
        for (ALL_LIST_ELEMENTS_RO(ifp->connected, node, ifc)) {
                struct prefix *p = ifc->address;
 
-               if (p->family != AF_INET)
-                       continue;
-
                DEBUGD(&vrrp_dbg_zebra, "%s: interface %s address %s %s", func,
                       ifp->name, inet_ntoa(p->u.prefix4),
                       CHECK_FLAG(ifc->flags, ZEBRA_IFA_SECONDARY) ? "secondary"