# PRSockOption

Enumeration type used in the `option` field of {ref}`PRSocketOptionData`
to form the name portion of a name-value pair.

## Syntax

```{code}
#include <prio.h>

typedef enum PRSockOption {
  PR_SockOpt_Nonblocking,
  PR_SockOpt_Linger,
  PR_SockOpt_Reuseaddr,
  PR_SockOpt_Keepalive,
  PR_SockOpt_RecvBufferSize,
  PR_SockOpt_SendBufferSize,
  PR_SockOpt_IpTimeToLive,
  PR_SockOpt_IpTypeOfService,
  PR_SockOpt_AddMember,
  PR_SockOpt_DropMember,
  PR_SockOpt_McastInterface,
  PR_SockOpt_McastTimeToLive,
  PR_SockOpt_McastLoopback,
  PR_SockOpt_NoDelay,
  PR_SockOpt_MaxSegment,
  PR_SockOpt_Last
} PRSockOption;
```

### Enumerators

The enumeration has the following enumerators:

`PR_SockOpt_Nonblocking`

: Nonblocking I/O.

`PR_SockOpt_Linger`

: Time to linger on close if data is present in the socket send buffer.

`PR_SockOpt_Reuseaddr`

: Allow local address reuse.

`PR_SockOpt_Keepalive`

: Periodically test whether connection is still alive.

`PR_SockOpt_RecvBufferSize`

: Receive buffer size.

`PR_SockOpt_SendBufferSize`

: Send buffer size.

`PR_SockOpt_IpTimeToLive`

: IP time-to-live.

`PR_SockOpt_IpTypeOfService`

: IP type-of-service and precedence.

`PR_SockOpt_AddMember`

: Join an IP multicast group.

`PR_SockOpt_DropMember`

: Leave an IP multicast group.

`PR_SockOpt_McastInterface`

: IP multicast interface address.

`PR_SockOpt_McastTimeToLive`

: IP multicast time-to-live.

`PR_SockOpt_McastLoopback`

: IP multicast loopback.

`PR_SockOpt_NoDelay`

: Disable Nagle algorithm. Don't delay send to coalesce packets.

`PR_SockOpt_MaxSegment`

: Maximum segment size.

`PR_SockOpt_Last`

: Always one greater than the maximum valid socket option numerator.

## Description

The {ref}`PRSockOption` enumeration consists of all the socket options
supported by NSPR. The `option` field of {ref}`PRSocketOptionData` should
be set to an enumerator of type {ref}`PRSockOption`.
