Я пытаюсь скомпилировать простой пример Libpcap,ошибки запуск простого Libpcap примера
#include<stdio.h>
#include<pcap.h>
int main(int argc, char *argv[])
{
char *dev;
char errbuf[PCAP_ERRBUF_SIZE];
struct bpf_program fp;
char filter_exp[] = "port 23";
bpf_u_int32 mask;
bpf_u_int32 net;
dev = pcap_lookupdev(errbuf);
if (dev == NULL)
{
fprintf(stderr, "couldn't find default device: %s\n", errbuf);
return (2);
}
printf("Device: %s\n", dev);
//LOOKUP NETMASK and IP
if (pcap_lookupnet(dev, &net, &mask, errbuf) == -1)
{
fprintf(stderr, "can't get netmask for device %s\n", dev);
net = 0;
mask = 0;
}
printf("lookup\n");
pcap_t *handle;
printf("handle defined\n");
handle = pcap_open_live(dev, BUFSIZ, 1, 1000, errbuf);
printf("opened\n");
if (handle = NULL)
{
fprintf(stderr, "Couldn't open device %s: %s\n", dev, errbuf);
return (2);
}
printf("pcap_open\n");
if ((pcap_compile(handle, &fp, filter_exp, 1, net)) == -1)
{
printf("compile error block entered\n");
fprintf(stderr, "Couldn't parse filter %s: %s\n", filter_exp,
pcap_geterr(handle));
return (2);
}
printf("compiled\n");
if (pcap_setfilter(handle, &fp) == -1)
{
fprintf(stderr, "couldn't install filter %s: %s\n", filter_exp,
pcap_geterr(handle));
return (2);
}
printf("after filter\n");
return (0);
}
Он компилируется без ошибок, но когда я пытаюсь запустить его, я получаю сообщение об ошибке сегментации или если я пытаюсь чтобы запустить его с корнем разрешения, я не получаю сообщение, но программа останавливается после печати
Device: eth0
lookup
handle defined
opened
pcap_open
Можете ли вы помочь мне с этим, я запутался, почему происходит эта ошибка. Спасибо заранее.
Попробуйте отладить его, чтобы сузить проблему. –
Заголовок вопроса говорит «компиляция ошибок», но сам вопрос говорит «компилируется без ошибок». Возможно, вы захотите переосмыслить этот заголовок. –
@CarlNorum: OP может ссылаться на 'pcap_compile'? – alk