I need to collect all the interface names, even the ones that aren't up at the moment. Like ifconfig -a
.
getifaddrs()
is iterating through same interface name multiple times. How can I collect all the interface names just once using getifaddrs()
?
You could check which entries from getifaddrs belong to the AF_PACKET family. On my system that seems to list all interfaces:
struct ifaddrs *addrs,*tmp;
getifaddrs(&addrs);
tmp = addrs;
while (tmp)
{
if (tmp->ifa_addr && tmp->ifa_addr->sa_family == AF_PACKET)
printf("%s\n", tmp->ifa_name);
tmp = tmp->ifa_next;
}
freeifaddrs(addrs);