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