• Quentin Monnet's avatar
    tools: bpftool: add probes for eBPF program types · 1bf4b058
    Quentin Monnet authored
    Introduce probes for supported BPF program types in libbpf, and call it
    from bpftool to test what types are available on the system. The probe
    simply consists in loading a very basic program of that type and see if
    the verifier complains or not.
    
    Sample output:
    
        # bpftool feature probe kernel
        ...
        Scanning eBPF program types...
        eBPF program_type socket_filter is available
        eBPF program_type kprobe is available
        eBPF program_type sched_cls is available
        ...
    
        # bpftool --json --pretty feature probe kernel
        {
            ...
            "program_types": {
                "have_socket_filter_prog_type": true,
                "have_kprobe_prog_type": true,
                "have_sched_cls_prog_type": true,
                ...
            }
        }
    
    v5:
    - In libbpf.map, move global symbol to a new LIBBPF_0.0.2 section.
    - Rename (non-API function) prog_load() as probe_load().
    
    v3:
    - Get kernel version for checking kprobes availability from libbpf
      instead of from bpftool. Do not pass kernel_version as an argument
      when calling libbpf probes.
    - Use a switch with all enum values for setting specific program
      parameters just before probing, so that gcc complains at compile time
      (-Wswitch-enum) if new prog types were added to the kernel but libbpf
      was not updated.
    - Add a comment in libbpf.h about setrlimit() usage to allow many
      consecutive probe attempts.
    
    v2:
    - Move probes from bpftool to libbpf.
    - Remove C-style macros output from this patch.
    Signed-off-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
    Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
    Reviewed-by: default avatarStanislav Fomichev <sdf@google.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    1bf4b058
libbpf_probes.c 2.29 KB