Willem de Bruijn | e6f30c7 | 2013-01-18 07:17:30 +0000 | [diff] [blame] | 1 | #ifndef _XT_BPF_H |
| 2 | #define _XT_BPF_H |
| 3 | |
| 4 | #include <linux/filter.h> |
Willem de Bruijn | eb8925e | 2016-12-06 16:25:02 -0500 | [diff] [blame] | 5 | #include <linux/limits.h> |
Willem de Bruijn | e6f30c7 | 2013-01-18 07:17:30 +0000 | [diff] [blame] | 6 | #include <linux/types.h> |
| 7 | |
| 8 | #define XT_BPF_MAX_NUM_INSTR 64 |
Willem de Bruijn | eb8925e | 2016-12-06 16:25:02 -0500 | [diff] [blame] | 9 | #define XT_BPF_PATH_MAX (XT_BPF_MAX_NUM_INSTR * sizeof(struct sock_filter)) |
Willem de Bruijn | e6f30c7 | 2013-01-18 07:17:30 +0000 | [diff] [blame] | 10 | |
Alexei Starovoitov | 7ae457c | 2014-07-30 20:34:16 -0700 | [diff] [blame] | 11 | struct bpf_prog; |
Pablo Neira | e10038a | 2014-07-29 18:12:15 +0200 | [diff] [blame] | 12 | |
Willem de Bruijn | e6f30c7 | 2013-01-18 07:17:30 +0000 | [diff] [blame] | 13 | struct xt_bpf_info { |
| 14 | __u16 bpf_program_num_elem; |
| 15 | struct sock_filter bpf_program[XT_BPF_MAX_NUM_INSTR]; |
| 16 | |
| 17 | /* only used in the kernel */ |
Alexei Starovoitov | 7ae457c | 2014-07-30 20:34:16 -0700 | [diff] [blame] | 18 | struct bpf_prog *filter __attribute__((aligned(8))); |
Willem de Bruijn | e6f30c7 | 2013-01-18 07:17:30 +0000 | [diff] [blame] | 19 | }; |
| 20 | |
Willem de Bruijn | eb8925e | 2016-12-06 16:25:02 -0500 | [diff] [blame] | 21 | enum xt_bpf_modes { |
| 22 | XT_BPF_MODE_BYTECODE, |
| 23 | XT_BPF_MODE_FD_PINNED, |
| 24 | XT_BPF_MODE_FD_ELF, |
| 25 | }; |
Shmulik Ladkani | 7e3c72f | 2017-10-09 15:27:15 +0300 | [diff] [blame] | 26 | #define XT_BPF_MODE_PATH_PINNED XT_BPF_MODE_FD_PINNED |
Willem de Bruijn | eb8925e | 2016-12-06 16:25:02 -0500 | [diff] [blame] | 27 | |
| 28 | struct xt_bpf_info_v1 { |
| 29 | __u16 mode; |
| 30 | __u16 bpf_program_num_elem; |
| 31 | __s32 fd; |
| 32 | union { |
| 33 | struct sock_filter bpf_program[XT_BPF_MAX_NUM_INSTR]; |
| 34 | char path[XT_BPF_PATH_MAX]; |
| 35 | }; |
| 36 | |
| 37 | /* only used in the kernel */ |
| 38 | struct bpf_prog *filter __attribute__((aligned(8))); |
| 39 | }; |
| 40 | |
Willem de Bruijn | e6f30c7 | 2013-01-18 07:17:30 +0000 | [diff] [blame] | 41 | #endif /*_XT_BPF_H */ |