---
name: "IPPROTO_IP"
section: "2const"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/IPPROTO_IP"
---

# IPPROTO\_IP(2const)

Linux IPv4 protocol socket options

## NAME

IPPROTO\_IP - Linux IPv4 protocol socket options

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <netinet/in.h>  /* Definition of IP* constants */
#include <sys/socket.h>
```

**int setsockopt(int** *sockfd***, IPPROTO\_IP, int** *opt***,**                **const void** *val***\[***size***\], size\_t** *size***);** **int getsockopt(int** *sockfd***, IPPROTO\_IP, int** *opt***,**                **void** *val***\[***size***\], size\_t** *size***);**

## DESCRIPTION

IP supports some protocol-specific socket options that can be set with [**setsockopt**(2)](/setsockopt/2.md) and read with [**getsockopt**(2)](/getsockopt/2.md). The socket option level for IP is **IPPROTO\_IP**.

The following socket options are supported.

- [**IP\_ADD\_MEMBERSHIP**(2const)](/IP_ADD_MEMBERSHIP/2const.md) [**IP\_ADD\_SOURCE\_MEMBERSHIP**(2const)](/IP_ADD_SOURCE_MEMBERSHIP/2const.md) [**IP\_BIND\_ADDRESS\_NO\_PORT**(2const)](/IP_BIND_ADDRESS_NO_PORT/2const.md) [**IP\_BLOCK\_SOURCE**(2const)](/IP_BLOCK_SOURCE/2const.md) [**IP\_DROP\_MEMBERSHIP**(2const)](/IP_DROP_MEMBERSHIP/2const.md) [**IP\_DROP\_SOURCE\_MEMBERSHIP**(2const)](/IP_DROP_SOURCE_MEMBERSHIP/2const.md) [**IP\_FREEBIND**(2const)](/IP_FREEBIND/2const.md) [**IP\_HDRINCL**(2const)](/IP_HDRINCL/2const.md) [**IP\_LOCAL\_PORT\_RANGE**(2const)](/IP_LOCAL_PORT_RANGE/2const.md) [**IP\_MSFILTER**(2const)](/IP_MSFILTER/2const.md) [**IP\_MTU**(2const)](/IP_MTU/2const.md) [**IP\_MTU\_DISCOVER**(2const)](/IP_MTU_DISCOVER/2const.md) [**IP\_MULTICAST\_ALL**(2const)](/IP_MULTICAST_ALL/2const.md) [**IP\_MULTICAST\_IF**(2const)](/IP_MULTICAST_IF/2const.md) [**IP\_MULTICAST\_LOOP**(2const)](/IP_MULTICAST_LOOP/2const.md) [**IP\_MULTICAST\_TTL**(2const)](/IP_MULTICAST_TTL/2const.md) [**IP\_NODEFRAG**(2const)](/IP_NODEFRAG/2const.md) [**IP\_OPTIONS**(2const)](/IP_OPTIONS/2const.md) [**IP\_PASSSEC**(2const)](/IP_PASSSEC/2const.md) [**IP\_PKTINFO**(2const)](/IP_PKTINFO/2const.md) [**IP\_RECVERR**(2const)](/IP_RECVERR/2const.md) [**IP\_RECVOPTS**(2const)](/IP_RECVOPTS/2const.md) [**IP\_RECVORIGDSTADDR**(2const)](/IP_RECVORIGDSTADDR/2const.md) [**IP\_RECVTOS**(2const)](/IP_RECVTOS/2const.md) [**IP\_RECVTTL**(2const)](/IP_RECVTTL/2const.md) [**IP\_RETOPTS**(2const)](/IP_RETOPTS/2const.md) [**IP\_ROUTER\_ALERT**(2const)](/IP_ROUTER_ALERT/2const.md) [**IP\_TOS**(2const)](/IP_TOS/2const.md) [**IP\_TRANSPARENT**(2const)](/IP_TRANSPARENT/2const.md) [**IP\_TTL**(2const)](/IP_TTL/2const.md) [**IP\_UNBLOCK\_SOURCE**(2const)](/IP_UNBLOCK_SOURCE/2const.md)

  ## ERRORS

See [**setsockopt**(2)](/setsockopt/2.md). See [**ip**(7)](/ip/7.md).

- **ENOPROTOOPT**

  *opt* is invalid.

## HISTORY

- **IPPROTO\_IP**

  POSIX.1-2001.

## SEE ALSO

[**setsockopt**(2)](/setsockopt/2.md), [**ip**(7)](/ip/7.md)
