【发布时间】:2015-01-16 07:37:07
【问题描述】:
我在 Ubuntu 14.10 上使用 netfilter 队列。到目前为止一切正常,我正在查看数据包并设置判决,但我想更好地了解我从队列中读取的内容。
从此page开始。
这是有问题的代码:
fd = nfq_fd(h);
while ((rv = recv(fd, buf, sizeof(buf), 0)) >= 0)
{
printf("pkt received\n");
nfq_handle_packet(h, buf, rv);
}
在他们拥有printf() 的地方,从 fd 中究竟读取了什么?我假设它是某种特定于 netfilter 的标头前面的数据包,但我不知道该标头是什么。我正在查看我正在读取的字节的转储,但我在其中的任何地方都没有看到有效的 L2、L3 或 L4。
请注意,根据文档,我确实使用此行将队列设置为复制模式:
nfq_set_mode(qh, NFQNL_COPY_PACKET, 0xffff);
【问题讨论】: