Reputation: 5390
I am currently building a cross-platform library in C that works with IP-addresses. So I thought that I could use the types in_addr
and in_addr6
to represent the values since it looked like they would be quite portable.
But it seems like the in_addr6
struct is not defined in <netinet/in.h>
in my installation of Ubuntu 18.04.1 (Windows Subsystem for Linux).
I get no results when I search the headers for in_addr6
the following way:
robin@ROBIN-PC:/usr/include/netinet$ grep -rnw '/usr/include/netinet' -e 'in_addr6'
If I search for in_addr
I get multiple results:
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 */
This raises some questions for me:
in_addr6
struct defined in another header? (Would guess no since grep -rnw '/usr/include/' -e 'in_addr6'
yields no results)Upvotes: 1
Views: 699
Reputation: 5390
The struct in_addr6
is specific to Windows. The struct
in6_addr
is available in Windows, Linux and macOS and should be used for portable libraries.
Upvotes: 2