getsockopt

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
GETSOCKOPT(2)		  Linux Programmer’s Manual		GETSOCKOPT(2)



NAME
       getsockopt, setsockopt - get and set options on sockets

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


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

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

DESCRIPTION
       Getsockopt  and	setsockopt  manipulate	the 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
       options at any other level the protocol number of the appropriate pro-
       tocol  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 number of TCP; see getprotoent(3).

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

       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 format  and
       name; consult the appropriate entries in section 4 of the manual.

       Most  socket-level  options  utilize an int parameter for optval.  For
       setsockopt, the parameter should	 be  non-zero  to  enable  a  boolean
       option, or zero if the option is to be disabled.


       For  a  description  of the available socket options see socket(7) and
       the appropriate protocol man pages.


RETURN VALUE
       On success, zero is returned.  On error, -1 is returned, and errno  is
       set appropriately.

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

       EINVAL optlen invalid in setsockopt

CONFORMING TO
       SVr4, 4.4BSD (these system calls first appeared in 4.2BSD).  SVr4 doc-
       uments  additional ENOMEM and ENOSR error codes, but does not document
       the SO_SNDLOWAT, SO_RCVLOWAT, SO_SNDTIMEO, SO_RCVTIMEO options

NOTE
       The fifth argument of getsockopt and setsockopt is in reality  an  int
       [*]  (and  this is what BSD 4.* and libc4 and libc5 have).  Some POSIX
       confusion resulted in the present socklen_t.  The draft	standard  has
       not  been  adopted  yet,	 but  glibc2  already follows it and also has
       socklen_t [*]. See also accept(2).

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

SEE ALSO
       ioctl(2), socket(2), getprotoent(3), protocols(5), socket(7), unix(7),
       tcp(7)



Linux Man Page			  1999-05-24			GETSOCKOPT(2)