mirror of https://github.com/F-Stack/f-stack.git
Support IPPROTO_IPV6
f-stack中缺乏对`IPPROTO_IPV6`协议相关选项`IPV6_V6ONLY`的支持;无法在ipv6兼容ipv4场景进行网络通信。调用setsockopt时会出现失败。
This commit is contained in:
parent
64362bc1ac
commit
d428f7900c
|
@ -94,6 +94,8 @@
|
||||||
#define LINUX_IP_ADD_MEMBERSHIP 35
|
#define LINUX_IP_ADD_MEMBERSHIP 35
|
||||||
#define LINUX_IP_DROP_MEMBERSHIP 36
|
#define LINUX_IP_DROP_MEMBERSHIP 36
|
||||||
|
|
||||||
|
#define LINUX_IPV6_V6ONLY 26
|
||||||
|
|
||||||
#define LINUX_TCP_NODELAY 1
|
#define LINUX_TCP_NODELAY 1
|
||||||
#define LINUX_TCP_MAXSEG 2
|
#define LINUX_TCP_MAXSEG 2
|
||||||
#define LINUX_TCP_KEEPIDLE 4
|
#define LINUX_TCP_KEEPIDLE 4
|
||||||
|
@ -383,6 +385,17 @@ ip_opt_convert(int optname)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
ip6_opt_convert(int optname)
|
||||||
|
{
|
||||||
|
switch(optname) {
|
||||||
|
case LINUX_IPV6_V6ONLY:
|
||||||
|
return IPV6_V6ONLY;
|
||||||
|
default:
|
||||||
|
return optname;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
tcp_opt_convert(int optname)
|
tcp_opt_convert(int optname)
|
||||||
{
|
{
|
||||||
|
@ -414,6 +427,8 @@ linux2freebsd_opt(int level, int optname)
|
||||||
return so_opt_convert(optname);
|
return so_opt_convert(optname);
|
||||||
case IPPROTO_IP:
|
case IPPROTO_IP:
|
||||||
return ip_opt_convert(optname);
|
return ip_opt_convert(optname);
|
||||||
|
case IPPROTO_IPV6:
|
||||||
|
return ip6_opt_convert(optname);
|
||||||
case IPPROTO_TCP:
|
case IPPROTO_TCP:
|
||||||
return tcp_opt_convert(optname);
|
return tcp_opt_convert(optname);
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue