Как использовать pcap_stats в libpcap? - PullRequest
0 голосов
/ 04 июня 2010

Я добавил следующую функцию в код сниффекса (http://www.tcpdump.org/sniffex.c):

typedef struct pcap_stat mystat;

mystat * mystatp;

/* Put the interface in statstics mode */
if(pcap_stats(handle, mystatp) < 0)
{
    fprintf(stderr,"\nError setting the mode.\n");
    pcap_close(handle);
    /* Free the device list */
    return;
}

Код Sniffex работает нормально для меня - но как только я добавляю этот код, я получаю сообщение об ошибке сегментации:

Может кто-нибудь помочь мне?

Спасибо за тонну.

1 Ответ

2 голосов
/ 07 июня 2010

Полагаю, вы забыли выделить память для mystat.

Попробуйте это:

typedef struct pcap_stat mystat;

...

mystat actualStat; /* allocate memory for mystat on stack - you can also do it on the heap by malloc-ing */
mystat *mystatp = &actualStat; /* use allocated memory */

/* Put the interface in statistics mode */
if(pcap_stats(handle, mystatp) < 0)
{
    fprintf(stderr,"\nError setting the mode.\n");
    pcap_close(handle);
    /* Free the device list */
    return;
}

В Pcap.Net Я использую pcap_stats_ex(), но, вероятно, он доступен только в WinPcap, а не в libpcap.

...