This documentation is for the TIP (development tree) of NNG and may represent unreleased changes or functionality that is experimental, and is subject to change before release. The latest released version is v1.3.2. See the documentation for v1.3.2 for the most up-to-date information.



nng_sockaddr_in6 - IPv6 socket address


#include <nng/nng.h>

enum sockaddr_family {
    NNG_AF_INET6 = 4,

typedef struct {
    uint16_t sa_family;
    uint16_t sa_port;
    uint8_t  sa_addr[16];
    uint32_t sa_scope;
} nng_sockaddr_in6;


An nng_sockaddr_in6 is the flavor of nng_sockaddr used to represent TCP (and sometimes UDP) addresses, including the Internet Protocol (IP) address and port number.

This structure is used with IPv6 addresses. A different structure, nng_sockaddr_in, is used for IPv4 addresses.

The following structure members are present:


This field will always have the value NNG_AF_INET6.


This field holds the TCP or UDP port number, in network byte-order. A zero value here is used when no specific port number is indicated.


This field holds the IP address in network-byte order.


This is the scope, and is typically used with link local addresses to identify a specific interface. The details of this are specific to the operating system. This value is presented identically to the underlying system’s, including any byte order considerations.

The sa_port and sa_addr fields are in network-byte order to facilitate their use with system APIs such as inet_ntop(). Most platforms use some form of BSD-derived network API, which uses network-byte order in the various structures (such as sockaddr_in6).
This field appears similar to BSD sockaddr_in6, but it is not the same, and they may not be used interchangeably.