Source code

Revision control

Copy as Markdown

Other Tools

# PRSocketOptionData
Type for structure used with {ref}`PR_GetSocketOption` and
{ref}`PR_SetSocketOption` to specify options for file descriptors that
represent sockets.
## Syntax
```{code}
#include <prio.h>
typedef struct PRSocketOptionData
{
PRSockOption option;
union
{
PRUintn ip_ttl;
PRUintn mcast_ttl;
PRUintn tos;
PRBool non_blocking;
PRBool reuse_addr;
PRBool keep_alive;
PRBool mcast_loopback;
PRBool no_delay;
PRSize max_segment;
PRSize recv_buffer_size;
PRSize send_buffer_size;
PRLinger linger;
PRMcastRequest add_member;
PRMcastRequest drop_member;
PRNetAddr mcast_if;
} value;
} PRSocketOptionData;
```
### Fields
The structure has the following fields:
`ip_ttl`
: IP time-to-live.
`mcast_ttl`
: IP multicast time-to-live.
`tos`
: IP type-of-service and precedence.
`non_blocking`
: Nonblocking (network) I/O.
`reuse_addr`
: Allow local address reuse.
`keep_alive`
: Periodically test whether connection is still alive.
`mcast_loopback`
: IP multicast loopback.
`no_delay`
: Disable Nagle algorithm. Don't delay send to coalesce packets.
`max_segment`
: TCP maximum segment size.
`recv_buffer_size`
: Receive buffer size.
`send_buffer_size`
: Send buffer size.
`linger`
: Time to linger on close if data are present in socket send buffer.
`add_member`
: Join an IP multicast group.
`drop_member`
: Leave an IP multicast group.
`mcast_if`
: IP multicast interface address.
### Description
{ref}`PRSocketOptionData` is a name-value pair for a socket option. The
`option` field (of enumeration type {ref}`PRSockOption`) specifies the
name of the socket option, and the `value` field (a union of all
possible values) specifies the value of the option.