• Quentin Monnet's avatar
    tools: bpftool: Add "inner_map" to "bpftool map create" outer maps · e3b9626f
    Quentin Monnet authored
    There is no support for creating maps of types array-of-map or
    hash-of-map in bpftool. This is because the kernel needs an inner_map_fd
    to collect metadata on the inner maps to be supported by the new map,
    but bpftool does not provide a way to pass this file descriptor.
    
    Add a new optional "inner_map" keyword that can be used to pass a
    reference to a map, retrieve a fd to that map, and pass it as the
    inner_map_fd.
    
    Add related documentation and bash completion. Note that we can
    reference the inner map by its name, meaning we can have several times
    the keyword "name" with different meanings (mandatory outer map name,
    and possibly a name to use to find the inner_map_fd). The bash
    completion will offer it just once, and will not suggest "name" on the
    following command:
    
        # bpftool map create /sys/fs/bpf/my_outer_map type hash_of_maps \
            inner_map name my_inner_map [TAB]
    
    Fixing that specific case seems too convoluted. Completion will work as
    expected, however, if the outer map name comes first and the "inner_map
    name ..." is passed second.
    Signed-off-by: default avatarQuentin Monnet <quentin@isovalent.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Acked-by: default avatarAndrii Nakryiko <andriin@fb.com>
    Link: https://lore.kernel.org/bpf/20200910102652.10509-4-quentin@isovalent.com
    e3b9626f
map.c 32.1 KB