1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2018 Intel Corporation 3 */ 4 5 #ifndef _BPF_H_ 6 #define _BPF_H_ 7 8 #include <rte_bpf.h> 9 #include <sys/mman.h> 10 11 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 15 #define MAX_BPF_STACK_SIZE 0x200 16 17 struct rte_bpf { 18 struct rte_bpf_prm prm; 19 struct rte_bpf_jit jit; 20 size_t sz; 21 uint32_t stack_sz; 22 }; 23 24 extern int bpf_validate(struct rte_bpf *bpf); 25 26 extern int bpf_jit(struct rte_bpf *bpf); 27 28 extern int bpf_jit_x86(struct rte_bpf *); 29 extern int bpf_jit_arm64(struct rte_bpf *); 30 31 extern int rte_bpf_logtype; 32 33 #define RTE_BPF_LOG(lvl, fmt, args...) \ 34 rte_log(RTE_LOG_## lvl, rte_bpf_logtype, fmt, ##args) 35 36 static inline size_t 37 bpf_size(uint32_t bpf_op_sz) 38 { 39 if (bpf_op_sz == BPF_B) 40 return sizeof(uint8_t); 41 else if (bpf_op_sz == BPF_H) 42 return sizeof(uint16_t); 43 else if (bpf_op_sz == BPF_W) 44 return sizeof(uint32_t); 45 else if (bpf_op_sz == EBPF_DW) 46 return sizeof(uint64_t); 47 return 0; 48 } 49 50 #ifdef __cplusplus 51 } 52 #endif 53 54 #endif /* _BPF_H_ */ 55