tst_addr_and_pro_family - IPv6 Address Family and Protocol Family
Check IPv6 Address' size and structure
./tst_addr_and_pro_family [-tooloption ...] -tooloption : v6api tool option
1. Check IPv6 Address' size 2. Check IPv6 Address' structure
None
RFC 3493
3.2 IPv6 Address Structure
A new in6_addr structure holds a single IPv6 address and is defined as a result of including <netinet/in.h>:
struct in6_addr { uint8_t s6_addr[16]; \* IPv6 address *\ };
This data structure contains an array of sixteen 8-bit elements, which make up one 128-bit IPv6 address. The IPv6 address is stored in network byte order.
The structure in6_addr above is usually implemented with an embedded union with extra fields that force the desired alignment level in a manner similar to BSD implementations of "struct in_addr". Those additional implementation details are omitted here for simplicity.
An example is as follows:
struct in6_addr { union { uint8_t _S6_u8[16]; uint32_t _S6_u32[4]; uint64_t _S6_u64[2]; } _S6_un; }; #define s6_addr _S6_un._S6_u8