This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
stellar-stellar/infra/ip_reassembly/ip_reassembly.h
2024-10-21 10:49:41 +08:00

53 lines
1.4 KiB
C

#pragma once
#ifdef __cplusplus
extern "C"
{
#endif
#include <stdint.h>
struct ip_reassembly_stat
{
// IPv4 frag stat
uint64_t ip4_defrags_expected;
uint64_t ip4_defrags_succeed;
uint64_t ip4_defrags_failed;
uint64_t ip4_frags;
uint64_t ip4_frags_freed;
uint64_t ip4_frags_buffered;
uint64_t ip4_frags_no_buffer;
uint64_t ip4_frags_timeout;
uint64_t ip4_frags_invalid_length;
uint64_t ip4_frags_overlap;
uint64_t ip4_frags_too_many;
// IPv6 frag stat
uint64_t ip6_defrags_expected;
uint64_t ip6_defrags_succeed;
uint64_t ip6_defrags_failed;
uint64_t ip6_frags;
uint64_t ip6_frags_freed;
uint64_t ip6_frags_buffered;
uint64_t ip6_frags_no_buffer;
uint64_t ip6_frags_timeout;
uint64_t ip6_frags_invalid_length;
uint64_t ip6_frags_overlap;
uint64_t ip6_frags_too_many;
} __attribute__((aligned(64)));
struct ip_reassembly *ip_reassembly_new(uint64_t timeout_ms, uint64_t frag_queue_num, uint64_t frag_queue_size);
void ip_reassembly_free(struct ip_reassembly *ip_reass);
struct packet *ip_reassembly_defrag(struct ip_reassembly *ip_reass, struct packet *pkt, uint64_t now);
struct packet *ip_reassembly_clean(struct ip_reassembly *ip_reass, uint64_t now_ms);
struct ip_reassembly_stat *ip_reassembly_get_stat(struct ip_reassembly *ip_reass);
void ip_reassembly_print_stat(struct ip_reassembly *ip_reass);
#ifdef __cplusplus
}
#endif