blob: 09c6550725eb935d26fdb1a472de3eca8aa8ddb4 [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
Jorge Lucangeli Obesa67bd6a2016-08-19 15:33:48 -040017#ifdef __cplusplus
18extern "C" {
19#endif
20
Jorge Lucangeli Obesfc8ab532012-03-20 10:14:31 -070021struct filter_block {
22 struct sock_filter *instrs;
23 size_t len;
24
25 struct filter_block *next;
26 struct filter_block *last;
27 size_t total_len;
28};
29
Jorge Lucangeli Obes524c0402012-01-17 11:30:23 -080030struct bpf_labels;
31
Jorge Lucangeli Obesd4467262012-03-23 16:19:59 -070032struct filter_block *compile_section(int nr, const char *policy_line,
Jorge Lucangeli Obes565e9782016-08-05 11:03:19 -040033 unsigned int label_id,
Jennifer Pullmanc0bfae02016-05-26 17:00:36 -070034 struct bpf_labels *labels,
35 int log_failures);
Jorge Lucangeli Obes4d4b3be2016-08-16 16:58:14 -040036int compile_filter(FILE *policy_file, struct sock_fprog *prog, int log_failures);
Jorge Lucangeli Obesd4467262012-03-23 16:19:59 -070037
38int flatten_block_list(struct filter_block *head, struct sock_filter *filter,
Jorge Lucangeli Obes565e9782016-08-05 11:03:19 -040039 size_t index, size_t cap);
Jorge Lucangeli Obesfc8ab532012-03-20 10:14:31 -070040void free_block_list(struct filter_block *head);
41
Jorge Lucangeli Obes7b2e29c2016-08-04 12:21:03 -040042int seccomp_can_softfail();
43
Jorge Lucangeli Obesa67bd6a2016-08-19 15:33:48 -040044#ifdef __cplusplus
45}; /* extern "C" */
46#endif
47
Jorge Lucangeli Obesfc8ab532012-03-20 10:14:31 -070048#endif /* SYSCALL_FILTER_H */