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:

	     on	= 1/off	= 0

	     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-

	     enable/disable recording of debugging information

	     enable/disable local address reuse

	     enable/disable keep connections alive

	     enable/disable routing bypass for outgoing	messages

	     linger on close if	data is	present

	     enable/disable permission to transmit broadcast messages

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

	     set buffer	size for output

	     set buffer	size for input

	     application wants delayed error

	     get the type of the socket	(get only)

	     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 processes using the
       socket are notified using a SIGPIPE signal. SO_DONTROUTE	indicates that
       outgoing	 messages  should  bypass the standard routing facilities. In-
       stead, messages are directed to the appropriate network	interface  ac-
       cording 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
       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 pe-
       riod, 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.  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.

	     There was insufficient memory available for the operation to com-

	     The option	is unknown at the level	indicated.

       ENOSR There were	insufficient STREAMS resources available for the oper-
	     ation to complete.

	     The argument s is not a socket.

	     SO_SNDBUF or SO_RCVBUF exceeds a system limit.

	     Invalid length for	IP_OPTIONS.

	     Invalid address for IP_MULTICAST_IF.

	     Not a multicast address for IP_ADD_MEMBERSHIP and IP_DROP_MEMBER-

	     Bad  interface  address for IP_ADD_MEMBERSHIP and IP_DROP_MEMBER-

	     Address already joined for	IP_ADD_MEMBERSHIP.

	     Address not joined	for IP_DROP_MEMBERSHIP.

       EPERM No	permissions.

	     The specified option is invalid at	the specified socket level, or
	     the socket	has been shut down.

       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.9			  24 Jan 2002		   getsockopt(3SOCKET)


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

home | help