SeccompArgumentFilter

Struct SeccompArgumentFilter 

Source
pub struct SeccompArgumentFilter {
    pub arg_idx: u8,
    pub value: u64,
    pub is_64bit: bool,
    /* private fields */
}
Expand description

A restriction on the arguments of a syscall. May be combined with other SeccompArgumentFilter as part of a single SeccompRule, in which case they are and-ed together and must all return true for the syscall to be allowed.

Because some syscalls take 32 bit arguments which may or may not be sign-extended to 64 bits when passed to the linux kernel, there is an option to indicate whether the argument is 32 or 64 bits. It shouldn’t need to be used frequently. See https://github.com/rust-vmm/seccompiler/issues/59 for more details

§Examples

// if syscall (specified elsewhere) is `read`, allow reading from stdin
seccomp_arg_filter!(arg0 == 1);
// if syscall is `socket`, allow IPV4 sockets only
seccomp_arg_filter!(arg0 & AF_INET == AF_INET);
// if syscall is `socket`, allow TCP sockets only
seccomp_arg_filter!(arg0 & SOCK_STREAM == SOCK_STREAM);

You should use the seccomp_arg_filter! macros to create these.

Fields§

§arg_idx: u8

Which syscall argument to filter. Starts at 0 for the first argument.

§value: u64

The user-provided value to compare the argument against.

§is_64bit: bool

Whether the argument is 64 bits or 32 bits. See the docstring for why this is needed.

Implementations§

Source§

impl SeccompArgumentFilter

Source

pub fn new( arg_idx: u8, comparator: SeccompilerComparator, value: u64, ) -> SeccompArgumentFilter

Create a new SeccompArgumentFilter. You should probably use the seccomp_arg_filter! instead.

Source

pub fn new64( arg_idx: u8, comparator: SeccompilerComparator, value: u64, ) -> SeccompArgumentFilter

Create a new SeccompArgumentFilter that checks all 64 bits of the provided argument. You should probably use the seccomp_arg_filter! instead.

Source

pub fn new32( arg_idx: u8, comparator: SeccompilerComparator, value: u32, ) -> SeccompArgumentFilter

Create a new SeccompArgumentFilter that checks 32 bits of the provided argument. You should probably use the seccomp_arg_filter! instead. See the struct’s documentation for why this is needed.

Trait Implementations§

Source§

impl Clone for SeccompArgumentFilter

Source§

fn clone(&self) -> SeccompArgumentFilter

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SeccompArgumentFilter

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for SeccompArgumentFilter

Source§

fn eq(&self, other: &SeccompArgumentFilter) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for SeccompArgumentFilter

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.