xref: /aosp_15_r20/external/iproute2/include/uapi/linux/bpf_common.h (revision de1e4e894b0c224df933550f0afdecc354b238c4)
1*de1e4e89SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*de1e4e89SAndroid Build Coastguard Worker #ifndef __LINUX_BPF_COMMON_H__
3*de1e4e89SAndroid Build Coastguard Worker #define __LINUX_BPF_COMMON_H__
4*de1e4e89SAndroid Build Coastguard Worker 
5*de1e4e89SAndroid Build Coastguard Worker /* Instruction classes */
6*de1e4e89SAndroid Build Coastguard Worker #define BPF_CLASS(code) ((code) & 0x07)
7*de1e4e89SAndroid Build Coastguard Worker #define		BPF_LD		0x00
8*de1e4e89SAndroid Build Coastguard Worker #define		BPF_LDX		0x01
9*de1e4e89SAndroid Build Coastguard Worker #define		BPF_ST		0x02
10*de1e4e89SAndroid Build Coastguard Worker #define		BPF_STX		0x03
11*de1e4e89SAndroid Build Coastguard Worker #define		BPF_ALU		0x04
12*de1e4e89SAndroid Build Coastguard Worker #define		BPF_JMP		0x05
13*de1e4e89SAndroid Build Coastguard Worker #define		BPF_RET		0x06
14*de1e4e89SAndroid Build Coastguard Worker #define		BPF_MISC        0x07
15*de1e4e89SAndroid Build Coastguard Worker 
16*de1e4e89SAndroid Build Coastguard Worker /* ld/ldx fields */
17*de1e4e89SAndroid Build Coastguard Worker #define BPF_SIZE(code)  ((code) & 0x18)
18*de1e4e89SAndroid Build Coastguard Worker #define		BPF_W		0x00
19*de1e4e89SAndroid Build Coastguard Worker #define		BPF_H		0x08
20*de1e4e89SAndroid Build Coastguard Worker #define		BPF_B		0x10
21*de1e4e89SAndroid Build Coastguard Worker #define BPF_MODE(code)  ((code) & 0xe0)
22*de1e4e89SAndroid Build Coastguard Worker #define		BPF_IMM		0x00
23*de1e4e89SAndroid Build Coastguard Worker #define		BPF_ABS		0x20
24*de1e4e89SAndroid Build Coastguard Worker #define		BPF_IND		0x40
25*de1e4e89SAndroid Build Coastguard Worker #define		BPF_MEM		0x60
26*de1e4e89SAndroid Build Coastguard Worker #define		BPF_LEN		0x80
27*de1e4e89SAndroid Build Coastguard Worker #define		BPF_MSH		0xa0
28*de1e4e89SAndroid Build Coastguard Worker 
29*de1e4e89SAndroid Build Coastguard Worker /* alu/jmp fields */
30*de1e4e89SAndroid Build Coastguard Worker #define BPF_OP(code)    ((code) & 0xf0)
31*de1e4e89SAndroid Build Coastguard Worker #define		BPF_ADD		0x00
32*de1e4e89SAndroid Build Coastguard Worker #define		BPF_SUB		0x10
33*de1e4e89SAndroid Build Coastguard Worker #define		BPF_MUL		0x20
34*de1e4e89SAndroid Build Coastguard Worker #define		BPF_DIV		0x30
35*de1e4e89SAndroid Build Coastguard Worker #define		BPF_OR		0x40
36*de1e4e89SAndroid Build Coastguard Worker #define		BPF_AND		0x50
37*de1e4e89SAndroid Build Coastguard Worker #define		BPF_LSH		0x60
38*de1e4e89SAndroid Build Coastguard Worker #define		BPF_RSH		0x70
39*de1e4e89SAndroid Build Coastguard Worker #define		BPF_NEG		0x80
40*de1e4e89SAndroid Build Coastguard Worker #define		BPF_MOD		0x90
41*de1e4e89SAndroid Build Coastguard Worker #define		BPF_XOR		0xa0
42*de1e4e89SAndroid Build Coastguard Worker 
43*de1e4e89SAndroid Build Coastguard Worker #define		BPF_JA		0x00
44*de1e4e89SAndroid Build Coastguard Worker #define		BPF_JEQ		0x10
45*de1e4e89SAndroid Build Coastguard Worker #define		BPF_JGT		0x20
46*de1e4e89SAndroid Build Coastguard Worker #define		BPF_JGE		0x30
47*de1e4e89SAndroid Build Coastguard Worker #define		BPF_JSET        0x40
48*de1e4e89SAndroid Build Coastguard Worker #define BPF_SRC(code)   ((code) & 0x08)
49*de1e4e89SAndroid Build Coastguard Worker #define		BPF_K		0x00
50*de1e4e89SAndroid Build Coastguard Worker #define		BPF_X		0x08
51*de1e4e89SAndroid Build Coastguard Worker 
52*de1e4e89SAndroid Build Coastguard Worker #ifndef BPF_MAXINSNS
53*de1e4e89SAndroid Build Coastguard Worker #define BPF_MAXINSNS 4096
54*de1e4e89SAndroid Build Coastguard Worker #endif
55*de1e4e89SAndroid Build Coastguard Worker 
56*de1e4e89SAndroid Build Coastguard Worker #endif /* __LINUX_BPF_COMMON_H__ */
57