为什么 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_addrin_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 */

这给我带来了一些问题:

结构 in_addr6 特定于 Windows。结构 in6_addr 在 Windows、Linux 和 macOS 中可用,应该用于可移植库。