Berkeley Packet Filter (BPF) assembler.
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
maze 348e672a15 Docfix hace 11 meses
cmd/bpfasm Added Program.Verify method hace 11 meses
internal/parser Cleanup hace 11 meses
testdata Initial import hace 11 meses
.gitignore Renamed BPF ANTLR module to Assembler hace 11 meses
LICENSE Updated license hace 11 meses
Makefile Renamed BPF ANTLR module to Assembler hace 11 meses
README.md Docfix hace 11 meses
assembler.go Added Program.Verify method hace 11 meses
bpf.go Supply type aliases for the bpf package hace 11 meses
doc.go Initial import hace 11 meses
go.mod More representable bpfasm command line tool hace 11 meses
go.sum More representable bpfasm command line tool hace 11 meses
parse.go Updated license hace 11 meses
program.go Added Program.Verify method hace 11 meses
vm.go Added Program.Verify method hace 11 meses
vm_alu_test.go Updated license hace 11 meses
vm_debug.go Updated license hace 11 meses
vm_extension_test.go Updated license hace 11 meses
vm_jump_test.go Updated license hace 11 meses
vm_load_test.go Ported the bpf vm with pluggable extensions hace 11 meses
vm_registers.go Ported the bpf vm with pluggable extensions hace 11 meses
vm_ret_test.go Ported the bpf vm with pluggable extensions hace 11 meses
vm_scratch_test.go Updated license hace 11 meses
vm_test.go Updated license hace 11 meses

README.md

bpf

Berkeley Packet Filter (BPF) assembler.

Installation

Easy as running go get:

~$ go get maze.io/x/bpf/cmd/bpfasm

Usage

Compiling an assembly file:

demo.asm contents:

; icmp random packet sampling, 1 in 4
        ldh 	[12]
        jne 	#0x800, drop
        ldb 	[23]
        jneq 	#1, drop
        ; get a random uint32 number
        ld      rand
        mod 	#4
        jneq 	#1, drop
        ret 	#-1
drop:	ret 	#0

Assembling to (big endian) binary:

~$ bpfasm assemble demo.asm
writing to demo.asm.bin

Disassembling:

~$ bpfasm disassemble demo.asm.bin
ld     #12
jne    #2048,6
ld     #23
jneq   #1,4
ld     #rand
mod    #4
jneq   #1,1
ret    #4294967295
ret    #0

The assembler parser and compiler are © 2019 Wijnand Modderman-Lenstra.

The assembler virtual machine and opcode assembler are © 2009, 2016 The Go Authors.

For more details, see the LICENSE.