2022-04-18 08:54:42 -07:00
|
|
|
#ifndef COSMOPOLITAN_TOOL_NET_SANDBOX_H_
|
|
|
|
#define COSMOPOLITAN_TOOL_NET_SANDBOX_H_
|
2023-06-09 18:02:06 -07:00
|
|
|
#include "libc/calls/struct/bpf.internal.h"
|
|
|
|
#include "libc/calls/struct/filter.internal.h"
|
|
|
|
#include "libc/calls/struct/seccomp.internal.h"
|
2022-04-21 09:15:36 -07:00
|
|
|
#include "libc/sysv/consts/audit.h"
|
2022-04-18 08:54:42 -07:00
|
|
|
// clang-format off
|
|
|
|
|
|
|
|
#define _SECCOMP_MACHINE(MAGNUM) \
|
|
|
|
BPF_STMT(BPF_LD | BPF_W | BPF_ABS, offsetof(struct seccomp_data, arch)), \
|
2022-06-27 13:01:58 -07:00
|
|
|
BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, MAGNUM, 1, 0), \
|
2022-04-18 08:54:42 -07:00
|
|
|
BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS)
|
|
|
|
|
|
|
|
#define _SECCOMP_LOAD_SYSCALL_NR() \
|
|
|
|
BPF_STMT(BPF_LD | BPF_W | BPF_ABS, offsetof(struct seccomp_data, nr))
|
|
|
|
|
|
|
|
#define _SECCOMP_ALLOW_SYSCALL(MAGNUM) \
|
|
|
|
BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, MAGNUM, 0, 1), \
|
|
|
|
BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW)
|
|
|
|
|
2022-04-21 09:15:36 -07:00
|
|
|
#define _SECCOMP_TRAP_SYSCALL(MAGNUM, DATA) \
|
|
|
|
BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, MAGNUM, 0, 1), \
|
|
|
|
BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_TRAP | ((DATA) & SECCOMP_RET_DATA))
|
|
|
|
|
|
|
|
#define _SECCOMP_TRACE_SYSCALL(MAGNUM, DATA) \
|
|
|
|
BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, MAGNUM, 0, 1), \
|
|
|
|
BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_TRACE | ((DATA) & SECCOMP_RET_DATA))
|
|
|
|
|
2022-04-18 08:54:42 -07:00
|
|
|
#define _SECCOMP_LOG_AND_RETURN_ERRNO(MAGNUM) \
|
2022-04-21 09:15:36 -07:00
|
|
|
BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ERRNO | ((MAGNUM) & SECCOMP_RET_DATA))
|
2022-04-18 08:54:42 -07:00
|
|
|
|
2022-04-28 09:42:36 -07:00
|
|
|
#define _SECCOMP_LOG_AND_KILL_PROCESS() \
|
|
|
|
BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ERRNO | SECCOMP_RET_KILL_PROCESS)
|
|
|
|
|
2022-04-18 08:54:42 -07:00
|
|
|
#endif /* COSMOPOLITAN_TOOL_NET_SANDBOX_H_ */
|