diff options
author | Joachim Wiberg <troglobit@gmail.com> | 2022-12-30 13:07:50 +0100 |
---|---|---|
committer | Joachim Wiberg <troglobit@gmail.com> | 2022-12-30 13:07:50 +0100 |
commit | 4296f30d3f36fc062586de189900bab365dbb96a (patch) | |
tree | 72c57530106496da5d3d255d170a37083c092b63 /src | |
parent | 36e96bfce52fdbcff944d1f9f519677fc0d3b172 (diff) | |
download | libnet-4296f30d3f36fc062586de189900bab365dbb96a.tar.gz |
src: alllow returning lo when dev i set also on Linux and OpenBSD
The other (older) implementations of libnet_ifaddrlist() explicitly
check if dev is unset before discarding any loopback interface.
This patch adds the same behavior to the Linux and OpeBSD backends
for consistency.
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/libnet_if_addr.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/libnet_if_addr.c b/src/libnet_if_addr.c index acd2dbc..b07ca74 100644 --- a/src/libnet_if_addr.c +++ b/src/libnet_if_addr.c @@ -119,8 +119,6 @@ libnet_ifaddrlist(struct libnet_ifaddr_list **ipaddrp, char *dev, char *errbuf) struct ifaddrs *ifap, *ifa; size_t nipaddr = 0; - (void)dev; /* unused */ - if (getifaddrs(&ifap) != 0) { snprintf(errbuf, LIBNET_ERRBUF_SIZE, "%s(): getifaddrs: %s", __func__, strerror(errno)); @@ -138,10 +136,10 @@ libnet_ifaddrlist(struct libnet_ifaddr_list **ipaddrp, char *dev, char *errbuf) { struct libnet_ifaddr_list *al = &ifaddrlist[nipaddr]; - if (ifa->ifa_flags & IFF_LOOPBACK || ifa->ifa_addr == NULL) + if (dev == NULL && (ifa->ifa_flags & IFF_LOOPBACK)) continue; - if (ifa->ifa_addr->sa_family != AF_INET) + if (ifa->ifa_addr == NULL || ifa->ifa_addr->sa_family != AF_INET) continue; al->device = strdup(ifa->ifa_name); |