• Quentin Monnet's avatar
    tools: bpftool: make it easier to feed hex bytes to bpftool · 0c90f224
    Quentin Monnet authored
    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: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Suggested-by: default avatarDavid Beckett <david.beckett@netronome.com>
    Signed-off-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
    Acked-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    0c90f224
bpftool-map.rst 4.25 KB