Skip to content

Latest commit

 

History

History
88 lines (72 loc) · 2.91 KB

nng_sockaddr.5.adoc

File metadata and controls

88 lines (72 loc) · 2.91 KB

nng_sockaddr(5)

NAME

nng_sockaddr - socket address

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_abstract s_abstract;
} 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,
    NNG_AF_ABSTRACT = 6
};

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 NNG, 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.

NNG_AF_ABSTRACT

Address for an abstract UNIX domain socket. The s_abstract member is valid.

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