DPDK
20.05.0
|
#include <stdint.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <rte_byteorder.h>
#include <rte_mbuf.h>
Go to the source code of this file.
Data Structures | |
struct | rte_ipv4_hdr |
struct | rte_ipv6_hdr |
Macros | |
#define | RTE_IPV4(a, b, c, d) |
#define | RTE_IPV4_MAX_PKT_LEN 65535 |
#define | RTE_IPV4_HDR_IHL_MASK (0x0f) |
#define | RTE_IPV4_IHL_MULTIPLIER (4) |
#define | RTE_IPV4_ANY ((uint32_t)0x00000000) |
#define | RTE_IPV4_LOOPBACK ((uint32_t)0x7f000001) |
#define | RTE_IPV4_BROADCAST ((uint32_t)0xe0000000) |
#define | RTE_IPV4_ALLHOSTS_GROUP ((uint32_t)0xe0000001) |
#define | RTE_IPV4_ALLRTRS_GROUP ((uint32_t)0xe0000002) |
#define | RTE_IPV4_MAX_LOCAL_GROUP ((uint32_t)0xe00000ff) |
#define | RTE_IPV4_MIN_MCAST RTE_IPV4(224, 0, 0, 0) |
#define | RTE_IPV4_MAX_MCAST RTE_IPV4(239, 255, 255, 255) |
#define | RTE_IS_IPV4_MCAST(x) ((x) >= RTE_IPV4_MIN_MCAST && (x) <= RTE_IPV4_MAX_MCAST) |
#define | RTE_IPV6_MIN_MTU 1280 |
Functions | |
static uint16_t | rte_raw_cksum (const void *buf, size_t len) |
static int | rte_raw_cksum_mbuf (const struct rte_mbuf *m, uint32_t off, uint32_t len, uint16_t *cksum) |
static uint16_t | rte_ipv4_cksum (const struct rte_ipv4_hdr *ipv4_hdr) |
static uint16_t | rte_ipv4_phdr_cksum (const struct rte_ipv4_hdr *ipv4_hdr, uint64_t ol_flags) |
static uint16_t | rte_ipv4_udptcp_cksum (const struct rte_ipv4_hdr *ipv4_hdr, const void *l4_hdr) |
static uint16_t | rte_ipv6_phdr_cksum (const struct rte_ipv6_hdr *ipv6_hdr, uint64_t ol_flags) |
static uint16_t | rte_ipv6_udptcp_cksum (const struct rte_ipv6_hdr *ipv6_hdr, const void *l4_hdr) |
static __rte_experimental int | rte_ipv6_get_next_ext (const uint8_t *p, int proto, size_t *ext_len) |
IP-related defines
Definition in file rte_ip.h.
#define RTE_IPV4 | ( | a, | |
b, | |||
c, | |||
d | |||
) |
Create IPv4 address
#define RTE_IPV4_MAX_PKT_LEN 65535 |
Maximal IPv4 packet length (including a header)
#define RTE_IPV4_HDR_IHL_MASK (0x0f) |
Internet header length mask for version_ihl field
#define RTE_IPV4_IHL_MULTIPLIER (4) |
Internet header length field multiplier (IHL field specifies overall header length in number of 4-byte words)
#define RTE_IPV4_ALLHOSTS_GROUP ((uint32_t)0xe0000001) |
#define RTE_IPV4_ALLRTRS_GROUP ((uint32_t)0xe0000002) |
#define RTE_IPV4_MAX_LOCAL_GROUP ((uint32_t)0xe00000ff) |
#define RTE_IPV4_MIN_MCAST RTE_IPV4(224, 0, 0, 0) |
#define RTE_IPV4_MAX_MCAST RTE_IPV4(239, 255, 255, 255) |
#define RTE_IS_IPV4_MCAST | ( | x | ) | ((x) >= RTE_IPV4_MIN_MCAST && (x) <= RTE_IPV4_MAX_MCAST) |
check if IPv4 address is multicast
#define RTE_IPV6_MIN_MTU 1280 |
|
inlinestatic |
|
inlinestatic |
Compute the raw (non complemented) checksum of a packet.
m | The pointer to the mbuf. |
off | The offset in bytes to start the checksum. |
len | The length in bytes of the data to checksum. |
cksum | A pointer to the checksum, filled on success. |
|
inlinestatic |
Process the IPv4 checksum of an IPv4 header.
The checksum field must be set to 0 by the caller.
ipv4_hdr | The pointer to the contiguous IPv4 header. |
|
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.
ipv4_hdr | The pointer to the contiguous IPv4 header. |
ol_flags | The ol_flags of the associated mbuf. |
|
inlinestatic |
Process the IPv4 UDP or TCP checksum.
The IPv4 header should not contains options. The IP and layer 4 checksum must be set to 0 in the packet by the caller.
ipv4_hdr | The pointer to the contiguous IPv4 header. |
l4_hdr | The pointer to the beginning of the L4 header. |
|
inlinestatic |
Process the pseudo-header checksum of an IPv6 header.
Depending on the ol_flags, the pseudo-header checksum expected by the drivers is not the same. For instance, when TSO is enabled, the IPv6 payload length must not be included in the packet.
When ol_flags is 0, it computes the standard pseudo-header checksum.
ipv6_hdr | The pointer to the contiguous IPv6 header. |
ol_flags | The ol_flags of the associated mbuf. |
|
inlinestatic |
Process the IPv6 UDP or TCP checksum.
The IPv4 header should not contains options. The layer 4 checksum must be set to 0 in the packet by the caller.
ipv6_hdr | The pointer to the contiguous IPv6 header. |
l4_hdr | The pointer to the beginning of the L4 header. |
|
inlinestatic |
Parse next IPv6 header extension
This function checks if proto number is an IPv6 extensions and parses its data if so, providing information on next header and extension length.
p | Pointer to an extension raw data. |
proto | Protocol number extracted from the "next header" field from the IPv6 header or the previous extension. |
ext_len | Extension data length. |