xref: /aosp_15_r20/external/bpftool/docs/bpftool-link.rst (revision 858ea5e570667251cdc31d3fe7b846b591105938)
1*858ea5e5SAndroid Build Coastguard Worker.. SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*858ea5e5SAndroid Build Coastguard Worker
3*858ea5e5SAndroid Build Coastguard Worker================
4*858ea5e5SAndroid Build Coastguard Workerbpftool-link
5*858ea5e5SAndroid Build Coastguard Worker================
6*858ea5e5SAndroid Build Coastguard Worker-------------------------------------------------------------------------------
7*858ea5e5SAndroid Build Coastguard Workertool for inspection and simple manipulation of eBPF links
8*858ea5e5SAndroid Build Coastguard Worker-------------------------------------------------------------------------------
9*858ea5e5SAndroid Build Coastguard Worker
10*858ea5e5SAndroid Build Coastguard Worker:Manual section: 8
11*858ea5e5SAndroid Build Coastguard Worker
12*858ea5e5SAndroid Build Coastguard Worker.. include:: substitutions.rst
13*858ea5e5SAndroid Build Coastguard Worker
14*858ea5e5SAndroid Build Coastguard WorkerSYNOPSIS
15*858ea5e5SAndroid Build Coastguard Worker========
16*858ea5e5SAndroid Build Coastguard Worker
17*858ea5e5SAndroid Build Coastguard Worker	**bpftool** [*OPTIONS*] **link** *COMMAND*
18*858ea5e5SAndroid Build Coastguard Worker
19*858ea5e5SAndroid Build Coastguard Worker	*OPTIONS* := { |COMMON_OPTIONS| | { **-f** | **--bpffs** } | { **-n** | **--nomount** } }
20*858ea5e5SAndroid Build Coastguard Worker
21*858ea5e5SAndroid Build Coastguard Worker	*COMMANDS* := { **show** | **list** | **pin** | **help** }
22*858ea5e5SAndroid Build Coastguard Worker
23*858ea5e5SAndroid Build Coastguard WorkerLINK COMMANDS
24*858ea5e5SAndroid Build Coastguard Worker=============
25*858ea5e5SAndroid Build Coastguard Worker
26*858ea5e5SAndroid Build Coastguard Worker|	**bpftool** **link { show | list }** [*LINK*]
27*858ea5e5SAndroid Build Coastguard Worker|	**bpftool** **link pin** *LINK* *FILE*
28*858ea5e5SAndroid Build Coastguard Worker|	**bpftool** **link detach** *LINK*
29*858ea5e5SAndroid Build Coastguard Worker|	**bpftool** **link help**
30*858ea5e5SAndroid Build Coastguard Worker|
31*858ea5e5SAndroid Build Coastguard Worker|	*LINK* := { **id** *LINK_ID* | **pinned** *FILE* }
32*858ea5e5SAndroid Build Coastguard Worker
33*858ea5e5SAndroid Build Coastguard Worker
34*858ea5e5SAndroid Build Coastguard WorkerDESCRIPTION
35*858ea5e5SAndroid Build Coastguard Worker===========
36*858ea5e5SAndroid Build Coastguard Worker	**bpftool link { show | list }** [*LINK*]
37*858ea5e5SAndroid Build Coastguard Worker		  Show information about active links. If *LINK* is
38*858ea5e5SAndroid Build Coastguard Worker		  specified show information only about given link,
39*858ea5e5SAndroid Build Coastguard Worker		  otherwise list all links currently active on the system.
40*858ea5e5SAndroid Build Coastguard Worker
41*858ea5e5SAndroid Build Coastguard Worker		  Output will start with link ID followed by link type and
42*858ea5e5SAndroid Build Coastguard Worker		  zero or more named attributes, some of which depend on type
43*858ea5e5SAndroid Build Coastguard Worker		  of link.
44*858ea5e5SAndroid Build Coastguard Worker
45*858ea5e5SAndroid Build Coastguard Worker		  Since Linux 5.8 bpftool is able to discover information about
46*858ea5e5SAndroid Build Coastguard Worker		  processes that hold open file descriptors (FDs) against BPF
47*858ea5e5SAndroid Build Coastguard Worker		  links. On such kernels bpftool will automatically emit this
48*858ea5e5SAndroid Build Coastguard Worker		  information as well.
49*858ea5e5SAndroid Build Coastguard Worker
50*858ea5e5SAndroid Build Coastguard Worker	**bpftool link pin** *LINK* *FILE*
51*858ea5e5SAndroid Build Coastguard Worker		  Pin link *LINK* as *FILE*.
52*858ea5e5SAndroid Build Coastguard Worker
53*858ea5e5SAndroid Build Coastguard Worker		  Note: *FILE* must be located in *bpffs* mount. It must not
54*858ea5e5SAndroid Build Coastguard Worker		  contain a dot character ('.'), which is reserved for future
55*858ea5e5SAndroid Build Coastguard Worker		  extensions of *bpffs*.
56*858ea5e5SAndroid Build Coastguard Worker
57*858ea5e5SAndroid Build Coastguard Worker	**bpftool link detach** *LINK*
58*858ea5e5SAndroid Build Coastguard Worker		  Force-detach link *LINK*. BPF link and its underlying BPF
59*858ea5e5SAndroid Build Coastguard Worker		  program will stay valid, but they will be detached from the
60*858ea5e5SAndroid Build Coastguard Worker		  respective BPF hook and BPF link will transition into
61*858ea5e5SAndroid Build Coastguard Worker		  a defunct state until last open file descriptor for that
62*858ea5e5SAndroid Build Coastguard Worker		  link is closed.
63*858ea5e5SAndroid Build Coastguard Worker
64*858ea5e5SAndroid Build Coastguard Worker	**bpftool link help**
65*858ea5e5SAndroid Build Coastguard Worker		  Print short help message.
66*858ea5e5SAndroid Build Coastguard Worker
67*858ea5e5SAndroid Build Coastguard WorkerOPTIONS
68*858ea5e5SAndroid Build Coastguard Worker=======
69*858ea5e5SAndroid Build Coastguard Worker	.. include:: common_options.rst
70*858ea5e5SAndroid Build Coastguard Worker
71*858ea5e5SAndroid Build Coastguard Worker	-f, --bpffs
72*858ea5e5SAndroid Build Coastguard Worker		  When showing BPF links, show file names of pinned
73*858ea5e5SAndroid Build Coastguard Worker		  links.
74*858ea5e5SAndroid Build Coastguard Worker
75*858ea5e5SAndroid Build Coastguard Worker	-n, --nomount
76*858ea5e5SAndroid Build Coastguard Worker		  Do not automatically attempt to mount any virtual file system
77*858ea5e5SAndroid Build Coastguard Worker		  (such as tracefs or BPF virtual file system) when necessary.
78*858ea5e5SAndroid Build Coastguard Worker
79*858ea5e5SAndroid Build Coastguard WorkerEXAMPLES
80*858ea5e5SAndroid Build Coastguard Worker========
81*858ea5e5SAndroid Build Coastguard Worker**# bpftool link show**
82*858ea5e5SAndroid Build Coastguard Worker
83*858ea5e5SAndroid Build Coastguard Worker::
84*858ea5e5SAndroid Build Coastguard Worker
85*858ea5e5SAndroid Build Coastguard Worker    10: cgroup  prog 25
86*858ea5e5SAndroid Build Coastguard Worker            cgroup_id 614  attach_type egress
87*858ea5e5SAndroid Build Coastguard Worker            pids test_progs(223)
88*858ea5e5SAndroid Build Coastguard Worker
89*858ea5e5SAndroid Build Coastguard Worker**# bpftool --json --pretty link show**
90*858ea5e5SAndroid Build Coastguard Worker
91*858ea5e5SAndroid Build Coastguard Worker::
92*858ea5e5SAndroid Build Coastguard Worker
93*858ea5e5SAndroid Build Coastguard Worker    [{
94*858ea5e5SAndroid Build Coastguard Worker            "type": "cgroup",
95*858ea5e5SAndroid Build Coastguard Worker            "prog_id": 25,
96*858ea5e5SAndroid Build Coastguard Worker            "cgroup_id": 614,
97*858ea5e5SAndroid Build Coastguard Worker            "attach_type": "egress",
98*858ea5e5SAndroid Build Coastguard Worker            "pids": [{
99*858ea5e5SAndroid Build Coastguard Worker                    "pid": 223,
100*858ea5e5SAndroid Build Coastguard Worker                    "comm": "test_progs"
101*858ea5e5SAndroid Build Coastguard Worker                }
102*858ea5e5SAndroid Build Coastguard Worker            ]
103*858ea5e5SAndroid Build Coastguard Worker        }
104*858ea5e5SAndroid Build Coastguard Worker    ]
105*858ea5e5SAndroid Build Coastguard Worker
106*858ea5e5SAndroid Build Coastguard Worker|
107*858ea5e5SAndroid Build Coastguard Worker| **# bpftool link pin id 10 /sys/fs/bpf/link**
108*858ea5e5SAndroid Build Coastguard Worker| **# ls -l /sys/fs/bpf/**
109*858ea5e5SAndroid Build Coastguard Worker
110*858ea5e5SAndroid Build Coastguard Worker::
111*858ea5e5SAndroid Build Coastguard Worker
112*858ea5e5SAndroid Build Coastguard Worker    -rw------- 1 root root 0 Apr 23 21:39 link
113