arcbox_oci/config/
seccomp.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7#[serde(rename_all = "camelCase")]
8pub struct Seccomp {
9 pub default_action: String,
11 #[serde(skip_serializing_if = "Option::is_none")]
13 pub default_errno_ret: Option<u32>,
14 #[serde(default, skip_serializing_if = "Vec::is_empty")]
16 pub architectures: Vec<String>,
17 #[serde(default, skip_serializing_if = "Vec::is_empty")]
19 pub flags: Vec<String>,
20 #[serde(skip_serializing_if = "Option::is_none")]
22 pub listener_path: Option<String>,
23 #[serde(skip_serializing_if = "Option::is_none")]
25 pub listener_metadata: Option<String>,
26 #[serde(default, skip_serializing_if = "Vec::is_empty")]
28 pub syscalls: Vec<SyscallRule>,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
33#[serde(rename_all = "camelCase")]
34pub struct SyscallRule {
35 pub names: Vec<String>,
37 pub action: String,
39 #[serde(skip_serializing_if = "Option::is_none")]
41 pub errno_ret: Option<u32>,
42 #[serde(default, skip_serializing_if = "Vec::is_empty")]
44 pub args: Vec<SyscallArg>,
45}
46
47#[derive(Debug, Clone, Serialize, Deserialize)]
49#[serde(rename_all = "camelCase")]
50pub struct SyscallArg {
51 pub index: u32,
53 pub value: u64,
55 #[serde(skip_serializing_if = "Option::is_none")]
57 pub value_two: Option<u64>,
58 pub op: String,
60}
61
62#[derive(Debug, Clone, Default, Serialize, Deserialize)]
64pub struct TimeOffsets {
65 #[serde(skip_serializing_if = "Option::is_none")]
67 pub monotonic: Option<TimeOffset>,
68 #[serde(skip_serializing_if = "Option::is_none")]
70 pub boottime: Option<TimeOffset>,
71}
72
73#[derive(Debug, Clone, Serialize, Deserialize)]
75pub struct TimeOffset {
76 pub secs: i64,
78 pub nanosecs: u32,
80}