我在一个项目中看到了这种代码:
while (1)
{
l_numPkts = pcap_next_ex( m_pcapHandle, &header, &pkt_data);
//do something
memcpy(dst,pkt_data,size);
}
pcap_next_ex 返回后,数据包状态将设置为 TP_STATUS_KERNEL,表示该 buf 已返回内核。代码:
/* next packet */
switch (handle->md.tp_version) {
case TPACKET_V1:
h.h1->tp_status = TP_STATUS_KERNEL;
..
在某些高速环境下,会不会出现内存问题?
使用 pcap_next / pcap_next_ex 的正确方法是什么?