IPv4 and IPv6 Interoperability
IPv4 client, IPv6 server over dual-stack server host
IPv6 client over dual-stack client host, IPv4 server
IPv6 address macro, function and option
Source code portability
IPv6 Address Macro, Function, Option
IPv6 address testing macros:
IN6_IS_ADDR_* (e.g. V4MAPPED)
Protocol independent socket address functions:
sock_* (e.g. cmp_addr) (section 3.8)
IPv6_ADDRFORM socket option:
change a socket type between IPv4 and IPv6, by setsockopt function with IPv6_ADDRFORM option
Source Code Portability
Automatic program conversion from IPv4 to IPv6 (sockaddr_in, AF_INET, etc) and #ifdef to use IPv6 when possible
Deal with socket address structures as opaque objects:
remove gethostbyname and gethostbyaddr, use getaddrinfo and getnameinfo (which use #ifdef internally)