Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
getsockopt(3SOCKET)	   Sockets Library Functions	   getsockopt(3SOCKET)

       getsockopt, setsockopt -	get and	set options on sockets

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

       int  getsockopt(int  s,	int  level,  int  optname,  void  *optval, int

       int setsockopt(int s, int level,	int optname, const void	 *optval,  int

       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 specified as SOL_SOCKET. To	manipulate op-
       tions at	any other level, level is the protocol number of the  protocol
       that controls the option. For example, to indicate that an option is to
       be interpreted by the TCP protocol, level is set	to  the	 TCP  protocol
       number .	 See getprotobyname(3SOCKET).

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

       optname	and  any specified options are passed uninterpreted to the ap-
       propriate  protocol  module  for	 interpretation.  The	include	  file
       <sys/socket.h>  contains	 definitions  for the socket-level options de-
       scribed below. Options at other protocol	 levels	 vary  in  format  and

       Most socket-level options take an int for optval. For setsockopt(), the
       optval parameter	should be non-zero to enable a boolean option, or zero
       if the option is	to be disabled.	SO_LINGER uses a struct	linger parame-
       ter that	specifies the desired state of the option and the  linger  in-
       terval.	struct linger is defined in <sys/socket.h>. struct linger con-
       tains the following members:

       l_onoff		       on = 1/off = 0

       l_linger		       linger time, in seconds

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

       SO_DEBUG		       enable/disable recording	of debugging  informa-

       SO_REUSEADDR	       enable/disable local address reuse

       SO_KEEPALIVE	       enable/disable keep connections alive

       SO_DONTROUTE	       enable/disable routing bypass for outgoing mes-

       SO_LINGER	       linger on close if data is present

       SO_BROADCAST	       enable/disable permission to transmit broadcast

       SO_OOBINLINE	       enable/disable reception	of out-of-band data in

       SO_SNDBUF	       set buffer size for output

       SO_RCVBUF	       set buffer size for input

       SO_DGRAM_ERRIND	       application wants delayed error

       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 sup-
       plied in	a bind(3SOCKET)	call should allow reuse	 of  local  addresses.
       SO_KEEPALIVE  enables  the  periodic transmission of messages on	a con-
       nected socket. If the connected party fails to respond  to  these  mes-
       sages, the connection is	considered broken and threads using the	socket
       are notified using a SIGPIPE signal. SO_DONTROUTE indicates that	outgo-
       ing  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	messages are queued on
       a 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	thread
       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 is-
       sued, the system	will process the close() in a manner that  allows  the
       thread to continue as quickly as	possible.

       The option SO_BROADCAST requests	permission to send broadcast datagrams
       on the socket.  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 that	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	 maximum  buffer  size
       for   UDP   is  determined  by  the  value	of  the	 ndd  variable
       udp_max_buf.  The maximum buffer	size for TCP is	determined  the	 value
       of  the ndd variable tcp_max_buf.  Use the ndd(1M) utility to determine
       the current default values. See the Solaris Tunable  Parameters	Refer-
       ence  Manual  for  information on setting the values of udp_max_buf and

       By default, delayed errors (such	as ICMP	port unreachable packets)  are
       returned	 only for connected datagram sockets. SO_DGRAM_ERRIND makes it
       possible	to receive errors for datagram sockets that are	not connected.
       When  this option is set, certain delayed errors	received after comple-
       tion of a sendto() or  sendmsg()	 operation  will  cause	 a  subsequent
       sendto()	 or sendmsg() operation	using the same destination address (to
       parameter) to fail with the appropriate error.  See send(3SOCKET).

       Finally,	SO_TYPE	and SO_ERROR are options used only with	 getsockopt().
       SO_TYPE	returns	 the type of the socket, for example, 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 asynchronous errors.

       If  successful,	getsockopt() and setsockopt() return 0;	otherwise, the
       functions return	-1 and set errno to indicate the error.

       The getsockopt()	and setsockopt() calls succeed unless:

       EBADF		       The argument s is not a valid file descriptor.

       ENOMEM		       There was insufficient memory available for the
			       operation to complete.

       ENOPROTOOPT	       The option is unknown at	the level indicated.

       ENOSR		       There   were   insufficient  STREAMS  resources
			       available for the operation to complete.

       ENOTSOCK		       The argument s is not a socket.

       ENOBUFS		       SO_SNDBUF or SO_RCVBUF exceeds a	system limit.

       EINVAL		       Invalid length for IP_OPTIONS.

       EHOSTUNREACH	       Invalid address for IP_MULTICAST_IF.

       EINVAL		       Not a multicast address	for  IP_ADD_MEMBERSHIP
			       and IP_DROP_MEMBERSHIP.

       EADDRNOTAVAIL	       Bad interface address for IP_ADD_MEMBERSHIP and

       EADDRINUSE	       Address already joined for IP_ADD_MEMBERSHIP.

       ENOENT		       Address not joined for IP_DROP_MEMBERSHIP.

       EPERM		       No permissions.

       EINVAL		       The specified option is invalid at  the	speci-
			       fied  socket level, or the socket has been shut

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

       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       |MT-Level		     |Safe			   |

       ndd(1M),	 close(2),  ioctl(2),  read(2),	  bind(3SOCKET),   getprotoby-
       name(3SOCKET),	recv(3SOCKET),	 send(3SOCKET),	 socket(3SOCKET),  at-

       Solaris Tunable Parameters Reference Manual

SunOS 5.10			  1 Nov	2003		   getsockopt(3SOCKET)


Want to link to this manual page? Use this URL:

home | help