From c258a053f9bb7e717ea0e4e5fde76cbaeb06d04b Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Sun, 30 Dec 2012 12:22:21 +0100 Subject: [PATCH] interfaces: correctly detect link down interfaces An interface can be administratively up and operationally down. Handle this as a down interface. --- src/daemon/interfaces-bsd.c | 2 +- src/daemon/netlink.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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; -- 2.39.5