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