---
name: "nng_sockaddr"
section: "5"
platform: "linux"
package: "libnng-dev"
version: "1.10.1-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/nng_sockaddr"
---

# nng\_sockaddr(5)

socket address

## 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)](/nng_inproc/7.md)).  The `s_inproc` member is valid.

`NNG_AF_IPC`

Address for interprocess communication ([nng\_ipc(7)](/nng_ipc/7.md)).  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)](/nng_zerotier/7.md)).  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

[nng\_sockaddr\_abstract(5)](/nng_sockaddr_abstract/5.md), [nng\_sockaddr\_in(5)](/nng_sockaddr_in/5.md), [nng\_sockaddr\_in6(5)](/nng_sockaddr_in6/5.md), [nng\_sockaddr\_inproc(5)](/nng_sockaddr_inproc/5.md), [nng\_sockaddr\_ipc(5)](/nng_sockaddr_ipc/5.md), [nng\_sockaddr\_zt(5)](/nng_sockaddr_zt/5.md), [nng(7)](/nng/7.md)
