aboutsummaryrefslogtreecommitdiffstats
path: root/man7/unix.7
diff options
context:
space:
mode:
Diffstat (limited to 'man7/unix.7')
-rw-r--r--man7/unix.7367
1 files changed, 8 insertions, 359 deletions
diff --git a/man7/unix.7 b/man7/unix.7
index 3f66b37427..631a99c5a8 100644
--- a/man7/unix.7
+++ b/man7/unix.7
@@ -1,359 +1,8 @@
-.\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
-.\" Permission is granted to distribute possibly modified copies
-.\" of this page provided the header is included verbatim,
-.\" and in case of nontrivial modification author and date
-.\" of the modification is added to the header.
-.\"
-.\" Modified, 2003-12-02, Michael Kerrisk, <mtk.manpages@gmail.com>
-.\" Modified, 2003-09-23, Adam Langley
-.\" Modified, 2004-05-27, Michael Kerrisk, <mtk.manpages@gmail.com>
-.\" Added SOCK_SEQPACKET
-.\" 2008-05-27, mtk, Provide a clear description of the three types of
-.\" address that can appear in the sockaddr_un structure: pathname,
-.\" unnamed, and abstract.
-.\"
-.TH UNIX 7 2008-06-17 "Linux" "Linux Programmer's Manual"
-.SH NAME
-unix, PF_UNIX, AF_UNIX, PF_LOCAL, AF_LOCAL \- Sockets for local
-interprocess communication
-.SH SYNOPSIS
-.B #include <sys/socket.h>
-.br
-.B #include <sys/un.h>
-
-.IB unix_socket " = socket(PF_UNIX, type, 0);"
-.br
-.IB error " = socketpair(PF_UNIX, type, 0, int *" sv ");"
-.SH DESCRIPTION
-The
-.B PF_UNIX
-(also known as
-.BR PF_LOCAL )
-socket family is used to communicate between processes on the same machine
-efficiently.
-Traditionally, Unix sockets can be either unnamed,
-or bound to a file system pathname (marked as being of type socket).
-Linux also supports an abstract namespace which is independent of the
-file system.
-
-Valid types are:
-.BR SOCK_STREAM ,
-for a stream-oriented socket and
-.BR SOCK_DGRAM ,
-for a datagram-oriented socket that preserves message boundaries
-(as on most Unix implementations, Unix domain datagram
-sockets are always reliable and don't reorder datagrams);
-and (since Linux 2.6.4)
-.BR SOCK_SEQPACKET ,
-for a connection-oriented socket that preserves message boundaries
-and delivers messages in the order that they were sent.
-
-Unix sockets support passing file descriptors or process credentials
-to other processes using ancillary data.
-.SS Address Format
-A Unix domain socket address is represented in the following structure:
-.in +4n
-.nf
-
-#define UNIX_PATH_MAX 108
-
-struct sockaddr_un {
- sa_family_t sun_family; /* AF_UNIX */
- char sun_path[UNIX_PATH_MAX]; /* pathname */
-};
-.fi
-.in
-.PP
-.I sun_family
-always contains
-.BR AF_UNIX .
-
-Three types of address are distinguished in this structure:
-.IP * 3
-.IR pathname :
-a Unix domain socket can be bound to a null-terminated file
-system pathname using
-.BR bind (2).
-When the address of the socket is returned by
-.BR getsockname (2),
-.BR getpeername (2),
-and
-.BR accept (2),
-its length is
-.IR "sizeof(sa_family_t) + strlen(sun_path) + 1" ,
-and
-.I sun_path
-contains the null-terminated pathname.
-.IP *
-.IR unnamed :
-A stream socket that has not been bound to a pathname using
-.BR bind (2)
-has no name.
-Likewise, the two sockets created by
-.BR socketpair (2)
-are unnamed.
-When the address of an unnamed socket is returned by
-.BR getsockname (2),
-.BR getpeername (2),
-and
-.BR accept (2),
-its length is
-.IR "sizeof(sa_family_t)" ,
-and
-.I sun_path
-should not be inspected.
-.\" There is quite some variation across implementations: FreeBSD
-.\" says the length is 16 bytes, HP-UX 11 says it's zero bytes.
-.IP *
-.IR abstract :
-an abstract socket address is distinguished by the fact that
-.IR sun_path[0]
-is a null byte ('\\0').
-All of the remaining bytes in
-.I sun_path
-define the "name" of the socket.
-(Null bytes in the name have no special significance.)
-The name has no connection with file system pathnames.
-The socket's address in this namespace is given by the rest of the
-bytes in
-.IR sun_path .
-When the address of an abstract socket is returned by
-.BR getsockname (2),
-.BR getpeername (2),
-and
-.BR accept (2),
-its length is
-.IR "sizeof(struct sockaddr_un)" ,
-and
-.I sun_path
-contains the abstract name.
-The abstract socket namespace is a non-portable Linux extension.
-.SS Socket Options
-For historical reasons these socket options are specified with a
-.B SOL_SOCKET
-type even though they are
-.B PF_UNIX
-specific.
-They can be set with
-.BR setsockopt (2)
-and read with
-.BR getsockopt (2)
-by specifying
-.B SOL_SOCKET
-as the socket family.
-.TP
-.B SO_PASSCRED
-Enables the receiving of the credentials of the sending process
-ancillary message.
-When this option is set and the socket is not yet connected
-a unique name in the abstract namespace will be generated automatically.
-Expects an integer boolean flag.
-.SS (Un)supported Features
-The following paragraphs describe domain-specific details and
-unsupported features of the sockets API for Unix domain sockets on Linux.
-
-Unix domain sockets do not support the transmission of
-out-of-band data (the
-.B MSG_OOB
-flag for
-.BR send (2)
-and
-.BR recv (2)).
-
-The
-.BR send (2)
-.B MSG_MORE
-flag is not supported by Unix domain sockets.
-
-The
-.B SO_SNDBUF
-socket option does have an effect for Unix domain sockets, but the
-.B SO_RCVBUF
-option does not.
-For datagram sockets, the
-.B SO_SNDBUF
-value imposes an upper limit on the size of outgoing datagrams.
-This limit is calculated as the doubled (see
-.BR socket (7))
-option value less 32 bytes used for overhead.
-.SS Ancillary Messages
-Ancillary data is sent and received using
-.BR sendmsg (2)
-and
-.BR recvmsg (2).
-For historical reasons the ancillary message types listed below
-are specified with a
-.B SOL_SOCKET
-type even though they are
-.B PF_UNIX
-specific.
-To send them set the
-.I cmsg_level
-field of the struct
-.I cmsghdr
-to
-.B SOL_SOCKET
-and the
-.I cmsg_type
-field to the type.
-For more information see
-.BR cmsg (3).
-.TP
-.B SCM_RIGHTS
-Send or receive a set of open file descriptors from another process.
-The data portion contains an integer array of the file descriptors.
-The passed file descriptors behave as though they have been created with
-.BR dup (2).
-.TP
-.B SCM_CREDENTIALS
-Send or receive Unix credentials.
-This can be used for authentication.
-The credentials are passed as a
-.I struct ucred
-ancillary message.
-
-.in +4n
-.nf
-struct ucred {
- pid_t pid; /* process ID of the sending process */
- uid_t uid; /* user ID of the sending process */
- gid_t gid; /* group ID of the sending process */
-};
-.fi
-.in
-
-The credentials which the sender specifies are checked by the kernel.
-A process with effective user ID 0 is allowed to specify values that do
-not match its own.
-The sender must specify its own process ID (unless it has the capability
-.BR CAP_SYS_ADMIN ),
-its user ID, effective user ID, or saved set-user-ID (unless it has
-.BR CAP_SETUID ),
-and its group ID, effective group ID, or saved set-group-ID
-(unless it has
-.BR CAP_SETGID ).
-To receive a
-.I struct ucred
-message the
-.B SO_PASSCRED
-option must be enabled on the socket.
-.SH ERRORS
-.TP
-.B EADDRINUSE
-Selected local address is already taken or file system socket
-object already exists.
-.TP
-.B ECONNREFUSED
-.BR connect (2)
-called with a socket object that isn't listening.
-This can happen when
-the remote socket does not exist or the filename is not a socket.
-.TP
-.B ECONNRESET
-Remote socket was unexpectedly closed.
-.TP
-.B EFAULT
-User memory address was not valid.
-.TP
-.B EINVAL
-Invalid argument passed.
-A common cause is the missing setting of AF_UNIX
-in the
-.I sun_type
-field of passed addresses or the socket being in an
-invalid state for the applied operation.
-.TP
-.B EISCONN
-.BR connect (2)
-called on an already connected socket or a target address was
-specified on a connected socket.
-.TP
-.B ENOMEM
-Out of memory.
-.TP
-.B ENOTCONN
-Socket operation needs a target address, but the socket is not connected.
-.TP
-.B EOPNOTSUPP
-Stream operation called on non-stream oriented socket or tried to
-use the out-of-band data option.
-.TP
-.B EPERM
-The sender passed invalid credentials in the
-.IR "struct ucred" .
-.TP
-.B EPIPE
-Remote socket was closed on a stream socket.
-If enabled, a
-.B SIGPIPE
-is sent as well.
-This can be avoided by passing the
-.B MSG_NOSIGNAL
-flag to
-.BR sendmsg (2)
-or
-.BR recvmsg (2).
-.TP
-.B EPROTONOSUPPORT
-Passed protocol is not PF_UNIX.
-.TP
-.B EPROTOTYPE
-Remote socket does not match the local socket type
-.RB ( SOCK_DGRAM
-vs.
-.BR SOCK_STREAM )
-.TP
-.B ESOCKTNOSUPPORT
-Unknown socket type.
-.PP
-Other errors can be generated by the generic socket layer or
-by the file system while generating a file system socket object.
-See the appropriate manual pages for more information.
-.SH VERSIONS
-.B SCM_CREDENTIALS
-and the abstract namespace were introduced with Linux 2.2 and should not
-be used in portable programs.
-(Some BSD-derived systems also support credential passing,
-but the implementation details differ.)
-.SH NOTES
-In the Linux implementation, sockets which are visible in the
-file system honor the permissions of the directory they are in.
-Their owner, group and their permissions can be changed.
-Creation of a new socket will fail if the process does not have write and
-search (execute) permission on the directory the socket is created in.
-Connecting to the socket object requires read/write permission.
-This behavior differs from many BSD-derived systems which
-ignore permissions for Unix sockets.
-Portable programs should not rely on
-this feature for security.
-
-Binding to a socket with a filename creates a socket
-in the file system that must be deleted by the caller when it is no
-longer needed (using
-.BR unlink (2)).
-The usual Unix close-behind semantics apply; the socket can be unlinked
-at any time and will be finally removed from the file system when the last
-reference to it is closed.
-
-To pass file descriptors or credentials over a
-.BR SOCK_STREAM ,
-you need
-to send or receive at least one byte of non-ancillary data in the same
-.BR sendmsg (2)
-or
-.BR recvmsg (2)
-call.
-
-Unix domain stream sockets do not support the notion of out-of-band data.
-.SH EXAMPLE
-See
-.BR bind (2).
-.SH "SEE ALSO"
-.BR recvmsg (2),
-.BR sendmsg (2),
-.BR socket (2),
-.BR socketpair (2),
-.BR cmsg (3),
-.BR capabilities (7),
-.BR credentials (7),
-.BR socket (7)
+.TH UNIX 7 2008-08-07 "Linux" "Linux Programmer's Manual"
+.TH UNIX 7 2008-08-07 "Linux" "Linux Programmer's Manual"
+.TH UNIX 7 2008-08-07 "Linux" "Linux Programmer's Manual"
+.TH UNIX 7 2008-08-07 "Linux" "Linux Programmer's Manual"
+.TH UNIX 7 2008-08-07 "Linux" "Linux Programmer's Manual"
+.TH UNIX 7 2008-08-07 "Linux" "Linux Programmer's Manual"
+.TH UNIX 7 2008-08-07 "Linux" "Linux Programmer's Manual"
+.TH UNIX 7 2008-08-07 "Linux" "Linux Programmer's Manual"