BIND(2) Linux Programmer's Manual BIND(2)
NAME
bind(2,n,1 builtins) - bind(2,n,1 builtins) a name to a socket(2,7,n)
SYNOPSIS
#include <sys/types.h>
#include <sys/socket.h>
int bind(2,n,1 builtins)(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
DESCRIPTION
bind(2,n,1 builtins) gives the socket(2,7,n) sockfd the local address my_addr. my_addr is
addrlen bytes long. Traditionally, this is called "assigning a name to
a socket." When a socket(2,7,n) is created with socket(2,7,n)(2), it exists in(1,8) a
name space (address family) but has no name assigned.
It is normally necessary to assign a local address using bind(2,n,1 builtins) before a
SOCK_STREAM socket(2,7,n) may receive connections (see accept(2,8)(2)).
The rules used in(1,8) name binding vary between address families. Consult
the manual entries in(1,8) Section 7 for detailed information. For AF_INET
see ip(7,8)(7), for AF_UNIX see unix(7), for AF_APPLETALK see ddp(7), for
AF_PACKET see packet(7), for AF_X25 see x25(7) and for AF_NETLINK see
netlink(3,7)(7).
RETURN VALUE
On success, zero is returned. On error(8,n), -1 is returned, and errno is
set(7,n,1 builtins) appropriately.
ERRORS
EACCES The address is protected, and the user is not the super-user.
EBADF sockfd is not a valid descriptor.
EINVAL The socket(2,7,n) is already bound to an address. This may change in(1,8)
the future: see linux/unix/sock.c for details.
ENOTSOCK
Argument is a descriptor for a file(1,n), not a socket.
The following errors are specific to UNIX domain (AF_UNIX) sockets:
EACCES Search permission is denied on a component of the path prefix.
(See also path_resolution(2).)
EFAULT my_addr points outside the user's accessible address space.
EINVAL The addrlen is wrong, or the socket(2,7,n) was not in(1,8) the AF_UNIX fam-
ily.
ELOOP Too many symbolic links were encountered in(1,8) resolving my_addr.
ENAMETOOLONG
my_addr is too long.
ENOENT The file(1,n) does not exist.
ENOMEM Insufficient kernel memory was available.
ENOTDIR
A component of the path prefix is not a directory.
EROFS The socket(2,7,n) inode would reside on a read-only file(1,n) system.
BUGS
The transparent proxy options are not described.
CONFORMING TO
SVr4, 4.4BSD (the bind(2,n,1 builtins) function first appeared in(1,8) BSD 4.2). SVr4 docu-
ments additional EADDRNOTAVAIL, EADDRINUSE, and ENOSR general error(8,n)
conditions, and additional EIO and EISDIR Unix-domain error(8,n) conditions.
NOTE
The third argument of bind(2,n,1 builtins) is in(1,8) reality an int (and this is what BSD
4.* and libc4 and libc5 have). Some POSIX confusion resulted in(1,8) the
present socklen_t, also used by glibc. See also accept(2,8)(2).
SEE ALSO
accept(2,8)(2), connect(2), getsockname(2), listen(1,2,7)(2), path_resolution(2),
socket(2,7,n)(2), ip(7,8)(7), socket(2,7,n)(7)
Linux 2.6.7 2004-06-23 BIND(2)