В настоящее время я создаю кроссплатформенную библиотеку на C, которая работает с IP-адресами. Поэтому я подумал, что мог бы использовать типы in_addr
и in_addr6
для представления значений, так как казалось, что они будут вполне переносимыми.
Но похоже, что структура in_addr6
не определена в <netinet/in.h>
в моей установке Ubuntu 18.04.1 (Подсистема Windows для Linux).
Я не получаю результатов, когда ищу в заголовках 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
в другом заголовке? (Догадаюсь нет, так как grep -rnw '/usr/include/' -e 'in_addr6'
не дает результатов)
- Почему структура in_addr6 не определена в моей установке Ubuntu?
- Когда вы можете ожидать, что будет определен in_addr6 (например: другие дистрибутивы или когда Ubuntu не установлен как WSL)?