linux-stable/tools/bpf/bpftool
Quentin Monnet 0c90f2243e tools: bpftool: make it easier to feed hex bytes to bpftool
bpftool uses hexadecimal values when it dumps map contents:

    # bpftool map dump id 1337
    key: ff 13 37 ff  value: a1 b2 c3 d4 ff ff ff ff
    Found 1 element

In order to lookup or update values with bpftool, the natural reflex is
then to copy and paste the values to the command line, and to try to run
something like:

    # bpftool map update id 1337 key ff 13 37 ff \
            value 00 00 00 00 00 00 1a 2b
    Error: error parsing byte: ff

bpftool complains, because it uses strtoul() with a 0 base to parse the
bytes, and that without a "0x" prefix, the bytes are considered as
decimal values (or even octal if they start with "0").

To feed hexadecimal values instead, one needs to add "0x" prefixes
everywhere necessary:

    # bpftool map update id 1337 key 0xff 0x13 0x37 0xff \
            value 0 0 0 0 0 0 0x1a 0x2b

To make it easier to use hexadecimal values, add an optional "hex"
keyword to put after "key" or "value" to tell bpftool to consider the
digits as hexadecimal. We can now do:

    # bpftool map update id 1337 key hex ff 13 37 ff \
            value hex 0 0 0 0 0 0 1a 2b

Without the "hex" keyword, the bytes are still parsed according to
normal integer notation (decimal if no prefix, or hexadecimal or octal
if "0x" or "0" prefix is used, respectively).

The patch also add related documentation and bash completion for the
"hex" keyword.

Suggested-by: Daniel Borkmann <daniel@iogearbox.net>
Suggested-by: David Beckett <david.beckett@netronome.com>
Signed-off-by: Quentin Monnet <quentin.monnet@netronome.com>
Acked-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2018-04-18 14:49:27 +02:00
..
bash-completion tools: bpftool: make it easier to feed hex bytes to bpftool 2018-04-18 14:49:27 +02:00
Documentation tools: bpftool: make it easier to feed hex bytes to bpftool 2018-04-18 14:49:27 +02:00
cfg.c tools: bpftool: generate .dot graph from CFG information 2018-03-01 18:29:49 -08:00
cfg.h tools: bpftool: detect sub-programs from the eBPF sequence 2018-03-01 18:29:48 -08:00
cgroup.c bpftool: Support new prog types and attach types 2018-04-18 14:39:24 +02:00
common.c tools: bpftool: fix compilation with older headers 2018-03-06 22:51:00 +01:00
jit_disasm.c tools: bpftool: improve architecture detection by using ifindex 2018-01-18 01:26:15 +01:00
json_writer.c tools: bpftool: add JSON output for bpftool prog dump xlated * command 2017-10-24 01:25:08 +01:00
json_writer.h tools: bpftool: add JSON output for bpftool prog dump xlated * command 2017-10-24 01:25:08 +01:00
main.c tools: bpftool: add support for quotations in batch files 2018-03-02 09:46:41 +01:00
main.h tools: bpftool: improve architecture detection by using ifindex 2018-01-18 01:26:15 +01:00
Makefile tools: bpf: remove feature detection output 2018-03-16 09:23:46 +01:00
map.c tools: bpftool: make it easier to feed hex bytes to bpftool 2018-04-18 14:49:27 +02:00
prog.c bpftool: Support new prog types and attach types 2018-04-18 14:39:24 +02:00
xlated_dumper.c bpftool: Adjust to new print_bpf_insn interface 2018-03-23 17:38:57 +01:00
xlated_dumper.h tools: bpftool: fix potential format truncation 2018-03-16 09:23:15 +01:00