xref: /linux/tools/bpf/bpftool/Documentation/bpftool-feature.rst (revision e5a52fd2b8cdb700b3c07b030e050a49ef3156b9)
1===============
2bpftool-feature
3===============
4-------------------------------------------------------------------------------
5tool for inspection of eBPF-related parameters for Linux kernel or net device
6-------------------------------------------------------------------------------
7
8:Manual section: 8
9
10SYNOPSIS
11========
12
13	**bpftool** [*OPTIONS*] **feature** *COMMAND*
14
15	*OPTIONS* := { { **-j** | **--json** } [{ **-p** | **--pretty** }] }
16
17	*COMMANDS* := { **probe** | **help** }
18
19FEATURE COMMANDS
20================
21
22|	**bpftool** **feature probe** [*COMPONENT*] [**full**] [**unprivileged**] [**macros** [**prefix** *PREFIX*]]
23|	**bpftool** **feature help**
24|
25|	*COMPONENT* := { **kernel** | **dev** *NAME* }
26
27DESCRIPTION
28===========
29	**bpftool feature probe** [**kernel**] [**full**] [**macros** [**prefix** *PREFIX*]]
30		  Probe the running kernel and dump a number of eBPF-related
31		  parameters, such as availability of the **bpf**\ () system call,
32		  JIT status, eBPF program types availability, eBPF helper
33		  functions availability, and more.
34
35		  By default, bpftool **does not run probes** for
36		  **bpf_probe_write_user**\ () and **bpf_trace_printk**\()
37		  helpers which print warnings to kernel logs. To enable them
38		  and run all probes, the **full** keyword should be used.
39
40		  If the **macros** keyword (but not the **-j** option) is
41		  passed, a subset of the output is dumped as a list of
42		  **#define** macros that are ready to be included in a C
43		  header file, for example. If, additionally, **prefix** is
44		  used to define a *PREFIX*, the provided string will be used
45		  as a prefix to the names of the macros: this can be used to
46		  avoid conflicts on macro names when including the output of
47		  this command as a header file.
48
49		  Keyword **kernel** can be omitted. If no probe target is
50		  specified, probing the kernel is the default behaviour.
51
52		  When the **unprivileged** keyword is used, bpftool will dump
53		  only the features available to a user who does not have the
54		  **CAP_SYS_ADMIN** capability set. The features available in
55		  that case usually represent a small subset of the parameters
56		  supported by the system. Unprivileged users MUST use the
57		  **unprivileged** keyword: This is to avoid misdetection if
58		  bpftool is inadvertently run as non-root, for example. This
59		  keyword is unavailable if bpftool was compiled without
60		  libcap.
61
62	**bpftool feature probe dev** *NAME* [**full**] [**macros** [**prefix** *PREFIX*]]
63		  Probe network device for supported eBPF features and dump
64		  results to the console.
65
66		  The keywords **full**, **macros** and **prefix** have the
67		  same role as when probing the kernel.
68
69	**bpftool feature help**
70		  Print short help message.
71
72OPTIONS
73=======
74	-h, --help
75		  Print short generic help message (similar to **bpftool help**).
76
77	-V, --version
78		  Print version number (similar to **bpftool version**).
79
80	-j, --json
81		  Generate JSON output. For commands that cannot produce JSON, this
82		  option has no effect.
83
84	-p, --pretty
85		  Generate human-readable JSON output. Implies **-j**.
86
87	-d, --debug
88		  Print all logs available from libbpf, including debug-level
89		  information.
90
91SEE ALSO
92========
93	**bpf**\ (2),
94	**bpf-helpers**\ (7),
95	**bpftool**\ (8),
96	**bpftool-btf**\ (8),
97	**bpftool-cgroup**\ (8),
98	**bpftool-gen**\ (8),
99	**bpftool-iter**\ (8),
100	**bpftool-link**\ (8),
101	**bpftool-map**\ (8),
102	**bpftool-net**\ (8),
103	**bpftool-perf**\ (8),
104	**bpftool-prog**\ (8),
105	**bpftool-struct_ops**\ (8)
106