相关疑难解决方法(0)

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

sock = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
setsockopt(sock, SOL_SOCKET, SO_ATTACH_FILTER, &f, sizeof (f)) 
Run Code Online (Sandbox Code Playgroud)

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

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

所以问题是,如何刷新这些数据包?

sockets linux ethernet raw-sockets bpf

5
推荐指数
1
解决办法
157
查看次数

标签 统计

bpf ×1

ethernet ×1

linux ×1

raw-sockets ×1

sockets ×1