use seccomp_sys::*;
use strum_macros::EnumString;
#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumString)]
pub enum Cmp {
Ne,
Lt,
Le,
Eq,
Ge,
Gt,
MaskedEq,
}
impl From<Cmp> for scmp_compare {
fn from(cmp: Cmp) -> scmp_compare {
use self::Cmp::*;
use scmp_compare::*;
match cmp {
Ne => SCMP_CMP_NE,
Lt => SCMP_CMP_LT,
Le => SCMP_CMP_LE,
Eq => SCMP_CMP_EQ,
Ge => SCMP_CMP_GE,
Gt => SCMP_CMP_GT,
MaskedEq => SCMP_CMP_MASKED_EQ,
}
}
}
#[derive(Debug, Clone)]
pub struct Comparator {
arg: u32,
op: Cmp,
datum_a: u64,
datum_b: u64,
}
impl Comparator {
pub fn new(arg: u32, op: Cmp, datum_a: u64, datum_b: Option<u64>) -> Self {
Self {
arg,
op,
datum_a,
datum_b: datum_b.unwrap_or(0_u64),
}
}
}
impl From<Comparator> for scmp_arg_cmp {
fn from(cmp: Comparator) -> scmp_arg_cmp {
scmp_arg_cmp {
arg: cmp.arg,
op: cmp.op.into(),
datum_a: cmp.datum_a,
datum_b: cmp.datum_b,
}
}
}