1*7304104dSAndroid Build Coastguard Worker /* Minimal extended BPF constants as alternative for linux/bpf.h. */ 2*7304104dSAndroid Build Coastguard Worker 3*7304104dSAndroid Build Coastguard Worker #ifndef _ELFUTILS_BPF_H 4*7304104dSAndroid Build Coastguard Worker #define _ELFUTILS_BPF_H 1 5*7304104dSAndroid Build Coastguard Worker 6*7304104dSAndroid Build Coastguard Worker #include <stdint.h> 7*7304104dSAndroid Build Coastguard Worker 8*7304104dSAndroid Build Coastguard Worker #define BPF_CLASS(code) ((code) & 0x07) 9*7304104dSAndroid Build Coastguard Worker 10*7304104dSAndroid Build Coastguard Worker #define BPF_LD 0x00 11*7304104dSAndroid Build Coastguard Worker #define BPF_LDX 0x01 12*7304104dSAndroid Build Coastguard Worker #define BPF_ST 0x02 13*7304104dSAndroid Build Coastguard Worker #define BPF_STX 0x03 14*7304104dSAndroid Build Coastguard Worker #define BPF_ALU 0x04 15*7304104dSAndroid Build Coastguard Worker #define BPF_JMP 0x05 16*7304104dSAndroid Build Coastguard Worker #define BPF_RET 0x06 17*7304104dSAndroid Build Coastguard Worker #define BPF_MISC 0x07 18*7304104dSAndroid Build Coastguard Worker 19*7304104dSAndroid Build Coastguard Worker #define BPF_ALU64 0x07 20*7304104dSAndroid Build Coastguard Worker 21*7304104dSAndroid Build Coastguard Worker #define BPF_JNE 0x50 22*7304104dSAndroid Build Coastguard Worker #define BPF_JSGT 0x60 23*7304104dSAndroid Build Coastguard Worker #define BPF_JSGE 0x70 24*7304104dSAndroid Build Coastguard Worker #define BPF_CALL 0x80 25*7304104dSAndroid Build Coastguard Worker #define BPF_EXIT 0x90 26*7304104dSAndroid Build Coastguard Worker #define BPF_JLT 0xa0 27*7304104dSAndroid Build Coastguard Worker #define BPF_JLE 0xb0 28*7304104dSAndroid Build Coastguard Worker #define BPF_JSLT 0xc0 29*7304104dSAndroid Build Coastguard Worker #define BPF_JSLE 0xd0 30*7304104dSAndroid Build Coastguard Worker 31*7304104dSAndroid Build Coastguard Worker #define BPF_W 0x00 32*7304104dSAndroid Build Coastguard Worker #define BPF_H 0x08 33*7304104dSAndroid Build Coastguard Worker #define BPF_B 0x10 34*7304104dSAndroid Build Coastguard Worker 35*7304104dSAndroid Build Coastguard Worker #define BPF_IMM 0x00 36*7304104dSAndroid Build Coastguard Worker #define BPF_ABS 0x20 37*7304104dSAndroid Build Coastguard Worker #define BPF_IND 0x40 38*7304104dSAndroid Build Coastguard Worker #define BPF_MEM 0x60 39*7304104dSAndroid Build Coastguard Worker #define BPF_LEN 0x80 40*7304104dSAndroid Build Coastguard Worker #define BPF_MSH 0xa0 41*7304104dSAndroid Build Coastguard Worker 42*7304104dSAndroid Build Coastguard Worker #define BPF_DW 0x18 43*7304104dSAndroid Build Coastguard Worker #define BPF_XADD 0xc0 44*7304104dSAndroid Build Coastguard Worker 45*7304104dSAndroid Build Coastguard Worker #define BPF_ADD 0x00 46*7304104dSAndroid Build Coastguard Worker #define BPF_SUB 0x10 47*7304104dSAndroid Build Coastguard Worker #define BPF_MUL 0x20 48*7304104dSAndroid Build Coastguard Worker #define BPF_DIV 0x30 49*7304104dSAndroid Build Coastguard Worker #define BPF_OR 0x40 50*7304104dSAndroid Build Coastguard Worker #define BPF_AND 0x50 51*7304104dSAndroid Build Coastguard Worker #define BPF_LSH 0x60 52*7304104dSAndroid Build Coastguard Worker #define BPF_RSH 0x70 53*7304104dSAndroid Build Coastguard Worker #define BPF_NEG 0x80 54*7304104dSAndroid Build Coastguard Worker #define BPF_MOD 0x90 55*7304104dSAndroid Build Coastguard Worker #define BPF_XOR 0xa0 56*7304104dSAndroid Build Coastguard Worker 57*7304104dSAndroid Build Coastguard Worker #define BPF_MOV 0xb0 58*7304104dSAndroid Build Coastguard Worker #define BPF_ARSH 0xc0 59*7304104dSAndroid Build Coastguard Worker 60*7304104dSAndroid Build Coastguard Worker #define BPF_JA 0x00 61*7304104dSAndroid Build Coastguard Worker #define BPF_JEQ 0x10 62*7304104dSAndroid Build Coastguard Worker #define BPF_JGT 0x20 63*7304104dSAndroid Build Coastguard Worker #define BPF_JGE 0x30 64*7304104dSAndroid Build Coastguard Worker #define BPF_JSET 0x40 65*7304104dSAndroid Build Coastguard Worker 66*7304104dSAndroid Build Coastguard Worker #define BPF_K 0x00 67*7304104dSAndroid Build Coastguard Worker #define BPF_X 0x08 68*7304104dSAndroid Build Coastguard Worker 69*7304104dSAndroid Build Coastguard Worker #define BPF_END 0xd0 70*7304104dSAndroid Build Coastguard Worker #define BPF_TO_LE 0x00 71*7304104dSAndroid Build Coastguard Worker #define BPF_TO_BE 0x08 72*7304104dSAndroid Build Coastguard Worker 73*7304104dSAndroid Build Coastguard Worker #define BPF_PSEUDO_MAP_FD 1 74*7304104dSAndroid Build Coastguard Worker 75*7304104dSAndroid Build Coastguard Worker #define MAX_BPF_REG 10 76*7304104dSAndroid Build Coastguard Worker 77*7304104dSAndroid Build Coastguard Worker struct bpf_insn 78*7304104dSAndroid Build Coastguard Worker { 79*7304104dSAndroid Build Coastguard Worker uint8_t code; 80*7304104dSAndroid Build Coastguard Worker uint8_t dst_reg:4; 81*7304104dSAndroid Build Coastguard Worker uint8_t src_reg:4; 82*7304104dSAndroid Build Coastguard Worker int16_t off; 83*7304104dSAndroid Build Coastguard Worker int32_t imm; 84*7304104dSAndroid Build Coastguard Worker }; 85*7304104dSAndroid Build Coastguard Worker 86*7304104dSAndroid Build Coastguard Worker #endif 87