]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/basic/bpf-program.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
5 Copyright 2016 Daniel Mack
7 [Except for the stuff copy/pasted from the kernel sources, see below]
10 #include <linux/bpf.h>
12 #include <sys/syscall.h>
17 typedef struct BPFProgram BPFProgram
;
25 size_t n_instructions
;
27 struct bpf_insn
*instructions
;
31 uint32_t attached_flags
;
34 int bpf_program_new(uint32_t prog_type
, BPFProgram
**ret
);
35 BPFProgram
*bpf_program_unref(BPFProgram
*p
);
36 BPFProgram
*bpf_program_ref(BPFProgram
*p
);
38 int bpf_program_add_instructions(BPFProgram
*p
, const struct bpf_insn
*insn
, size_t count
);
39 int bpf_program_load_kernel(BPFProgram
*p
, char *log_buf
, size_t log_size
);
41 int bpf_program_cgroup_attach(BPFProgram
*p
, int type
, const char *path
, uint32_t flags
);
42 int bpf_program_cgroup_detach(BPFProgram
*p
);
44 int bpf_map_new(enum bpf_map_type type
, size_t key_size
, size_t value_size
, size_t max_entries
, uint32_t flags
);
45 int bpf_map_update_element(int fd
, const void *key
, void *value
);
46 int bpf_map_lookup_element(int fd
, const void *key
, void *value
);
48 DEFINE_TRIVIAL_CLEANUP_FUNC(BPFProgram
*, bpf_program_unref
);