fix: get src addr

This commit is contained in:
Starnakin 2025-05-26 15:14:12 +02:00
parent 3213a56d1b
commit ae924173d0

View File

@ -15,14 +15,17 @@ int get_interface_name(struct host *host)
for (pcap_if_t *it = alldevs; it != NULL; it = it->next) { for (pcap_if_t *it = alldevs; it != NULL; it = it->next) {
if (!(it->flags & PCAP_IF_LOOPBACK)) { if (!(it->flags & PCAP_IF_LOOPBACK)) {
struct sockaddr_in *tmp =
(struct sockaddr_in *)it->addresses->addr;
strcpy(host->interface, it->name); strcpy(host->interface, it->name);
strcpy(host->ip, inet_ntoa(tmp->sin_addr)); 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); pcap_freealldevs(alldevs);
return 0; return 0;
} }
} }
}
}
dprintf(2, "No non-loopback interface found.\n"); dprintf(2, "No non-loopback interface found.\n");
return -1; return -1;