bind(2)bind(2)NAMEbind - Bind a name to a socket
SYNOPSIS
#include <sys/socket.h>
int bind(
int socket,
const struct sockaddr *address,
socklen_t address_len );
[XNS4.0] The definition of the accept() function in XNS4.0 uses a a
size_t data type instead of socklen_t data type as specified in XNS5.0
(the previous definition).
[Tru64 UNIX] The following definition of the bind() function does not
conform to current standards and is supported only for backward compat‐
ibility (see standards(5)): int bind(
int socket,
struct sockaddr *address,
int address_len );
STANDARDS
Interfaces documented on this reference page conform to industry stan‐
dards as follows:
bind(): XNS4.0, XNS5.0
Refer to the standards(5) reference page for more information about
industry standards and associated tags.
PARAMETERS
Specifies the socket descriptor of the socket to be bound. Points to a
sockaddr structure, the format of which is determined by the domain and
by the behavior requested for the socket. The sockaddr structure is an
overlay for a sockaddr_in, sockaddr_un, sockaddr_in6, or sockaddr_stor‐
age structure, depending on which of the supported address families is
active.
[Tru64 UNIX] If the compile-time option _SOCKADDR_LEN is
defined before the sys/socket.h header file is included, the
sockaddr structure takes 4.4BSD behavior, with a field for spec‐
ifying the length of the socket address. Otherwise, the default
4.3BSD sockaddr structure is used, with the length of the socket
address assumed to be 14 bytes or less.
If _SOCKADDR_LEN is defined, the 4.3BSD sockaddr structure is
defined with the name osockaddr. Specifies the length of the
sockaddr structure pointed to by the address parameter.
DESCRIPTION
The bind() function assigns an address to an unnamed socket. Sockets
created with the socket() function are unnamed; they are identified
only by their address family.
A bind that references a UNIX domain socket (AF_UNIX) causes a socket
file to be created in the filesystem. By default, the sockets are cre‐
ated, like regular files and directories, with the following mode set:
0777 &~ umask
If the insecure_bind kernel tuning parameter is set to a value other
than zero (0), umask is ignored and new UNIX domain sockets are created
with mode 0777 only. The insecure_bind parameter can be set by using
either the dxkerneltuner utility or the /sbin/sysconfigdb utility. See
System Configuration and Tuning for more information on tuning parame‐
ters.
An application program can retrieve the assigned socket name with the
getsockname() function.
The socket in use may require that the process have appropriate privi‐
leges to use the bind() function.
Security Note
[Tru64 UNIX] If you have enhanced security installed on your system,
the bind() function operates as follows:
A bind that references a UNIX domain socket causes a socket file to be
created in the filesystem. The access checks that are made are identi‐
cal to those made by the open() function when creating a new file.
RETURN VALUES
Upon successful completion, the bind() function returns a value of 0
(zero). If the bind() function fails, a value of -1 is returned and
errno is set to indicate the error.
ERRORS
If the bind() function fails, errno may be set to one of the following
values: The requested address is protected and the current user does
not have permission to access it.
For an AF_UNIX socket, a component of the path prefix is pro‐
tected and you cannot search it, or the requested name requires
writing in a directory with a mode that denies write permission.
The specified address is already in use. The specified address
is not available from the local machine. The specified address
is invalid for the address family of the specified socket. The
socket parameter is not valid. For an AF_UNIX socket, the
address argument is a null pointer. The address parameter is
not in a readable part of the user address space. The socket is
already bound to an address and the protocol does not support
binding to a new address; the socket has been shut down; or the
length or the address_len argument is invalid for the address
family. For an AF_UNIX socket, an I/O error occurred. The
socket is already connected. The address argument is a null
pointer. For an AF_UNIX socket, too many symbolic links were
encountered in translating the pathname in address. A component
of the pathname exceeded NAME_MAX characters, or an entire path‐
name exceeded PATH_MAX characters. Insufficient resources were
available in the system to complete the call. For an AF_UNIX
socket, a component of the pathname does not name an existing
file or the pathname is an empty string. The available STREAMS
resources were insufficient for the operation to complete. For
an AF_UNIX socket, a component of the path prefix of the path‐
name in address is not a directory. The socket parameter refers
to a file, not a socket. The socket type of the specified
socket does not support binding to an address. For an AF_UNIX
socket, the name would reside on a read-only filesystem.
SEE ALSO
Functions: connect(2), getsockname(2), listen(2), socket(2).
Standards: standards(5).
Network Programmer's Guide
System Configuration and Tuning
bind(2)