#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,
};
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.
The name sockaddr
is based on its similarity with POSIX struct sockaddr
,
but in the nng library, these addresses are more closely affiliated with
instances of nng_pipe
than of nng_socket
.
The naming confusion is unfortunate.
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.