struct ifaddrs *ifptr = NULL;
int total = 0;
- if (getifaddrs(&ifp) < 0) {
+ if (getifaddrs(&iflist) < 0) {
return -1;
}
ifptr != NULL && total < max_interfaces;
ifptr = ifptr->ifa_next) {
+ if (!ifptr->ifa_addr || !ifptr->ifa_netmask) {
+ continue;
+ }
+
/* Skip ipv6 for now. */
if (ifptr->ifa_addr->sa_family != AF_INET) {
continue;
((struct sockaddr_in *)ifptr->ifa_addr).sin_addr;
ifaces[total].iface_netmask.netmask =
- ((struct sockaddr_in *)ifptr->ifa_addr)->sin_addr;
+ ((struct sockaddr_in *)ifptr->ifa_netmask)->sin_addr;
strncpy(ifaces[total].name, ifptr->ifa_name,
sizeof(ifaces[total].name)-1);