• Quentin Monnet's avatar
    tools: bpftool: add "prog run" subcommand to test-run programs · ba95c745
    Quentin Monnet authored
    Add a new "bpftool prog run" subcommand to run a loaded program on input
    data (and possibly with input context) passed by the user.
    
    Print output data (and output context if relevant) into a file or into
    the console. Print return value and duration for the test run into the
    console.
    
    A "repeat" argument can be passed to run the program several times in a
    row.
    
    The command does not perform any kind of verification based on program
    type (Is this program type allowed to use an input context?) or on data
    consistency (Can I work with empty input data?), this is left to the
    kernel.
    
    Example invocation:
    
        # perl -e 'print "\x0" x 14' | ./bpftool prog run \
                pinned /sys/fs/bpf/sample_ret0 \
                data_in - data_out - repeat 5
        0000000 0000 0000 0000 0000 0000 0000 0000      | ........ ......
        Return value: 0, duration (average): 260ns
    
    When one of data_in or ctx_in is "-", bpftool reads from standard input,
    in binary format. Other formats (JSON, hexdump) might be supported (via
    an optional command line keyword like "data_fmt_in") in the future if
    relevant, but this would require doing more parsing in bpftool.
    
    v2:
    - Fix argument names for function check_single_stdin(). (Yonghong)
    Signed-off-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
    Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
    Acked-by: default avatarYonghong Song <yhs@fb.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    ba95c745
bpftool-prog.rst 11.6 KB