1ff69c21aSJakub Kicinski================ 2ff69c21aSJakub Kicinskibpftool-map 3ff69c21aSJakub Kicinski================ 4ff69c21aSJakub Kicinski------------------------------------------------------------------------------- 5ff69c21aSJakub Kicinskitool for inspection and simple manipulation of eBPF maps 6ff69c21aSJakub Kicinski------------------------------------------------------------------------------- 7ff69c21aSJakub Kicinski 8ff69c21aSJakub Kicinski:Manual section: 8 9ff69c21aSJakub Kicinski 10ff69c21aSJakub KicinskiSYNOPSIS 11ff69c21aSJakub Kicinski======== 12ff69c21aSJakub Kicinski 130641c3c8SQuentin Monnet **bpftool** [*OPTIONS*] **map** *COMMAND* 140641c3c8SQuentin Monnet 15c541b734SPrashant Bhole *OPTIONS* := { { **-j** | **--json** } [{ **-p** | **--pretty** }] | { **-f** | **--bpffs** } } 16ff69c21aSJakub Kicinski 17ff69c21aSJakub Kicinski *COMMANDS* := 186ebe6dbdSJakub Kicinski { **show** | **list** | **dump** | **update** | **lookup** | **getnext** | **delete** 1947ff7ac6SQuentin Monnet | **pin** | **help** } 20ff69c21aSJakub Kicinski 21ff69c21aSJakub KicinskiMAP COMMANDS 22ff69c21aSJakub Kicinski============= 23ff69c21aSJakub Kicinski 246ebe6dbdSJakub Kicinski| **bpftool** **map { show | list }** [*MAP*] 2547ff7ac6SQuentin Monnet| **bpftool** **map dump** *MAP* 26c642ea26SJakub Kicinski| **bpftool** **map update** *MAP* **key** *DATA* **value** *VALUE* [*UPDATE_FLAGS*] 27c642ea26SJakub Kicinski| **bpftool** **map lookup** *MAP* **key** *DATA* 28c642ea26SJakub Kicinski| **bpftool** **map getnext** *MAP* [**key** *DATA*] 29c642ea26SJakub Kicinski| **bpftool** **map delete** *MAP* **key** *DATA* 3047ff7ac6SQuentin Monnet| **bpftool** **map pin** *MAP* *FILE* 31f412eed9SJakub Kicinski| **bpftool** **map event_pipe** *MAP* [**cpu** *N* **index** *M*] 3247ff7ac6SQuentin Monnet| **bpftool** **map help** 33ff69c21aSJakub Kicinski| 3447ff7ac6SQuentin Monnet| *MAP* := { **id** *MAP_ID* | **pinned** *FILE* } 35c642ea26SJakub Kicinski| *DATA* := { [**hex**] *BYTES* } 362148481dSQuentin Monnet| *PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* } 37c642ea26SJakub Kicinski| *VALUE* := { *DATA* | *MAP* | *PROG* } 3847ff7ac6SQuentin Monnet| *UPDATE_FLAGS* := { **any** | **exist** | **noexist** } 39ff69c21aSJakub Kicinski 40ff69c21aSJakub KicinskiDESCRIPTION 41ff69c21aSJakub Kicinski=========== 426ebe6dbdSJakub Kicinski **bpftool map { show | list }** [*MAP*] 43ff69c21aSJakub Kicinski Show information about loaded maps. If *MAP* is specified 44ff69c21aSJakub Kicinski show information only about given map, otherwise list all 45ff69c21aSJakub Kicinski maps currently loaded on the system. 46ff69c21aSJakub Kicinski 47ff69c21aSJakub Kicinski Output will start with map ID followed by map type and 48ff69c21aSJakub Kicinski zero or more named attributes (depending on kernel version). 49ff69c21aSJakub Kicinski 50ff69c21aSJakub Kicinski **bpftool map dump** *MAP* 51ff69c21aSJakub Kicinski Dump all entries in a given *MAP*. 52ff69c21aSJakub Kicinski 53c642ea26SJakub Kicinski **bpftool map update** *MAP* **key** *DATA* **value** *VALUE* [*UPDATE_FLAGS*] 54ff69c21aSJakub Kicinski Update map entry for a given *KEY*. 55ff69c21aSJakub Kicinski 56ff69c21aSJakub Kicinski *UPDATE_FLAGS* can be one of: **any** update existing entry 57ff69c21aSJakub Kicinski or add if doesn't exit; **exist** update only if entry already 58ff69c21aSJakub Kicinski exists; **noexist** update only if entry doesn't exist. 59ff69c21aSJakub Kicinski 600c90f224SQuentin Monnet If the **hex** keyword is provided in front of the bytes 610c90f224SQuentin Monnet sequence, the bytes are parsed as hexadeximal values, even if 620c90f224SQuentin Monnet no "0x" prefix is added. If the keyword is not provided, then 630c90f224SQuentin Monnet the bytes are parsed as decimal values, unless a "0x" prefix 640c90f224SQuentin Monnet (for hexadecimal) or a "0" prefix (for octal) is provided. 650c90f224SQuentin Monnet 66c642ea26SJakub Kicinski **bpftool map lookup** *MAP* **key** *DATA* 67ff69c21aSJakub Kicinski Lookup **key** in the map. 68ff69c21aSJakub Kicinski 69c642ea26SJakub Kicinski **bpftool map getnext** *MAP* [**key** *DATA*] 70ff69c21aSJakub Kicinski Get next key. If *key* is not specified, get first key. 71ff69c21aSJakub Kicinski 72c642ea26SJakub Kicinski **bpftool map delete** *MAP* **key** *DATA* 73ff69c21aSJakub Kicinski Remove entry from the map. 74ff69c21aSJakub Kicinski 75ff69c21aSJakub Kicinski **bpftool map pin** *MAP* *FILE* 76ff69c21aSJakub Kicinski Pin map *MAP* as *FILE*. 77ff69c21aSJakub Kicinski 78ff69c21aSJakub Kicinski Note: *FILE* must be located in *bpffs* mount. 79ff69c21aSJakub Kicinski 80f412eed9SJakub Kicinski **bpftool** **map event_pipe** *MAP* [**cpu** *N* **index** *M*] 81f412eed9SJakub Kicinski Read events from a BPF_MAP_TYPE_PERF_EVENT_ARRAY map. 82f412eed9SJakub Kicinski 83f412eed9SJakub Kicinski Install perf rings into a perf event array map and dump 84f412eed9SJakub Kicinski output of any bpf_perf_event_output() call in the kernel. 85f412eed9SJakub Kicinski By default read the number of CPUs on the system and 86f412eed9SJakub Kicinski install perf ring for each CPU in the corresponding index 87f412eed9SJakub Kicinski in the array. 88f412eed9SJakub Kicinski 89f412eed9SJakub Kicinski If **cpu** and **index** are specified, install perf ring 90f412eed9SJakub Kicinski for given **cpu** at **index** in the array (single ring). 91f412eed9SJakub Kicinski 92f412eed9SJakub Kicinski Note that installing a perf ring into an array will silently 93f412eed9SJakub Kicinski replace any existing ring. Any other application will stop 94f412eed9SJakub Kicinski receiving events if it installed its rings earlier. 95f412eed9SJakub Kicinski 96ff69c21aSJakub Kicinski **bpftool map help** 97ff69c21aSJakub Kicinski Print short help message. 98ff69c21aSJakub Kicinski 99a2bc2e5cSQuentin MonnetOPTIONS 100a2bc2e5cSQuentin Monnet======= 101a2bc2e5cSQuentin Monnet -h, --help 102a2bc2e5cSQuentin Monnet Print short generic help message (similar to **bpftool help**). 103a2bc2e5cSQuentin Monnet 104a2bc2e5cSQuentin Monnet -v, --version 105a2bc2e5cSQuentin Monnet Print version number (similar to **bpftool version**). 106a2bc2e5cSQuentin Monnet 1070641c3c8SQuentin Monnet -j, --json 1080641c3c8SQuentin Monnet Generate JSON output. For commands that cannot produce JSON, this 1090641c3c8SQuentin Monnet option has no effect. 1100641c3c8SQuentin Monnet 1110641c3c8SQuentin Monnet -p, --pretty 1120641c3c8SQuentin Monnet Generate human-readable JSON output. Implies **-j**. 1130641c3c8SQuentin Monnet 114c541b734SPrashant Bhole -f, --bpffs 115c541b734SPrashant Bhole Show file names of pinned maps. 116c541b734SPrashant Bhole 117ff69c21aSJakub KicinskiEXAMPLES 118ff69c21aSJakub Kicinski======== 119ff69c21aSJakub Kicinski**# bpftool map show** 120ff69c21aSJakub Kicinski:: 121ff69c21aSJakub Kicinski 122ff69c21aSJakub Kicinski 10: hash name some_map flags 0x0 123ff69c21aSJakub Kicinski key 4B value 8B max_entries 2048 memlock 167936B 124ff69c21aSJakub Kicinski 1250c90f224SQuentin MonnetThe following three commands are equivalent: 1260c90f224SQuentin Monnet 1270c90f224SQuentin Monnet| 1280c90f224SQuentin Monnet| **# bpftool map update id 10 key hex 20 c4 b7 00 value hex 0f ff ff ab 01 02 03 4c** 1290c90f224SQuentin Monnet| **# bpftool map update id 10 key 0x20 0xc4 0xb7 0x00 value 0x0f 0xff 0xff 0xab 0x01 0x02 0x03 0x4c** 1300c90f224SQuentin Monnet| **# bpftool map update id 10 key 32 196 183 0 value 15 255 255 171 1 2 3 76** 131ff69c21aSJakub Kicinski 132ff69c21aSJakub Kicinski**# bpftool map lookup id 10 key 0 1 2 3** 133ff69c21aSJakub Kicinski 134ff69c21aSJakub Kicinski:: 135ff69c21aSJakub Kicinski 136ff69c21aSJakub Kicinski key: 00 01 02 03 value: 00 01 02 03 04 05 06 07 137ff69c21aSJakub Kicinski 138ff69c21aSJakub Kicinski 139ff69c21aSJakub Kicinski**# bpftool map dump id 10** 140ff69c21aSJakub Kicinski:: 141ff69c21aSJakub Kicinski 142ff69c21aSJakub Kicinski key: 00 01 02 03 value: 00 01 02 03 04 05 06 07 143ff69c21aSJakub Kicinski key: 0d 00 07 00 value: 02 00 00 00 01 02 03 04 144ff69c21aSJakub Kicinski Found 2 elements 145ff69c21aSJakub Kicinski 146ff69c21aSJakub Kicinski**# bpftool map getnext id 10 key 0 1 2 3** 147ff69c21aSJakub Kicinski:: 148ff69c21aSJakub Kicinski 149ff69c21aSJakub Kicinski key: 150ff69c21aSJakub Kicinski 00 01 02 03 151ff69c21aSJakub Kicinski next key: 152ff69c21aSJakub Kicinski 0d 00 07 00 153ff69c21aSJakub Kicinski 154ff69c21aSJakub Kicinski| 155ff69c21aSJakub Kicinski| **# mount -t bpf none /sys/fs/bpf/** 156ff69c21aSJakub Kicinski| **# bpftool map pin id 10 /sys/fs/bpf/map** 157ff69c21aSJakub Kicinski| **# bpftool map del pinned /sys/fs/bpf/map key 13 00 07 00** 158ff69c21aSJakub Kicinski 159ff69c21aSJakub KicinskiSEE ALSO 160ff69c21aSJakub Kicinski======== 1615ccda64dSRoman Gushchin **bpftool**\ (8), **bpftool-prog**\ (8), **bpftool-cgroup**\ (8) 162