use crate::common::non_nul_string::NonNulString;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Clone, Eq, PartialEq, Debug, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Profile {
Default,
}
#[derive(Clone, Eq, PartialEq, Debug, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Seccomp {
#[serde(skip_serializing_if = "Option::is_none")]
pub profile: Option<Profile>,
#[serde(skip_serializing_if = "Option::is_none")]
pub allow: Option<HashMap<NonNulString, SyscallRule>>,
}
#[derive(Clone, Eq, PartialEq, Debug, Serialize, Deserialize)]
#[serde(deny_unknown_fields, rename_all = "snake_case")]
pub enum SyscallRule {
Any,
Args(SyscallArgRule),
}
#[derive(Clone, Eq, PartialEq, Debug, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct SyscallArgRule {
pub index: usize,
#[serde(skip_serializing_if = "Option::is_none")]
pub values: Option<Vec<u64>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mask: Option<u64>,
}