为什么 in_addr6 没有在 Ubuntu 18.04.1 的 netinet 中定义?
Why is in_addr6 not defined in netinet in Ubuntu 18.04.1?
我目前正在用 C 构建一个 cross-platform 库,该库与 IP-addresses 一起使用。所以我想我可以使用类型 in_addr
和 in_addr6
来表示值,因为它们看起来很便携。
但在我安装的 Ubuntu 18.04.1(Windows 子系统 Linux 中,<netinet/in.h>
中似乎未定义 in_addr6
结构).
当我按以下方式在 header 中搜索 in_addr6
时,我没有得到任何结果:
robin@ROBIN-PC:/usr/include/netinet$ grep -rnw '/usr/include/netinet' -e 'in_addr6'
如果我搜索 in_addr
,我会得到多个结果:
robin@ROBIN-PC:/usr/include/netinet$ grep -rnw '/usr/include/netinet' -e 'in_addr'
/usr/include/netinet/if_ether.h:90: /* struct in_addr *ipaddr; */ \
/usr/include/netinet/igmp.h:70: struct in_addr igmp_group; /* group address */
/usr/include/netinet/in.h:31:struct in_addr
/usr/include/netinet/in.h:241: struct in_addr sin_addr; /* Internet address. */
/usr/include/netinet/in.h:247: sizeof (struct in_addr)];
/usr/include/netinet/in.h:267: struct in_addr imr_multiaddr;
/usr/include/netinet/in.h:270: struct in_addr imr_interface;
/usr/include/netinet/in.h:276: struct in_addr imr_multiaddr;
/usr/include/netinet/in.h:279: struct in_addr imr_interface;
/usr/include/netinet/in.h:282: struct in_addr imr_sourceaddr;
/usr/include/netinet/in.h:326: struct in_addr imsf_multiaddr;
/usr/include/netinet/in.h:329: struct in_addr imsf_interface;
/usr/include/netinet/in.h:337: struct in_addr imsf_slist[1];
/usr/include/netinet/in.h:341: - sizeof (struct in_addr) \
/usr/include/netinet/in.h:342: + (numsrc) * sizeof (struct in_addr))
/usr/include/netinet/in.h:602:extern int getipv4sourcefilter (int __s, struct in_addr __interface_addr,
/usr/include/netinet/in.h:603: struct in_addr __group, uint32_t *__fmode,
/usr/include/netinet/in.h:604: uint32_t *__numsrc, struct in_addr *__slist)
/usr/include/netinet/in.h:608:extern int setipv4sourcefilter (int __s, struct in_addr __interface_addr,
/usr/include/netinet/in.h:609: struct in_addr __group, uint32_t __fmode,
/usr/include/netinet/in.h:611: const struct in_addr *__slist)
/usr/include/netinet/ip.h:128: struct in_addr ip_src, ip_dst; /* source and dest address */
/usr/include/netinet/ip_icmp.h:145: struct in_addr ih_gwaddr; /* gateway address */
这给我带来了一些问题:
- 是否在另一个header中定义了
in_addr6
结构? (会猜不,因为 grep -rnw '/usr/include/' -e 'in_addr6'
没有结果)
- 为什么 in_addr6 结构没有在我安装的 Ubuntu 中定义?
- 什么时候可以定义 in_addr6(例如:其他发行版或当 Ubuntu 未安装为 WSL 时)?
结构 in_addr6
特定于 Windows。结构
in6_addr
在 Windows、Linux 和 macOS 中可用,应该用于可移植库。
我目前正在用 C 构建一个 cross-platform 库,该库与 IP-addresses 一起使用。所以我想我可以使用类型 in_addr
和 in_addr6
来表示值,因为它们看起来很便携。
但在我安装的 Ubuntu 18.04.1(Windows 子系统 Linux 中,<netinet/in.h>
中似乎未定义 in_addr6
结构).
当我按以下方式在 header 中搜索 in_addr6
时,我没有得到任何结果:
robin@ROBIN-PC:/usr/include/netinet$ grep -rnw '/usr/include/netinet' -e 'in_addr6'
如果我搜索 in_addr
,我会得到多个结果:
robin@ROBIN-PC:/usr/include/netinet$ grep -rnw '/usr/include/netinet' -e 'in_addr'
/usr/include/netinet/if_ether.h:90: /* struct in_addr *ipaddr; */ \
/usr/include/netinet/igmp.h:70: struct in_addr igmp_group; /* group address */
/usr/include/netinet/in.h:31:struct in_addr
/usr/include/netinet/in.h:241: struct in_addr sin_addr; /* Internet address. */
/usr/include/netinet/in.h:247: sizeof (struct in_addr)];
/usr/include/netinet/in.h:267: struct in_addr imr_multiaddr;
/usr/include/netinet/in.h:270: struct in_addr imr_interface;
/usr/include/netinet/in.h:276: struct in_addr imr_multiaddr;
/usr/include/netinet/in.h:279: struct in_addr imr_interface;
/usr/include/netinet/in.h:282: struct in_addr imr_sourceaddr;
/usr/include/netinet/in.h:326: struct in_addr imsf_multiaddr;
/usr/include/netinet/in.h:329: struct in_addr imsf_interface;
/usr/include/netinet/in.h:337: struct in_addr imsf_slist[1];
/usr/include/netinet/in.h:341: - sizeof (struct in_addr) \
/usr/include/netinet/in.h:342: + (numsrc) * sizeof (struct in_addr))
/usr/include/netinet/in.h:602:extern int getipv4sourcefilter (int __s, struct in_addr __interface_addr,
/usr/include/netinet/in.h:603: struct in_addr __group, uint32_t *__fmode,
/usr/include/netinet/in.h:604: uint32_t *__numsrc, struct in_addr *__slist)
/usr/include/netinet/in.h:608:extern int setipv4sourcefilter (int __s, struct in_addr __interface_addr,
/usr/include/netinet/in.h:609: struct in_addr __group, uint32_t __fmode,
/usr/include/netinet/in.h:611: const struct in_addr *__slist)
/usr/include/netinet/ip.h:128: struct in_addr ip_src, ip_dst; /* source and dest address */
/usr/include/netinet/ip_icmp.h:145: struct in_addr ih_gwaddr; /* gateway address */
这给我带来了一些问题:
- 是否在另一个header中定义了
in_addr6
结构? (会猜不,因为grep -rnw '/usr/include/' -e 'in_addr6'
没有结果) - 为什么 in_addr6 结构没有在我安装的 Ubuntu 中定义?
- 什么时候可以定义 in_addr6(例如:其他发行版或当 Ubuntu 未安装为 WSL 时)?
结构 in_addr6
特定于 Windows。结构
in6_addr
在 Windows、Linux 和 macOS 中可用,应该用于可移植库。