DPDK  16.04.0
Data Structures | Macros | Enumerations | Functions
rte_ip_frag.h File Reference
#include <stdint.h>
#include <stdio.h>
#include <rte_malloc.h>
#include <rte_memory.h>
#include <rte_ip.h>
#include <rte_byteorder.h>

Go to the source code of this file.

Data Structures

struct  rte_ip_frag_death_row
struct  ip_frag_tbl_stat
struct  rte_ip_frag_tbl

Macros

#define IP_FRAG_DEATH_ROW_LEN   32
#define RTE_IPV6_EHDR_MF_SHIFT   0

Enumerations

enum  { IP_LAST_FRAG_IDX, IP_FIRST_FRAG_IDX, IP_MIN_FRAG_NUM, IP_MAX_FRAG_NUM = RTE_LIBRTE_IP_FRAG_MAX_FRAG }

Functions

int32_t rte_ipv6_fragment_packet (struct rte_mbuf *pkt_in, struct rte_mbuf **pkts_out, uint16_t nb_pkts_out, uint16_t mtu_size, struct rte_mempool *pool_direct, struct rte_mempool *pool_indirect)
int32_t rte_ipv4_fragment_packet (struct rte_mbuf *pkt_in, struct rte_mbuf **pkts_out, uint16_t nb_pkts_out, uint16_t mtu_size, struct rte_mempool *pool_direct, struct rte_mempool *pool_indirect)

Detailed Description

RTE IP Fragmentation and Reassembly

Implementation of IP packet fragmentation and reassembly.

Definition in file rte_ip_frag.h.

Macro Definition Documentation

#define IP_FRAG_DEATH_ROW_LEN   32

death row size (in packets)

Definition at line 94 of file rte_ip_frag.h.

#define RTE_IPV6_EHDR_MF_SHIFT   0

IPv6 fragment extension header

Definition at line 131 of file rte_ip_frag.h.

Enumeration Type Documentation

anonymous enum
Enumerator:
IP_LAST_FRAG_IDX 

index of last fragment

IP_FIRST_FRAG_IDX 

index of first fragment

IP_MIN_FRAG_NUM 

minimum number of fragments

IP_MAX_FRAG_NUM 

maximum number of fragments per packet

Definition at line 58 of file rte_ip_frag.h.

Function Documentation

int32_t rte_ipv6_fragment_packet ( struct rte_mbuf pkt_in,
struct rte_mbuf **  pkts_out,
uint16_t  nb_pkts_out,
uint16_t  mtu_size,
struct rte_mempool pool_direct,
struct rte_mempool pool_indirect 
)

This function implements the fragmentation of IPv6 packets.

Parameters
pkt_inThe input packet.
pkts_outArray storing the output fragments.
nb_pkts_outNumber of fragments.
mtu_sizeSize in bytes of the Maximum Transfer Unit (MTU) for the outgoing IPv6 datagrams. This value includes the size of the IPv6 header.
pool_directMBUF pool used for allocating direct buffers for the output fragments.
pool_indirectMBUF pool used for allocating indirect buffers for the output fragments.
Returns
Upon successful completion - number of output fragments placed in the pkts_out array. Otherwise - (-1) * errno.
Examples:
ip_fragmentation/main.c.
int32_t rte_ipv4_fragment_packet ( struct rte_mbuf pkt_in,
struct rte_mbuf **  pkts_out,
uint16_t  nb_pkts_out,
uint16_t  mtu_size,
struct rte_mempool pool_direct,
struct rte_mempool pool_indirect 
)

IPv4 fragmentation.

This function implements the fragmentation of IPv4 packets.

Parameters
pkt_inThe input packet.
pkts_outArray storing the output fragments.
nb_pkts_outNumber of fragments.
mtu_sizeSize in bytes of the Maximum Transfer Unit (MTU) for the outgoing IPv4 datagrams. This value includes the size of the IPv4 header.
pool_directMBUF pool used for allocating direct buffers for the output fragments.
pool_indirectMBUF pool used for allocating indirect buffers for the output fragments.
Returns
Upon successful completion - number of output fragments placed in the pkts_out array. Otherwise - (-1) * errno.
Examples:
ip_fragmentation/main.c.