diff --git a/ebpf.py b/ebpf.py index 4307feb99050f2e94787fb69a14cdcee5d19ade3..07eee42bbe255905ca5508cde5ace063b2a6f429 100644 --- a/ebpf.py +++ b/ebpf.py @@ -580,7 +580,7 @@ class EBPF: def assemble(self): return b"".join( - pack("<BBHI", i.opcode, i.dst | i.src << 4, + pack("<BBHI", i.opcode.value, i.dst | i.src << 4, i.off % 0x10000, i.imm % 0x100000000) for i in self.opcodes) diff --git a/ebpf_test.py b/ebpf_test.py index 58c51d1eded46498ab5aae71c3b89c3527e3bc11..e876e979e5909dd1b2a58ff97760579197aec205 100644 --- a/ebpf_test.py +++ b/ebpf_test.py @@ -10,7 +10,7 @@ opcodes.sort(reverse=True) def Instruction(opcode, dst, src, off, imm): - if isinstance(opcode, OpcodeFlags): + if isinstance(opcode, (Opcode, OpcodeFlags)): return ebpf.Instruction(opcode, dst, src, off, imm) bigger = [(k, v) for k, v in opcodes if opcode >= k] for bk, bv in bigger: @@ -29,7 +29,7 @@ def Instruction(opcode, dst, src, off, imm): class Tests(TestCase): def test_assemble(self): e = EBPF() - e.append(0x24, 3, 4, 0x2c3d, 0x2d3e4f5e) + e.append(Opcode.MUL, 3, 4, 0x2c3d, 0x2d3e4f5e) self.assertEqual(e.assemble(), b"$C=,^O>-") def test_assign(self):