我试图了解IPv4 socket和IPv6 socket Linux内核的实现。
两种方法
inet_create()
和
inet6_create()
看起来非常相似。
他们俩都可以返回用户空间EPROTONOSUPPORT
或ESOCKTNOSUPPORT
,我想知道在什么情况下会发生这种情况。
答案 0 :(得分:2)
ESOCKTNOSUPPORT
表示所选协议不支持套接字类型。例如,您无法使用SOCK_SEQPACKET
创建一个IPPROTO_IP
。根据{{3}},只有SOCK_STREAM
,SOCK_DGRAM
和SOCK_RAW
是ip的有效套接字类型。
ip(7) man page表示不支持所选的套接字协议。例如,如果您要求AF_INET6
且系统管理员已通过将该模块列入黑名单而禁用了IPv6。