Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
0002 #ifndef _UAPI__LINUX_BPF_COMMON_H__
0003 #define _UAPI__LINUX_BPF_COMMON_H__
0004 
0005 /* Instruction classes */
0006 #define BPF_CLASS(code) ((code) & 0x07)
0007 #define     BPF_LD      0x00
0008 #define     BPF_LDX     0x01
0009 #define     BPF_ST      0x02
0010 #define     BPF_STX     0x03
0011 #define     BPF_ALU     0x04
0012 #define     BPF_JMP     0x05
0013 #define     BPF_RET     0x06
0014 #define     BPF_MISC        0x07
0015 
0016 /* ld/ldx fields */
0017 #define BPF_SIZE(code)  ((code) & 0x18)
0018 #define     BPF_W       0x00 /* 32-bit */
0019 #define     BPF_H       0x08 /* 16-bit */
0020 #define     BPF_B       0x10 /*  8-bit */
0021 /* eBPF     BPF_DW      0x18    64-bit */
0022 #define BPF_MODE(code)  ((code) & 0xe0)
0023 #define     BPF_IMM     0x00
0024 #define     BPF_ABS     0x20
0025 #define     BPF_IND     0x40
0026 #define     BPF_MEM     0x60
0027 #define     BPF_LEN     0x80
0028 #define     BPF_MSH     0xa0
0029 
0030 /* alu/jmp fields */
0031 #define BPF_OP(code)    ((code) & 0xf0)
0032 #define     BPF_ADD     0x00
0033 #define     BPF_SUB     0x10
0034 #define     BPF_MUL     0x20
0035 #define     BPF_DIV     0x30
0036 #define     BPF_OR      0x40
0037 #define     BPF_AND     0x50
0038 #define     BPF_LSH     0x60
0039 #define     BPF_RSH     0x70
0040 #define     BPF_NEG     0x80
0041 #define     BPF_MOD     0x90
0042 #define     BPF_XOR     0xa0
0043 
0044 #define     BPF_JA      0x00
0045 #define     BPF_JEQ     0x10
0046 #define     BPF_JGT     0x20
0047 #define     BPF_JGE     0x30
0048 #define     BPF_JSET        0x40
0049 #define BPF_SRC(code)   ((code) & 0x08)
0050 #define     BPF_K       0x00
0051 #define     BPF_X       0x08
0052 
0053 #ifndef BPF_MAXINSNS
0054 #define BPF_MAXINSNS 4096
0055 #endif
0056 
0057 #endif /* _UAPI__LINUX_BPF_COMMON_H__ */