1.. SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 3=============== 4bpftool-feature 5=============== 6------------------------------------------------------------------------------- 7tool for inspection of eBPF-related parameters for Linux kernel or net device 8------------------------------------------------------------------------------- 9 10:Manual section: 8 11 12.. include:: substitutions.rst 13 14SYNOPSIS 15======== 16 17 **bpftool** [*OPTIONS*] **feature** *COMMAND* 18 19 *OPTIONS* := { |COMMON_OPTIONS| } 20 21 *COMMANDS* := { **probe** | **help** } 22 23FEATURE COMMANDS 24================ 25 26| **bpftool** **feature probe** [*COMPONENT*] [**full**] [**unprivileged**] [**macros** [**prefix** *PREFIX*]] 27| **bpftool** **feature list_builtins** *GROUP* 28| **bpftool** **feature help** 29| 30| *COMPONENT* := { **kernel** | **dev** *NAME* } 31| *GROUP* := { **prog_types** | **map_types** | **attach_types** | **link_types** | **helpers** } 32 33DESCRIPTION 34=========== 35 **bpftool feature probe** [**kernel**] [**full**] [**macros** [**prefix** *PREFIX*]] 36 Probe the running kernel and dump a number of eBPF-related 37 parameters, such as availability of the **bpf**\ () system call, 38 JIT status, eBPF program types availability, eBPF helper 39 functions availability, and more. 40 41 By default, bpftool **does not run probes** for 42 **bpf_probe_write_user**\ () and **bpf_trace_printk**\() 43 helpers which print warnings to kernel logs. To enable them 44 and run all probes, the **full** keyword should be used. 45 46 If the **macros** keyword (but not the **-j** option) is 47 passed, a subset of the output is dumped as a list of 48 **#define** macros that are ready to be included in a C 49 header file, for example. If, additionally, **prefix** is 50 used to define a *PREFIX*, the provided string will be used 51 as a prefix to the names of the macros: this can be used to 52 avoid conflicts on macro names when including the output of 53 this command as a header file. 54 55 Keyword **kernel** can be omitted. If no probe target is 56 specified, probing the kernel is the default behaviour. 57 58 When the **unprivileged** keyword is used, bpftool will dump 59 only the features available to a user who does not have the 60 **CAP_SYS_ADMIN** capability set. The features available in 61 that case usually represent a small subset of the parameters 62 supported by the system. Unprivileged users MUST use the 63 **unprivileged** keyword: This is to avoid misdetection if 64 bpftool is inadvertently run as non-root, for example. This 65 keyword is unavailable if bpftool was compiled without 66 libcap. 67 68 **bpftool feature probe dev** *NAME* [**full**] [**macros** [**prefix** *PREFIX*]] 69 Probe network device for supported eBPF features and dump 70 results to the console. 71 72 The keywords **full**, **macros** and **prefix** have the 73 same role as when probing the kernel. 74 75 **bpftool feature list_builtins** *GROUP* 76 List items known to bpftool. These can be BPF program types 77 (**prog_types**), BPF map types (**map_types**), attach types 78 (**attach_types**), link types (**link_types**), or BPF helper 79 functions (**helpers**). The command does not probe the system, but 80 simply lists the elements that bpftool knows from compilation time, 81 as provided from libbpf (for all object types) or from the BPF UAPI 82 header (list of helpers). This can be used in scripts to iterate over 83 BPF types or helpers. 84 85 **bpftool feature help** 86 Print short help message. 87 88OPTIONS 89======= 90 .. include:: common_options.rst 91