1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// SPDX-License-Identifier: Apache-2.0 or MIT
//
// Copyright 2021 Sony Group Corporation
//
//! Rust Language Bindings for the libseccomp Library
//!
//! The libseccomp library provides an easy to use, platform independent, interface to
//! the Linux Kernel's syscall filtering mechanism. The libseccomp API is designed to
//! abstract away the underlying BPF based syscall filter language and present a more
//! conventional function-call based filtering interface that should be familiar to, and
//! easily adopted by, application developers.
//!
//! The libseccomp crate is a high-level safe API for the libseccomp library.
//!
//! # Examples
//!
//! ```rust
//! use libseccomp::*;
//!
//! fn main() -> Result<(), Box<dyn std::error::Error>> {
//! let mut filter = ScmpFilterContext::new(ScmpAction::Allow)?;
//! let syscall = ScmpSyscall::from_name("getuid")?;
//!
//! filter.add_arch(ScmpArch::X8664)?;
//! filter.add_rule(ScmpAction::Errno(1), syscall)?;
//! filter.set_ctl_log(true)?;
//! filter.set_syscall_priority(syscall, 100)?;
//! filter.load()?;
//!
//! Ok(())
//! }
//! ```
//!
//! The above example can be replaced with builder pattern.
//!
//! ```rust
//! use libseccomp::*;
//!
//! fn main() -> Result<(), Box<dyn std::error::Error>> {
//! let syscall = ScmpSyscall::from_name("getuid")?;
//!
//! ScmpFilterContext::new(ScmpAction::Allow)?
//! .add_arch(ScmpArch::X8664)?
//! .add_rule(ScmpAction::Errno(1), syscall)?
//! .set_ctl_log(true)?
//! .set_syscall_priority(syscall, 100)?
//! .load()?;
//!
//! Ok(())
//! }
//! ```
//!
//! # Features
//!
//! - `const-syscall`: Allow creating of `ScmpSyscall` in a `const`-context.
/// Errors
use ;
pub use ScmpAction;
pub use ;
pub use ScmpArch;
pub use ScmpArgCompare;
pub use ScmpCompareOp;
pub use ScmpFilterAttr;
pub use ScmpFilterContext;
pub use *;
pub use *;
pub use ;
pub use ;