summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/print_ip_addr.c9
1 files changed, 6 insertions, 3 deletions
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;