• Arthur Fabre's avatar
    bpf: support JumpIf on RegX instead of K · 49bb7cea
    Arthur Fabre authored
    Add a JumpIfX instruction which implements conditional jumps using
    RegA and RegX. This is in addition to the pre-existing JumpIf
    instruction which uses RegA and K.
    
    This instruction / addressing mode is not mentionned in the original BPF
    paper, but is supported by tools like bpf_asm, and has recently been
    added to the kernel's filter.txt.
    
    Simplify some of the parsing logic, and add a separate helper for
    checking for "fake" JumpIfs.
    
    Add JumpIfX support to the BPF vm.
    
    Update testdata with JumpIfX instructions, and add tests
    for both the assembler/disassembler and vm.
    
    Fixes golang/go#27814
    
    Change-Id: I0c3f6ac7eb5b4cd4d9c5af8784ee2e8d25195a0a
    GitHub-Last-Rev: 39a88165b2d3253c37db4b0e303d862b60dc37c9
    GitHub-Pull-Request: golang/net#20
    Reviewed-on: https://go-review.googlesource.com/c/136895Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    49bb7cea
vm.go 4.03 KB