| /* Copyright (c) 2011-2014 PLUMgrid, http://plumgrid.com | |
| * Copyright (c) 2016 Facebook | |
| * | |
| * This program is free software; you can redistribute it and/or | |
| * modify it under the terms of version 2 of the GNU General Public | |
| * License as published by the Free Software Foundation. | |
| * | |
| * This program is distributed in the hope that it will be useful, but | |
| * WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * General Public License for more details. | |
| */ | |
| #ifndef __BPF_DISASM_H__ | |
| #define __BPF_DISASM_H__ | |
| #include <linux/bpf.h> | |
| #include <linux/kernel.h> | |
| #include <linux/stringify.h> | |
| #ifndef __KERNEL__ | |
| #include <stdio.h> | |
| #include <string.h> | |
| #endif | |
| extern const char *const bpf_alu_string[16]; | |
| extern const char *const bpf_class_string[8]; | |
| const char *func_id_name(int id); | |
| typedef __printf(2, 3) void (*bpf_insn_print_t)(void *private_data, | |
| const char *, ...); | |
| typedef const char *(*bpf_insn_revmap_call_t)(void *private_data, | |
| const struct bpf_insn *insn); | |
| typedef const char *(*bpf_insn_print_imm_t)(void *private_data, | |
| const struct bpf_insn *insn, | |
| __u64 full_imm); | |
| struct bpf_insn_cbs { | |
| bpf_insn_print_t cb_print; | |
| bpf_insn_revmap_call_t cb_call; | |
| bpf_insn_print_imm_t cb_imm; | |
| void *private_data; | |
| }; | |
| void print_bpf_insn(const struct bpf_insn_cbs *cbs, | |
| const struct bpf_insn *insn, | |
| bool allow_ptr_leaks); | |
| #endif |