getsockopt man page on Solaris

Man page or keyword search:  
man Server   20652 pages
apropos Keyword Search (all sections)
Output format
Solaris logo
[printable version]

getsockopt(3SOCKET)	   Sockets Library Functions	   getsockopt(3SOCKET)

NAME
       getsockopt, setsockopt - get and set options on sockets

SYNOPSIS
       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 *optlen);

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

DESCRIPTION
       The  getsockopt() and setsockopt() functions manipulate options associ‐
       ated 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
       options at any other level, level is the protocol number of the	proto‐
       col  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  pro‐
       tocol 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
       indicate the actual size of the value returned. Use a 0	optval	if  no
       option value is to be supplied or returned.

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

       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
       interval.  struct  linger  is  defined in <sys/socket.h>. struct linger
       contains 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‐
       opt().

       SO_DEBUG		  enable/disable recording of debugging information

       SO_REUSEADDR	  enable/disable local address reuse

       SO_KEEPALIVE	  enable/disable keep connections alive

       SO_DONTROUTE	  enable/disable routing bypass for outgoing messages

       SO_LINGER	  linger on close if data is present

       SO_BROADCAST	  enable/disable permission to transmit broadcast mes‐
			  sages

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

       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_MAC_EXEMPT	  get  or  set mandatory access control on the socket.
			  This option is available only	 when  the  system  is
			  configured with Trusted Extensions.

       SO_ALLZONES	  bypass zone boundaries (privileged).

       SO_DOMAIN	  get the domain used in the socket (get only)

       SO_PROTOTYPE	  for  socket in domains PF_INET and PF_INET6, get the
			  underlying protocol number used in the  socket.  For
			  socket  in  domain  PF_ROUTE, get the address family
			  used in the socket.

       The SO_DEBUG option enables debugging in the underlying	protocol  mod‐
       ules. The SO_REUSEADDR option indicates that the rules used in validat‐
       ing addresses supplied in a bind(3SOCKET) call should  allow  reuse  of
       local addresses. The SO_KEEPALIVE option enables the periodic transmis‐
       sion of messages on a connected socket. If the connected party fails to
       respond	to  these  messages,  the  connection is considered broken and
       threads using the socket are  notified  using  a	 SIGPIPE  signal.  The
       SO_DONTROUTE  option 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.

       The SO_LINGER option 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 issued, 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.

       The SO_SNDBUF and SO_RCVBUF options  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 Reference Manual for infor‐
       mation on setting the values of udp_max_buf and tcp_max_buf.

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

       The  SO_TYPE  and SO_ERROR options are used only with getsockopt(). The
       SO_TYPE	option	returns	 the  type  of	the   socket,	for   example,
       SOCK_STREAM.  It is useful for servers that inherit sockets on startup.
       The SO_ERROR option 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.

       The SO_MAC_EXEMPT option is used to toggle socket behavior  with	 unla‐
       beled peers. A socket that has this option enabled can communicate with
       an unlabeled peer if it is in the global zone or has a label that domi‐
       nates  the default label of the peer. Otherwise, the socket must have a
       label that is equal to the default label of the unlabeled peer. Calling
       setsockopt()  with  this	 option returns an EACCES error if the process
       lacks the NET_MAC_AWARE privilege  or  if  the  socket  is  bound.  The
       SO_MAC_EXEMPT  option  is  available only when the system is configured
       with Trusted Extensions.

       The SO_ALLZONES option can be used to bypass  zone  boundaries  between
       shared-IP  zones.  Normally,  the  system  prevents a socket from being
       bound to an address that is not assigned to the current zone.  It  also
       prevents	 a  socket  that is bound to a wildcard address from receiving
       traffic for other zones. However, some daemons which run in the	global
       zone might need to send and receive traffic using addresses that belong
       to other shared-IP zones. If set before a socket is bound,  SO_ALLZONES
       causes the socket to ignore zone boundaries between shared-IP zones and
       permits the socket to be bound to any address assigned to the shared-IP
       zones.  If the socket is bound to a wildcard address, it receives traf‐
       fic intended for all shared-IP zones and behaves as  if	an  equivalent
       socket  were bound in each active shared-IP zone. Applications that use
       the SO_ALLZONES option to initiate connections or send datagram traffic
       should  specify the source address for outbound traffic by binding to a
       specific address. There is no effect from setting  this	option	in  an
       exclusive-IP  zone.  Setting  this  option  requires the sys_net_config
       privilege. See zones(5).

RETURN VALUES
       If successful, getsockopt() and setsockopt() return 0.  Otherwise,  the
       functions return −1 and set errno to indicate the error.

ERRORS
       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 opera‐
			tion 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
			IP_DROP_MEMBERSHIP.

       EADDRINUSE	Address already joined for IP_ADD_MEMBERSHIP.

       ENOENT		Address not joined for IP_DROP_MEMBERSHIP.

       EPERM		No permissions.

       EACCES		Permission denied.

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

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

       ┌─────────────────────────────┬─────────────────────────────┐
       │      ATTRIBUTE TYPE	     │	    ATTRIBUTE VALUE	   │
       ├─────────────────────────────┼─────────────────────────────┤
       │MT-Level		     │Safe			   │
       └─────────────────────────────┴─────────────────────────────┘

SEE ALSO
       ndd(1M),	 close(2),  ioctl(2),  read(2),	  bind(3SOCKET),   getprotoby‐
       name(3SOCKET),	  recv(3SOCKET),     recvmsg(3XNET),	send(3SOCKET),
       socket(3SOCKET),	 socket.h(3HEAD),  attributes(5),  zones(5),  tcp(7P),
       udp(7P)

       Solaris Tunable Parameters Reference Manual

SunOS 5.10			  29 Jan 2009		   getsockopt(3SOCKET)
[top]

List of man pages available for Solaris

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net