From 4296f30d3f36fc062586de189900bab365dbb96a Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Fri, 30 Dec 2022 13:07:50 +0100 Subject: 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 --- src/libnet_if_addr.c | 6 ++---- 1 file 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); -- cgit v1.2.1