For IPv6 communications, create an AF_INET6 socket and pass it a sockaddr_in6 structure that contains an IPv6 address that is
not an IPv4-mapped IPv6 address (for example, 2fee:1212::200:2bff:fe2d:0c2c). The diagram below shows the sequence of events
for an application that uses an AF_INET6 socket to send IPv6 packets.
Application
calls getaddrinfo() and passes the host name (host6), the IPv6 AF_INET6 address family hint, and the AI_DEFAULT flag hint. The flag hint tells the function to find an IPv6 address for host6, then return it if found. See getaddrinfo(3) for a description of hints fields and values.
The search finds an IPv6 address for host6 in the hosts database, then getaddrinfo returns the IPv6 address 2fee:1212::200:2bff:fe2d:0c2c.
The application opens an AF_INET6 socket.
The application sends information to the 2fee:1212::200:2bff:fe2d:0c2c address.
The socket layer passes the information and address
to the UDP module.
The UDP module identifies the IPv6 address and
puts the 2fee:1212::200:2bff:fe2d:0c2c address into the packet header and passes the information
to the IPv6 module for transmission.