【发布时间】:2020-01-16 22:35:28
【问题描述】:
我正在使用libpcap 处理 PCAP 文件,查找 IP 标头,提取某些内容,移动到 udp/tcp 并提取某些内容等等。
pcap_dispatch() 将数据包推送到定义为的回调:
typedef void (*pcap_handler)(u_char *user, const struct pcap_pkthdr *h, const u_char *bytes);
如果我正确阅读手册页,上面的bytes 是一个指针,指向来自数据包的caplen 字节数据,其中caplen 在struct pcap_pkthdr * 中。
这是否意味着,pcap_handler 例程需要维护数据包缓冲区指针的末尾,并在移动 bytes 指针之前始终检查?
或者,我会在pcap_handler 内分配缓冲区:
u_char *pktbuf = malloc(h->caplen);
它会保证边界。
在pcap_dispatch() 或pcap_loop() 中处理 pcap 的正确方法通常是什么?
【问题讨论】:
标签: linux network-programming pcap libpcap