LINUX.ORG.RU

глюк с libpcap


0

2

всем привет. в отдельном потоке примаются пакеты по сети с помощью libpcap

вот код:

void got_packet(u_char *args,const struct pcap_pkthdr *header, const u_char *packet){
// obrabotka paketov
}
void ProcessingThread::run()
{
    char *dev, errbuf[PCAP_ERRBUF_SIZE];
    dev = pcap_lookupdev(errbuf);
    if (dev == NULL) {
                fprintf(stderr, "Couldn't find default device: %s\n", errbuf);
                //return(2);
            }
    printf("Device: %s\n", dev);
    //opening device
    handle = pcap_open_live(dev, BUFSIZ, 1, -1, errbuf);

    if(handle == NULL){
        fprintf(stderr, "Error: %s\n", errbuf);

    }

    pcap_loop(handle, -1, got_packet, NULL); //входим в петлю
    pcap_close(handle);

дело в том, что callback-функция got_packet не вызывается. когда прохожу в debug режиме, программа стопориться на pcap_loop-функции. в чем дело?


копмилю пример пользования библиотекой с интернета - тот же самое - виснет на pcap_loop

borya
() автор топика
Ответ на: комментарий от borya

под strace запустить пример? И да может ему рутовские права нужны?

pylin ★★★★★
()

После комментария «входим в петлю» я плакал. А вообще, почему бы не спросить на http://stackoverflow.com? Там шансов получить ответ в 100500 раз больше...

VladTheImpaler
()

лет десять назад баловался с этой либой. есть ощущение, что ты не указал что именно ловить нужно.

http://www.tcpdump.org/pcap.html (обрати внимание на pcap_setfilter pcap_compile)

Deleted
()
Ответ на: комментарий от Boy_from_Jungle

а как надо? с глюком разобрался - на компе было 2 адаптера, попробовал в другой воткнуть - заработало.

borya
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.