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:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user