1
0
mirror of https://github.com/mfontanini/libtins synced 2026-01-23 02:35:57 +01:00

Fix issue considering an interface down when it's up

This commit is contained in:
Matias Fontanini
2016-03-27 08:21:05 -07:00
parent d80c27de29
commit 928e66eb27

View File

@@ -82,6 +82,7 @@ struct InterfaceInfoCollector {
if (addr->ifa_addr->sa_family == AF_LINK && addr_ptr->sdl_index == iface_id) { if (addr->ifa_addr->sa_family == AF_LINK && addr_ptr->sdl_index == iface_id) {
info->hw_addr = (const uint8_t*)LLADDR(addr_ptr); info->hw_addr = (const uint8_t*)LLADDR(addr_ptr);
found_hw = true; found_hw = true;
info->is_up = info->is_up || (addr->ifa_flags & IFF_UP);
} }
#else #else
#define TINS_BROADCAST_ADDR(addr) (addr->ifa_broadaddr) #define TINS_BROADCAST_ADDR(addr) (addr->ifa_broadaddr)
@@ -93,6 +94,7 @@ struct InterfaceInfoCollector {
if (addr->ifa_addr->sa_family == AF_PACKET && addr_ptr->sll_ifindex == iface_id) { if (addr->ifa_addr->sa_family == AF_PACKET && addr_ptr->sll_ifindex == iface_id) {
info->hw_addr = addr_ptr->sll_addr; info->hw_addr = addr_ptr->sll_addr;
found_hw = true; found_hw = true;
info->is_up = info->is_up || (addr->ifa_flags & IFF_UP);
} }
#endif #endif
else if (!std::strcmp(addr->ifa_name, iface_name)) { else if (!std::strcmp(addr->ifa_name, iface_name)) {
@@ -106,7 +108,6 @@ struct InterfaceInfoCollector {
else { else {
info->bcast_addr = 0; info->bcast_addr = 0;
} }
info->is_up = (addr->ifa_flags & IFF_UP);
found_ip = true; found_ip = true;
} }
else if (addr->ifa_addr->sa_family == AF_INET6) { else if (addr->ifa_addr->sa_family == AF_INET6) {