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

时间:2018-08-16 13:15:42

标签: sockets linux-kernel ipv6 network-protocols ipv4

我试图了解IPv4 socketIPv6 socket Linux内核的实现。

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

1 个答案:

答案 0 :(得分:2)

ESOCKTNOSUPPORT表示所选协议不支持套接字类型。例如,您无法使用SOCK_SEQPACKET创建一个IPPROTO_IP。根据{{​​3}},只有SOCK_STREAMSOCK_DGRAMSOCK_RAW是ip的有效套接字类型。

ip(7) man page表示不支持所选的套接字协议。例如,如果您要求AF_INET6且系统管理员已通过将该模块列入黑名单而禁用了IPv6。