5 #ifndef _RTE_IP_FRAG_H_ 6 #define _RTE_IP_FRAG_H_ 22 #include <rte_config.h> 31 #define RTE_IP_FRAG_DEATH_ROW_LEN 32 34 #define RTE_IP_FRAG_DEATH_ROW_MBUF_LEN \ 35 (RTE_IP_FRAG_DEATH_ROW_LEN * (RTE_LIBRTE_IP_FRAG_MAX_FRAG + 1)) 64 uint32_t bucket_entries, uint32_t max_entries,
65 uint64_t max_cycles,
int socket_id);
100 uint16_t nb_pkts_out,
129 struct rte_ipv6_fragment_ext *frag_hdr);
142 static inline struct rte_ipv6_fragment_ext *
145 if (hdr->
proto == IPPROTO_FRAGMENT) {
146 return (
struct rte_ipv6_fragment_ext *) ++hdr;
177 uint16_t nb_pkts_out, uint16_t mtu_size,
215 uint16_t flag_offset, ip_flag, ip_ofs;
218 ip_ofs = (uint16_t)(flag_offset & RTE_IPV4_HDR_OFFSET_MASK);
219 ip_flag = (uint16_t)(flag_offset & RTE_IPV4_HDR_MF_FLAG);
221 return ip_flag != 0 || ip_ofs != 0;
266 #define IP_FRAG_DEATH_ROW_LEN RTE_IP_FRAG_DEATH_ROW_LEN 268 #define IP_FRAG_DEATH_ROW_MBUF_LEN RTE_IP_FRAG_DEATH_ROW_MBUF_LEN 270 #define ipv6_extension_fragment rte_ipv6_fragment_ext
struct rte_mbuf * row[RTE_IP_FRAG_DEATH_ROW_MBUF_LEN]
struct rte_mbuf * rte_ipv4_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl, struct rte_ip_frag_death_row *dr, struct rte_mbuf *mb, uint64_t tms, struct rte_ipv4_hdr *ip_hdr)
rte_be16_t fragment_offset
static struct rte_ipv6_fragment_ext * rte_ipv6_frag_get_ipv6_fragment_header(struct rte_ipv6_hdr *hdr)
void rte_ip_frag_table_destroy(struct rte_ip_frag_tbl *tbl)
void rte_ip_frag_free_death_row(struct rte_ip_frag_death_row *dr, uint32_t prefetch)
__rte_experimental void rte_ip_frag_table_del_expired_entries(struct rte_ip_frag_tbl *tbl, struct rte_ip_frag_death_row *dr, uint64_t tms)
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)
struct rte_ip_frag_tbl * rte_ip_frag_table_create(uint32_t bucket_num, uint32_t bucket_entries, uint32_t max_entries, uint64_t max_cycles, int socket_id)
static int rte_ipv4_frag_pkt_is_fragmented(const struct rte_ipv4_hdr *hdr)
struct rte_mbuf * rte_ipv6_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl, struct rte_ip_frag_death_row *dr, struct rte_mbuf *mb, uint64_t tms, struct rte_ipv6_hdr *ip_hdr, struct rte_ipv6_fragment_ext *frag_hdr)
#define RTE_IP_FRAG_DEATH_ROW_MBUF_LEN
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)
static uint16_t rte_be_to_cpu_16(rte_be16_t x)
void rte_ip_frag_table_statistics_dump(FILE *f, const struct rte_ip_frag_tbl *tbl)