Я пытаюсь найти адрес устройства в моем компьютере.Пока мне удалось получить список устройств (с помощью pcap_findalldevs), но я не могу понять, как добраться до этих адресов.Я видел эту man-страницу - http://www.tcpdump.org/pcap3_man.html, где написано что-то вроде этого
адресует указатель на первый элемент списка адресов для интерфейса
И тогда это
Каждый элемент списка адресов имеет тип pcap_addr_t и имеет следующие члены:
Итак, у меня есть этот код
pcap_if_t *alldevsp , *device;
char *devname , **devs;
int count = 1 , n;
if(pcap_findalldevs(&alldevsp, errbuf))
{
printf("Error: %s" , errbuf);
exit(1);
}
device = alldevsp;
pcap_addr_t list;
printf("\nDevices:\n");
while(device != NULL)
{
printf("%d. %s - %s", count++ , device->name , device->description);
list = device->addresses[0];
printf("address: %s\n",(char *) inet_ntoa(list.addr));
device = device->next;
}
Компиляция в порядке, но когда я пытаюсь ее запустить, я получаю следующее:
Устройства: 1. адреса eth0 - (null): 144.208.30.8 2. адреса wlan0 - (null):128.213.30.8 Ошибка сегментации
Я могу понять, что segfault, поскольку третье устройство - это usb, и у него нет адреса, но эти IP для eth0 и wlan0 неверны, они не совпадают.
Что я делаю не так?