summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Becker <chemobejk@gmail.com>2019-06-26 12:00:21 +0300
committerStefan Becker <chemobejk@gmail.com>2019-06-27 19:52:07 +0300
commit0245565e056b7a919d92033eada4c090ebc436e9 (patch)
treeecc442a84537d9faf4e685a01b99e3b746c51a9a
parentac4149c356dd98c6e576a2caae22603f723f5ade (diff)
downloadlibnice-0245565e056b7a919d92033eada4c090ebc436e9.tar.gz
interfaces: ignore non-running interfaces
Check for IFF_UP and IFF_RUNNING flags on the interface.
-rw-r--r--agent/interfaces.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/agent/interfaces.c b/agent/interfaces.c
index f8bb086..3bfae3e 100644
--- a/agent/interfaces.c
+++ b/agent/interfaces.c
@@ -266,6 +266,10 @@ nice_interfaces_get_local_ips (gboolean include_loopback)
if ((ifa->ifa_flags & IFF_UP) == 0)
continue;
+ /* no ip address from interface that isn't running */
+ if ((ifa->ifa_flags & IFF_RUNNING) == 0)
+ continue;
+
if (ifa->ifa_addr == NULL)
continue;
@@ -360,6 +364,15 @@ nice_interfaces_get_local_ips (gboolean include_loopback)
" Skipping...", ifr->ifr_name);
continue; /* failed to get flags, skip it */
}
+
+ /* no ip address from interface that is down */
+ if ((ifr->ifr_flags & IFF_UP) == 0)
+ continue;
+
+ /* no ip address from interface that isn't running */
+ if ((ifr->ifr_flags & IFF_RUNNING) == 0)
+ continue;
+
sa = (struct sockaddr_in *) &ifr->ifr_addr;
nice_debug ("Interface: %s", ifr->ifr_name);
nice_debug ("IP Address: %s", inet_ntoa (sa->sin_addr));