= nng_sockaddr(5) // // Copyright 2018 Staysail Systems, Inc. // Copyright 2018 Capitar IT Group BV // // This document is supplied under the terms of the MIT License, a // copy of which should be located in the distribution where this // file was obtained (LICENSE.txt). A copy of the license may also be // found online at https://opensource.org/licenses/MIT. // == NAME nng_sockaddr - socket address == SYNOPSIS [source, c] ---- #include 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 (((socket, address)))(((address, socket))) 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 xref:nng_pipe.5.adoc[`nng_pipe`] than of xref:nng_socket.5.adoc[`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: [horizontal] `NNG_AF_UNSPEC`:: Invalid address, no other valid fields. `NNG_AF_INPROC`:: Address for intraprocess communication (xref:nng_inproc.7.adoc[nng_inproc(7)]). The `s_inproc` member is valid. `NNG_AF_IPC`:: Address for interprocess communication (xref:nng_ipc.7.adoc[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 (xref:nng_zerotier.7.adoc[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. == SEE ALSO [.text-left] xref:nng_sockaddr_abstract.5.adoc[nng_sockaddr_abstract(5)], xref:nng_sockaddr_in.5.adoc[nng_sockaddr_in(5)], xref:nng_sockaddr_in6.5.adoc[nng_sockaddr_in6(5)], xref:nng_sockaddr_inproc.5.adoc[nng_sockaddr_inproc(5)], xref:nng_sockaddr_ipc.5.adoc[nng_sockaddr_ipc(5)], xref:nng_sockaddr_zt.5.adoc[nng_sockaddr_zt(5)], xref:nng.7.adoc[nng(7)]