12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- # This filter is compiled to all_instructions.bpf by the `bpf_asm`
- # tool, which can be found in the linux kernel source tree under
- # tools/net.
- # Load immediate
- ld #42
- ldx #42
- # Load scratch
- ld M[3]
- ldx M[3]
- # Load absolute
- ldb [42]
- ldh [42]
- ld [42]
- # Load indirect
- ldb [x + 42]
- ldh [x + 42]
- ld [x + 42]
- # Load IPv4 header length
- ldx 4*([42]&0xf)
- # Run extension function
- ld #len
- ld #proto
- ld #type
- ld #rand
- # Store scratch
- st M[3]
- stx M[3]
- # A <op> constant
- add #42
- sub #42
- mul #42
- div #42
- or #42
- and #42
- lsh #42
- rsh #42
- mod #42
- xor #42
- # A <op> X
- add x
- sub x
- mul x
- div x
- or x
- and x
- lsh x
- rsh x
- mod x
- xor x
- # !A
- neg
- # Jumps
- ja end
- jeq #42,prev,end
- jne #42,end
- jlt #42,end
- jle #42,end
- jgt #42,prev,end
- jge #42,prev,end
- jset #42,prev,end
- # Register transfers
- tax
- txa
- # Returns
- prev: ret a
- end: ret #42
|