如何刷新原始AF_PACKET套接字以获取正确的已过滤数据包

问题描述

sock = socket(AF_PACKET,SOCK_RAW,htons(ETH_P_ALL));
setsockopt(sock,SOL_SOCKET,SO_ATTACH_FILTER,&f,sizeof (f)) 

使用这个简单的BPF / LPF附加代码,当我尝试在套接字上接收数据包时,将得到一些与过滤器不匹配的错误数据包。似乎这些数据包在我调用setsockopt()之前就已经进入套接字了。

似乎应该先创建AF_PACKET SOCK_RAW套接字,然后附加过滤器,然后刷新套接字以清除那些错误的数据包。

所以问题是,如何清除那些数据包?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)