Commit f7b68543 authored by Rameez Rehman's avatar Rameez Rehman Committed by Daniel Borkmann

bpftool: Use simpler indentation in source rST for documentation

The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.

Let's fix bpftool's indentation in docs once and for all:

- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
  description, and the "see also" section. As a result, all sections
  start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.

There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.

[ Quentin: rebased on bpf-next, removed indent level for command
  description and options, updated synopsis, command summary, and "see
  also" sections. ]
Signed-off-by: default avatarRameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: default avatarQuentin Monnet <qmo@kernel.org>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
parent 623bdd58
...@@ -31,9 +31,9 @@ see_also = $(subst " ",, \ ...@@ -31,9 +31,9 @@ see_also = $(subst " ",, \
"\n" \ "\n" \
"SEE ALSO\n" \ "SEE ALSO\n" \
"========\n" \ "========\n" \
"\t**bpf**\ (2),\n" \ "**bpf**\ (2),\n" \
"\t**bpf-helpers**\\ (7)" \ "**bpf-helpers**\\ (7)" \
$(foreach page,$(call list_pages,$(1)),",\n\t**$(page)**\\ (8)") \ $(foreach page,$(call list_pages,$(1)),",\n**$(page)**\\ (8)") \
"\n") "\n")
$(OUTPUT)%.8: %.rst $(OUTPUT)%.8: %.rst
......
...@@ -14,82 +14,76 @@ tool for inspection of BTF data ...@@ -14,82 +14,76 @@ tool for inspection of BTF data
SYNOPSIS SYNOPSIS
======== ========
**bpftool** [*OPTIONS*] **btf** *COMMAND* **bpftool** [*OPTIONS*] **btf** *COMMAND*
*OPTIONS* := { |COMMON_OPTIONS| | { **-B** | **--base-btf** } } *OPTIONS* := { |COMMON_OPTIONS| | { **-B** | **--base-btf** } }
*COMMANDS* := { **dump** | **help** } *COMMANDS* := { **dump** | **help** }
BTF COMMANDS BTF COMMANDS
============= =============
| **bpftool** **btf** { **show** | **list** } [**id** *BTF_ID*] | **bpftool** **btf** { **show** | **list** } [**id** *BTF_ID*]
| **bpftool** **btf dump** *BTF_SRC* [**format** *FORMAT*] | **bpftool** **btf dump** *BTF_SRC* [**format** *FORMAT*]
| **bpftool** **btf help** | **bpftool** **btf help**
| |
| *BTF_SRC* := { **id** *BTF_ID* | **prog** *PROG* | **map** *MAP* [{**key** | **value** | **kv** | **all**}] | **file** *FILE* } | *BTF_SRC* := { **id** *BTF_ID* | **prog** *PROG* | **map** *MAP* [{**key** | **value** | **kv** | **all**}] | **file** *FILE* }
| *FORMAT* := { **raw** | **c** } | *FORMAT* := { **raw** | **c** }
| *MAP* := { **id** *MAP_ID* | **pinned** *FILE* } | *MAP* := { **id** *MAP_ID* | **pinned** *FILE* }
| *PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* } | *PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* }
DESCRIPTION DESCRIPTION
=========== ===========
**bpftool btf { show | list }** [**id** *BTF_ID*] **bpftool btf { show | list }** [**id** *BTF_ID*]
Show information about loaded BTF objects. If a BTF ID is Show information about loaded BTF objects. If a BTF ID is specified, show
specified, show information only about given BTF object, information only about given BTF object, otherwise list all BTF objects
otherwise list all BTF objects currently loaded on the currently loaded on the system.
system.
Since Linux 5.8 bpftool is able to discover information about Since Linux 5.8 bpftool is able to discover information about processes
processes that hold open file descriptors (FDs) against BTF that hold open file descriptors (FDs) against BTF objects. On such kernels
objects. On such kernels bpftool will automatically emit this bpftool will automatically emit this information as well.
information as well.
**bpftool btf dump** *BTF_SRC* **bpftool btf dump** *BTF_SRC*
Dump BTF entries from a given *BTF_SRC*. Dump BTF entries from a given *BTF_SRC*.
When **id** is specified, BTF object with that ID will be When **id** is specified, BTF object with that ID will be loaded and all
loaded and all its BTF types emitted. its BTF types emitted.
When **map** is provided, it's expected that map has When **map** is provided, it's expected that map has associated BTF object
associated BTF object with BTF types describing key and with BTF types describing key and value. It's possible to select whether to
value. It's possible to select whether to dump only BTF dump only BTF type(s) associated with key (**key**), value (**value**),
type(s) associated with key (**key**), value (**value**), both key and value (**kv**), or all BTF types present in associated BTF
both key and value (**kv**), or all BTF types present in object (**all**). If not specified, **kv** is assumed.
associated BTF object (**all**). If not specified, **kv**
is assumed.
When **prog** is provided, it's expected that program has When **prog** is provided, it's expected that program has associated BTF
associated BTF object with BTF types. object with BTF types.
When specifying *FILE*, an ELF file is expected, containing When specifying *FILE*, an ELF file is expected, containing .BTF section
.BTF section with well-defined BTF binary format data, with well-defined BTF binary format data, typically produced by clang or
typically produced by clang or pahole. pahole.
**format** option can be used to override default (raw) **format** option can be used to override default (raw) output format. Raw
output format. Raw (**raw**) or C-syntax (**c**) output (**raw**) or C-syntax (**c**) output formats are supported.
formats are supported.
**bpftool btf help** **bpftool btf help**
Print short help message. Print short help message.
OPTIONS OPTIONS
======= =======
.. include:: common_options.rst .. include:: common_options.rst
-B, --base-btf *FILE* -B, --base-btf *FILE*
Pass a base BTF object. Base BTF objects are typically used Pass a base BTF object. Base BTF objects are typically used with BTF
with BTF objects for kernel modules. To avoid duplicating objects for kernel modules. To avoid duplicating all kernel symbols
all kernel symbols required by modules, BTF objects for required by modules, BTF objects for modules are "split", they are
modules are "split", they are built incrementally on top of built incrementally on top of the kernel (vmlinux) BTF object. So the
the kernel (vmlinux) BTF object. So the base BTF reference base BTF reference should usually point to the kernel BTF.
should usually point to the kernel BTF.
When the main BTF object to process (for example, the module BTF to
When the main BTF object to process (for example, the dump) is passed as a *FILE*, bpftool attempts to autodetect the path
module BTF to dump) is passed as a *FILE*, bpftool attempts for the base object, and passing this option is optional. When the main
to autodetect the path for the base object, and passing BTF object is passed through other handles, this option becomes
this option is optional. When the main BTF object is passed necessary.
through other handles, this option becomes necessary.
EXAMPLES EXAMPLES
======== ========
......
...@@ -14,77 +14,70 @@ tool for inspection of eBPF-related parameters for Linux kernel or net device ...@@ -14,77 +14,70 @@ tool for inspection of eBPF-related parameters for Linux kernel or net device
SYNOPSIS SYNOPSIS
======== ========
**bpftool** [*OPTIONS*] **feature** *COMMAND* **bpftool** [*OPTIONS*] **feature** *COMMAND*
*OPTIONS* := { |COMMON_OPTIONS| } *OPTIONS* := { |COMMON_OPTIONS| }
*COMMANDS* := { **probe** | **help** } *COMMANDS* := { **probe** | **help** }
FEATURE COMMANDS FEATURE COMMANDS
================ ================
| **bpftool** **feature probe** [*COMPONENT*] [**full**] [**unprivileged**] [**macros** [**prefix** *PREFIX*]] | **bpftool** **feature probe** [*COMPONENT*] [**full**] [**unprivileged**] [**macros** [**prefix** *PREFIX*]]
| **bpftool** **feature list_builtins** *GROUP* | **bpftool** **feature list_builtins** *GROUP*
| **bpftool** **feature help** | **bpftool** **feature help**
| |
| *COMPONENT* := { **kernel** | **dev** *NAME* } | *COMPONENT* := { **kernel** | **dev** *NAME* }
| *GROUP* := { **prog_types** | **map_types** | **attach_types** | **link_types** | **helpers** } | *GROUP* := { **prog_types** | **map_types** | **attach_types** | **link_types** | **helpers** }
DESCRIPTION DESCRIPTION
=========== ===========
**bpftool feature probe** [**kernel**] [**full**] [**macros** [**prefix** *PREFIX*]] **bpftool feature probe** [**kernel**] [**full**] [**macros** [**prefix** *PREFIX*]]
Probe the running kernel and dump a number of eBPF-related Probe the running kernel and dump a number of eBPF-related parameters, such
parameters, such as availability of the **bpf**\ () system call, as availability of the **bpf**\ () system call, JIT status, eBPF program
JIT status, eBPF program types availability, eBPF helper types availability, eBPF helper functions availability, and more.
functions availability, and more.
By default, bpftool **does not run probes** for **bpf_probe_write_user**\
By default, bpftool **does not run probes** for () and **bpf_trace_printk**\() helpers which print warnings to kernel logs.
**bpf_probe_write_user**\ () and **bpf_trace_printk**\() To enable them and run all probes, the **full** keyword should be used.
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
If the **macros** keyword (but not the **-j** option) is be included in a C header file, for example. If, additionally, **prefix**
passed, a subset of the output is dumped as a list of is used to define a *PREFIX*, the provided string will be used as a prefix
**#define** macros that are ready to be included in a C to the names of the macros: this can be used to avoid conflicts on macro
header file, for example. If, additionally, **prefix** is names when including the output of this command as a header file.
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 Keyword **kernel** can be omitted. If no probe target is specified, probing
avoid conflicts on macro names when including the output of the kernel is the default behaviour.
this command as a header file.
When the **unprivileged** keyword is used, bpftool will dump only the
Keyword **kernel** can be omitted. If no probe target is features available to a user who does not have the **CAP_SYS_ADMIN**
specified, probing the kernel is the default behaviour. capability set. The features available in that case usually represent a
small subset of the parameters supported by the system. Unprivileged users
When the **unprivileged** keyword is used, bpftool will dump MUST use the **unprivileged** keyword: This is to avoid misdetection if
only the features available to a user who does not have the bpftool is inadvertently run as non-root, for example. This keyword is
**CAP_SYS_ADMIN** capability set. The features available in unavailable if bpftool was compiled without libcap.
that case usually represent a small subset of the parameters
supported by the system. Unprivileged users MUST use the **bpftool feature probe dev** *NAME* [**full**] [**macros** [**prefix** *PREFIX*]]
**unprivileged** keyword: This is to avoid misdetection if Probe network device for supported eBPF features and dump results to the
bpftool is inadvertently run as non-root, for example. This console.
keyword is unavailable if bpftool was compiled without
libcap. The keywords **full**, **macros** and **prefix** have the same role as when
probing the kernel.
**bpftool feature probe dev** *NAME* [**full**] [**macros** [**prefix** *PREFIX*]]
Probe network device for supported eBPF features and dump **bpftool feature list_builtins** *GROUP*
results to the console. List items known to bpftool. These can be BPF program types
(**prog_types**), BPF map types (**map_types**), attach types
The keywords **full**, **macros** and **prefix** have the (**attach_types**), link types (**link_types**), or BPF helper functions
same role as when probing the kernel. (**helpers**). The command does not probe the system, but simply lists the
elements that bpftool knows from compilation time, as provided from libbpf
**bpftool feature list_builtins** *GROUP* (for all object types) or from the BPF UAPI header (list of helpers). This
List items known to bpftool. These can be BPF program types can be used in scripts to iterate over BPF types or helpers.
(**prog_types**), BPF map types (**map_types**), attach types
(**attach_types**), link types (**link_types**), or BPF helper **bpftool feature help**
functions (**helpers**). The command does not probe the system, but Print short help message.
simply lists the elements that bpftool knows from compilation time,
as provided from libbpf (for all object types) or from the BPF UAPI
header (list of helpers). This can be used in scripts to iterate over
BPF types or helpers.
**bpftool feature help**
Print short help message.
OPTIONS OPTIONS
======= =======
.. include:: common_options.rst .. include:: common_options.rst
...@@ -14,50 +14,46 @@ tool to create BPF iterators ...@@ -14,50 +14,46 @@ tool to create BPF iterators
SYNOPSIS SYNOPSIS
======== ========
**bpftool** [*OPTIONS*] **iter** *COMMAND* **bpftool** [*OPTIONS*] **iter** *COMMAND*
*OPTIONS* := { |COMMON_OPTIONS| } *OPTIONS* := { |COMMON_OPTIONS| }
*COMMANDS* := { **pin** | **help** } *COMMANDS* := { **pin** | **help** }
ITER COMMANDS ITER COMMANDS
=================== ===================
| **bpftool** **iter pin** *OBJ* *PATH* [**map** *MAP*] | **bpftool** **iter pin** *OBJ* *PATH* [**map** *MAP*]
| **bpftool** **iter help** | **bpftool** **iter help**
| |
| *OBJ* := /a/file/of/bpf_iter_target.o | *OBJ* := /a/file/of/bpf_iter_target.o
| *MAP* := { **id** *MAP_ID* | **pinned** *FILE* } | *MAP* := { **id** *MAP_ID* | **pinned** *FILE* }
DESCRIPTION DESCRIPTION
=========== ===========
**bpftool iter pin** *OBJ* *PATH* [**map** *MAP*] **bpftool iter pin** *OBJ* *PATH* [**map** *MAP*]
A bpf iterator combines a kernel iterating of A bpf iterator combines a kernel iterating of particular kernel data (e.g.,
particular kernel data (e.g., tasks, bpf_maps, etc.) tasks, bpf_maps, etc.) and a bpf program called for each kernel data object
and a bpf program called for each kernel data object (e.g., one task, one bpf_map, etc.). User space can *read* kernel iterator
(e.g., one task, one bpf_map, etc.). User space can output through *read()* syscall.
*read* kernel iterator output through *read()* syscall.
The *pin* command creates a bpf iterator from *OBJ*, and pin it to *PATH*.
The *pin* command creates a bpf iterator from *OBJ*, The *PATH* should be located in *bpffs* mount. It must not contain a dot
and pin it to *PATH*. The *PATH* should be located character ('.'), which is reserved for future extensions of *bpffs*.
in *bpffs* mount. It must not contain a dot
character ('.'), which is reserved for future extensions Map element bpf iterator requires an additional parameter *MAP* so bpf
of *bpffs*. program can iterate over map elements for that map. User can have a bpf
program in kernel to run with each map element, do checking, filtering,
Map element bpf iterator requires an additional parameter aggregation, etc. without copying data to user space.
*MAP* so bpf program can iterate over map elements for
that map. User can have a bpf program in kernel to run User can then *cat PATH* to see the bpf iterator output.
with each map element, do checking, filtering, aggregation,
etc. without copying data to user space. **bpftool iter help**
Print short help message.
User can then *cat PATH* to see the bpf iterator output.
**bpftool iter help**
Print short help message.
OPTIONS OPTIONS
======= =======
.. include:: common_options.rst .. include:: common_options.rst
EXAMPLES EXAMPLES
======== ========
......
...@@ -14,67 +14,62 @@ tool for inspection and simple manipulation of eBPF links ...@@ -14,67 +14,62 @@ tool for inspection and simple manipulation of eBPF links
SYNOPSIS SYNOPSIS
======== ========
**bpftool** [*OPTIONS*] **link** *COMMAND* **bpftool** [*OPTIONS*] **link** *COMMAND*
*OPTIONS* := { |COMMON_OPTIONS| | { **-f** | **--bpffs** } | { **-n** | **--nomount** } } *OPTIONS* := { |COMMON_OPTIONS| | { **-f** | **--bpffs** } | { **-n** | **--nomount** } }
*COMMANDS* := { **show** | **list** | **pin** | **help** } *COMMANDS* := { **show** | **list** | **pin** | **help** }
LINK COMMANDS LINK COMMANDS
============= =============
| **bpftool** **link { show | list }** [*LINK*] | **bpftool** **link { show | list }** [*LINK*]
| **bpftool** **link pin** *LINK* *FILE* | **bpftool** **link pin** *LINK* *FILE*
| **bpftool** **link detach** *LINK* | **bpftool** **link detach** *LINK*
| **bpftool** **link help** | **bpftool** **link help**
| |
| *LINK* := { **id** *LINK_ID* | **pinned** *FILE* } | *LINK* := { **id** *LINK_ID* | **pinned** *FILE* }
DESCRIPTION DESCRIPTION
=========== ===========
**bpftool link { show | list }** [*LINK*] **bpftool link { show | list }** [*LINK*]
Show information about active links. If *LINK* is Show information about active links. If *LINK* is specified show
specified show information only about given link, information only about given link, otherwise list all links currently
otherwise list all links currently active on the system. active on the system.
Output will start with link ID followed by link type and Output will start with link ID followed by link type and zero or more named
zero or more named attributes, some of which depend on type attributes, some of which depend on type of link.
of link.
Since Linux 5.8 bpftool is able to discover information about Since Linux 5.8 bpftool is able to discover information about processes
processes that hold open file descriptors (FDs) against BPF that hold open file descriptors (FDs) against BPF links. On such kernels
links. On such kernels bpftool will automatically emit this bpftool will automatically emit this information as well.
information as well.
**bpftool link pin** *LINK* *FILE* **bpftool link pin** *LINK* *FILE*
Pin link *LINK* as *FILE*. Pin link *LINK* as *FILE*.
Note: *FILE* must be located in *bpffs* mount. It must not Note: *FILE* must be located in *bpffs* mount. It must not contain a dot
contain a dot character ('.'), which is reserved for future character ('.'), which is reserved for future extensions of *bpffs*.
extensions of *bpffs*.
**bpftool link detach** *LINK* **bpftool link detach** *LINK*
Force-detach link *LINK*. BPF link and its underlying BPF Force-detach link *LINK*. BPF link and its underlying BPF program will stay
program will stay valid, but they will be detached from the valid, but they will be detached from the respective BPF hook and BPF link
respective BPF hook and BPF link will transition into will transition into a defunct state until last open file descriptor for
a defunct state until last open file descriptor for that that link is closed.
link is closed.
**bpftool link help** **bpftool link help**
Print short help message. Print short help message.
OPTIONS OPTIONS
======= =======
.. include:: common_options.rst .. include:: common_options.rst
-f, --bpffs -f, --bpffs
When showing BPF links, show file names of pinned When showing BPF links, show file names of pinned links.
links.
-n, --nomount -n, --nomount
Do not automatically attempt to mount any virtual file system Do not automatically attempt to mount any virtual file system (such as
(such as tracefs or BPF virtual file system) when necessary. tracefs or BPF virtual file system) when necessary.
EXAMPLES EXAMPLES
======== ========
......
...@@ -14,76 +14,74 @@ tool for inspection of networking related bpf prog attachments ...@@ -14,76 +14,74 @@ tool for inspection of networking related bpf prog attachments
SYNOPSIS SYNOPSIS
======== ========
**bpftool** [*OPTIONS*] **net** *COMMAND* **bpftool** [*OPTIONS*] **net** *COMMAND*
*OPTIONS* := { |COMMON_OPTIONS| } *OPTIONS* := { |COMMON_OPTIONS| }
*COMMANDS* := *COMMANDS* := { **show** | **list** | **attach** | **detach** | **help** }
{ **show** | **list** | **attach** | **detach** | **help** }
NET COMMANDS NET COMMANDS
============ ============
| **bpftool** **net** { **show** | **list** } [ **dev** *NAME* ] | **bpftool** **net** { **show** | **list** } [ **dev** *NAME* ]
| **bpftool** **net attach** *ATTACH_TYPE* *PROG* **dev** *NAME* [ **overwrite** ] | **bpftool** **net attach** *ATTACH_TYPE* *PROG* **dev** *NAME* [ **overwrite** ]
| **bpftool** **net detach** *ATTACH_TYPE* **dev** *NAME* | **bpftool** **net detach** *ATTACH_TYPE* **dev** *NAME*
| **bpftool** **net help** | **bpftool** **net help**
| |
| *PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* } | *PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* }
| *ATTACH_TYPE* := { **xdp** | **xdpgeneric** | **xdpdrv** | **xdpoffload** } | *ATTACH_TYPE* := { **xdp** | **xdpgeneric** | **xdpdrv** | **xdpoffload** }
DESCRIPTION DESCRIPTION
=========== ===========
**bpftool net { show | list }** [ **dev** *NAME* ] **bpftool net { show | list }** [ **dev** *NAME* ]
List bpf program attachments in the kernel networking subsystem. List bpf program attachments in the kernel networking subsystem.
Currently, device driver xdp attachments, tcx, netkit and old-style tc Currently, device driver xdp attachments, tcx, netkit and old-style tc
classifier/action attachments, flow_dissector as well as netfilter classifier/action attachments, flow_dissector as well as netfilter
attachments are implemented, i.e., for attachments are implemented, i.e., for program types **BPF_PROG_TYPE_XDP**,
program types **BPF_PROG_TYPE_XDP**, **BPF_PROG_TYPE_SCHED_CLS**, **BPF_PROG_TYPE_SCHED_CLS**, **BPF_PROG_TYPE_SCHED_ACT**,
**BPF_PROG_TYPE_SCHED_ACT**, **BPF_PROG_TYPE_FLOW_DISSECTOR**, **BPF_PROG_TYPE_FLOW_DISSECTOR**, **BPF_PROG_TYPE_NETFILTER**.
**BPF_PROG_TYPE_NETFILTER**.
For programs attached to a particular cgroup, e.g.,
For programs attached to a particular cgroup, e.g., **BPF_PROG_TYPE_CGROUP_SKB**, **BPF_PROG_TYPE_CGROUP_SOCK**,
**BPF_PROG_TYPE_CGROUP_SKB**, **BPF_PROG_TYPE_CGROUP_SOCK**, **BPF_PROG_TYPE_SOCK_OPS** and **BPF_PROG_TYPE_CGROUP_SOCK_ADDR**, users
**BPF_PROG_TYPE_SOCK_OPS** and **BPF_PROG_TYPE_CGROUP_SOCK_ADDR**, can use **bpftool cgroup** to dump cgroup attachments. For sk_{filter, skb,
users can use **bpftool cgroup** to dump cgroup attachments. msg, reuseport} and lwt/seg6 bpf programs, users should consult other
For sk_{filter, skb, msg, reuseport} and lwt/seg6 tools, e.g., iproute2.
bpf programs, users should consult other tools, e.g., iproute2.
The current output will start with all xdp program attachments, followed by
The current output will start with all xdp program attachments, followed by all tcx, netkit, then tc class/qdisc bpf program attachments, then
all tcx, netkit, then tc class/qdisc bpf program attachments, then flow_dissector flow_dissector and finally netfilter programs. Both xdp programs and
and finally netfilter programs. Both xdp programs and tcx/netkit/tc programs are tcx/netkit/tc programs are ordered based on ifindex number. If multiple bpf
ordered based on ifindex number. If multiple bpf programs attached programs attached to the same networking device through **tc**, the order
to the same networking device through **tc**, the order will be first will be first all bpf programs attached to tcx, netkit, then tc classes,
all bpf programs attached to tcx, netkit, then tc classes, then all bpf programs then all bpf programs attached to non clsact qdiscs, and finally all bpf
attached to non clsact qdiscs, and finally all bpf programs attached programs attached to root and clsact qdisc.
to root and clsact qdisc.
**bpftool** **net attach** *ATTACH_TYPE* *PROG* **dev** *NAME* [ **overwrite** ]
**bpftool** **net attach** *ATTACH_TYPE* *PROG* **dev** *NAME* [ **overwrite** ] Attach bpf program *PROG* to network interface *NAME* with type specified
Attach bpf program *PROG* to network interface *NAME* with by *ATTACH_TYPE*. Previously attached bpf program can be replaced by the
type specified by *ATTACH_TYPE*. Previously attached bpf program command used with **overwrite** option. Currently, only XDP-related modes
can be replaced by the command used with **overwrite** option. are supported for *ATTACH_TYPE*.
Currently, only XDP-related modes are supported for *ATTACH_TYPE*.
*ATTACH_TYPE* can be of:
*ATTACH_TYPE* can be of: **xdp** - try native XDP and fallback to generic XDP if NIC driver does not support it;
**xdp** - try native XDP and fallback to generic XDP if NIC driver does not support it; **xdpgeneric** - Generic XDP. runs at generic XDP hook when packet already enters receive path as skb;
**xdpgeneric** - Generic XDP. runs at generic XDP hook when packet already enters receive path as skb; **xdpdrv** - Native XDP. runs earliest point in driver's receive path;
**xdpdrv** - Native XDP. runs earliest point in driver's receive path; **xdpoffload** - Offload XDP. runs directly on NIC on each packet reception;
**xdpoffload** - Offload XDP. runs directly on NIC on each packet reception;
**bpftool** **net detach** *ATTACH_TYPE* **dev** *NAME*
**bpftool** **net detach** *ATTACH_TYPE* **dev** *NAME* Detach bpf program attached to network interface *NAME* with type specified
Detach bpf program attached to network interface *NAME* with by *ATTACH_TYPE*. To detach bpf program, same *ATTACH_TYPE* previously used
type specified by *ATTACH_TYPE*. To detach bpf program, same for attach must be specified. Currently, only XDP-related modes are
*ATTACH_TYPE* previously used for attach must be specified. supported for *ATTACH_TYPE*.
Currently, only XDP-related modes are supported for *ATTACH_TYPE*.
**bpftool net help**
**bpftool net help** Print short help message.
Print short help message.
OPTIONS OPTIONS
======= =======
.. include:: common_options.rst .. include:: common_options.rst
EXAMPLES EXAMPLES
======== ========
......
...@@ -14,37 +14,37 @@ tool for inspection of perf related bpf prog attachments ...@@ -14,37 +14,37 @@ tool for inspection of perf related bpf prog attachments
SYNOPSIS SYNOPSIS
======== ========
**bpftool** [*OPTIONS*] **perf** *COMMAND* **bpftool** [*OPTIONS*] **perf** *COMMAND*
*OPTIONS* := { |COMMON_OPTIONS| } *OPTIONS* := { |COMMON_OPTIONS| }
*COMMANDS* := *COMMANDS* :=
{ **show** | **list** | **help** } { **show** | **list** | **help** }
PERF COMMANDS PERF COMMANDS
============= =============
| **bpftool** **perf** { **show** | **list** } | **bpftool** **perf** { **show** | **list** }
| **bpftool** **perf help** | **bpftool** **perf help**
DESCRIPTION DESCRIPTION
=========== ===========
**bpftool perf { show | list }** **bpftool perf { show | list }**
List all raw_tracepoint, tracepoint, kprobe attachment in the system. List all raw_tracepoint, tracepoint, kprobe attachment in the system.
Output will start with process id and file descriptor in that process, Output will start with process id and file descriptor in that process,
followed by bpf program id, attachment information, and attachment point. followed by bpf program id, attachment information, and attachment point.
The attachment point for raw_tracepoint/tracepoint is the trace probe name. The attachment point for raw_tracepoint/tracepoint is the trace probe name.
The attachment point for k[ret]probe is either symbol name and offset, The attachment point for k[ret]probe is either symbol name and offset, or a
or a kernel virtual address. kernel virtual address. The attachment point for u[ret]probe is the file
The attachment point for u[ret]probe is the file name and the file offset. name and the file offset.
**bpftool perf help** **bpftool perf help**
Print short help message. Print short help message.
OPTIONS OPTIONS
======= =======
.. include:: common_options.rst .. include:: common_options.rst
EXAMPLES EXAMPLES
======== ========
......
...@@ -14,61 +14,60 @@ tool to register/unregister/introspect BPF struct_ops ...@@ -14,61 +14,60 @@ tool to register/unregister/introspect BPF struct_ops
SYNOPSIS SYNOPSIS
======== ========
**bpftool** [*OPTIONS*] **struct_ops** *COMMAND* **bpftool** [*OPTIONS*] **struct_ops** *COMMAND*
*OPTIONS* := { |COMMON_OPTIONS| } *OPTIONS* := { |COMMON_OPTIONS| }
*COMMANDS* := *COMMANDS* :=
{ **show** | **list** | **dump** | **register** | **unregister** | **help** } { **show** | **list** | **dump** | **register** | **unregister** | **help** }
STRUCT_OPS COMMANDS STRUCT_OPS COMMANDS
=================== ===================
| **bpftool** **struct_ops { show | list }** [*STRUCT_OPS_MAP*] | **bpftool** **struct_ops { show | list }** [*STRUCT_OPS_MAP*]
| **bpftool** **struct_ops dump** [*STRUCT_OPS_MAP*] | **bpftool** **struct_ops dump** [*STRUCT_OPS_MAP*]
| **bpftool** **struct_ops register** *OBJ* [*LINK_DIR*] | **bpftool** **struct_ops register** *OBJ* [*LINK_DIR*]
| **bpftool** **struct_ops unregister** *STRUCT_OPS_MAP* | **bpftool** **struct_ops unregister** *STRUCT_OPS_MAP*
| **bpftool** **struct_ops help** | **bpftool** **struct_ops help**
| |
| *STRUCT_OPS_MAP* := { **id** *STRUCT_OPS_MAP_ID* | **name** *STRUCT_OPS_MAP_NAME* } | *STRUCT_OPS_MAP* := { **id** *STRUCT_OPS_MAP_ID* | **name** *STRUCT_OPS_MAP_NAME* }
| *OBJ* := /a/file/of/bpf_struct_ops.o | *OBJ* := /a/file/of/bpf_struct_ops.o
DESCRIPTION DESCRIPTION
=========== ===========
**bpftool struct_ops { show | list }** [*STRUCT_OPS_MAP*] **bpftool struct_ops { show | list }** [*STRUCT_OPS_MAP*]
Show brief information about the struct_ops in the system. Show brief information about the struct_ops in the system. If
If *STRUCT_OPS_MAP* is specified, it shows information only *STRUCT_OPS_MAP* is specified, it shows information only for the given
for the given struct_ops. Otherwise, it lists all struct_ops struct_ops. Otherwise, it lists all struct_ops currently existing in the
currently existing in the system. system.
Output will start with struct_ops map ID, followed by its map Output will start with struct_ops map ID, followed by its map name and its
name and its struct_ops's kernel type. struct_ops's kernel type.
**bpftool struct_ops dump** [*STRUCT_OPS_MAP*] **bpftool struct_ops dump** [*STRUCT_OPS_MAP*]
Dump details information about the struct_ops in the system. Dump details information about the struct_ops in the system. If
If *STRUCT_OPS_MAP* is specified, it dumps information only *STRUCT_OPS_MAP* is specified, it dumps information only for the given
for the given struct_ops. Otherwise, it dumps all struct_ops struct_ops. Otherwise, it dumps all struct_ops currently existing in the
currently existing in the system. system.
**bpftool struct_ops register** *OBJ* [*LINK_DIR*] **bpftool struct_ops register** *OBJ* [*LINK_DIR*]
Register bpf struct_ops from *OBJ*. All struct_ops under Register bpf struct_ops from *OBJ*. All struct_ops under the ELF section
the ELF section ".struct_ops" and ".struct_ops.link" will ".struct_ops" and ".struct_ops.link" will be registered to its kernel
be registered to its kernel subsystem. For each subsystem. For each struct_ops in the ".struct_ops.link" section, a link
struct_ops in the ".struct_ops.link" section, a link will be created. You can give *LINK_DIR* to provide a directory path where
will be created. You can give *LINK_DIR* to provide a these links will be pinned with the same name as their corresponding map
directory path where these links will be pinned with the name.
same name as their corresponding map name.
**bpftool struct_ops unregister** *STRUCT_OPS_MAP*
**bpftool struct_ops unregister** *STRUCT_OPS_MAP* Unregister the *STRUCT_OPS_MAP* from the kernel subsystem.
Unregister the *STRUCT_OPS_MAP* from the kernel subsystem.
**bpftool struct_ops help**
**bpftool struct_ops help** Print short help message.
Print short help message.
OPTIONS OPTIONS
======= =======
.. include:: common_options.rst .. include:: common_options.rst
EXAMPLES EXAMPLES
======== ========
......
...@@ -14,57 +14,57 @@ tool for inspection and simple manipulation of eBPF programs and maps ...@@ -14,57 +14,57 @@ tool for inspection and simple manipulation of eBPF programs and maps
SYNOPSIS SYNOPSIS
======== ========
**bpftool** [*OPTIONS*] *OBJECT* { *COMMAND* | **help** } **bpftool** [*OPTIONS*] *OBJECT* { *COMMAND* | **help** }
**bpftool** **batch file** *FILE* **bpftool** **batch file** *FILE*
**bpftool** **version** **bpftool** **version**
*OBJECT* := { **map** | **prog** | **link** | **cgroup** | **perf** | **net** | **feature** | *OBJECT* := { **map** | **prog** | **link** | **cgroup** | **perf** | **net** | **feature** |
**btf** | **gen** | **struct_ops** | **iter** } **btf** | **gen** | **struct_ops** | **iter** }
*OPTIONS* := { { **-V** | **--version** } | |COMMON_OPTIONS| } *OPTIONS* := { { **-V** | **--version** } | |COMMON_OPTIONS| }
*MAP-COMMANDS* := *MAP-COMMANDS* :=
{ **show** | **list** | **create** | **dump** | **update** | **lookup** | **getnext** | { **show** | **list** | **create** | **dump** | **update** | **lookup** | **getnext** |
**delete** | **pin** | **event_pipe** | **help** } **delete** | **pin** | **event_pipe** | **help** }
*PROG-COMMANDS* := { **show** | **list** | **dump jited** | **dump xlated** | **pin** | *PROG-COMMANDS* := { **show** | **list** | **dump jited** | **dump xlated** | **pin** |
**load** | **attach** | **detach** | **help** } **load** | **attach** | **detach** | **help** }
*LINK-COMMANDS* := { **show** | **list** | **pin** | **detach** | **help** } *LINK-COMMANDS* := { **show** | **list** | **pin** | **detach** | **help** }
*CGROUP-COMMANDS* := { **show** | **list** | **attach** | **detach** | **help** } *CGROUP-COMMANDS* := { **show** | **list** | **attach** | **detach** | **help** }
*PERF-COMMANDS* := { **show** | **list** | **help** } *PERF-COMMANDS* := { **show** | **list** | **help** }
*NET-COMMANDS* := { **show** | **list** | **help** } *NET-COMMANDS* := { **show** | **list** | **help** }
*FEATURE-COMMANDS* := { **probe** | **help** } *FEATURE-COMMANDS* := { **probe** | **help** }
*BTF-COMMANDS* := { **show** | **list** | **dump** | **help** } *BTF-COMMANDS* := { **show** | **list** | **dump** | **help** }
*GEN-COMMANDS* := { **object** | **skeleton** | **min_core_btf** | **help** } *GEN-COMMANDS* := { **object** | **skeleton** | **min_core_btf** | **help** }
*STRUCT-OPS-COMMANDS* := { **show** | **list** | **dump** | **register** | **unregister** | **help** } *STRUCT-OPS-COMMANDS* := { **show** | **list** | **dump** | **register** | **unregister** | **help** }
*ITER-COMMANDS* := { **pin** | **help** } *ITER-COMMANDS* := { **pin** | **help** }
DESCRIPTION DESCRIPTION
=========== ===========
*bpftool* allows for inspection and simple modification of BPF objects *bpftool* allows for inspection and simple modification of BPF objects on the
on the system. system.
Note that format of the output of all tools is not guaranteed to be Note that format of the output of all tools is not guaranteed to be stable and
stable and should not be depended upon. should not be depended upon.
OPTIONS OPTIONS
======= =======
.. include:: common_options.rst .. include:: common_options.rst
-m, --mapcompat -m, --mapcompat
Allow loading maps with unknown map definitions. Allow loading maps with unknown map definitions.
-n, --nomount -n, --nomount
Do not automatically attempt to mount any virtual file system Do not automatically attempt to mount any virtual file system (such as
(such as tracefs or BPF virtual file system) when necessary. tracefs or BPF virtual file system) when necessary.
.. SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) .. SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-h, --help -h, --help
Print short help message (similar to **bpftool help**). Print short help message (similar to **bpftool help**).
-V, --version -V, --version
Print bpftool's version number (similar to **bpftool version**), the Print bpftool's version number (similar to **bpftool version**), the number
number of the libbpf version in use, and optional features that were of the libbpf version in use, and optional features that were included when
included when bpftool was compiled. Optional features include linking bpftool was compiled. Optional features include linking against LLVM or
against LLVM or libbfd to provide the disassembler for JIT-ted libbfd to provide the disassembler for JIT-ted programs (**bpftool prog
programs (**bpftool prog dump jited**) and usage of BPF skeletons dump jited**) and usage of BPF skeletons (some features like **bpftool prog
(some features like **bpftool prog profile** or showing pids profile** or showing pids associated to BPF objects may rely on it).
associated to BPF objects may rely on it).
-j, --json -j, --json
Generate JSON output. For commands that cannot produce JSON, this Generate JSON output. For commands that cannot produce JSON, this option
option has no effect. has no effect.
-p, --pretty -p, --pretty
Generate human-readable JSON output. Implies **-j**. Generate human-readable JSON output. Implies **-j**.
-d, --debug -d, --debug
Print all logs available, even debug-level information. This includes Print all logs available, even debug-level information. This includes logs
logs from libbpf as well as from the verifier, when attempting to from libbpf as well as from the verifier, when attempting to load programs.
load programs.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment