24 #ifndef __SOURCE_AFP_H__ 25 #define __SOURCE_AFP_H__ 27 #ifndef HAVE_PACKET_FANOUT 28 #define HAVE_PACKET_FANOUT 1 30 #define PACKET_FANOUT 18 32 #define PACKET_FANOUT_HASH 0 33 #define PACKET_FANOUT_LB 1 34 #define PACKET_FANOUT_CPU 2 35 #define PACKET_FANOUT_ROLLOVER 3 36 #define PACKET_FANOUT_RND 4 37 #define PACKET_FANOUT_QM 5 39 #define PACKET_FANOUT_FLAG_ROLLOVER 0x1000 40 #define PACKET_FANOUT_FLAG_DEFRAG 0x8000 42 #include <linux/if_packet.h> 46 #ifdef HAVE_PACKET_EBPF 47 #define AFP_MODE_XDP_BYPASS 1 48 #define AFP_MODE_EBPF_BYPASS 2 49 struct ebpf_timeout_config {
50 const char *pinned_maps_name;
58 #define AFP_RING_MODE (1<<0) 59 #define AFP_ZERO_COPY (1<<1) 60 #define AFP_SOCK_PROTECT (1<<2) 61 #define AFP_EMERGENCY_MODE (1<<3) 62 #define AFP_TPACKET_V3 (1<<4) 63 #define AFP_VLAN_IN_HEADER (1<<5) 64 #define AFP_MMAP_LOCKED (1<<6) 65 #define AFP_BYPASS (1<<7) 66 #define AFP_XDPBYPASS (1<<8) 68 #define AFP_COPY_MODE_NONE 0 69 #define AFP_COPY_MODE_TAP 1 70 #define AFP_COPY_MODE_IPS 2 72 #define AFP_FILE_MAX_PKTS 256 73 #define AFP_IFACE_NAME_LENGTH 48 79 #define AFP_BLOCK_SIZE_DEFAULT_ORDER 3 112 #ifdef HAVE_PACKET_EBPF 113 struct ebpf_timeout_config ebpf_t_config;
116 void (*DerefFunc)(
void *);
152 #ifdef HAVE_PACKET_EBPF 155 unsigned int nr_cpus;
159 #ifdef HAVE_PACKET_EBPF 160 #define AFPV_CLEANUP(afpv) do { \ 161 (afpv)->relptr = NULL; \ 162 (afpv)->copy_mode = 0; \ 163 (afpv)->peer = NULL; \ 164 (afpv)->mpeer = NULL; \ 165 (afpv)->v4_map_fd = -1; \ 166 (afpv)->v6_map_fd = -1; \ 169 #define AFPV_CLEANUP(afpv) do { \ 170 (afpv)->relptr = NULL; \ 171 (afpv)->copy_mode = 0; \ 172 (afpv)->peer = NULL; \ 173 (afpv)->mpeer = NULL; \
TmEcode AFPPeersListInit(void)
Init the global list of AFPPeer.
void TmModuleDecodeAFPRegister(void)
Registration Function for DecodeAFP.
#define SC_ATOMIC_DECLARE(type, name)
wrapper to declare an atomic variable including a (spin) lock to protect it.
struct HtpBodyChunk_ * next
TmEcode AFPPeersListCheck(void)
Check that all AFPPeer got a peer.
int AFPGetLinkType(const char *ifname)
void AFPPeersListClean(void)
Clean the global peers list.
char iface[AFP_IFACE_NAME_LENGTH]
struct AFPIfaceConfig_ AFPIfaceConfig
const char * ebpf_filter_file
int AFPIsFanoutSupported(int cluster_id)
test if we can use FANOUT. Older kernels like those in CentOS6 have HAVE_PACKET_FANOUT defined but fa...
void TmModuleReceiveAFPRegister(void)
Registration Function for RecieveAFP.
#define TAILQ_ENTRY(type)
const char * ebpf_lb_file
#define AFP_IFACE_NAME_LENGTH
struct AFPPacketVars_ AFPPacketVars
per packet AF_PACKET vars
const char * xdp_filter_file
ChecksumValidationMode checksum_mode
per packet AF_PACKET vars