diff options
author | Alice Frosi <afrosi@redhat.com> | 2023-03-24 16:08:46 +0100 |
---|---|---|
committer | Alice Frosi <afrosi@redhat.com> | 2023-03-24 16:08:46 +0100 |
commit | e6562db0423e6019154baf05beb02ff3da02f3bb (patch) | |
tree | 07c17ea7d3c193c7cdf6b591422a1e6b7ba22a99 /seitan-cooker/filter.h | |
parent | 2e4cab1ff7c9d8db278427d9dca6ccb62619ca18 (diff) | |
download | seitan-e6562db0423e6019154baf05beb02ff3da02f3bb.tar seitan-e6562db0423e6019154baf05beb02ff3da02f3bb.tar.gz seitan-e6562db0423e6019154baf05beb02ff3da02f3bb.tar.bz2 seitan-e6562db0423e6019154baf05beb02ff3da02f3bb.tar.lz seitan-e6562db0423e6019154baf05beb02ff3da02f3bb.tar.xz seitan-e6562db0423e6019154baf05beb02ff3da02f3bb.tar.zst seitan-e6562db0423e6019154baf05beb02ff3da02f3bb.zip |
Re-arrange repository structure
Diffstat (limited to 'seitan-cooker/filter.h')
-rw-r--r-- | seitan-cooker/filter.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/seitan-cooker/filter.h b/seitan-cooker/filter.h new file mode 100644 index 0000000..ee5ab12 --- /dev/null +++ b/seitan-cooker/filter.h @@ -0,0 +1,39 @@ +#ifndef FILTER_H_ +#define FILTER_H_ + +#include <linux/filter.h> +#include <linux/audit.h> +#include <linux/seccomp.h> + +#define JGE(nr, right, left) \ + BPF_JUMP(BPF_JMP | BPF_JGE | BPF_K, (nr), (right), (left)) +#define JUMPA(jump) BPF_JUMP(BPF_JMP | BPF_JA, (jump), 0, 0) +#define EQ(nr, a1, a2) BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, (nr), (a1), (a2)) + +#define MAX_FILTER 1024 + +#define MAX_JUMPS 128 +#define EMPTY -1 + +struct bpf_call { + char *name; + int args[6]; + bool check_arg[6]; +}; + +struct syscall_entry { + unsigned int count; + long nr; + const struct bpf_call *entry; +}; + +void create_lookup_nodes(int jumps[], unsigned int n); +unsigned int left_child(unsigned int parent_index); +unsigned int right_child(unsigned int parent_index); + +unsigned int create_bfp_program(struct syscall_entry table[], + struct sock_filter filter[], + unsigned int n_syscall); +int convert_bpf(char *file, struct bpf_call *entries, int n, bool log); + +#endif |