我正在尝试了解IPv4套接字和IPv6套接字Linux内核实现。
两种方法inet_create()
和inet6_create()
看起来很像。 他们都可以EPROTONOSUPPORT
或ESOCKTNOSUPPORT
返回用户空间,我想知道在什么情况下会发生这种情况。
ESOCKTNOSUPPORT
表示所选协议不支持套接字类型。例如,您无法使用IPPROTO_IP
创建SOCK_SEQPACKET
。根据 ip(7( 手册页, 只有SOCK_STREAM
、SOCK_DGRAM
和SOCK_RAW
是有效的 ip 套接字类型。
EPROTONOSUPPORT
表示不支持所选的套接字协议。例如,如果您要求AF_INET6
并且系统管理员已通过将模块列入黑名单来禁用 IPv6。