This documentation is for version v1.3.0 of NNG, but the latest released version is v1.8.0. see the documentation for v1.8.0 for the most up-to-date information.

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.

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 s_inproc member is valid.

NNG_AF_IPC

Address for interprocess communication (nng_ipc(7)). The s_path member is valid.

NNG_AF_INET

Address for TCP/IP (v4) communication. The s_in member is valid.

NNG_AF_INET6

Address for TCP/IP (v6) communication. The s_in6 member is valid.

NNG_AF_ZT

Address for ZeroTier transport (nng_zerotier(7)). The s_zt member is valid.

Please see the manual pages for each individual type for more information.