.\"
.\" @(#)bind.2 8.1 (Berkeley) 6/4/93
.\"
-.Dd June 4, 1993
+.Dd March 18, 2015
.Dt BIND 2
.Os BSD 4.2
.Sh NAME
.Nm bind
.Nd bind a name to a socket
.Sh SYNOPSIS
-.Fd #include <sys/types.h>
.Fd #include <sys/socket.h>
.Ft int
-.Fn bind "int s" "const struct sockaddr *name" "int namelen"
+.Fo bind
+.Fa "int socket"
+.Fa "const struct sockaddr *address"
+.Fa "socklen_t address_len"
+.Fc
.Sh DESCRIPTION
-.Fn Bind
+.Fn bind
assigns a name to an unnamed socket.
When a socket is created
with
.Xr socket 2
it exists in a name space (address family)
but has no name assigned.
-.Fn Bind
+.Fn bind
requests that
-.Fa name
+.Fa address
be assigned to the socket.
.Sh NOTES
Binding a name in the UNIX domain creates a socket in the file
The rules used in name binding vary between communication domains.
Consult the manual entries in section 4 for detailed information.
.Sh RETURN VALUES
-If the bind is successful, a 0 value is returned.
-A return value of -1 indicates an error, which is
-further specified in the global
-.Va errno .
+Upon successful completion, a value of 0 is returned.
+Otherwise, a value of -1 is returned and the global integer variable
+.Va errno
+is set to indicate the error.
.Sh ERRORS
The
.Fn bind
-call will fail if:
+system call will fail if:
.Bl -tag -width Er
-.It Bq Er EBADF
-.Fa S
-is not a valid descriptor.
-.It Bq Er ENOTSOCK
-.Fa S
-is not a socket.
-.It Bq Er EADDRNOTAVAIL
-The specified address is not available from the local machine.
-.It Bq Er EADDRINUSE
-The specified address is already in use.
-.It Bq Er EINVAL
-The socket is already bound to an address.
+.\" ==========
.It Bq Er EACCES
The requested address is protected, and the current user
has inadequate permission to access it.
+.\" ==========
+.It Bq Er EADDRINUSE
+The specified address is already in use.
+.\" ==========
+.It Bq Er EADDRNOTAVAIL
+The specified address is not available from the local machine.
+.\" ==========
+.It Bq Er EAFNOSUPPORT
+.Fa address
+is not valid for the address family of
+.Fa socket .
+.\" ==========
+.It Bq Er EBADF
+.Fa socket
+is not a valid file descriptor.
+.\" ==========
+.It Bq Er EDESTADDRREQ
+.Fa socket
+is a null pointer.
+.\" ==========
.It Bq Er EFAULT
The
-.Fa name
+.Fa address
parameter is not in a valid part of the user
address space.
+.\" ==========
+.It Bq Er EINVAL
+.Fa socket
+is already bound to an address
+and the protocol does not support binding to a new address.
+Alternatively,
+.Fa socket
+may have been shut down.
+.\" ==========
+.It Bq Er ENOTSOCK
+.Fa socket
+does not refer to a socket.
+.\" ==========
+.It Bq Er EOPNOTSUPP
+.Fa socket
+is not of a type that can be bound to an address.
.El
.Pp
The following errors are specific to binding names in the UNIX domain.
.Bl -tag -width Er
-.It Bq Er ENOTDIR
-A component of the path prefix is not a directory.
+.\" ==========
+.It Bq Er EACCES
+A component of the path prefix does not allow searching
+or the node's parent directory denies write permission.
+.\" ==========
+.It Bq Er EEXIST
+A file already exists at the pathname.
+.Xr unlink 2
+it first.
+.\" ==========
+.It Bq Er EIO
+An I/O error occurred while making the directory entry
+or allocating the inode.
+.\" ==========
+.It Bq Er EISDIR
+An empty pathname was specified.
+.\" ==========
+.It Bq Er ELOOP
+Too many symbolic links were encountered in translating the pathname.
+This is taken to be indicative of a looping symbolic link.
+.\" ==========
.It Bq Er ENAMETOOLONG
A component of a pathname exceeded
.Dv {NAME_MAX}
characters, or an entire path name exceeded
.Dv {PATH_MAX}
characters.
+.\" ==========
.It Bq Er ENOENT
-A prefix component of the path name does not exist.
-.It Bq Er ELOOP
-Too many symbolic links were encountered in translating the pathname.
-.It Bq Er EIO
-An I/O error occurred while making the directory entry or allocating the inode.
+A component of the path name does not refer to an existing file.
+.\" ==========
+.It Bq Er ENOTDIR
+A component of the path prefix is not a directory.
+.\" ==========
.It Bq Er EROFS
The name would reside on a read-only file system.
-.It Bq Er EISDIR
-An empty pathname was specified.
.El
+.Sh LEGACY SYNOPSIS
+.Fd #include <sys/types.h>
+.Fd #include <sys/socket.h>
+.Pp
+The include file
+.In sys/types.h
+is necessary.
.Sh SEE ALSO
.Xr connect 2 ,
+.Xr connectx 2 ,
+.Xr getsockname 2 ,
.Xr listen 2 ,
.Xr socket 2 ,
-.Xr getsockname 2
+.Xr compat 5
.Sh HISTORY
The
.Fn bind