• Quentin Monnet's avatar
    bpftool: Add feature list (prog/map/link/attach types, helpers) · 27b3f705
    Quentin Monnet authored
    Add a "bpftool feature list" subcommand to list BPF "features".
    Contrarily to "bpftool feature probe", this is not about the features
    available on the system. Instead, it lists all features known to bpftool
    from compilation time; in other words, all program, map, attach, link
    types known to the libbpf version in use, and all helpers found in the
    UAPI BPF header.
    
    The first use case for this feature is bash completion: running the
    command provides a list of types that can be used to produce the list of
    candidate map types, for example.
    
    Now that bpftool uses "standard" names provided by libbpf for the
    program, map, link, and attach types, having the ability to list these
    types and helpers could also be useful in scripts to loop over existing
    items.
    
    Sample output:
    
        # bpftool feature list prog_types | grep -vw unspec | head -n 6
        socket_filter
        kprobe
        sched_cls
        sched_act
        tracepoint
        xdp
    
        # bpftool -p feature list map_types | jq '.[1]'
        "hash"
    
        # bpftool feature list attach_types | grep '^cgroup_'
        cgroup_inet_ingress
        cgroup_inet_egress
        [...]
        cgroup_inet_sock_release
    
        # bpftool feature list helpers | grep -vw bpf_unspec | wc -l
        207
    
    The "unspec" types and helpers are not filtered out by bpftool, so as to
    remain closer to the enums, and to preserve the indices in the JSON
    arrays (e.g. "hash" at index 1 == BPF_MAP_TYPE_HASH in map types list).
    Signed-off-by: default avatarQuentin Monnet <quentin@isovalent.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: default avatarDaniel Müller <deso@posteo.net>
    Link: https://lore.kernel.org/bpf/20220629203637.138944-2-quentin@isovalent.com
    27b3f705
bpftool-feature.rst 3.45 KB