libbpf: Add support for bpf_link-based cgroup attachment
authorAndrii Nakryiko <andriin@fb.com>
Mon, 30 Mar 2020 03:00:00 +0000 (20:00 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 31 Mar 2020 00:36:41 +0000 (17:36 -0700)
commitcc4f864bb118e0ae7bf9f4e3418eaeb083aa34f2
treec5b57abcdd856f641e0c5d07f3c3bc7ec54e2f15
parent0c991ebc8c69d29b7fc44db17075c5aa5253e2ab
libbpf: Add support for bpf_link-based cgroup attachment

Add bpf_program__attach_cgroup(), which uses BPF_LINK_CREATE subcommand to
create an FD-based kernel bpf_link. Also add low-level bpf_link_create() API.

If expected_attach_type is not specified explicitly with
bpf_program__set_expected_attach_type(), libbpf will try to determine proper
attach type from BPF program's section definition.

Also add support for bpf_link's underlying BPF program replacement:
  - unconditional through high-level bpf_link__update_program() API;
  - cmpxchg-like with specifying expected current BPF program through
    low-level bpf_link_update() API.

Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200330030001.2312810-4-andriin@fb.com
tools/include/uapi/linux/bpf.h
tools/lib/bpf/bpf.c
tools/lib/bpf/bpf.h
tools/lib/bpf/libbpf.c
tools/lib/bpf/libbpf.h
tools/lib/bpf/libbpf.map