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