SYS_BIND


Binds a name to a socket.

Arguments:

1st Socket descriptor.
2nd Pointer to an address family specific sockaddr* structure. Available families and respective structures:
AF_UNIX

UNIX_PATH_MAX equ 108

struc sockaddr_un
{

.sun_family rw 1
.sun_path   rb UNIX_PATH_MAX
}

AF_INET struc sockaddr_in
{
.sin_family rw 1
.sin_port   rw 1
.sin_addr   rd 1
.__pad      rb 8
}
AF_AX25 struc sockaddr_ax25
{
.sax25_family rw 1
.sax25_call   rb 7
.sax25_ndigis rd 1
}
AF_IPX IPX_NODE_LEN equ 6

struc sockaddr_ipx
{
.sipx_family  rw 1
.sipx_port    rw 1
.sipx_network rd 1
.sipx_node    rb IPX_NODE_LEN
.sipx_type    rb 1
.sipx_zero    rb 1
}
AF_APPLETALK struc sockaddr_at
{
.sat_family rw 1
.sat_port   rw 1
.sat_addr   atalk_addr
.sat_zero   rb 8
}

struc atalk_addr
{
.s_net  rw 1
.s_node rb 1
}
AF_NETROM *to be documented*
AF_BRIDGE *to be documented*
AF_ATMPVC struc sockaddr_atmpvc
{
.sap_family rw 1
.sap_addr   _sap_addr
}

struc _sap_addr
{
.itf rw 1
.vpi rw 1
.vci rd 1
}
AF_X25 struc sockaddr_x25
{
sx25_family rw 1
sx25_addr   rb 16
}
AF_INET6 struc sockaddr_in6
{
.sin6_family   rw 1
.sin6_port     rw 1
.sin6_flowinfo rd 1
.sin6_addr     in6_addr
.sin6_scope_id rd 1
}

struc in6_addr
{
.u6_addr8:
.u6_addr16:
.u6_addr32     rd 4
}
AF_ROSE struc sockaddr_rose
{
.srose_family rw 1
.srose_addr   rose_address
.srose_call   ax25_address
.srose_ndigis rd 1
.srose_digi   ax25_address
}

struc rose_address
{
.rose_addr    rb 5
}
AF_DECnet DN_MAXADDL equ 2
DN_MAXOBJL equ 16

struc sockaddr_dn
{
.sdn_family   rw 1
.sdn_flags    rb 1
.sdn_objnum   rb 1
.sdn_objnamel rw 1
.sdn_objname  rb DN_MAXOBJL
.sdn_add      dn_naddr
}

struc dn_naddr
{
.a_len  rw 1
.a_addr rb DN_MAXADDL
}
AF_NETBEUI *to be documented*
AF_SECURITY *to be documented*
AF_KEY *to be documented*
AF_NETLINK,
AF_ROUTE
struc sockaddr_nl
{
.nl_family rw 1
.nl_pad    rw 1
.nl_pid    rd 1
.nl_groups rd 1
}
AF_PACKET struct sockaddr_ll
{
.sll_family   rw 1
.sll_protocol rw 1
.sll_ifindex  rd 1
.sll_hatype   rw 1
.sll_pkttype  rb 1
.sll_halen    rb 1
.sll_addr     rb 8
}
AF_ASH *to be documented*
AF_ECONET *to be documented*
AF_ATMSVC *to be documented*
AF_SNA *to be documented*
AF_IRDA struc sockaddr_irda
{
.sir_family   rw 1
.sir_lsap_sel rb 1
.sir_addr     rd 1
.sir_name     rb 25
}
AF_PPPOX ETH_ALEN equ 6
IFNAMSIZ equ 16

struc sockaddr_pppox
{
.sa_family   rw 1
.sa_protocol rd 1
.sa_addr     pppoe_addr
}

struc pppoe_addr
{
.sid    rw 1
.remote rb ETH_ALEN
.dev    rb IFNAMSIZ
}
AF_WANPIPE *to be documented*
AF_LLC *to be documented*
AF_TIPC *to be documented*
AF_BLUETOOTH *to be documented*
3rd Size of the structure pointed by 2nd argument.

Return values

If the system call succeeds the return value is 0.
If the system call fails the return value is one of the following errno values:

-EACCES The address is protected, and the user is not the superuser.
-EADDRINUSE The given address is already in use.
-EBADF 1st argument is not a valid descriptor.
-EINVAL The socket is already bound to an address.
-ENOTSOCK 1st argument is a descriptor for a file, 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.
-EADDRNOTAVAIL A non-existent interface was requested or the requested address was not local.
-EFAULT 2nd argument points outside the user's accessible address space.
-EINVAL 3rd argument is wrong, or the socket was not in the AF_UNIX family.
-ELOOP Too many symbolic links were encountered in resolving sockaddr_un.sun_path
-ENAMETOOLONG sockaddr_un is too long.
-ENOENT The file does not exist.
-ENOMEM Insufficient kernel memory was available.
-ENOTDIR A component of the path prefix is not a directory.
-EROFS The socket inode would reside on a read-only file system.

Remarks

n/a

Compatibility

n/a