1+ use crate :: bpf_insn;
2+
3+ pub const BPF_LD : u16 = 0x00 ;
4+ pub const BPF_LDX : u16 = 0x01 ;
5+ pub const BPF_ST : u16 = 0x02 ;
6+ pub const BPF_STX : u16 = 0x03 ;
7+ pub const BPF_ALU : u16 = 0x04 ;
8+ pub const BPF_JMP : u16 = 0x05 ;
9+ pub const BPF_RET : u16 = 0x06 ;
10+ pub const BPF_MISC : u16 = 0x07 ;
11+ pub const BPF_W : u16 = 0x00 ;
12+ pub const BPF_H : u16 = 0x08 ;
13+ pub const BPF_B : u16 = 0x10 ;
14+ pub const BPF_IMM : u16 = 0x00 ;
15+ pub const BPF_ABS : u16 = 0x20 ;
16+ pub const BPF_IND : u16 = 0x40 ;
17+ pub const BPF_MEM : u16 = 0x60 ;
18+ pub const BPF_LEN : u16 = 0x80 ;
19+ pub const BPF_MSH : u16 = 0xa0 ;
20+ pub const BPF_ADD : u16 = 0x00 ;
21+ pub const BPF_SUB : u16 = 0x10 ;
22+ pub const BPF_MUL : u16 = 0x20 ;
23+ pub const BPF_DIV : u16 = 0x30 ;
24+ pub const BPF_OR : u16 = 0x40 ;
25+ pub const BPF_AND : u16 = 0x50 ;
26+ pub const BPF_LSH : u16 = 0x60 ;
27+ pub const BPF_RSH : u16 = 0x70 ;
28+ pub const BPF_NEG : u16 = 0x80 ;
29+ pub const BPF_MOD : u16 = 0x90 ;
30+ pub const BPF_XOR : u16 = 0xa0 ;
31+ pub const BPF_JA : u16 = 0x00 ;
32+ pub const BPF_JEQ : u16 = 0x10 ;
33+ pub const BPF_JGT : u16 = 0x20 ;
34+ pub const BPF_JGE : u16 = 0x30 ;
35+ pub const BPF_JSET : u16 = 0x40 ;
36+ pub const BPF_K : u16 = 0x00 ;
37+ pub const BPF_X : u16 = 0x08 ;
38+ pub const BPF_A : u16 = 0x10 ;
39+ pub const BPF_TAX : u16 = 0x00 ;
40+ pub const BPF_TXA : u16 = 0x80 ;
41+
42+
43+ pub fn BPF_CLASS ( code : u32 ) -> u32 {
44+ code & 0x07
45+ }
46+
47+ pub fn BPF_SIZE ( code : u32 ) -> u32 {
48+ code & 0x18
49+ }
50+
51+ pub fn BPF_MODE ( code : u32 ) -> u32 {
52+ code & 0xe0
53+ }
54+
55+ pub fn BPF_OP ( code : u32 ) -> u32 {
56+ code & 0xf0
57+ }
58+
59+ pub fn BPF_SRC ( code : u32 ) -> u32 {
60+ code & 0x08
61+ }
62+
63+ pub fn BPF_RVAL ( code : u32 ) -> u32 {
64+ code & 0x18
65+ }
66+
67+ pub fn BPF_MISCOP ( code : u32 ) -> u32 {
68+ code & 0xf8
69+ }
70+
71+ pub fn BPF_STMT ( code : u16 , k : u32 ) -> bpf_insn {
72+ bpf_insn {
73+ code,
74+ jt : 0 ,
75+ jf : 0 ,
76+ k,
77+ }
78+ }
79+
80+ pub fn BPF_JUMP ( code : u16 , k : u32 , jt : u8 , jf : u8 ) -> bpf_insn {
81+ bpf_insn { code, jt, jf, k }
82+ }
0 commit comments