= nng_sockaddr_ipc(5)
//
// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// 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_ipc - IPC socket address

== SYNOPSIS

[source, c]
----
#include <nng/nng.h>

enum sockaddr_family {
    NNG_AF_IPC = 2,
};

typedef struct {
    uint16_t sa_family;
    uint16_t sa_path[128];
} nng_sockaddr_ipc;
----

== DESCRIPTION

(((socket, address, IPC)))
An `nng_sockaddr_ipc` is the flavor of xref:nng_sockaddr.5.adoc[`nng_sockaddr`]
used to represent addresses associated with IPC communication
using the xref:nng_ipc.7.adoc[_ipc_] transport.

The following structure members are present:

`sa_family`::
    This field will always have the value ((`NNG_AF_IPC`)).

`sa_path`::
    This field holds the C string corresponding to path name where the
    IPC socket is located.
    For systems using UNIX domain sockets, this will be an absolute
    path name in the file system, where the UNIX domain socket is located.
    For Windows systems, this is the path name of the Named Pipe, without
    the leading `\\.pipe\` portion, which will be automatically added.

NOTE: At this time, there is no support for Linux abstract sockets.

TIP: In order to ensure maximum compatibility, applications should avoid
hard coding the size of the `sa_path` member explicitly, but use the
`sizeof` operator to determine its actual size at compile time.
Furthermore, the size is guaranteed to be at least 128, but paths of
this length may not be supported on all systems.

NOTE: If compatibility with legacy _nanomsg_ applications is required,
then pathnames must not be longer than 122 bytes, including the final
`NUL` byte.
This is because legacy versions of _nanomsg_ cannot express URLs
longer than 128 bytes, including the `ipc://` prefix.

== SEE ALSO

[.text-left]
xref:nng_sockaddr.5.adoc[nng_sockaddr(5)],
xref:nng_ipc.7.adoc[nng_ipc(7)]
xref:nng.7.adoc[nng(7)]
