tools: bpftool: Allow unprivileged users to probe features
[linux-2.6-block.git] / tools / bpf / bpftool / Documentation / bpftool-feature.rst
CommitLineData
49eb7ab3
QM
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
a5f2d082
PB
19FEATURE COMMANDS
20================
49eb7ab3 21
cf9bf714 22| **bpftool** **feature probe** [*COMPONENT*] [**full**] [**unprivileged**] [**macros** [**prefix** *PREFIX*]]
49eb7ab3 23| **bpftool** **feature help**
f9499fed
QM
24|
25| *COMPONENT* := { **kernel** | **dev** *NAME* }
49eb7ab3
QM
26
27DESCRIPTION
28===========
bcdacab6 29 **bpftool feature probe** [**kernel**] [**full**] [**macros** [**prefix** *PREFIX*]]
49eb7ab3 30 Probe the running kernel and dump a number of eBPF-related
f9499fed
QM
31 parameters, such as availability of the **bpf()** system call,
32 JIT status, eBPF program types availability, eBPF helper
33 functions availability, and more.
49eb7ab3 34
bcdacab6
MR
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
d267cff4
QM
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
f9499fed
QM
49 Keyword **kernel** can be omitted. If no probe target is
50 specified, probing the kernel is the default behaviour.
49eb7ab3 51
cf9bf714
QM
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.
59
bcdacab6 60 **bpftool feature probe dev** *NAME* [**full**] [**macros** [**prefix** *PREFIX*]]
f9499fed
QM
61 Probe network device for supported eBPF features and dump
62 results to the console.
63
bcdacab6
MR
64 The keywords **full**, **macros** and **prefix** have the
65 same role as when probing the kernel.
f9499fed 66
49eb7ab3
QM
67 **bpftool feature help**
68 Print short help message.
69
70OPTIONS
71=======
72 -h, --help
73 Print short generic help message (similar to **bpftool help**).
74
88b3eed8 75 -V, --version
49eb7ab3
QM
76 Print version number (similar to **bpftool version**).
77
78 -j, --json
79 Generate JSON output. For commands that cannot produce JSON, this
80 option has no effect.
81
82 -p, --pretty
83 Generate human-readable JSON output. Implies **-j**.
84
775bc8ad
QM
85 -d, --debug
86 Print all logs available from libbpf, including debug-level
87 information.
88
49eb7ab3
QM
89SEE ALSO
90========
91 **bpf**\ (2),
92 **bpf-helpers**\ (7),
93 **bpftool**\ (8),
94 **bpftool-prog**\ (8),
95 **bpftool-map**\ (8),
96 **bpftool-cgroup**\ (8),
97 **bpftool-net**\ (8),
ca253339
AN
98 **bpftool-perf**\ (8),
99 **bpftool-btf**\ (8)