test_bpftool_synctypes.py helps detecting inconsistencies in bpftool between the different list of types and options scattered in the sources, the documentation, and the bash completion. For options that apply to all bpftool commands, the script had a hardcoded list of values, and would use them to check whether the man pages are up-to-date. When writing the script, it felt acceptable to have this list in order to avoid to open and parse bpftool's main.h every time, and because the list of global options in bpftool doesn't change so often. However, this is prone to omissions, and we recently added a new -l|--legacy option which was described in common_options.rst, but not listed in the options summary of each manual page. The script did not complain, because it keeps comparing the hardcoded list to the (now) outdated list in the header file. To address the issue, this commit brings the following changes: - Options that are common to all bpftool commands (--json, --pretty, and --debug) are moved to a dedicated file, and used in the definition of a RST substitution. This substitution is used in the sources of all the man pages. - This list of common options is updated, with the addition of the new -l|--legacy option. - The script test_bpftool_synctypes.py is updated to compare: - Options specific to a command, found in C files, for the interactive help messages, with the same specific options from the relevant man page for that command. - Common options, checked just once: the list in main.h is compared with the new list in substitutions.rst. Signed-off-by: Quentin Monnet <quentin@isovalent.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/bpf/20211115225844.33943-3-quentin@isovalent.com
78 lines
2.8 KiB
ReStructuredText
78 lines
2.8 KiB
ReStructuredText
.. SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
|
|
===============
|
|
bpftool-feature
|
|
===============
|
|
-------------------------------------------------------------------------------
|
|
tool for inspection of eBPF-related parameters for Linux kernel or net device
|
|
-------------------------------------------------------------------------------
|
|
|
|
:Manual section: 8
|
|
|
|
.. include:: substitutions.rst
|
|
|
|
SYNOPSIS
|
|
========
|
|
|
|
**bpftool** [*OPTIONS*] **feature** *COMMAND*
|
|
|
|
*OPTIONS* := { |COMMON_OPTIONS| }
|
|
|
|
*COMMANDS* := { **probe** | **help** }
|
|
|
|
FEATURE COMMANDS
|
|
================
|
|
|
|
| **bpftool** **feature probe** [*COMPONENT*] [**full**] [**unprivileged**] [**macros** [**prefix** *PREFIX*]]
|
|
| **bpftool** **feature help**
|
|
|
|
|
| *COMPONENT* := { **kernel** | **dev** *NAME* }
|
|
|
|
DESCRIPTION
|
|
===========
|
|
**bpftool feature probe** [**kernel**] [**full**] [**macros** [**prefix** *PREFIX*]]
|
|
Probe the running kernel and dump a number of eBPF-related
|
|
parameters, such as availability of the **bpf**\ () system call,
|
|
JIT status, eBPF program types availability, eBPF helper
|
|
functions availability, and more.
|
|
|
|
By default, bpftool **does not run probes** for
|
|
**bpf_probe_write_user**\ () and **bpf_trace_printk**\()
|
|
helpers which print warnings to kernel logs. To enable them
|
|
and run all probes, the **full** keyword should be used.
|
|
|
|
If the **macros** keyword (but not the **-j** option) is
|
|
passed, a subset of the output is dumped as a list of
|
|
**#define** macros that are ready to be included in a C
|
|
header file, for example. If, additionally, **prefix** is
|
|
used to define a *PREFIX*, the provided string will be used
|
|
as a prefix to the names of the macros: this can be used to
|
|
avoid conflicts on macro names when including the output of
|
|
this command as a header file.
|
|
|
|
Keyword **kernel** can be omitted. If no probe target is
|
|
specified, probing the kernel is the default behaviour.
|
|
|
|
When the **unprivileged** keyword is used, bpftool will dump
|
|
only the features available to a user who does not have the
|
|
**CAP_SYS_ADMIN** capability set. The features available in
|
|
that case usually represent a small subset of the parameters
|
|
supported by the system. Unprivileged users MUST use the
|
|
**unprivileged** keyword: This is to avoid misdetection if
|
|
bpftool is inadvertently run as non-root, for example. This
|
|
keyword is unavailable if bpftool was compiled without
|
|
libcap.
|
|
|
|
**bpftool feature probe dev** *NAME* [**full**] [**macros** [**prefix** *PREFIX*]]
|
|
Probe network device for supported eBPF features and dump
|
|
results to the console.
|
|
|
|
The keywords **full**, **macros** and **prefix** have the
|
|
same role as when probing the kernel.
|
|
|
|
**bpftool feature help**
|
|
Print short help message.
|
|
|
|
OPTIONS
|
|
=======
|
|
.. include:: common_options.rst
|