It is no longer needed to special check for carp interfaces when checking
the link state. So cleanup the kernel and userland and remove all those
checks.

Mostly mechanical diff
-- 
:wq Claudio

Index: sys/net/if_trunk.h
===================================================================
RCS file: /cvs/src/sys/net/if_trunk.h,v
retrieving revision 1.16
diff -u -p -r1.16 if_trunk.h
--- sys/net/if_trunk.h  15 Jun 2008 06:56:09 -0000      1.16
+++ sys/net/if_trunk.h  3 Jul 2011 17:16:34 -0000
@@ -150,8 +150,7 @@ struct trunk_port {
 #define tp_capabilities                tp_if->if_capabilities  /* capabilities 
*/
 
 #define TRUNK_PORTACTIVE(_tp)  (                                       \
-       (LINK_STATE_IS_UP((_tp)->tp_link_state) ||                      \
-       (_tp)->tp_link_state == LINK_STATE_UNKNOWN) &&                  \
+       LINK_STATE_IS_UP((_tp)->tp_link_state) &&                       \
        (_tp)->tp_ifflags & IFF_UP)
 
 struct trunk_mc {
Index: sys/net/route.c
===================================================================
RCS file: /cvs/src/sys/net/route.c,v
retrieving revision 1.130
diff -u -p -r1.130 route.c
--- sys/net/route.c     4 Apr 2011 16:06:13 -0000       1.130
+++ sys/net/route.c     3 Jul 2011 17:18:17 -0000
@@ -854,9 +854,8 @@ rtrequest1(int req, struct rt_addrinfo *
                                senderr(EEXIST);
                        }
                        /* check the link state since the table supports it */
-                       if ((LINK_STATE_IS_UP(ifa->ifa_ifp->if_link_state) ||
-                           ifa->ifa_ifp->if_link_state == LINK_STATE_UNKNOWN)
-                           && ifa->ifa_ifp->if_flags & IFF_UP)
+                       if (LINK_STATE_IS_UP(ifa->ifa_ifp->if_link_state) &&
+                           ifa->ifa_ifp->if_flags & IFF_UP)
                                rt->rt_flags |= RTF_UP;
                        else {
                                rt->rt_flags &= ~RTF_UP;
@@ -1528,8 +1527,7 @@ rt_if_linkstate_change(struct radix_node
        struct rtentry *rt = (struct rtentry *)rn;
 
        if (rt->rt_ifp == ifp) {
-               if ((LINK_STATE_IS_UP(ifp->if_link_state) ||
-                   ifp->if_link_state == LINK_STATE_UNKNOWN) &&
+               if (LINK_STATE_IS_UP(ifp->if_link_state) &&
                    ifp->if_flags & IFF_UP) {
                        if (!(rt->rt_flags & RTF_UP)) {
                                /* bring route up */
Index: usr.sbin//bgpd/session.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/session.c,v
retrieving revision 1.317
diff -u -p -r1.317 session.c
--- usr.sbin//bgpd/session.c    5 May 2011 06:21:44 -0000       1.317
+++ usr.sbin//bgpd/session.c    3 Jul 2011 17:18:54 -0000
@@ -2461,9 +2461,7 @@ session_dispatch_imsg(struct imsgbuf *ib
                                fatalx("IFINFO imsg with wrong len");
                        kif = imsg.data;
                        depend_ok = (kif->flags & IFF_UP) &&
-                           (LINK_STATE_IS_UP(kif->link_state) ||
-                           (kif->link_state == LINK_STATE_UNKNOWN &&
-                           kif->media_type != IFT_CARP));
+                           LINK_STATE_IS_UP(kif->link_state);
 
                        for (p = peers; p != NULL; p = p->next)
                                if (!strcmp(p->conf.if_depend, kif->ifname)) {
Index: usr.sbin//dvmrpd/dvmrpe.c
===================================================================
RCS file: /cvs/src/usr.sbin/dvmrpd/dvmrpe.c,v
retrieving revision 1.9
diff -u -p -r1.9 dvmrpe.c
--- usr.sbin//dvmrpd/dvmrpe.c   26 May 2010 13:56:07 -0000      1.9
+++ usr.sbin//dvmrpd/dvmrpe.c   3 Jul 2011 17:19:08 -0000
@@ -266,9 +266,7 @@ dvmrpe_dispatch_main(int fd, short event
                                fatalx("IFINFO imsg with wrong len");
                        kif = imsg.data;
                        link_ok = (kif->flags & IFF_UP) &&
-                           (LINK_STATE_IS_UP(kif->link_state) ||
-                           (kif->link_state == LINK_STATE_UNKNOWN &&
-                           kif->media_type != IFT_CARP));
+                           LINK_STATE_IS_UP(kif->link_state);
 
                        LIST_FOREACH(iface, &deconf->iface_list, entry) {
                                if (kif->ifindex == iface->ifindex) {
Index: usr.sbin//dvmrpd/interface.c
===================================================================
RCS file: /cvs/src/usr.sbin/dvmrpd/interface.c,v
retrieving revision 1.9
diff -u -p -r1.9 interface.c
--- usr.sbin//dvmrpd/interface.c        22 Sep 2009 16:43:42 -0000      1.9
+++ usr.sbin//dvmrpd/interface.c        3 Jul 2011 17:20:38 -0000
@@ -384,10 +384,7 @@ if_act_start(struct iface *iface)
                return (-1);
        }
 
-       if (!((iface->flags & IFF_UP) &&
-           (LINK_STATE_IS_UP(iface->linkstate) ||
-           (iface->linkstate == LINK_STATE_UNKNOWN &&
-           iface->media_type != IFT_CARP)))) {
+       if (!((iface->flags & IFF_UP) && LINK_STATE_IS_UP(iface->linkstate))) {
                log_debug("if_act_start: interface %s link down",
                    iface->name);
                return (0);
Index: usr.sbin//dvmrpd/kroute.c
===================================================================
RCS file: /cvs/src/usr.sbin/dvmrpd/kroute.c,v
retrieving revision 1.6
diff -u -p -r1.6 kroute.c
--- usr.sbin//dvmrpd/kroute.c   22 Sep 2009 16:43:42 -0000      1.6
+++ usr.sbin//dvmrpd/kroute.c   3 Jul 2011 17:22:22 -0000
@@ -241,9 +241,7 @@ if_change(u_short ifindex, int flags, st
        kif->k.baudrate = ifd->ifi_baudrate;
 
        if ((reachable = (flags & IFF_UP) &&
-           (LINK_STATE_IS_UP(ifd->ifi_link_state) ||
-           (ifd->ifi_link_state == LINK_STATE_UNKNOWN &&
-           ifd->ifi_type != IFT_CARP))) == kif->k.nh_reachable)
+           LINK_STATE_IS_UP(ifd->ifi_link_state)) == kif->k.nh_reachable)
                return;         /* nothing changed wrt nexthop validity */
 
        kif->k.nh_reachable = reachable;
@@ -351,9 +349,7 @@ fetchifs(int ifindex)
                kif->k.baudrate = ifm.ifm_data.ifi_baudrate;
                kif->k.mtu = ifm.ifm_data.ifi_mtu;
                kif->k.nh_reachable = (kif->k.flags & IFF_UP) &&
-                   (LINK_STATE_IS_UP(ifm.ifm_data.ifi_link_state) ||
-                   (ifm.ifm_data.ifi_link_state == LINK_STATE_UNKNOWN &&
-                   ifm.ifm_data.ifi_type != IFT_CARP));
+                   LINK_STATE_IS_UP(ifm.ifm_data.ifi_link_state);
                if ((sa = rti_info[RTAX_IFP]) != NULL)
                        if (sa->sa_family == AF_LINK) {
                                sdl = (struct sockaddr_dl *)sa;
Index: usr.sbin//ifstated/ifstated.c
===================================================================
RCS file: /cvs/src/usr.sbin/ifstated/ifstated.c,v
retrieving revision 1.39
diff -u -p -r1.39 ifstated.c
--- usr.sbin//ifstated/ifstated.c       15 Mar 2011 08:38:07 -0000      1.39
+++ usr.sbin//ifstated/ifstated.c       3 Jul 2011 21:36:02 -0000
@@ -403,8 +403,7 @@ external_evtimer_setup(struct ifsd_state
        }
 }
 
-#define        LINK_STATE_IS_DOWN(_s)                                          
\
-       (!LINK_STATE_IS_UP((_s)) && (_s) != LINK_STATE_UNKNOWN)
+#define        LINK_STATE_IS_DOWN(_s)          (!LINK_STATE_IS_UP((_s)))
 
 int
 scan_ifstate_single(int ifindex, int s, struct ifsd_state *state)
Index: usr.sbin//ldpd/interface.c
===================================================================
RCS file: /cvs/src/usr.sbin/ldpd/interface.c,v
retrieving revision 1.7
diff -u -p -r1.7 interface.c
--- usr.sbin//ldpd/interface.c  10 Jan 2011 12:28:25 -0000      1.7
+++ usr.sbin//ldpd/interface.c  3 Jul 2011 17:35:04 -0000
@@ -229,9 +229,7 @@ if_act_start(struct iface *iface)
        struct timeval           now;
 
        if (!((iface->flags & IFF_UP) &&
-           (LINK_STATE_IS_UP(iface->linkstate) ||
-           (iface->linkstate == LINK_STATE_UNKNOWN &&
-           iface->media_type != IFT_CARP)))) {
+           LINK_STATE_IS_UP(iface->linkstate))) {
                log_debug("if_act_start: interface %s link down",
                    iface->name);
                return (0);
Index: usr.sbin//ldpd/ldpe.c
===================================================================
RCS file: /cvs/src/usr.sbin/ldpd/ldpe.c,v
retrieving revision 1.14
diff -u -p -r1.14 ldpe.c
--- usr.sbin//ldpd/ldpe.c       10 Jan 2011 12:28:25 -0000      1.14
+++ usr.sbin//ldpd/ldpe.c       3 Jul 2011 17:34:39 -0000
@@ -304,17 +304,12 @@ ldpe_dispatch_main(int fd, short event, 
                                fatalx("IFINFO imsg with wrong len");
                        kif = imsg.data;
                        link_new = (kif->flags & IFF_UP) &&
-                           (LINK_STATE_IS_UP(kif->link_state) ||
-                           (kif->link_state == LINK_STATE_UNKNOWN &&
-                           kif->media_type != IFT_CARP));
+                           LINK_STATE_IS_UP(kif->link_state);
 
                        LIST_FOREACH(iface, &leconf->iface_list, entry) {
                                if (kif->ifindex == iface->ifindex) {
                                        link_old = (iface->flags & IFF_UP) &&
-                                           (LINK_STATE_IS_UP(iface->linkstate)
-                                           || (iface->linkstate ==
-                                           LINK_STATE_UNKNOWN &&
-                                           iface->media_type != IFT_CARP));
+                                           LINK_STATE_IS_UP(iface->linkstate);
                                        iface->flags = kif->flags;
                                        iface->linkstate = kif->link_state;
 
Index: usr.sbin//ospf6d/interface.c
===================================================================
RCS file: /cvs/src/usr.sbin/ospf6d/interface.c,v
retrieving revision 1.16
diff -u -p -r1.16 interface.c
--- usr.sbin//ospf6d/interface.c        6 May 2011 13:48:46 -0000       1.16
+++ usr.sbin//ospf6d/interface.c        3 Jul 2011 17:24:35 -0000
@@ -370,9 +370,7 @@ if_act_start(struct iface *iface)
        struct timeval           now;
 
        if (!((iface->flags & IFF_UP) &&
-           (LINK_STATE_IS_UP(iface->linkstate) ||
-           (iface->linkstate == LINK_STATE_UNKNOWN &&
-           iface->media_type != IFT_CARP)))) {
+           LINK_STATE_IS_UP(iface->linkstate))) {
                log_debug("if_act_start: interface %s link down",
                    iface->name);
                return (0);
Index: usr.sbin//ospf6d/kroute.c
===================================================================
RCS file: /cvs/src/usr.sbin/ospf6d/kroute.c,v
retrieving revision 1.30
diff -u -p -r1.30 kroute.c
--- usr.sbin//ospf6d/kroute.c   7 Mar 2011 07:43:02 -0000       1.30
+++ usr.sbin//ospf6d/kroute.c   3 Jul 2011 17:24:12 -0000
@@ -805,9 +805,7 @@ if_change(u_short ifindex, int flags, st
        }
 
        reachable = (iface->flags & IFF_UP) &&
-           (LINK_STATE_IS_UP(iface->linkstate) ||
-           (iface->linkstate == LINK_STATE_UNKNOWN &&
-           iface->media_type != IFT_CARP));
+           LINK_STATE_IS_UP(iface->linkstate);
 
        if (reachable == iface->nh_reachable)
                return;         /* nothing changed wrt nexthop validity */
@@ -1293,10 +1291,7 @@ fetchifs(u_short ifindex)
                                fatal("fetchifs");
 
                        iface->nh_reachable = (iface->flags & IFF_UP) &&
-                           (LINK_STATE_IS_UP(ifm.ifm_data.ifi_link_state) ||
-                           (ifm.ifm_data.ifi_link_state ==
-                           LINK_STATE_UNKNOWN &&
-                           ifm.ifm_data.ifi_type != IFT_CARP));
+                           LINK_STATE_IS_UP(ifm.ifm_data.ifi_link_state);
                        break;
                case RTM_NEWADDR:
                        ifam = (struct ifa_msghdr *)rtm;
Index: usr.sbin//ospfd/interface.c
===================================================================
RCS file: /cvs/src/usr.sbin/ospfd/interface.c,v
retrieving revision 1.73
diff -u -p -r1.73 interface.c
--- usr.sbin//ospfd/interface.c 21 Jun 2011 17:31:07 -0000      1.73
+++ usr.sbin//ospfd/interface.c 3 Jul 2011 17:27:21 -0000
@@ -339,9 +339,7 @@ if_act_start(struct iface *iface)
        struct timeval           now;
 
        if (!((iface->flags & IFF_UP) &&
-           (LINK_STATE_IS_UP(iface->linkstate) ||
-           (iface->linkstate == LINK_STATE_UNKNOWN &&
-           iface->media_type != IFT_CARP))))
+           LINK_STATE_IS_UP(iface->linkstate)))
                return (0);
 
        if (iface->media_type == IFT_CARP && iface->passive == 0) {
Index: usr.sbin//ospfd/kroute.c
===================================================================
RCS file: /cvs/src/usr.sbin/ospfd/kroute.c,v
retrieving revision 1.89
diff -u -p -r1.89 kroute.c
--- usr.sbin//ospfd/kroute.c    12 Jan 2011 15:07:46 -0000      1.89
+++ usr.sbin//ospfd/kroute.c    3 Jul 2011 17:25:02 -0000
@@ -842,9 +842,7 @@ kif_update(u_short ifindex, int flags, s
                if ((kif = kif_insert(ifindex)) == NULL)
                        return (NULL);
                kif->k.nh_reachable = (flags & IFF_UP) &&
-                   (LINK_STATE_IS_UP(ifd->ifi_link_state) ||
-                   (ifd->ifi_link_state == LINK_STATE_UNKNOWN &&
-                   ifd->ifi_type != IFT_CARP));
+                   LINK_STATE_IS_UP(ifd->ifi_link_state);
        }
 
        kif->k.flags = flags;
@@ -986,9 +984,7 @@ if_change(u_short ifindex, int flags, st
        }
 
        reachable = (kif->flags & IFF_UP) &&
-           (LINK_STATE_IS_UP(kif->link_state) ||
-           (kif->link_state == LINK_STATE_UNKNOWN &&
-           kif->media_type != IFT_CARP));
+           LINK_STATE_IS_UP(kif->link_state);
 
        if (reachable == kif->nh_reachable)
                return;         /* nothing changed wrt nexthop validity */
Index: usr.sbin//ospfd/ospfe.c
===================================================================
RCS file: /cvs/src/usr.sbin/ospfd/ospfe.c,v
retrieving revision 1.82
diff -u -p -r1.82 ospfe.c
--- usr.sbin//ospfd/ospfe.c     9 May 2011 12:24:41 -0000       1.82
+++ usr.sbin//ospfd/ospfe.c     3 Jul 2011 17:27:05 -0000
@@ -296,10 +296,7 @@ ospfe_dispatch_main(int fd, short event,
                                fatalx("IFINFO imsg with wrong len");
                        kif = imsg.data;
                        link_ok = (kif->flags & IFF_UP) &&
-                           (LINK_STATE_IS_UP(kif->link_state) ||
-                           (kif->link_state == LINK_STATE_UNKNOWN &&
-                           kif->media_type != IFT_CARP));
-
+                           LINK_STATE_IS_UP(kif->link_state);
 
                        LIST_FOREACH(area, &oeconf->area_list, entry) {
                                LIST_FOREACH(iface, &area->iface_list, entry) {
@@ -860,17 +857,10 @@ orig_rtr_lsa(struct area *area)
                        /*
                         * do not add a stub net LSA for interfaces that are:
                         *  - down
-                        *  - have a linkstate which is down and are not carp
-                        *  - have a linkstate unknown and are carp
-                        * carp uses linkstate down for backup and unknown
-                        * in cases where a major fubar happend.
+                        *  - have a linkstate which is down
                         */
                        if (!(iface->flags & IFF_UP) ||
-                           (iface->media_type != IFT_CARP &&
-                           !(LINK_STATE_IS_UP(iface->linkstate) ||
-                           iface->linkstate == LINK_STATE_UNKNOWN)) ||
-                           (iface->media_type == IFT_CARP &&
-                           iface->linkstate == LINK_STATE_UNKNOWN))
+                           !LINK_STATE_IS_UP(iface->linkstate))
                                continue;
                        log_debug("orig_rtr_lsa: stub net, "
                            "interface %s", iface->name);
Index: usr.sbin//ripd/interface.c
===================================================================
RCS file: /cvs/src/usr.sbin/ripd/interface.c,v
retrieving revision 1.10
diff -u -p -r1.10 interface.c
--- usr.sbin//ripd/interface.c  21 Jun 2011 17:31:07 -0000      1.10
+++ usr.sbin//ripd/interface.c  3 Jul 2011 17:31:05 -0000
@@ -180,9 +180,7 @@ if_act_start(struct iface *iface)
        }
 
        if (!((iface->flags & IFF_UP) &&
-           (LINK_STATE_IS_UP(iface->linkstate) ||
-           (iface->linkstate == LINK_STATE_UNKNOWN &&
-           iface->media_type != IFT_CARP)))) {
+           LINK_STATE_IS_UP(iface->linkstate))) {
                log_debug("if_act_start: interface %s link down",
                    iface->name);
                return (0);
Index: usr.sbin//ripd/kroute.c
===================================================================
RCS file: /cvs/src/usr.sbin/ripd/kroute.c,v
retrieving revision 1.23
diff -u -p -r1.23 kroute.c
--- usr.sbin//ripd/kroute.c     26 Jun 2011 19:19:23 -0000      1.23
+++ usr.sbin//ripd/kroute.c     3 Jul 2011 17:31:59 -0000
@@ -669,9 +669,7 @@ if_change(u_short ifindex, int flags, st
        kif->k.baudrate = ifd->ifi_baudrate;
 
        if ((reachable = (flags & IFF_UP) &&
-           (LINK_STATE_IS_UP(ifd->ifi_link_state) ||
-           (ifd->ifi_link_state == LINK_STATE_UNKNOWN &&
-           ifd->ifi_type != IFT_CARP))) == kif->k.nh_reachable)
+           LINK_STATE_IS_UP(ifd->ifi_link_state)) == kif->k.nh_reachable)
                return;         /* nothing changed wrt nexthop validity */
 
        kif->k.nh_reachable = reachable;
@@ -989,9 +987,7 @@ fetchifs(int ifindex)
                kif->k.baudrate = ifm.ifm_data.ifi_baudrate;
                kif->k.mtu = ifm.ifm_data.ifi_mtu;
                kif->k.nh_reachable = (kif->k.flags & IFF_UP) &&
-                   (LINK_STATE_IS_UP(ifm.ifm_data.ifi_link_state) ||
-                   (ifm.ifm_data.ifi_link_state == LINK_STATE_UNKNOWN &&
-                   ifm.ifm_data.ifi_type != IFT_CARP));
+                   LINK_STATE_IS_UP(ifm.ifm_data.ifi_link_state);
                if ((sa = rti_info[RTAX_IFP]) != NULL)
                        if (sa->sa_family == AF_LINK) {
                                sdl = (struct sockaddr_dl *)sa;
Index: usr.sbin//ripd/ripe.c
===================================================================
RCS file: /cvs/src/usr.sbin/ripd/ripe.c,v
retrieving revision 1.13
diff -u -p -r1.13 ripe.c
--- usr.sbin//ripd/ripe.c       26 May 2010 13:56:08 -0000      1.13
+++ usr.sbin//ripd/ripe.c       3 Jul 2011 17:30:51 -0000
@@ -257,9 +257,7 @@ ripe_dispatch_main(int fd, short event, 
                                fatalx("IFINFO imsg with wrong len");
                        kif = imsg.data;
                        link_ok = (kif->flags & IFF_UP) &&
-                           (LINK_STATE_IS_UP(kif->link_state) ||
-                           (kif->link_state == LINK_STATE_UNKNOWN &&
-                           kif->media_type != IFT_CARP));
+                           LINK_STATE_IS_UP(kif->link_state);
 
                        LIST_FOREACH(iface, &oeconf->iface_list, entry) {
                                if (kif->ifindex == iface->ifindex) {
Index: usr.sbin//snmpd/mib.c
===================================================================
RCS file: /cvs/src/usr.sbin/snmpd/mib.c,v
retrieving revision 1.44
diff -u -p -r1.44 mib.c
--- usr.sbin//snmpd/mib.c       10 Apr 2011 03:20:59 -0000      1.44
+++ usr.sbin//snmpd/mib.c       3 Jul 2011 17:34:00 -0000
@@ -958,14 +958,14 @@ mib_iftable(struct oid *oid, struct ber_
                break;
        case 8:
                /* ifOperStatus */
-               if ((kif->if_flags & IFF_UP) == 0) {
+               if ((kif->if_flags & IFF_UP) == 0)
                        i = 2;  /* down(2) */
-               } else if (LINK_STATE_IS_UP(kif->if_link_state)) {
+               else if (kif->if_link_state == LINK_STATE_UNKNOWN)
+                       i = 4;  /* unknown(4) */
+               else if (LINK_STATE_IS_UP(kif->if_link_state))
                        i = 1;  /* up(1) */
-               } else if (kif->if_link_state == LINK_STATE_DOWN) {
+               else
                        i = 7;  /* lowerLayerDown(7) or dormant(5)? */
-               } else
-                       i = 4;  /* unknown(4) */
                ber = ber_add_integer(ber, i);
                break;
        case 9:

Reply via email to