setsockopt(3p) - Online Manual Page Of Unix/Linux

  Command: man perldoc info search(apropos)

WebSearch:
Our Recommended Sites: Full-Featured Editor
 

SETSOCKOPT(P)                                                                       SETSOCKOPT(P)



NAME
       setsockopt - set the socket options

SYNOPSIS
       #include <sys/socket.h>

       int setsockopt(int socket, int level, int option_name,
              const void *option_value, socklen_t option_len);


DESCRIPTION
       The  setsockopt()  function shall set the option specified by the option_name argument, at
       the protocol level specified by the level  argument,  to  the  value  pointed  to  by  the
       option_value  argument for the socket associated with the file descriptor specified by the
       socket argument.

       The level argument specifies the protocol level  at  which  the  option  resides.  To  set
       options  at  the socket level, specify the level argument as SOL_SOCKET. To set options at
       other levels, supply the appropriate level identifier for  the  protocol  controlling  the
       option.  For example, to indicate that an option is interpreted by the TCP (Transport Con-
       trol Protocol), set level to IPPROTO_TCP as defined in the <netinet/in.h> header.

       The option_name argument specifies a single option to set. The  option_name  argument  and
       any  specified  options  are  passed  uninterpreted to the appropriate protocol module for
       interpretations.  The <sys/socket.h> header defines the socket-level options.  The options
       are as follows:

       SO_DEBUG
              Turns on recording of debugging information. This option enables or disables debug-
              ging in the underlying protocol modules. This option takes an int value. This is  a
              Boolean option.

       SO_BROADCAST
              Permits  sending  of broadcast messages, if this is supported by the protocol. This
              option takes an int value. This is a Boolean option.

       SO_REUSEADDR
              Specifies that the rules used in validating addresses  supplied  to  bind()  should
              allow  reuse of local addresses, if this is supported by the protocol.  This option
              takes an int value. This is a Boolean option.

       SO_KEEPALIVE
              Keeps connections active by enabling the periodic transmission of messages, if this
              is supported by the protocol. This option takes an int value.

       If  the  connected socket fails to respond to these messages, the connection is broken and
       threads writing to that socket are notified with a  SIGPIPE  signal.  This  is  a  Boolean
       option.

       SO_LINGER
              Lingers on a close() if data is present. This option controls the action taken when
              unsent messages queue on a socket and close() is performed.  If SO_LINGER  is  set,
              the system shall block the process during close() until it can transmit the data or
              until the time expires. If SO_LINGER is not specified, and close() is  issued,  the
              system  handles the call in a way that allows the process to continue as quickly as
              possible. This option takes a linger structure, as defined  in  the  <sys/socket.h>
              header, to specify the state of the option and linger interval.

       SO_OOBINLINE
              Leaves  received out-of-band data (data marked urgent) inline. This option takes an
              int value. This is a Boolean option.

       SO_SNDBUF
              Sets send buffer size. This option takes an int value.

       SO_RCVBUF
              Sets receive buffer size. This option takes an int value.

       SO_DONTROUTE
              Requests that outgoing messages bypass the standard routing facilities.  The desti-
              nation  shall  be on a directly-connected network, and messages are directed to the
              appropriate network interface according to the destination address. The effect,  if
              any,  of  this  option depends on what protocol is in use. This option takes an int
              value. This is a Boolean option.

       SO_RCVLOWAT
              Sets the minimum number of bytes to  process  for  socket  input  operations.   The
              default value for SO_RCVLOWAT is 1. If SO_RCVLOWAT is set to a larger value, block-
              ing receive calls normally wait until they have received the  smaller  of  the  low
              water  mark value or the requested amount. (They may return less than the low water
              mark if an error occurs, a signal is caught, or  the  type  of  data  next  in  the
              receive queue is different from that returned; for example, out-of-band data.) This
              option takes an int value.  Note that not all implementations allow this option  to
              be set.

       SO_RCVTIMEO
              Sets  the timeout value that specifies the maximum amount of time an input function
              waits until it completes. It accepts a timeval structure with the number of seconds
              and microseconds specifying the limit on how long to wait for an input operation to
              complete. If a receive operation has blocked for this much time  without  receiving
              additional  data,  it shall return with a partial count or errno set to [EAGAIN] or
              [EWOULDBLOCK] if no data is received. The default for this option  is  zero,  which
              indicates  that a receive operation shall not time out. This option takes a timeval
              structure. Note that not all implementations allow this option to be set.

       SO_SNDLOWAT
              Sets the minimum number of bytes to process for  socket  output  operations.   Non-
              blocking output operations shall process no data if flow control does not allow the
              smaller of the send low water mark value or the entire  request  to  be  processed.
              This option takes an int value. Note that not all implementations allow this option
              to be set.

       SO_SNDTIMEO
              Sets the timeout value specifying the amount of time that an output function blocks
              because flow control prevents data from being sent. If a send operation has blocked
              for this time, it shall return with a partial count or with errno set  to  [EAGAIN]
              or  [EWOULDBLOCK]  if  no  data is sent. The default for this option is zero, which
              indicates that a send operation shall not time out. This option  stores  a  timeval
              structure. Note that not all implementations allow this option to be set.


       For  Boolean  options,  0  indicates  that the option is disabled and 1 indicates that the
       option is enabled.

       Options at other protocol levels vary in format and name.

RETURN VALUE
       Upon successful completion, setsockopt() shall return 0. Otherwise, -1 shall  be  returned
       and errno set to indicate the error.

ERRORS
       The setsockopt() function shall fail if:

       EBADF  The socket argument is not a valid file descriptor.

       EDOM   The  send  and receive timeout values are too big to fit into the timeout fields in
              the socket structure.

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

       EISCONN
              The  socket  is  already  connected, and a specified option cannot be set while the
              socket is connected.

       ENOPROTOOPT

              The option is not supported by the protocol.

       ENOTSOCK
              The socket argument does not refer to a socket.


       The setsockopt() function may fail if:

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

       ENOBUFS
              Insufficient resources are available in the system to complete the call.


       The following sections are informative.

EXAMPLES
       None.

APPLICATION USAGE
       The setsockopt() function provides an application program with the means to control socket
       behavior.  An  application  program can use setsockopt() to allocate buffer space, control
       timeouts, or permit socket data broadcasts. The <sys/socket.h> header defines the  socket-
       level options available to setsockopt().

       Options  may  exist at multiple protocol levels. The SO_ options are always present at the
       uppermost socket level.

RATIONALE
       None.

FUTURE DIRECTIONS
       None.

SEE ALSO
       Sockets , bind() , endprotoent() , getsockopt() , socket() , the Base  Definitions  volume
       of IEEE Std 1003.1-2001, <netinet/in.h>, <sys/socket.h>

COPYRIGHT
       Portions  of  this  text  are  reprinted  and  reproduced in electronic form from IEEE Std
       1003.1, 2003 Edition, Standard for Information Technology  --  Portable  Operating  System
       Interface  (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003 by
       the Institute of Electrical and Electronics Engineers, Inc and  The  Open  Group.  In  the
       event  of  any  discrepancy  between this version and the original IEEE and The Open Group
       Standard, the original IEEE and The Open Group Standard is the referee document. The orig-
       inal Standard can be obtained online at http://www.opengroup.org/unix/online.html .



POSIX                                          2003                                 SETSOCKOPT(P)