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: