Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
return NULL;
/* Skip until we are at the input family address of interface */
return NULL;
/* Skip until we are at the input family address of interface */
+ for (addrp = ifaddr; addrp != NULL; addrp = addrp->ifa_next) {
+ if (strncmp(addrp->ifa_name, interface, interface_len) != 0) {
+ /* The interface does not have the right name, skip it. */
+ continue;
+ }
- (addrp != NULL &&
- (strncmp(addrp->ifa_name, interface, interface_len) != 0 ||
- addrp->ifa_addr == NULL ||
- addrp->ifa_addr->sa_family != family));
+ if (addrp->ifa_addr != NULL && addrp->ifa_addr->sa_family == family) {
+ /* We found the right interface with the right address. */
+ break;
+ }
- addrp = addrp->ifa_next) {
- /* Check if the interface is down */
- if (strncmp(addrp->ifa_name, interface, interface_len) != 0)
- continue;
- found = true;
+ /* Check if the interface is down. If it is, no need to look any
+ * further. */
if ((addrp->ifa_flags & IFF_RUNNING) == 0) {
freeifaddrs(ifaddr);
return NULL;
}
if ((addrp->ifa_flags & IFF_RUNNING) == 0) {
freeifaddrs(ifaddr);
return NULL;
}