1 /* syscall_filter.h
2  * Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the LICENSE file.
5  *
6  * Syscall filter functions.
7  */
8 
9 #ifndef SYSCALL_FILTER_H
10 #define SYSCALL_FILTER_H
11 
12 #include "bpf.h"
13 
14 #define NO_LOGGING  0
15 #define USE_LOGGING 1
16 
17 struct filter_block {
18 	struct sock_filter *instrs;
19 	size_t len;
20 
21 	struct filter_block *next;
22 	struct filter_block *last;
23 	size_t total_len;
24 };
25 
26 struct bpf_labels;
27 
28 struct filter_block *compile_section(int nr, const char *policy_line,
29 		unsigned int label_id, struct bpf_labels *labels);
30 int compile_filter(FILE *policy_file, struct sock_fprog *prog,
31 		int log_failures);
32 
33 int flatten_block_list(struct filter_block *head, struct sock_filter *filter,
34 		size_t index, size_t cap);
35 void free_block_list(struct filter_block *head);
36 
37 #endif /* SYSCALL_FILTER_H */
38