4 -------------------------------------------------------------------------------
5 tool to create BPF iterators
6 -------------------------------------------------------------------------------
13 **bpftool** [*OPTIONS*] **iter** *COMMAND*
15 *OPTIONS* := { { **-j** | **--json** } [{ **-p** | **--pretty** }] | { **-d** | **--debug** } }
17 *COMMANDS* := { **pin** | **help** }
22 | **bpftool** **iter pin** *OBJ* *PATH* [**map** *MAP*]
23 | **bpftool** **iter help**
25 | *OBJ* := /a/file/of/bpf_iter_target.o
26 | *MAP* := { **id** *MAP_ID* | **pinned** *FILE* }
30 **bpftool iter pin** *OBJ* *PATH* [**map** *MAP*]
31 A bpf iterator combines a kernel iterating of
32 particular kernel data (e.g., tasks, bpf_maps, etc.)
33 and a bpf program called for each kernel data object
34 (e.g., one task, one bpf_map, etc.). User space can
35 *read* kernel iterator output through *read()* syscall.
37 The *pin* command creates a bpf iterator from *OBJ*,
38 and pin it to *PATH*. The *PATH* should be located
39 in *bpffs* mount. It must not contain a dot
40 character ('.'), which is reserved for future extensions
43 Map element bpf iterator requires an additional parameter
44 *MAP* so bpf program can iterate over map elements for
45 that map. User can have a bpf program in kernel to run
46 with each map element, do checking, filtering, aggregation,
47 etc. without copying data to user space.
49 User can then *cat PATH* to see the bpf iterator output.
52 Print short help message.
56 .. include:: common_options.rst
60 **# bpftool iter pin bpf_iter_netlink.o /sys/fs/bpf/my_netlink**
64 Create a file-based bpf iterator from bpf_iter_netlink.o and pin it
65 to /sys/fs/bpf/my_netlink
67 **# bpftool iter pin bpf_iter_hashmap.o /sys/fs/bpf/my_hashmap map id 20**
71 Create a file-based bpf iterator from bpf_iter_hashmap.o and map with
72 id 20, and pin it to /sys/fs/bpf/my_hashmap