我正在实现基于原始套接字的代码。为了接收即将到来的以太网帧,我必须将我创建的套接字绑定到以太网接口。就我而言,唯一的方法是通过带有选项 SO_BINDTODEVICE 的 setsockopt() 函数。
问题是我正在使用不支持此类选项的 FreeBSD。是否有任何补丁可用于启用此功能或任何其他受信任的替代方案?
我正在实现基于原始套接字的代码。为了接收即将到来的以太网帧,我必须将我创建的套接字绑定到以太网接口。就我而言,唯一的方法是通过带有选项 SO_BINDTODEVICE 的 setsockopt() 函数。
问题是我正在使用不支持此类选项的 FreeBSD。是否有任何补丁可用于启用此功能或任何其他受信任的替代方案?
sendto
如果您正在使用 IPv6,则可以使用,请参阅此示例。不幸的是,这不适用于 IPv4。
正如 antiduh 所说,您可以使用 libpcap 来捕获数据包,前提是您可以访问/dev/bpf
(通常仅限于root
)。