SYNOPSIS
#include <nng/nng.h>
typedef union nng_sockaddr {
    uint16_t            s_family;
    nng_sockaddr_ipc    s_ipc;
    nng_sockaddr_inproc s_inproc;
    nng_sockaddr_in     s_in;
    nng_sockaddr_in6    s_in6;
    nng_sockaddr_zt     s_zt;
} nng_sockaddr;
enum sockaddr_family {
    NNG_AF_UNSPEC = 0,
    NNG_AF_INPROC = 1,
    NNG_AF_IPC    = 2,
    NNG_AF_INET   = 3,
    NNG_AF_INET6  = 4,
    NNG_AF_ZT     = 5,
};
DESCRIPTION
An nng_sockaddr is a structure used for
representing the addresses used by underlying transports, such as TCP/IP
addresses, IPC paths, and so forth.
This structure is actually a union, with different members for different types of addresses.
Every member structure has as its first element a uint16_t field
containing the “address family”.
This overlaps the s_family member of the union, and indicates which
specific member should be used.
The values of s_family are as follows:
NNG_AF_UNSPEC
 | 
 Invalid address, no other valid fields.  | 
NNG_AF_INPROC
 | 
 Address for intraprocess communication (nng_inproc(7)).  The   | 
NNG_AF_IPC
 | 
 Address for interprocess communication (nng_ipc(7)).  The   | 
NNG_AF_INET
 | 
 Address for TCP/IP (v4) communication.  The   | 
NNG_AF_INET6
 | 
 Address for TCP/IP (v6) communication.  The   | 
NNG_AF_ZT
 | 
 Address for ZeroTier transport (nng_zerotier(7)).  The   | 
Please see the manual pages for each individual type for more information.