local ffi = require('ffi') -- Define basic ctypes ffi.cdef [[ struct bpf_insn { uint8_t code; /* opcode */ uint8_t dst_reg:4; /* dest register */ uint8_t src_reg:4; /* source register */ uint16_t off; /* signed offset */ uint32_t imm; /* signed immediate constant */ }; ]] -- Inject mock ljsyscall for tests package.loaded['syscall'] = { bpf = function() error('mock') end, c = { BPF_MAP = {}, BPF_PROG = {} }, abi = { arch = 'x64' }, } package.loaded['syscall.helpers'] = { strflag = function (tab) local function flag(cache, str) if type(str) ~= "string" then return str end if #str == 0 then return 0 end local s = str:upper() if #s == 0 then return 0 end local val = rawget(tab, s) if not val then return nil end cache[str] = val return val end return setmetatable(tab, {__index = setmetatable({}, {__index = flag}), __call = function(t, a) return t[a] end}) end }