C 使用数据包MMAP过滤数据包?

C 使用数据包MMAP过滤数据包?,c,linux,networking,filtering,low-level,C,Linux,Networking,Filtering,Low Level,我使用packet_mmap来捕获系统中的所有数据包,但是似乎没有任何方法可以干扰操作系统的其他部分获取数据包。我希望能够对进入userland的数据包拥有独占控制权,并决定它们是进入系统中的其他应用程序,还是被丢弃,这样我就可以根据标准过滤数据包 有什么方法可以做到这一点吗?我似乎找不到关于这个特定主题的任何文档。我想我想要的是能够从IP堆栈中删除所有传入的数据包,这样其他程序就不会得到它们,然后能够逐个数据包重新插入数据包。你不能用数据包套接字做你想做的事-它们不是为这个目的而设计的 您需要

我使用packet_mmap来捕获系统中的所有数据包,但是似乎没有任何方法可以干扰操作系统的其他部分获取数据包。我希望能够对进入userland的数据包拥有独占控制权,并决定它们是进入系统中的其他应用程序,还是被丢弃,这样我就可以根据标准过滤数据包


有什么方法可以做到这一点吗?我似乎找不到关于这个特定主题的任何文档。我想我想要的是能够从IP堆栈中删除所有传入的数据包,这样其他程序就不会得到它们,然后能够逐个数据包重新插入数据包。

你不能用
数据包
套接字做你想做的事-它们不是为这个目的而设计的


您需要使用的是一个iptables规则,它将所有传入的数据包定向到您的队列。

这是零拷贝设计吗?如果没有,是否有零拷贝版本?不管怎样,谢谢您的回复。我接受了您的回答,但最终发现使用
netdev\u rx\u handler\u register()
注册处理程序以过滤数据包更有效。