Show Password


BSD 2.11 - man page for setsockopt (bsd section 2)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:
Select Man Page Set:


       getsockopt, setsockopt - get and set options on sockets

       #include <sys/types.h>
       #include <sys/socket.h>

       getsockopt(s, level, optname, optval, optlen)
       int s, level, optname;
       char *optval;
       int *optlen;

       setsockopt(s, level, optname, optval, optlen)
       int s, level, optname;
       char *optval;
       int optlen;

       Getsockopt  and setsockopt manipulate options associated with a socket.	Options may exist
       at multiple protocol levels; they are always present at the uppermost ``socket'' level.

       When manipulating socket options the level at which the option resides and the name of the
       option  must be specified.  To manipulate options at the ``socket'' level, level is speci-
       fied as SOL_SOCKET.  To manipulate options at any other level the protocol number  of  the
       appropriate protocol controlling the option is supplied.  For example, to indicate that an
       option is to be interpreted by the TCP protocol, level should be set to the protocol  num-
       ber of TCP; see getprotoent(3N).

       The  parameters	optval	and  optlen are used to access option values for setsockopt.  For
       getsockopt they identify a buffer in which the value for the requested option(s) are to be
       returned.   For	getsockopt,  optlen is a value-result parameter, initially containing the
       size of the buffer pointed to by optval, and modified on return	to  indicate  the  actual
       size  of the value returned.  If no option value is to be supplied or returned, optval may
       be supplied as 0.

       Optname and any specified options are passed uninterpreted  to  the  appropriate  protocol
       module  for  interpretation.   The  include  file  <sys/socket.h> contains definitions for
       ``socket'' level options, described below.  Options at other protocol levels vary in  for-
       mat and name; consult the appropriate entries in section(4P).

       Most socket-level options take an int parameter for optval.  For setsockopt, the parameter
       should non-zero to enable a boolean option, or zero if  the  option  is	to  be	disabled.
       SO_LINGER  uses	a struct linger parameter, defined in <sys/socket.h>, which specifies the
       desired state of the option and the linger interval (see below).

       The following options are recognized at the socket level.  Except as noted,  each  may  be
       examined with getsockopt and set with setsockopt.

	      SO_DEBUG	      toggle recording of debugging information
	      SO_REUSEADDR    toggle local address reuse
	      SO_KEEPALIVE    toggle keep connections alive
	      SO_DONTROUTE    toggle routing bypass for outgoing messages
	      SO_LINGER       linger on close if data present
	      SO_BROADCAST    toggle permission to transmit broadcast messages
	      SO_OOBINLINE    toggle reception of out-of-band data in band
	      SO_SNDBUF       set buffer size for output
	      SO_RCVBUF       set buffer size for input
	      SO_TYPE	      get the type of the socket (get only)
	      SO_ERROR	      get and clear error on the socket (get only)

       SO_DEBUG  enables  debugging  in  the underlying protocol modules.  SO_REUSEADDR indicates
       that the rules used in validating addresses supplied in a bind(2) call should allow  reuse
       of  local addresses.  SO_KEEPALIVE enables the periodic transmission of messages on a con-
       nected socket.  Should the connected party fail to respond to these messages, the  connec-
       tion  is  considered broken and processes using the socket are notified via a SIGPIPE sig-
       nal.  SO_DONTROUTE indicates that outgoing messages should  bypass  the	standard  routing
       facilities.  Instead, messages are directed to the appropriate network interface according
       to the network portion of the destination address.

       SO_LINGER controls the action taken when  unsent  messags  are  queued  on  socket  and	a
       close(2)  is performed.	If the socket promises reliable delivery of data and SO_LINGER is
       set, the system will block the process on the close attempt until it is able  to  transmit
       the  data  or  until it decides it is unable to deliver the information (a timeout period,
       termed the linger interval,  is	specified  in  the  setsockopt	call  when  SO_LINGER  is
       requested).   If  SO_LINGER is disabled and a close is issued, the system will process the
       close in a manner that allows the process to continue as quickly as possible.

       The option SO_BROADCAST requests permission to send broadcast  datagrams  on  the  socket.
       Broadcast  was  a  privileged operation in earlier versions of the system.  With protocols
       that support out-of-band data, the SO_OOBINLINE option requests that out-of-band  data  be
       placed in the normal data input queue as received; it will then be accessible with recv or
       read calls without the MSG_OOB flag.  SO_SNDBUF and SO_RCVBUF are options  to  adjust  the
       normal buffer sizes allocated for output and input buffers, respectively.  The buffer size
       may be increased for high-volume connections, or may be decreased to  limit  the  possible
       backlog	of incoming data.  The system places an absolute limit on these values.  Finally,
       SO_TYPE and SO_ERROR are options used only with setsockopt.  SO_TYPE returns the  type  of
       the socket, such as SOCK_STREAM; it is useful for servers that inherit sockets on startup.
       SO_ERROR returns any pending error on the socket and clears the error status.  It  may  be
       used to check for asynchronous errors on connected datagram sockets or for other asynchro-
       nous errors.

       A 0 is returned if the call succeeds, -1 if it fails.

       The call succeeds unless:

       [EBADF]		   The argument s is not a valid descriptor.

       [ENOTSOCK]	   The argument s is a file, not a socket.

       [ENOPROTOOPT]	   The option is unknown at the level indicated.

       [EFAULT] 	   The address pointed to by optval is not in a valid part of the process
			   address  space.   For  getsockopt,  this error may also be returned if
			   optlen is not in a valid part of the process address space.

       ioctl(2), socket(2), getprotoent(3N)

       Several of the socket options should be handled at lower levels of the system.

4.2 Berkeley Distribution		   May 23, 1986 			    GETSOCKOPT(2)

All times are GMT -4. The time now is 03:33 PM.

Unix & Linux Forums Content Copyrightę1993-2018. All Rights Reserved.