From fac05bf4e8368ddf8fa43f97d199c7a486441d1d Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Wed, 21 Jul 2010 11:01:37 +0200 Subject: Bugfix: Correctly check for interface up/down-status (Thanks docsteel) --- src/print_ip_addr.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/print_ip_addr.c b/src/print_ip_addr.c index e719d2f..1c2839d 100644 --- a/src/print_ip_addr.c +++ b/src/print_ip_addr.c @@ -22,6 +22,7 @@ const char *get_ip_addr(const char *interface) { memset(part, 0, sizeof(part)); struct ifaddrs *ifaddr, *addrp; + bool found = false; getifaddrs(&ifaddr); @@ -40,8 +41,10 @@ const char *get_ip_addr(const char *interface) { addrp = addrp->ifa_next) { /* Check if the interface is down */ - if (strcmp(addrp->ifa_name, interface) == 0 && - (addrp->ifa_flags & IFF_RUNNING) == 0) { + if (strcmp(addrp->ifa_name, interface) != 0) + continue; + found = true; + if ((addrp->ifa_flags & IFF_RUNNING) == 0) { freeifaddrs(ifaddr); return NULL; } @@ -49,7 +52,7 @@ const char *get_ip_addr(const char *interface) { if (addrp == NULL) { freeifaddrs(ifaddr); - return "no IP"; + return (found ? "no IP" : NULL); } int ret; -- cgit v1.2.3