C - pcap_findalldevs для отображения всех интерфейсов застрял в бесконечном цикле - PullRequest
0 голосов
/ 22 апреля 2020

Я работаю в C с библиотекой pcap и пытаюсь создать функцию, которая будет печатать все интерфейсы.

Для этой цели я использую функцию pcap_findalldevs, однако, когда я пытаюсь напечатать имена и описания в a для l oop, печать продолжается вечно и печатает только «любое» для имени и «псевдоустройство, которое захватывает все интерфейсы» для описания.

код:

char errbuff[PCAP_ERRBUF_SIZE];
pcap_if_t *interface_list;

if(pcap_findalldevs(&interface_list, errbuff) == PCAP_ERROR){
    fprintf(stderr, "Could not list all interfaces: %s", errbuff);
    return ERR;
}

pcap_if_t *interface;
for(interface = interface_list; interface != NULL; interface = interface_list->next){
    printf("Name: %s (%s)\n",
           interface->name, interface->description);
}

pcap_freealldevs(interface_list);

Есть ли ошибка, которую я пропускаю, или это совершенно неправильно?

1 Ответ

0 голосов
/ 22 апреля 2020

В вашей инструкции "for" вы используете переменную "interface_list" вместо "interface" для доступа к полю "next".

Правильное использование должно быть "for (interface = interface_list; interface! = NULL; интерфейс = интерфейс -> следующий) {"

...