Linux 内核 IPv4 和 IPv6 套接字创建:EPROTONOSUPPORT 和 ESOCKTNOSUPPORT



我正在尝试了解IPv4套接字和IPv6套接字Linux内核实现。

两种方法inet_create()inet6_create()看起来很像。 他们都可以EPROTONOSUPPORTESOCKTNOSUPPORT返回用户空间,我想知道在什么情况下会发生这种情况。

ESOCKTNOSUPPORT表示所选协议不支持套接字类型。例如,您无法使用IPPROTO_IP创建SOCK_SEQPACKET。根据 ip(7( 手册页, 只有SOCK_STREAMSOCK_DGRAMSOCK_RAW是有效的 ip 套接字类型。

EPROTONOSUPPORT表示不支持所选的套接字协议。例如,如果您要求AF_INET6并且系统管理员已通过将模块列入黑名单来禁用 IPv6。

最新更新