#include "cc/bpf_program.h" #include "cc/bpf_common.h" extern "C" { void * bpf_program_create(const char *filename, const char *proto_filename, unsigned flags) { auto prog = new ebpf::BPFProgram(flags); if (prog->load(filename, proto_filename) != 0) { delete prog; return nullptr; } return prog; } void bpf_program_destroy(void *program) { auto prog = static_cast<ebpf::BPFProgram *>(program); if (!prog) return; delete prog; } void * bpf_program_start(void *program, const char *name) { auto prog = static_cast<ebpf::BPFProgram *>(program); if (!prog) return nullptr; return prog->start(name); } size_t bpf_program_size(void *program, const char *name) { auto prog = static_cast<ebpf::BPFProgram *>(program); if (!prog) return 0; return prog->size(name); } char * bpf_program_license(void *program) { auto prog = static_cast<ebpf::BPFProgram *>(program); if (!prog) return nullptr; return prog->license(); } unsigned bpf_program_kern_version(void *program) { auto prog = static_cast<ebpf::BPFProgram *>(program); if (!prog) return 0; return prog->kern_version(); } int bpf_program_table_fd(void *program, const char *table_name) { auto prog = static_cast<ebpf::BPFProgram *>(program); if (!prog) return -1; return prog->table_fd(table_name); } }