+name; consult the appropriate entries in section (4P).
+.PP
+Most socket-level options take an
+.I int
+parameter for
+.IR optval .
+For
+.IR setsockopt ,
+the parameter should non-zero to enable a boolean option,
+or zero if the option is to be disabled.
+SO_LINGER uses a
+.I struct linger
+parameter, defined in
+.RI < sys/socket.h >,
+which specifies the desired state of the option and the
+linger interval (see below).
+.PP
+The following options are recognized at the socket level.
+Except as noted, each may be examined with
+.I getsockopt
+and set with
+.IR setsockopt .
+.PP
+.RS
+.ta \w'SO_BROADCAST\ \ \ \ 'u
+.nf
+SO_DEBUG toggle recording of debugging information
+SO_REUSEADDR toggle local address reuse
+SO_KEEPALIVE toggle keep connections alive
+SO_DONTROUTE toggle routing bypass for outgoing messages
+SO_LINGER linger on close if data present
+SO_BROADCAST toggle permission to transmit broadcast messages
+SO_OOBINLINE toggle reception of out-of-band data in band
+SO_SNDBUF set buffer size for output
+SO_RCVBUF set buffer size for input
+SO_TYPE get the type of the socket (get only)
+SO_ERROR get and clear error on the socket (get only)
+.fi
+.RE
+.PP
+SO_DEBUG enables debugging in the underlying protocol modules.
+SO_REUSEADDR indicates that the rules used in validating addresses supplied
+in a
+.IR bind (2)
+call should allow reuse of local addresses. SO_KEEPALIVE enables the
+periodic transmission of messages on a connected socket. Should the
+connected party fail to respond to these messages, the connection is
+considered broken and processes using the socket are notified via a
+SIGPIPE signal. SO_DONTROUTE 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.
+.PP
+SO_LINGER controls the action taken when unsent messags
+are queued on socket and a
+.IR 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
+.I 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
+.IR setsockopt
+call when SO_LINGER is requested).
+If SO_LINGER is disabled and a
+.I close
+is issued, the system will process the close in a manner that allows
+the process to continue as quickly as possible.
+.PP
+The option SO_BROADCAST requests permission to send broadcast datagrams
+on the socket.
+Broadcast was a privileged operation in earlier versions of the system.
+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
+.I recv
+or
+.I read
+calls without the MSG_OOB flag.
+SO_SNDBUF and SO_RCVBUF are options to 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 system places an absolute limit on these values.
+Finally, SO_TYPE and SO_ERROR are options used only with
+.IR setsockopt .
+SO_TYPE returns the type of the socket, such as 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.