From: Vincent Bernat Date: Sun, 30 Dec 2012 11:22:21 +0000 (+0100) Subject: interfaces: correctly detect link down interfaces X-Git-Tag: 0.7.0~23 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c258a053f9bb7e717ea0e4e5fde76cbaeb06d04b;p=thirdparty%2Flldpd.git interfaces: correctly detect link down interfaces An interface can be administratively up and operationally down. Handle this as a down interface. --- diff --git a/src/daemon/interfaces-bsd.c b/src/daemon/interfaces-bsd.c index d22153a2..c157aa2c 100644 --- a/src/daemon/interfaces-bsd.c +++ b/src/daemon/interfaces-bsd.c @@ -336,7 +336,7 @@ ifbsd_extract(struct lldpd *cfg, struct interfaces_device *device = NULL; if (!ifaddr->ifa_name) return; if (!ifaddr->ifa_addr) return; - if (!(ifaddr->ifa_flags & IFF_UP)) { + if (!((ifaddr->ifa_flags & IFF_UP) && (ifaddr->ifa_flags & IFF_RUNNING))) { log_debug("interfaces", "skip %s: down", ifaddr->ifa_name); return; diff --git a/src/daemon/netlink.c b/src/daemon/netlink.c index 12006f64..439483ce 100644 --- a/src/daemon/netlink.c +++ b/src/daemon/netlink.c @@ -131,7 +131,7 @@ netlink_parse_link(struct nlmsghdr *msg, ifi = NLMSG_DATA(msg); len = msg->nlmsg_len - NLMSG_LENGTH(sizeof(struct ifinfomsg)); - if (!(ifi->ifi_flags & IFF_UP)) { + if (!((ifi->ifi_flags & IFF_UP) && (ifi->ifi_flags & IFF_RUNNING))) { log_debug("netlink", "skip down interface at index %d", ifi->ifi_index); return -1;