| Table 1 IPv4 vs. IPv6: sockets API structures and constants
|
|
|
|
|
|
| Feature
|
IPv4
|
IPv6
|
Comments
|
Protocol family.
First argument in socket().
|
AF_INET
PF_INET
|
AF_INET6
PF_INET6
|
Address and protocol families are used interchangeably
|
| Address family
|
AF_INET
|
AF_INET6
|
In sockaddr family field
|
| Inet address structure
|
struct sockaddr_in
|
struct sockaddr_in6
|
Note: sockaddr_in6 is larger than sockaddr
|
| Generic address structure
|
struct sockaddr
|
struct sockaddr_storage
|
Only when used to allocate storage
|
| IP address structure
|
struct in_addr
|
struct in6_addr
|
|
| Loopback address
|
INADDR_LOOPBACK
|
in6addr_loopback
IN6ADDR_LOOPBACK_INIT
|
Constant can only be used for structure initialization
|
| Wildcard address for binding listeners and receivers
|
|
in6addr_any
INADDR_ANY_INIT
|
Constant can only be
|
| Name to address
|
gethostbyname()
|
getaddrinfo()
|
|
| Address to name
|
gethostbyaddr()
|
getnameinfo()
|
|
| Free data structures returned by getaddrinfo()
|
|
freeaddrinfo()
|
getaddrinfo() is multithread safe
|
| Report errors
|
|
gai_strerror()
|
Errors from getaddrinfo() and getnameinfo()
|
| String to address
|
inet_addr()
|
inet_pton()
|
Added family parameter
|
| Address to string
|
inet_ntoa()
|
inet_ntop()
|
Added family parameter
|
| Socket option for TTL
|
IP_TTL
|
IPv6_UNICAST_HOPS
|
Set TTL/hop limit
|
| Get reserved port
|
rresvport()
|
rresvport_af()
|
Used by rcmd()
|
| Execute a command on a remote host
|
rcmd()
|
rcmd_af()
|
Added family parameter
|