GNU Linux-libre 6.9.1-gnu
[releases.git] / tools / bpf / bpftool / Documentation / bpftool-feature.rst
1 .. SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2
3 ===============
4 bpftool-feature
5 ===============
6 -------------------------------------------------------------------------------
7 tool for inspection of eBPF-related parameters for Linux kernel or net device
8 -------------------------------------------------------------------------------
9
10 :Manual section: 8
11
12 .. include:: substitutions.rst
13
14 SYNOPSIS
15 ========
16
17         **bpftool** [*OPTIONS*] **feature** *COMMAND*
18
19         *OPTIONS* := { |COMMON_OPTIONS| }
20
21         *COMMANDS* := { **probe** | **help** }
22
23 FEATURE 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
33 DESCRIPTION
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
88 OPTIONS
89 =======
90         .. include:: common_options.rst