pub struct SockFprog<'a> { /* private fields */ }Expand description
Programme BPF complet prêt à charger dans le kernel.
Emprunte une tranche d’instructions SockFilter appartenant à l’appelant
(zéro allocation heap). Correspond à struct sock_fprog du kernel
(linux/filter.h).
Construit via SockFprog::new ; invalide si la tranche est vide ou
dépasse BPF_MAXINSNS (4096 instructions).
Implementations§
Source§impl<'a> SockFprog<'a>
impl<'a> SockFprog<'a>
Sourcepub fn new(instructions: &'a [SockFilter]) -> Result<Self, Errno>
pub fn new(instructions: &'a [SockFilter]) -> Result<Self, Errno>
Construit un programme BPF à partir d’une tranche d’instructions.
§Errors
Retourne Err(Errno::EINVAL) si la tranche est vide ou dépasse
BPF_MAXINSNS (4096 instructions).
§Examples
use air_sys_types::security::{SockFilter, SockFprog};
// Instruction BPF minimale : RET K avec valeur SECCOMP_RET_ALLOW (0x7fff0000).
let allow = SockFilter { code: 0x0006, jt: 0, jf: 0, k: 0x7fff_0000 };
let instructions = [allow];
let prog = SockFprog::new(&instructions).expect("programme valide");
assert_eq!(prog.len(), 1);Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Retourne true si le programme est vide.
En pratique, SockFprog::new refuse les tranches vides, donc un
SockFprog construit correctement a toujours is_empty() == false.
Sourcepub fn as_ptr(&self) -> *const SockFilter
pub fn as_ptr(&self) -> *const SockFilter
Pointeur brut vers le tableau d’instructions (pour appel syscall).
Trait Implementations§
impl Send for SockFprog<'_>
impl Sync for SockFprog<'_>
Auto Trait Implementations§
impl<'a> Freeze for SockFprog<'a>
impl<'a> RefUnwindSafe for SockFprog<'a>
impl<'a> Unpin for SockFprog<'a>
impl<'a> UnsafeUnpin for SockFprog<'a>
impl<'a> UnwindSafe for SockFprog<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more