bind - Bind a name to a socket
#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 compatibility (see standards(5)):
int bind(
int socket,
struct sockaddr *address,
int address_len );
Interfaces documented on this reference page conform to
industry standards as follows:
bind(): XNS4.0, XNS5.0
Refer to the standards(5) reference page for more information
about industry standards and associated tags.
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_storage
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 specifying 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.
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 created, 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 parameters.
An application program can retrieve the assigned socket
name with the getsockname() function.
The socket in use may require that the process have appropriate
privileges 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 identical to those made by the
open() function when creating a new file.
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.
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 protected 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 pathname 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 pathname 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.
Functions: connect(2), getsockname(2), listen(2),
socket(2).
Standards: standards(5).
Network Programmer's Guide
System Configuration and Tuning
bind(2)
[ Back ] |