Line data Source code
1 : /* THIS FILE WAS GENERATED BY generate_filters.py. DO NOT EDIT BY HAND! */
2 : #ifndef HEADER_fd_src_discof_restore_generated_fd_snapct_tile_seccomp_h
3 : #define HEADER_fd_src_discof_restore_generated_fd_snapct_tile_seccomp_h
4 :
5 : #if defined(__linux__)
6 :
7 : #include "../../../../src/util/fd_util_base.h"
8 : #include <linux/audit.h>
9 : #include <linux/capability.h>
10 : #include <linux/filter.h>
11 : #include <linux/seccomp.h>
12 : #include <linux/bpf.h>
13 : #include <linux/unistd.h>
14 : #include <sys/syscall.h>
15 : #include <signal.h>
16 : #include <stddef.h>
17 :
18 : #if defined(__i386__)
19 : # define ARCH_NR AUDIT_ARCH_I386
20 : #elif defined(__x86_64__)
21 : # define ARCH_NR AUDIT_ARCH_X86_64
22 : #elif defined(__aarch64__)
23 : # define ARCH_NR AUDIT_ARCH_AARCH64
24 : #else
25 : # error "Target architecture is unsupported by seccomp."
26 : #endif
27 :
28 : #define FD_SECCOMP_ARG_LO_OFFSET(argno) ( offsetof( struct seccomp_data, args[(argno)] ) )
29 : #define FD_SECCOMP_ARG_HI_OFFSET(argno) ( offsetof( struct seccomp_data, args[(argno)] ) + 4U )
30 :
31 : #define FD_SECCOMP_ARG_LO(x) ((uint)(((ulong)(uint)(int)(x) ) & 0xffffffffUL))
32 : #define FD_SECCOMP_ARG_HI(x) ((uint)(((ulong)(x) >> 32) & 0xffffffffUL))
33 :
34 : static const uint sock_filter_policy_fd_snapct_tile_instr_cnt = 186;
35 :
36 0 : static void populate_sock_filter_policy_fd_snapct_tile( ulong out_cnt, struct sock_filter out[ static 186 ], uint logfile_fd, uint dir_fd, uint out_full_fd, uint out_inc_fd, uint min_ping_fd, uint max_ping_fd, uint etc_hosts_fd, uint etc_resolv_conf_fd ) {
37 0 : FD_TEST( out_cnt >= 186 );
38 0 : struct sock_filter filter[186] = {
39 : /* validate architecture */
40 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, ( offsetof( struct seccomp_data, arch ) )),
41 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ARCH_NR, 0, /* RET_KILL_PROCESS */ 18 ),
42 : /* load syscall number */
43 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, ( offsetof( struct seccomp_data, nr ) )),
44 : /* check write */
45 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_write, /* check_write */ 18, 0 ),
46 : /* check ftruncate */
47 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_ftruncate, /* check_ftruncate */ 27, 0 ),
48 : /* check lseek */
49 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_lseek, /* check_lseek */ 32, 0 ),
50 : /* check read */
51 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_read, /* check_read */ 47, 0 ),
52 : /* check fsync */
53 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_fsync, /* check_fsync */ 62, 0 ),
54 : /* check socket */
55 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_socket, /* check_socket */ 65, 0 ),
56 : /* check recvmsg */
57 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_recvmsg, /* check_recvmsg */ 78, 0 ),
58 : /* check connect */
59 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_connect, /* check_connect */ 81, 0 ),
60 : /* check close */
61 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_close, /* check_close */ 92, 0 ),
62 : /* allow ppoll */
63 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_ppoll, /* RET_ALLOW */ 8, 0 ),
64 : /* check sendto */
65 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_sendto, /* check_sendto */ 106, 0 ),
66 : /* check recvfrom */
67 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_recvfrom, /* check_recvfrom */ 121, 0 ),
68 : /* check setsockopt */
69 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_setsockopt, /* check_setsockopt */ 132, 0 ),
70 : /* check renameat */
71 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_renameat, /* check_renameat */ 151, 0 ),
72 : /* check renameat2 */
73 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_renameat2, /* check_renameat2 */ 156, 0 ),
74 : /* allow getrandom */
75 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_getrandom, /* RET_ALLOW */ 2, 0 ),
76 : /* check exit */
77 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, SYS_exit, /* check_exit */ 162, 0 ),
78 : // RET_KILL_PROCESS:
79 : /* default deny */
80 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
81 : // RET_ALLOW:
82 : /* allow */
83 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
84 : // check_write:
85 : /* arg 0 low 32 bits */
86 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
87 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 0x00000002U, /* write_ALLOW */ 7, /* or_1 */ 0 ),
88 : // or_1:
89 : /* arg 0 low 32 bits */
90 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
91 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(logfile_fd)), /* write_ALLOW */ 5, /* or_2 */ 0 ),
92 : // or_2:
93 : /* arg 0 low 32 bits */
94 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
95 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_full_fd)), /* write_ALLOW */ 3, /* or_3 */ 0 ),
96 : // or_3:
97 : /* arg 0 low 32 bits */
98 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
99 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_inc_fd)), /* write_ALLOW */ 1, /* write_KILL */ 0 ),
100 : // write_KILL:
101 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
102 : // write_ALLOW:
103 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
104 : // check_ftruncate:
105 : /* arg 0 low 32 bits */
106 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
107 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_full_fd)), /* ftruncate_ALLOW */ 3, /* or_4 */ 0 ),
108 : // or_4:
109 : /* arg 0 low 32 bits */
110 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
111 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_inc_fd)), /* ftruncate_ALLOW */ 1, /* ftruncate_KILL */ 0 ),
112 : // ftruncate_KILL:
113 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
114 : // ftruncate_ALLOW:
115 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
116 : // check_lseek:
117 : /* arg 0 low 32 bits */
118 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
119 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_full_fd)), /* lseek_ALLOW */ 13, /* or_5 */ 0 ),
120 : // or_5:
121 : /* arg 0 low 32 bits */
122 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
123 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_inc_fd)), /* lseek_ALLOW */ 11, /* or_6 */ 0 ),
124 : // or_6:
125 : /* arg 0 low 32 bits */
126 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
127 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(etc_hosts_fd)), /* and_7 */ 2, /* or_8 */ 0 ),
128 : // or_8:
129 : /* arg 0 low 32 bits */
130 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
131 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(etc_resolv_conf_fd)), /* and_7 */ 0, /* lseek_KILL */ 6 ),
132 : // and_7:
133 : /* arg 1 high 32 bits */
134 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_HI_OFFSET(1)),
135 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 0x00000000U, /* arg_hi_eq_10 */ 0, /* lseek_KILL */ 4 ),
136 : // arg_hi_eq_10:
137 : /* arg 1 low 32 bits */
138 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(1)),
139 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 0x00000000U, /* and_9 */ 0, /* lseek_KILL */ 2 ),
140 : // and_9:
141 : /* arg 2 low 32 bits */
142 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(2)),
143 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, FD_SECCOMP_ARG_LO(SEEK_SET), /* lseek_ALLOW */ 1, /* lseek_KILL */ 0 ),
144 : // lseek_KILL:
145 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
146 : // lseek_ALLOW:
147 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
148 : // check_read:
149 : /* arg 0 low 32 bits */
150 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
151 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 0x00000002U, /* read_KILL */ 12, /* or_11 */ 0 ),
152 : // or_11:
153 : /* arg 0 low 32 bits */
154 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
155 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(logfile_fd)), /* read_KILL */ 10, /* or_12 */ 0 ),
156 : // or_12:
157 : /* arg 0 low 32 bits */
158 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
159 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(dir_fd)), /* read_KILL */ 8, /* or_13 */ 0 ),
160 : // or_13:
161 : /* arg 0 low 32 bits */
162 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
163 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_full_fd)), /* read_KILL */ 6, /* or_14 */ 0 ),
164 : // or_14:
165 : /* arg 0 low 32 bits */
166 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
167 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_inc_fd)), /* read_KILL */ 4, /* or_15 */ 0 ),
168 : // or_15:
169 : /* arg 0 low 32 bits */
170 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
171 0 : BPF_JUMP( BPF_JMP | BPF_JGE | BPF_K, ((uint)(min_ping_fd)), /* and_16 */ 0, /* read_ALLOW */ 3 ),
172 : // and_16:
173 : /* arg 0 low 32 bits */
174 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
175 0 : BPF_JUMP( BPF_JMP | BPF_JGT | BPF_K, ((uint)(max_ping_fd)), /* read_ALLOW */ 1, /* read_KILL */ 0 ),
176 : // read_KILL:
177 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
178 : // read_ALLOW:
179 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
180 : // check_fsync:
181 : /* arg 0 low 32 bits */
182 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
183 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(logfile_fd)), /* fsync_ALLOW */ 1, /* fsync_KILL */ 0 ),
184 : // fsync_KILL:
185 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
186 : // fsync_ALLOW:
187 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
188 : // check_socket:
189 : /* arg 0 low 32 bits */
190 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
191 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, FD_SECCOMP_ARG_LO(AF_INET), /* and_18 */ 0, /* or_17 */ 4 ),
192 : // and_18:
193 : /* arg 1 low 32 bits */
194 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(1)),
195 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, FD_SECCOMP_ARG_LO(SOCK_STREAM|SOCK_NONBLOCK), /* and_19 */ 0, /* or_17 */ 2 ),
196 : // and_19:
197 : /* arg 2 low 32 bits */
198 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(2)),
199 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 0x00000000U, /* socket_ALLOW */ 7, /* or_17 */ 0 ),
200 : // or_17:
201 : /* arg 0 low 32 bits */
202 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
203 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, FD_SECCOMP_ARG_LO(AF_INET), /* and_20 */ 0, /* socket_KILL */ 4 ),
204 : // and_20:
205 : /* arg 1 low 32 bits */
206 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(1)),
207 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, FD_SECCOMP_ARG_LO(SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK), /* and_21 */ 0, /* socket_KILL */ 2 ),
208 : // and_21:
209 : /* arg 2 low 32 bits */
210 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(2)),
211 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 0x00000000U, /* socket_ALLOW */ 1, /* socket_KILL */ 0 ),
212 : // socket_KILL:
213 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
214 : // socket_ALLOW:
215 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
216 : // check_recvmsg:
217 : /* arg 2 low 32 bits */
218 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(2)),
219 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 0x00000000U, /* recvmsg_ALLOW */ 1, /* recvmsg_KILL */ 0 ),
220 : // recvmsg_KILL:
221 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
222 : // recvmsg_ALLOW:
223 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
224 : // check_connect:
225 : /* arg 0 low 32 bits */
226 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
227 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 0x00000002U, /* connect_KILL */ 8, /* or_22 */ 0 ),
228 : // or_22:
229 : /* arg 0 low 32 bits */
230 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
231 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(logfile_fd)), /* connect_KILL */ 6, /* or_23 */ 0 ),
232 : // or_23:
233 : /* arg 0 low 32 bits */
234 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
235 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(dir_fd)), /* connect_KILL */ 4, /* or_24 */ 0 ),
236 : // or_24:
237 : /* arg 0 low 32 bits */
238 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
239 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_full_fd)), /* connect_KILL */ 2, /* or_25 */ 0 ),
240 : // or_25:
241 : /* arg 0 low 32 bits */
242 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
243 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_inc_fd)), /* connect_KILL */ 0, /* connect_ALLOW */ 1 ),
244 : // connect_KILL:
245 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
246 : // connect_ALLOW:
247 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
248 : // check_close:
249 : /* arg 0 low 32 bits */
250 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
251 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 0x00000002U, /* close_KILL */ 12, /* or_26 */ 0 ),
252 : // or_26:
253 : /* arg 0 low 32 bits */
254 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
255 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(logfile_fd)), /* close_KILL */ 10, /* or_27 */ 0 ),
256 : // or_27:
257 : /* arg 0 low 32 bits */
258 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
259 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(dir_fd)), /* close_KILL */ 8, /* or_28 */ 0 ),
260 : // or_28:
261 : /* arg 0 low 32 bits */
262 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
263 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_full_fd)), /* close_KILL */ 6, /* or_29 */ 0 ),
264 : // or_29:
265 : /* arg 0 low 32 bits */
266 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
267 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_inc_fd)), /* close_KILL */ 4, /* or_30 */ 0 ),
268 : // or_30:
269 : /* arg 0 low 32 bits */
270 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
271 0 : BPF_JUMP( BPF_JMP | BPF_JGE | BPF_K, ((uint)(min_ping_fd)), /* and_31 */ 0, /* close_ALLOW */ 3 ),
272 : // and_31:
273 : /* arg 0 low 32 bits */
274 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
275 0 : BPF_JUMP( BPF_JMP | BPF_JGT | BPF_K, ((uint)(max_ping_fd)), /* close_ALLOW */ 1, /* close_KILL */ 0 ),
276 : // close_KILL:
277 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
278 : // close_ALLOW:
279 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
280 : // check_sendto:
281 : /* arg 0 low 32 bits */
282 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
283 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 0x00000002U, /* sendto_KILL */ 12, /* or_32 */ 0 ),
284 : // or_32:
285 : /* arg 0 low 32 bits */
286 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
287 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(logfile_fd)), /* sendto_KILL */ 10, /* or_33 */ 0 ),
288 : // or_33:
289 : /* arg 0 low 32 bits */
290 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
291 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(dir_fd)), /* sendto_KILL */ 8, /* or_34 */ 0 ),
292 : // or_34:
293 : /* arg 0 low 32 bits */
294 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
295 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_full_fd)), /* sendto_KILL */ 6, /* or_35 */ 0 ),
296 : // or_35:
297 : /* arg 0 low 32 bits */
298 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
299 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_inc_fd)), /* sendto_KILL */ 4, /* or_36 */ 0 ),
300 : // or_36:
301 : /* arg 0 low 32 bits */
302 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
303 0 : BPF_JUMP( BPF_JMP | BPF_JGE | BPF_K, ((uint)(min_ping_fd)), /* and_37 */ 0, /* sendto_ALLOW */ 3 ),
304 : // and_37:
305 : /* arg 0 low 32 bits */
306 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
307 0 : BPF_JUMP( BPF_JMP | BPF_JGT | BPF_K, ((uint)(max_ping_fd)), /* sendto_ALLOW */ 1, /* sendto_KILL */ 0 ),
308 : // sendto_KILL:
309 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
310 : // sendto_ALLOW:
311 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
312 : // check_recvfrom:
313 : /* arg 0 low 32 bits */
314 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
315 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 0x00000002U, /* recvfrom_KILL */ 8, /* or_38 */ 0 ),
316 : // or_38:
317 : /* arg 0 low 32 bits */
318 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
319 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(logfile_fd)), /* recvfrom_KILL */ 6, /* or_39 */ 0 ),
320 : // or_39:
321 : /* arg 0 low 32 bits */
322 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
323 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(dir_fd)), /* recvfrom_KILL */ 4, /* or_40 */ 0 ),
324 : // or_40:
325 : /* arg 0 low 32 bits */
326 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
327 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_full_fd)), /* recvfrom_KILL */ 2, /* or_41 */ 0 ),
328 : // or_41:
329 : /* arg 0 low 32 bits */
330 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
331 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_inc_fd)), /* recvfrom_KILL */ 0, /* recvfrom_ALLOW */ 1 ),
332 : // recvfrom_KILL:
333 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
334 : // recvfrom_ALLOW:
335 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
336 : // check_setsockopt:
337 : /* arg 0 low 32 bits */
338 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
339 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 0x00000002U, /* setsockopt_KILL */ 16, /* or_43 */ 0 ),
340 : // or_43:
341 : /* arg 0 low 32 bits */
342 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
343 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(logfile_fd)), /* setsockopt_KILL */ 14, /* or_44 */ 0 ),
344 : // or_44:
345 : /* arg 0 low 32 bits */
346 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
347 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(dir_fd)), /* setsockopt_KILL */ 12, /* or_45 */ 0 ),
348 : // or_45:
349 : /* arg 0 low 32 bits */
350 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
351 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_full_fd)), /* setsockopt_KILL */ 10, /* or_46 */ 0 ),
352 : // or_46:
353 : /* arg 0 low 32 bits */
354 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
355 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(out_inc_fd)), /* setsockopt_KILL */ 8, /* or_47 */ 0 ),
356 : // or_47:
357 : /* arg 0 low 32 bits */
358 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
359 0 : BPF_JUMP( BPF_JMP | BPF_JGE | BPF_K, ((uint)(min_ping_fd)), /* and_48 */ 0, /* and_42 */ 2 ),
360 : // and_48:
361 : /* arg 0 low 32 bits */
362 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
363 0 : BPF_JUMP( BPF_JMP | BPF_JGT | BPF_K, ((uint)(max_ping_fd)), /* and_42 */ 0, /* setsockopt_KILL */ 4 ),
364 : // and_42:
365 : /* arg 1 low 32 bits */
366 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(1)),
367 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, FD_SECCOMP_ARG_LO(IPPROTO_TCP), /* and_49 */ 0, /* setsockopt_KILL */ 2 ),
368 : // and_49:
369 : /* arg 2 low 32 bits */
370 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(2)),
371 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, FD_SECCOMP_ARG_LO(TCP_NODELAY), /* setsockopt_ALLOW */ 1, /* setsockopt_KILL */ 0 ),
372 : // setsockopt_KILL:
373 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
374 : // setsockopt_ALLOW:
375 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
376 : // check_renameat:
377 : /* arg 0 low 32 bits */
378 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
379 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(dir_fd)), /* and_50 */ 0, /* renameat_KILL */ 2 ),
380 : // and_50:
381 : /* arg 2 low 32 bits */
382 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(2)),
383 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(dir_fd)), /* renameat_ALLOW */ 1, /* renameat_KILL */ 0 ),
384 : // renameat_KILL:
385 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
386 : // renameat_ALLOW:
387 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
388 : // check_renameat2:
389 : /* arg 0 low 32 bits */
390 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
391 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(dir_fd)), /* and_51 */ 0, /* renameat2_KILL */ 4 ),
392 : // and_51:
393 : /* arg 2 low 32 bits */
394 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(2)),
395 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, ((uint)(dir_fd)), /* and_52 */ 0, /* renameat2_KILL */ 2 ),
396 : // and_52:
397 : /* arg 4 low 32 bits */
398 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(4)),
399 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 0x00000001U, /* renameat2_ALLOW */ 1, /* renameat2_KILL */ 0 ),
400 : // renameat2_KILL:
401 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
402 : // renameat2_ALLOW:
403 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
404 : // check_exit:
405 : /* arg 0 low 32 bits */
406 0 : BPF_STMT( BPF_LD | BPF_W | BPF_ABS, FD_SECCOMP_ARG_LO_OFFSET(0)),
407 0 : BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 0x00000000U, /* exit_ALLOW */ 1, /* exit_KILL */ 0 ),
408 : // exit_KILL:
409 0 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_KILL_PROCESS ),
410 : // exit_ALLOW:
411 : BPF_STMT( BPF_RET | BPF_K, SECCOMP_RET_ALLOW ),
412 0 : };
413 0 : fd_memcpy( out, filter, sizeof( filter ) );
414 0 : }
415 :
416 : #endif /* defined(__linux__) */
417 :
418 : #endif /* HEADER_fd_src_discof_restore_generated_fd_snapct_tile_seccomp_h */
|