#include <stdint.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netinet/ip.h>
#include <netinet/ip6.h>
#include <rte_byteorder.h>
#include <rte_cksum.h>
#include <rte_mbuf.h>
Go to the source code of this file.
IPv4-related defines
Definition in file rte_ip4.h.
◆ RTE_IPV4
#define RTE_IPV4 |
( |
|
a, |
|
|
|
b, |
|
|
|
c, |
|
|
|
d |
|
) |
| |
◆ RTE_IPV4_MAX_PKT_LEN
#define RTE_IPV4_MAX_PKT_LEN 65535 |
◆ RTE_IPV4_HDR_IHL_MASK
#define RTE_IPV4_HDR_IHL_MASK (0x0f) |
◆ RTE_IPV4_IHL_MULTIPLIER
#define RTE_IPV4_IHL_MULTIPLIER (4) |
◆ RTE_IPV4_ANY
#define RTE_IPV4_ANY ((uint32_t)0x00000000) |
◆ RTE_IPV4_LOOPBACK
#define RTE_IPV4_LOOPBACK ((uint32_t)0x7f000001) |
◆ RTE_IPV4_BROADCAST
#define RTE_IPV4_BROADCAST ((uint32_t)0xe0000000) |
◆ RTE_IPV4_ALLHOSTS_GROUP
#define RTE_IPV4_ALLHOSTS_GROUP ((uint32_t)0xe0000001) |
◆ RTE_IPV4_ALLRTRS_GROUP
#define RTE_IPV4_ALLRTRS_GROUP ((uint32_t)0xe0000002) |
◆ RTE_IPV4_MAX_LOCAL_GROUP
#define RTE_IPV4_MAX_LOCAL_GROUP ((uint32_t)0xe00000ff) |
◆ RTE_IPV4_MIN_MCAST
#define RTE_IPV4_MIN_MCAST RTE_IPV4(224, 0, 0, 0) |
Minimal IPv4-multicast address
Definition at line 120 of file rte_ip4.h.
◆ RTE_IPV4_MAX_MCAST
#define RTE_IPV4_MAX_MCAST RTE_IPV4(239, 255, 255, 255) |
Maximum IPv4 multicast address
Definition at line 122 of file rte_ip4.h.
◆ RTE_IS_IPV4_MCAST
◆ rte_ipv4_hdr_len()
static uint8_t rte_ipv4_hdr_len |
( |
const struct rte_ipv4_hdr * |
ipv4_hdr | ) |
|
|
inlinestatic |
Get the length of an IPv4 header.
- Parameters
-
ipv4_hdr | Pointer to the IPv4 header. |
- Returns
- The length of the IPv4 header (with options if present) in bytes.
- Examples:
- examples/l3fwd/l3fwd_em.c.
Definition at line 144 of file rte_ip4.h.
◆ rte_ipv4_cksum()
static uint16_t rte_ipv4_cksum |
( |
const struct rte_ipv4_hdr * |
ipv4_hdr | ) |
|
|
inlinestatic |
◆ rte_ipv4_phdr_cksum()
static uint16_t rte_ipv4_phdr_cksum |
( |
const struct rte_ipv4_hdr * |
ipv4_hdr, |
|
|
uint64_t |
ol_flags |
|
) |
| |
|
inlinestatic |
Process the pseudo-header checksum of an IPv4 header.
The checksum field must be set to 0 by the caller.
Depending on the ol_flags, the pseudo-header checksum expected by the drivers is not the same. For instance, when TSO is enabled, the IP payload length must not be included in the packet.
When ol_flags is 0, it computes the standard pseudo-header checksum.
- Parameters
-
ipv4_hdr | The pointer to the contiguous IPv4 header. |
ol_flags | The ol_flags of the associated mbuf. |
- Returns
- The non-complemented checksum to set in the L4 header.
- Examples:
- examples/vhost/main.c.
Definition at line 187 of file rte_ip4.h.
◆ rte_ipv4_udptcp_cksum()
static uint16_t rte_ipv4_udptcp_cksum |
( |
const struct rte_ipv4_hdr * |
ipv4_hdr, |
|
|
const void * |
l4_hdr |
|
) |
| |
|
inlinestatic |
Process the IPv4 UDP or TCP checksum.
The layer 4 checksum must be set to 0 in the L4 header by the caller.
- Parameters
-
ipv4_hdr | The pointer to the contiguous IPv4 header. |
l4_hdr | The pointer to the beginning of the L4 header. |
- Returns
- The complemented checksum to set in the L4 header.
Definition at line 251 of file rte_ip4.h.
◆ rte_ipv4_udptcp_cksum_mbuf()
static uint16_t rte_ipv4_udptcp_cksum_mbuf |
( |
const struct rte_mbuf * |
m, |
|
|
const struct rte_ipv4_hdr * |
ipv4_hdr, |
|
|
uint16_t |
l4_off |
|
) |
| |
|
inlinestatic |
Compute the IPv4 UDP/TCP checksum of a packet.
- Parameters
-
m | The pointer to the mbuf. |
ipv4_hdr | The pointer to the contiguous IPv4 header. |
l4_off | The offset in bytes to start L4 checksum. |
- Returns
- The complemented checksum to set in the L4 header.
Definition at line 308 of file rte_ip4.h.
◆ rte_ipv4_udptcp_cksum_verify()
static int rte_ipv4_udptcp_cksum_verify |
( |
const struct rte_ipv4_hdr * |
ipv4_hdr, |
|
|
const void * |
l4_hdr |
|
) |
| |
|
inlinestatic |
Validate the IPv4 UDP or TCP checksum.
In case of UDP, the caller must first check if udp_hdr->dgram_cksum is 0 (i.e. no checksum).
- Parameters
-
ipv4_hdr | The pointer to the contiguous IPv4 header. |
l4_hdr | The pointer to the beginning of the L4 header. |
- Returns
- Return 0 if the checksum is correct, else -1.
Definition at line 340 of file rte_ip4.h.
◆ rte_ipv4_udptcp_cksum_mbuf_verify()
static int rte_ipv4_udptcp_cksum_mbuf_verify |
( |
const struct rte_mbuf * |
m, |
|
|
const struct rte_ipv4_hdr * |
ipv4_hdr, |
|
|
uint16_t |
l4_off |
|
) |
| |
|
inlinestatic |
Verify the IPv4 UDP/TCP checksum of a packet.
In case of UDP, the caller must first check if udp_hdr->dgram_cksum is 0 (i.e. no checksum).
- Parameters
-
m | The pointer to the mbuf. |
ipv4_hdr | The pointer to the contiguous IPv4 header. |
l4_off | The offset in bytes to start L4 checksum. |
- Returns
- Return 0 if the checksum is correct, else -1.
Definition at line 367 of file rte_ip4.h.