xref: /illumos-gate/usr/src/man/man3socket/bind.3socket (revision 7a5aac98bc37534537d4896efd4efd30627d221e)
te
Copyright (C) 2009, Sun Microsystems, Inc. All Rights Reserved
Copyright 1989 AT&T
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.
See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with
the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
BIND 3SOCKET "May 11, 2009"
NAME
bind - bind a name to a socket
SYNOPSIS

cc [ flag ... ] file ... -lsocket  -lnsl  [ library ... ]
#include <sys/types.h>
#include <sys/socket.h>



int bind(int s, const struct sockaddr *name, int namelen);
DESCRIPTION

The bind() function assigns a name to an unnamed socket. When a socket is created with socket(3SOCKET), it exists in a name space (address family) but has no name assigned. The bind() function requests that the name pointed to by name be assigned to the socket.

RETURN VALUES

Upon successful completion 0 is returned. Otherwise, -1 is returned and errno is set to indicate the error.

ERRORS

The bind() function will fail if: EACCES

The requested address is protected, and {PRIV_NET_PRIVADDR} is not asserted in the effective set of the current process.

EADDRINUSE

The specified address is already in use.

EADDRNOTAVAIL

The specified address is not available on the local machine.

EBADF

s is not a valid descriptor.

EINVAL

namelen is not the size of a valid address for the specified address family. The socket is already bound to an address. Socket options are inconsistent with port attributes.

ENOSR

There were insufficient STREAMS resources for the operation to complete.

ENOTSOCK

s is a descriptor for a file, not a socket.

The following errors are specific to binding names in the UNIX domain: EACCES

Search permission is denied for a component of the path prefix of the pathname in name.

EIO

An I/O error occurred while making the directory entry or allocating the inode.

EISDIR

A null pathname was specified.

ELOOP

Too many symbolic links were encountered in translating the pathname in name.

ENOENT

A component of the path prefix of the pathname in name does not exist.

ENOTDIR

A component of the path prefix of the pathname in name is not a directory.

EROFS

The inode would reside on a read-only file system.

ATTRIBUTES

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
MT-Level Safe
SEE ALSO

unlink(2), socket(3SOCKET), sockaddr(3SOCKET), attributes(5), privileges(5), socket.h(3HEAD)

NOTES

Binding a name in the UNIX domain creates a socket in the file system that must be deleted by the caller when it is no longer needed by using unlink(2).

The rules used in name binding vary between communication domains.