Move the interface demote out of if_del and into the only place where
authorclaudio <claudio@openbsd.org>
Tue, 19 Jan 2021 10:09:59 +0000 (10:09 +0000)
committerclaudio <claudio@openbsd.org>
Tue, 19 Jan 2021 10:09:59 +0000 (10:09 +0000)
it is needed (the if_del call in ripe.c). With this the ripd_process
check in ripe_demote_iface() can be removed.

usr.sbin/ripd/interface.c
usr.sbin/ripd/ripe.c

index a176e13..3d1dfd6 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: interface.c,v 1.15 2019/06/28 13:32:50 deraadt Exp $ */
+/*     $OpenBSD: interface.c,v 1.16 2021/01/19 10:09:59 claudio Exp $ */
 
 /*
  * Copyright (c) 2006 Michele Marchetto <mydecay@openbeer.it>
@@ -461,10 +461,6 @@ if_del(struct iface *iface)
 
        log_debug("if_del: interface %s", iface->name);
 
-       /* revert the demotion when the interface is deleted */
-       if (iface->state == IF_STA_DOWN)
-               ripe_demote_iface(iface, 1);
-
        /* clear lists etc */
        while ((nbr = LIST_FIRST(&iface->nbr_list)) != NULL)
                nbr_del(nbr);
index d49f87f..841beef 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ripe.c,v 1.27 2021/01/19 10:02:22 claudio Exp $ */
+/*     $OpenBSD: ripe.c,v 1.28 2021/01/19 10:09:59 claudio Exp $ */
 
 /*
  * Copyright (c) 2006 Michele Marchetto <mydecay@openbeer.it>
@@ -471,6 +471,11 @@ ripe_shutdown(void)
        }
        while ((iface = LIST_FIRST(&oeconf->iface_list)) != NULL) {
                LIST_REMOVE(iface, entry);
+
+               /* revert the demotion when the interface is deleted */
+               if (iface->state == IF_STA_DOWN)
+                       ripe_demote_iface(iface, 1);
+
                if_del(iface);
        }
 
@@ -523,8 +528,7 @@ ripe_demote_iface(struct iface *iface, int active)
 {
        struct demote_msg       dmsg;
 
-       if (ripd_process != PROC_RIP_ENGINE ||
-           iface->demote_group[0] == '\0')
+       if (iface->demote_group[0] == '\0')
                return;
 
        bzero(&dmsg, sizeof(dmsg));