linux/include/uapi/linux/netfilter/xt_bpf.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
   2#ifndef _XT_BPF_H
   3#define _XT_BPF_H
   4
   5#include <linux/filter.h>
   6#include <linux/limits.h>
   7#include <linux/types.h>
   8
   9#define XT_BPF_MAX_NUM_INSTR    64
  10#define XT_BPF_PATH_MAX         (XT_BPF_MAX_NUM_INSTR * sizeof(struct sock_filter))
  11
  12struct bpf_prog;
  13
  14struct xt_bpf_info {
  15        __u16 bpf_program_num_elem;
  16        struct sock_filter bpf_program[XT_BPF_MAX_NUM_INSTR];
  17
  18        /* only used in the kernel */
  19        struct bpf_prog *filter __attribute__((aligned(8)));
  20};
  21
  22enum xt_bpf_modes {
  23        XT_BPF_MODE_BYTECODE,
  24        XT_BPF_MODE_FD_PINNED,
  25        XT_BPF_MODE_FD_ELF,
  26};
  27#define XT_BPF_MODE_PATH_PINNED XT_BPF_MODE_FD_PINNED
  28
  29struct xt_bpf_info_v1 {
  30        __u16 mode;
  31        __u16 bpf_program_num_elem;
  32        __s32 fd;
  33        union {
  34                struct sock_filter bpf_program[XT_BPF_MAX_NUM_INSTR];
  35                char path[XT_BPF_PATH_MAX];
  36        };
  37
  38        /* only used in the kernel */
  39        struct bpf_prog *filter __attribute__((aligned(8)));
  40};
  41
  42#endif /*_XT_BPF_H */
  43