blob: 8517320c6b5cb6ca54ccce73e82fa0adf6d0f797 [file] [log] [blame]
Jorge Lucangeli Obesfc8ab532012-03-20 10:14:31 -07001/* 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
Jorge Lucangeli Obesbda833c2012-07-31 16:25:56 -070014#define NO_LOGGING 0
15#define USE_LOGGING 1
Jorge Lucangeli Obesfc8ab532012-03-20 10:14:31 -070016
17struct 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
Jorge Lucangeli Obes524c0402012-01-17 11:30:23 -080026struct bpf_labels;
27
Jorge Lucangeli Obesd4467262012-03-23 16:19:59 -070028struct filter_block *compile_section(int nr, const char *policy_line,
Jorge Lucangeli Obes565e9782016-08-05 11:03:19 -040029 unsigned int label_id,
30 struct bpf_labels *labels);
Jorge Lucangeli Obesb0cea432013-02-04 11:55:30 -080031int compile_filter(FILE *policy_file, struct sock_fprog *prog,
Jorge Lucangeli Obes565e9782016-08-05 11:03:19 -040032 int log_failures);
Jorge Lucangeli Obesd4467262012-03-23 16:19:59 -070033
34int flatten_block_list(struct filter_block *head, struct sock_filter *filter,
Jorge Lucangeli Obes565e9782016-08-05 11:03:19 -040035 size_t index, size_t cap);
Jorge Lucangeli Obesfc8ab532012-03-20 10:14:31 -070036void free_block_list(struct filter_block *head);
37
Jorge Lucangeli Obes7b2e29c2016-08-04 12:21:03 -040038int seccomp_can_softfail();
39
Jorge Lucangeli Obesfc8ab532012-03-20 10:14:31 -070040#endif /* SYSCALL_FILTER_H */