123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- ================
- bpftool-prog
- ================
- -------------------------------------------------------------------------------
- tool for inspection and simple manipulation of eBPF progs
- -------------------------------------------------------------------------------
- :Manual section: 8
- SYNOPSIS
- ========
- **bpftool** [*OPTIONS*] **prog** *COMMAND*
- *OPTIONS* := { { **-j** | **--json** } [{ **-p** | **--pretty** }] | { **-f** | **--bpffs** } }
- *COMMANDS* :=
- { **show** | **list** | **dump xlated** | **dump jited** | **pin** | **load** | **help** }
- MAP COMMANDS
- =============
- | **bpftool** **prog { show | list }** [*PROG*]
- | **bpftool** **prog dump xlated** *PROG* [{**file** *FILE* | **opcodes** | **visual**}]
- | **bpftool** **prog dump jited** *PROG* [{**file** *FILE* | **opcodes**}]
- | **bpftool** **prog pin** *PROG* *FILE*
- | **bpftool** **prog load** *OBJ* *FILE* [**type** *TYPE*] [**map** {**idx** *IDX* | **name** *NAME*} *MAP*] [**dev** *NAME*]
- | **bpftool** **prog help**
- |
- | *MAP* := { **id** *MAP_ID* | **pinned** *FILE* }
- | *PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* }
- | *TYPE* := {
- | **socket** | **kprobe** | **kretprobe** | **classifier** | **action** |
- | **tracepoint** | **raw_tracepoint** | **xdp** | **perf_event** | **cgroup/skb** |
- | **cgroup/sock** | **cgroup/dev** | **lwt_in** | **lwt_out** | **lwt_xmit** |
- | **lwt_seg6local** | **sockops** | **sk_skb** | **sk_msg** | **lirc_mode2** |
- | **cgroup/bind4** | **cgroup/bind6** | **cgroup/post_bind4** | **cgroup/post_bind6** |
- | **cgroup/connect4** | **cgroup/connect6** | **cgroup/sendmsg4** | **cgroup/sendmsg6**
- | }
- DESCRIPTION
- ===========
- **bpftool prog { show | list }** [*PROG*]
- Show information about loaded programs. If *PROG* is
- specified show information only about given program, otherwise
- list all programs currently loaded on the system.
- Output will start with program ID followed by program type and
- zero or more named attributes (depending on kernel version).
- **bpftool prog dump xlated** *PROG* [{ **file** *FILE* | **opcodes** | **visual** }]
- Dump eBPF instructions of the program from the kernel. By
- default, eBPF will be disassembled and printed to standard
- output in human-readable format. In this case, **opcodes**
- controls if raw opcodes should be printed as well.
- If **file** is specified, the binary image will instead be
- written to *FILE*.
- If **visual** is specified, control flow graph (CFG) will be
- built instead, and eBPF instructions will be presented with
- CFG in DOT format, on standard output.
- **bpftool prog dump jited** *PROG* [{ **file** *FILE* | **opcodes** }]
- Dump jited image (host machine code) of the program.
- If *FILE* is specified image will be written to a file,
- otherwise it will be disassembled and printed to stdout.
- **opcodes** controls if raw opcodes will be printed.
- **bpftool prog pin** *PROG* *FILE*
- Pin program *PROG* as *FILE*.
- Note: *FILE* must be located in *bpffs* mount.
- **bpftool prog load** *OBJ* *FILE* [**type** *TYPE*] [**map** {**idx** *IDX* | **name** *NAME*} *MAP*] [**dev** *NAME*]
- Load bpf program from binary *OBJ* and pin as *FILE*.
- **type** is optional, if not specified program type will be
- inferred from section names.
- By default bpftool will create new maps as declared in the ELF
- object being loaded. **map** parameter allows for the reuse
- of existing maps. It can be specified multiple times, each
- time for a different map. *IDX* refers to index of the map
- to be replaced in the ELF file counting from 0, while *NAME*
- allows to replace a map by name. *MAP* specifies the map to
- use, referring to it by **id** or through a **pinned** file.
- If **dev** *NAME* is specified program will be loaded onto
- given networking device (offload).
- Note: *FILE* must be located in *bpffs* mount.
- **bpftool prog help**
- Print short help message.
- OPTIONS
- =======
- -h, --help
- Print short generic help message (similar to **bpftool help**).
- -v, --version
- Print version number (similar to **bpftool version**).
- -j, --json
- Generate JSON output. For commands that cannot produce JSON, this
- option has no effect.
- -p, --pretty
- Generate human-readable JSON output. Implies **-j**.
- -f, --bpffs
- Show file names of pinned programs.
- EXAMPLES
- ========
- **# bpftool prog show**
- ::
- 10: xdp name some_prog tag 005a3d2123620c8b gpl
- loaded_at Sep 29/20:11 uid 0
- xlated 528B jited 370B memlock 4096B map_ids 10
- **# bpftool --json --pretty prog show**
- ::
- {
- "programs": [{
- "id": 10,
- "type": "xdp",
- "tag": "005a3d2123620c8b",
- "gpl_compatible": true,
- "loaded_at": "Sep 29/20:11",
- "uid": 0,
- "bytes_xlated": 528,
- "jited": true,
- "bytes_jited": 370,
- "bytes_memlock": 4096,
- "map_ids": [10
- ]
- }
- ]
- }
- |
- | **# bpftool prog dump xlated id 10 file /tmp/t**
- | **# ls -l /tmp/t**
- | -rw------- 1 root root 560 Jul 22 01:42 /tmp/t
- **# bpftool prog dum jited tag 005a3d2123620c8b**
- ::
- push %rbp
- mov %rsp,%rbp
- sub $0x228,%rsp
- sub $0x28,%rbp
- mov %rbx,0x0(%rbp)
- |
- | **# mount -t bpf none /sys/fs/bpf/**
- | **# bpftool prog pin id 10 /sys/fs/bpf/prog**
- | **# bpftool prog load ./my_prog.o /sys/fs/bpf/prog2**
- | **# ls -l /sys/fs/bpf/**
- | -rw------- 1 root root 0 Jul 22 01:43 prog
- | -rw------- 1 root root 0 Jul 22 01:44 prog2
- **# bpftool prog dum jited pinned /sys/fs/bpf/prog opcodes**
- ::
- push %rbp
- 55
- mov %rsp,%rbp
- 48 89 e5
- sub $0x228,%rsp
- 48 81 ec 28 02 00 00
- sub $0x28,%rbp
- 48 83 ed 28
- mov %rbx,0x0(%rbp)
- 48 89 5d 00
- |
- | **# bpftool prog load xdp1_kern.o /sys/fs/bpf/xdp1 type xdp map name rxcnt id 7**
- | **# bpftool prog show pinned /sys/fs/bpf/xdp1**
- | 9: xdp name xdp_prog1 tag 539ec6ce11b52f98 gpl
- | loaded_at 2018-06-25T16:17:31-0700 uid 0
- | xlated 488B jited 336B memlock 4096B map_ids 7
- | **# rm /sys/fs/bpf/xdp1**
- |
- SEE ALSO
- ========
- **bpftool**\ (8), **bpftool-map**\ (8), **bpftool-cgroup**\ (8)
|