IPv4 helper functions
Collaboration diagram for IPv4 helper functions:

## Topics

| Internal IP functions

## Functions

struct iphdr * | nfq_ip_get_hdr (struct pkt_buff *pktb)
int | nfq_ip_set_transport_header (struct pkt_buff *pktb, struct iphdr *iph)
int | nfq_ip_mangle (struct pkt_buff *pktb, unsigned int dataoff, unsigned int match_offset, unsigned int match_len, const char *rep_buffer, unsigned int rep_len)
int | nfq_ip_snprintf (char *buf, size_t size, const struct iphdr *iph)

## Detailed Description

## Function Documentation

## nfq_ip_get_hdr()

struct iphdr * nfq_ip_get_hdr | ( | struct pkt_buff * | pktb | ) |

nfq_ip_get_hdr - get the IPv4 header

Parameters

  pktb | Pointer to user-space network packet buffer

Returns
  validated pointer to the IPv4 header or NULL if IP is malformed or not version 4

Many programs will not need to call this function. A possible use is to determine the layer 4 protocol. The validation is that the buffer is big enough for the declared lengths in the header, i.e. an extra check for packet truncation.

Definition at line 40 of file ipv4.c.

## nfq_ip_mangle()

int nfq_ip_mangle | ( | struct pkt_buff * | pktb,
|  | unsigned int | dataoff,
|  | unsigned int | match_offset,
|  | unsigned int | match_len,
|  | const char * | rep_buffer,
|  | unsigned int | rep_len )

nfq_ip_mangle - mangle IPv4 packet buffer

Parameters

  pktb | Pointer to user-space network packet buffer
  dataoff | Offset to layer 4 header, or zero to mangle IP header
  match_offset | Offset to content that you want to mangle
  match_len | Length of the existing content you want to mangle
  rep_buffer | Pointer to data you want to use to replace current content
  rep_len | Length of data you want to use to replace current content

Returns
  1 for success and 0 for failure. See pktb_mangle() for failure case

Note
  This function updates the IPv4 length if necessary and recalculates the IPv4 checksum.

Definition at line 127 of file ipv4.c.

## nfq_ip_set_transport_header()

int nfq_ip_set_transport_header | ( | struct pkt_buff * | pktb,
|  | struct iphdr * | iph )

nfq_ip_set_transport_header - set the transport_header field in pktb

Parameters

  pktb | Pointer to user-space network packet buffer
  iph | Pointer to the IPv4 header

Returns
  0 on success or -1 if a minimal validation check fails

Note
  Most programs should call nfq_ip_set_transport_header as soon as possible, since most layer 4 helper functions assume the transport_header field is valid.

Definition at line 73 of file ipv4.c.

## nfq_ip_snprintf()

int nfq_ip_snprintf | ( | char * | buf,
|  | size_t | size,
|  | const struct iphdr * | iph )

nfq_pkt_snprintf_ip - print IPv4 header into buffer in iptables LOG format

Parameters

  buf | Pointer to buffer that will be used to print the header
  size | Size of the buffer (or remaining room in it)
  iph | Pointer to a valid IPv4 header

Returns
  same as snprintf

See also
  snprintf(3)

Definition at line 153 of file ipv4.c.