"<sys/un.h>">

NAME

sys/un.h — definitions for UNIX domain sockets

SYNOPSIS

#include <sys/un.h>

DESCRIPTION

The <sys/un.h> header shall define the sockaddr_un structure, which shall include at least the following members:

sa_family_t  sun_family      Address family.
char         sun_path[size]  Socket pathname storage.

The sun_path member shall be the last member of the sockaddr_un structure, where size shall be an implementation-provided constant size of at least 92 bytes. This size value need not be accessible as a constant available for use in the application namespace.

The sockaddr_un structure is used to store addresses for UNIX domain sockets. Pointers to this type shall be cast by applications to struct sockaddr * for use with socket functions.

The <sys/un.h> header shall define the sa_family_t type as described in <sys/socket.h>.


The following sections are informative.

APPLICATION USAGE

The size of sun_path is required to be constant, but intentionally does not have a specified name for that constant. Historically, different implementations used different sizes. For example, 4.3 BSD used a size of 108, and 4.4 BSD used a size of 104. Since most implementations originate from BSD versions, the size is typically in the range 92 to 108. An application can deduce the size by using sizeof(((struct sockaddr_un *)0)->sun_path).

Applications should not assume a particular length for sun_path or assume that it can hold {_POSIX_PATH_MAX} bytes (256).

Although applications are required to initialize all members (including any non-standard ones) of a sockaddr_in6 structure (see <netinet/in.h> ), the same is not required for the sockaddr_un structure, since historically many applications only initialized the standard members. Despite this, applications are encouraged to initialize sockaddr_un structures in a manner similar to the required initialization of sockaddr_in6 structures.

RATIONALE

Some implementations expose a macro SUN_LEN for the size of a pathname stored in sun_path. However, this was not widely adopted, and differences on how a terminating null byte is interpreted between implementations did not make it worth standardizing.

FUTURE DIRECTIONS

None.

SEE ALSO

<netinet/in.h> , <sys/socket.h>

XSH bind , socket , socketpair

CHANGE HISTORY

First released in Issue 6. Derived from the XNS, Issue 5.2 specification.

Issue 7

The value for {_POSIX_PATH_MAX} is updated to 256.

POSIX.1-2008, Technical Corrigendum 1, XBD/TC1-2008/0074 [355] is applied.

POSIX.1-2008, Technical Corrigendum 2, XBD/TC2-2008/0081 [934] is applied.

Issue 8

Austin Group Defect 561 is applied, changing the requirements for the sun_path member of the sockaddr_un structure.

End of informative text.