unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (OSF1-V5.1-alpha)
Page:
Section:
Apropos / Subsearch:
optional field



bind(2)								      bind(2)



NAME

  bind - Binds a name to a socket

SYNOPSIS

  #include <&lt;sys/socket.h>&gt;
  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 previ-
  ous definition).

  [Tru64 UNIX]	The following definition of the	bind() function	 does not
  conform to current standards and is supported	only for backward compatibil-
  ity (see standards(5)):

  int bind (
	  int socket,
	  struct sockaddr *address,
	  int address_len );

STANDARDS

  Interfaces documented	on this	reference page conform to industry standards
  as follows:

  bind():  XNS5.0

  Refer	to the standards(5) reference page for more information	about indus-
  try standards	and associated tags.

PARAMETERS

  socket    Specifies the socket descriptor of the socket to be	bound.

  address   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.

  address_len
	    Specifies the length of the	sockaddr structure pointed to by the
	    address parameter.

DESCRIPTION

  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 Confi-
  guration and Tuning for more information on tuning parameters.

  An application program can retrieve the assigned socket name with the	get-
  sockname() 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 ident-
       ical to those made by the open()	function when creating a new file.

				 End Security Note

RETURN VALUES

  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.

ERRORS

  If the bind()	function fails,	errno may be set to one	of the following
  values:

  [EACCES]  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 pro-
	    tected and you cannot search it, or	the requested name requires
	    writing in a directory with	a mode that denies write permission.

  [EADDRINUSE]
	    The	specified address is already in	use.

  [EADDRNOTAVAIL]
	    The	specified address is not available from	the local machine.

  [EAFNOSUPPORT]
	    The	specified address is invalid for the address family of the
	    specified socket.

  [EBADF]   The	socket parameter is not	valid.

  [EDESTADDRREQ]
	    For	an AF_UNIX socket, the address argument	is a null pointer.

  [EFAULT]  The	address	parameter is not in a readable part of the user
	    address space.

  [EINVAL]  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.

  [EIO]	    For	an AF_UNIX socket, an I/O error	occurred.

  [EISCONN] The	socket is already connected.

  [EISDIR]  The	address	argument is a null pointer.

  [ELOOP]   For	an AF_UNIX socket, too many symbolic links were	encountered
	    in translating the pathname	in address.

  [ENAMETOOLONG]
	    A component	of the pathname	exceeded NAME_MAX characters, or an
	    entire pathname exceeded PATH_MAX characters.

  [ENOBUFS] Insufficient resources were	available in the system	to complete
	    the	call.

  [ENOENT]  For	an AF_UNIX socket, a component of the pathname does not	name
	    an existing	file or	the pathname is	an empty string.

  [ENOSR]   The	available STREAMS resources were insufficient for the opera-
	    tion to complete.

  [ENOTDIR] For	an AF_UNIX socket, a component of the path prefix of the
	    pathname in	address	is not a directory.

  [ENOTSOCK]
	    The	socket parameter refers	to a file, not a socket.

  [EOPNOTSUPP]
	    The	socket type of the specified socket does not support binding
	    to an address.

  [EROFS]   For	an AF_UNIX socket, the name would reside on a read-only
	    filesystem.

RELATED	INFORMATION

  Functions: connect(2), getsockname(2), listen(2), socket(2).

  Standards: standards(5).

  Network Programmer's Guide

  System Configuration and Tuning