This patch series adds various observability APIs to bpf_link: - each bpf_link now gets ID, similar to bpf_map and bpf_prog, by which user-space can iterate over all existing bpf_links and create limited FD from ID; - allows to get extra object information with bpf_link general and type-specific information; - makes LINK_UPDATE operation allowed only for writable bpf_links and allows to pin bpf_link as read-only file; - implements `bpf link show` command which lists all active bpf_links in the system; - implements `bpf link pin` allowing to pin bpf_link by ID or from other pinned path. This RFC series is missing selftests and only limited amount of manual testing was performed. But kernel implementation is hopefully in a good shape and won't change much (unless some big issues are identified with the current approach). It would be great to get feedback on approach and implementation, before I invest more time in writing tests. Andrii Nakryiko (8): bpf: refactor bpf_link update handling bpf: allow bpf_link pinning as read-only and enforce LINK_UPDATE bpf: allocate ID for bpf_link bpf: support GET_FD_BY_ID and GET_NEXT_ID for bpf_link bpf: add support for BPF_OBJ_GET_INFO_BY_FD for bpf_link libbpf: add low-level APIs for new bpf_link commands bpftool: expose attach_type-to-string array to non-cgroup code bpftool: add bpf_link show and pin support include/linux/bpf-cgroup.h | 14 -- include/linux/bpf.h | 34 ++- include/linux/bpf_types.h | 6 + include/uapi/linux/bpf.h | 31 +++ kernel/bpf/btf.c | 2 + kernel/bpf/cgroup.c | 89 +++++++- kernel/bpf/inode.c | 30 ++- kernel/bpf/syscall.c | 387 +++++++++++++++++++++++++------ kernel/bpf/verifier.c | 2 + kernel/cgroup/cgroup.c | 27 --- tools/bpf/bpftool/cgroup.c | 28 +-- tools/bpf/bpftool/link.c | 403 +++++++++++++++++++++++++++++++++ tools/bpf/bpftool/main.c | 2 + tools/bpf/bpftool/main.h | 37 +++ tools/include/uapi/linux/bpf.h | 31 +++ tools/lib/bpf/bpf.c | 19 +- tools/lib/bpf/bpf.h | 4 +- tools/lib/bpf/libbpf.map | 6 + 18 files changed, 983 insertions(+), 169 deletions(-) create mode 100644 tools/bpf/bpftool/link.c -- 2.24.1