================
bpftool-link
================
-------------------------------------------------------------------------------
tool for inspection and simple manipulation of eBPF links
-------------------------------------------------------------------------------

:Manual section: 8

SYNOPSIS
========

	**bpftool** [*OPTIONS*] **link** *COMMAND*

	*OPTIONS* := { { **-j** | **--json** } [{ **-p** | **--pretty** }] | { **-d** | **--debug** } |
		{ **-f** | **--bpffs** } | { **-n** | **--nomount** } }

	*COMMANDS* := { **show** | **list** | **pin** | **help** }

LINK COMMANDS
=============

|	**bpftool** **link { show | list }** [*LINK*]
|	**bpftool** **link pin** *LINK* *FILE*
|	**bpftool** **link detach** *LINK*
|	**bpftool** **link help**
|
|	*LINK* := { **id** *LINK_ID* | **pinned** *FILE* }


DESCRIPTION
===========
	**bpftool link { show | list }** [*LINK*]
		  Show information about active links. If *LINK* is
		  specified show information only about given link,
		  otherwise list all links currently active on the system.

		  Output will start with link ID followed by link type and
		  zero or more named attributes, some of which depend on type
		  of link.

		  Since Linux 5.8 bpftool is able to discover information about
		  processes that hold open file descriptors (FDs) against BPF
		  links. On such kernels bpftool will automatically emit this
		  information as well.

	**bpftool link pin** *LINK* *FILE*
		  Pin link *LINK* as *FILE*.

		  Note: *FILE* must be located in *bpffs* mount. It must not
		  contain a dot character ('.'), which is reserved for future
		  extensions of *bpffs*.

	**bpftool link detach** *LINK*
		  Force-detach link *LINK*. BPF link and its underlying BPF
		  program will stay valid, but they will be detached from the
		  respective BPF hook and BPF link will transition into
		  a defunct state until last open file descriptor for that
		  link is closed.

	**bpftool link help**
		  Print short help message.

OPTIONS
=======
	.. include:: common_options.rst

	-f, --bpffs
		  When showing BPF links, show file names of pinned
		  links.

	-n, --nomount
		  Do not automatically attempt to mount any virtual file system
		  (such as tracefs or BPF virtual file system) when necessary.

EXAMPLES
========
**# bpftool link show**

::

    10: cgroup  prog 25
            cgroup_id 614  attach_type egress
            pids test_progs(223)

**# bpftool --json --pretty link show**

::

    [{
            "type": "cgroup",
            "prog_id": 25,
            "cgroup_id": 614,
            "attach_type": "egress",
            "pids": [{
                    "pid": 223,
                    "comm": "test_progs"
                }
            ]
        }
    ]

|
| **# bpftool link pin id 10 /sys/fs/bpf/link**
| **# ls -l /sys/fs/bpf/**

::

    -rw------- 1 root root 0 Apr 23 21:39 link
