OSDN Git Service

bpf, xdp: Add bpf_link-based XDP attachment API
authorAndrii Nakryiko <andriin@fb.com>
Wed, 22 Jul 2020 06:45:57 +0000 (23:45 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Sun, 26 Jul 2020 03:37:02 +0000 (20:37 -0700)
commitaa8d3a716b59db6c1ad6c68fb8aa05e31980da60
tree0e49a992f6b344f5f773870c9483882e3ce4e0db
parentd4baa9368a5e4d694e787e0442ddd6ab95d6fd96
bpf, xdp: Add bpf_link-based XDP attachment API

Add bpf_link-based API (bpf_xdp_link) to attach BPF XDP program through
BPF_LINK_CREATE command.

bpf_xdp_link is mutually exclusive with direct BPF program attachment,
previous BPF program should be detached prior to attempting to create a new
bpf_xdp_link attachment (for a given XDP mode). Once BPF link is attached, it
can't be replaced by other BPF program attachment or link attachment. It will
be detached only when the last BPF link FD is closed.

bpf_xdp_link will be auto-detached when net_device is shutdown, similarly to
how other BPF links behave (cgroup, flow_dissector). At that point bpf_link
will become defunct, but won't be destroyed until last FD is closed.

Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200722064603.3350758-5-andriin@fb.com
include/linux/netdevice.h
include/uapi/linux/bpf.h
kernel/bpf/syscall.c
net/core/dev.c