编写 OS X 内核扩展以实现 Linux 的 SO_BINDTODEVICE 套接字选项

Writing an OS X kernel extension to implement Linux's SO_BINDTODEVICE socket option

提问人:Dor 提问时间:9/16/2012 更新时间:4/2/2015 访问量:1079

问:

我希望能够强制套接字通过特定的网络接口。在 Linux 中,内核允许程序员通过设置所述套接字选项来实现这一点 - 但在 OS X 中,我一无所知。

因此,我的标题问题 - 这可能吗?已经完成了吗?我不是在考虑重新实现 IP 堆栈,只是启用绑定到接口选项的使用。

c macOS 网络 驱动程序 内核扩展

评论

3赞 Nikolai Fetissov 9/16/2012
带有特定接口地址的标准不适合您?bind(2)
0赞 Victor Ronin 12/17/2013
@NikolaiNFetissov:您能详细说明一下bind(2)吗?这是 API、命令行实用程序还是其他东西?
0赞 Victor Ronin 12/17/2013
@Dor:你能弄清楚吗?
1赞 Nikolai Fetissov 12/17/2013
阅读手册 - .它是与网络相关的基本系统调用之一。man 2 bind
0赞 Dor 1/24/2014
bind() 对我没有任何好处,因为系统不保证调用会将套接字绑定到特定接口 - 而只能绑定到特定地址。

答:

-1赞 cabo 4/2/2015 #1

使用 RFC 3542 接口选择传出接口 (IPV6_PKTINFO)。https://www.rfc-editor.org/rfc/rfc3542#section-6