Berkeley Packet Filter (BPF) assembler.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

979 B


Berkeley Packet Filter (BPF) assembler.


Easy as running go get:

~$ go get


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


~$ 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.