1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
use crate::abi::*; pub const fn stmt(code: u16, k: u32) -> SockFilter { SockFilter { code, k, jt: 0, jf: 0 } } pub const fn jump(code: u16, k: u32, jt: u8, jf: u8) -> SockFilter { SockFilter { code, k, jt, jf } } pub const fn jump_always(k: u32) -> SockFilter { stmt( BPF_JMP+BPF_JA, k ) } pub const fn imm(k: u32) -> SockFilter { stmt( BPF_LD+BPF_W+BPF_IMM, k ) } pub const fn ret(k: u32) -> SockFilter { stmt( BPF_RET+BPF_K, k ) } pub const fn load(k: usize) -> SockFilter { stmt( BPF_LD+BPF_W+BPF_ABS, k as u32 ) } pub const fn store(k: usize) -> SockFilter { stmt( BPF_ST, k as u32 ) }