diff --git a/src/get_interface.c b/src/get_interface.c index 048ad80..8caf2f0 100644 --- a/src/get_interface.c +++ b/src/get_interface.c @@ -15,12 +15,15 @@ int get_interface_name(struct host *host) for (pcap_if_t *it = alldevs; it != NULL; it = it->next) { if (!(it->flags & PCAP_IF_LOOPBACK)) { - struct sockaddr_in *tmp = - (struct sockaddr_in *)it->addresses->addr; strcpy(host->interface, it->name); - strcpy(host->ip, inet_ntoa(tmp->sin_addr)); - pcap_freealldevs(alldevs); - return 0; + for (pcap_addr_t *a = it->addresses; a != NULL; a = a->next) { + if (a->addr && a->addr->sa_family == AF_INET) { // Only IPv4 + struct sockaddr_in *sa = (struct sockaddr_in *)a->addr; + strcpy(host->ip, inet_ntoa(sa->sin_addr)); + pcap_freealldevs(alldevs); + return 0; + } + } } }