STANDARDS

Interfaces documented on this reference page conform to industry
standards as follows:

getsockopt(): XNS4.0

The getsockopt function also supports POSIX.1g Draft 6.6.

Refer to the standards(5) reference page for more information
about industry standards and associated tags.

PARAMETERS

Specifies the file descriptor for the socket.
Specifies the protocol level at which the option
resides. To retrieve options
at the socket level, specify the level parameter as SOL_SOCKET.
To retrieve options at other levels,
supply the appropriate protocol number for the protocol
controlling the option. For example, to indicate that an option will
be interpreted by the
TCP protocol, set level
to the protocol number of TCP, as defined in the netinet/in.h
header file, or as determined by using the
getprotobyname()
function.
Specifies
a single option to be retrieved.
The socket level options
can be enabled or disabled
by the
setsockopt()
function. The getsockopt()
function retrieves information about the following options:
Reports whether debugging information is being recorded.
This option returns an
int
value.
Reports whether socket listening is enabled.
This option returns an
int
value.
Reports whether transmission of broadcast
messages is supported.
This option returns an
int
value.
Reports whether the rules used in validating
addresses supplied by a
bind() function should
allow reuse of
local addresses.
This option returns an
int
value.
Reports whether connections are kept active with periodic transmission
of messages.
If the
connected socket fails to respond to these messages, the connection
is broken and processes using that socket are notified with a
SIGPIPE signal.
This option returns an
int
value.
Reports whether outgoing messages should bypass the standard
routing facilities. (Not recommended, for debugging purposes only.)
This option returns an
int
value.
Only valid for routing sockets. Reports whether the sender receives a
copy of each message.
This option returns an
int
value.
Reports whether the socket lingers on a
close() function if
data is present.
If SO_LINGER is set, the system blocks the process during
the close() function until it can transmit the data or until
the time expires. If SO_LINGER is not specified, and a close()
function is issued, the system handles the call in a way that
allows the process to continue as quickly as possible.
This option returns an
struct linger
value.
Reports whether the socket leaves received out-of-band data (data marked
urgent) in line.
This option returns an
int
value.
Reports send buffer size information.
This option returns an
int
value.
Reports receive buffer size information.
This option returns an
int
value.
[DIGITAL]
Reports send low-water mark information.
This option returns an
int
value.
[DIGITAL]
Reports receive low-water mark information.
This option returns an
int
value.
[DIGITAL]
Reports send time-out information.
This option returns a
struct timeval
value.
[DIGITAL]
Reports receive time-out information.
This option returns a
struct timeval
value.
Reports information about error status and
clear.
This option returns an
int
value.
Reports the socket type.
This option returns an
int
value.

[DIGITAL]
Options at other protocol levels vary in format and name.
See the tcp(7) and ip(7) reference pages for more
information on option names relevant for TCP and IP options
respectively.

Note

[DIGITAL]
The default values for socket level options like SO_SENDBUF, SO_RCVBUF,
SO_SNDLOWAT, and SO_RCVLOWAT are not constant across different protocols
and implementations. Use the getsockopt(2) routine to obtain the
default values programmatically.

The address of a buffer.
Specifies
the length of buffer pointed to by option_value. The option_len
parameter initially contains the size of the buffer pointed to by
the option_value parameter. On return, the option_len
parameter is modified to indicate the actual size of the value returned.
If no option value is supplied or returned, the option_value
parameter can be 0 (zero).

Options at other protocol levels vary in format and name.

DESCRIPTION

The getsockopt() function allows an application program
to query socket options. The calling program specifies the name of
the socket, the name of the option, and a place to store the requested
information. The operating system gets the socket option information
from its internal data structures and passes the requested information
back to the calling program.

Options may exist at multiple
protocol levels. They
are always present at the uppermost socket level. When retrieving
socket options, specify the level at which the option resides and
the name of the option.

RETURN VALUES

Upon successful completion, the getsockopt() function
returns a value of 0 (zero).
Otherwise,
a value of -1 is returned, and
errno is set to indicate the error.

ERRORS

If the getsockopt() function fails,
errno
may be set to one of the following values:
[POSIX] The calling process does not have appropriate permissions.
The socket parameter is not valid.
[POSIX] The send and receive timeout values are too large to fit in the
timeout fields of the socket structure.
The address pointed to by the option_value parameter
is not in a valid (writable) part of the process space, or the option_len
parameter is not in a valid part of the process address space.
The option_value or option_len parameter is invalid.
[POSIX] Insufficient resources are available in the system
to complete the call.
The option is unknown.
The socket parameter refers to a file,
not a socket.
The operation is not supported by the socket protocol.