An interface can be administratively up and operationally down. Handle
this as a down interface.
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;
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;