Re: [PATCH RFC] Userspace library for handling multiple XDP programs on an interface
From: Toke Høiland-Jørgensen <hidden>
Date: 2020-03-03 16:27:40
Also in:
bpf
From: Toke Høiland-Jørgensen <hidden>
Date: 2020-03-03 16:27:40
Also in:
bpf
Alexei Starovoitov [off-list ref] writes:
On Tue, Mar 3, 2020 at 1:50 AM Toke Høiland-Jørgensen [off-list ref] wrote:quoted
This is the reason why I think the 'link' between the main program and the replacement program is in the "wrong direction". Instead I want to introduce a new attachment API that can be used instead of bpf_raw_tracepoint_open() - something like: prog_fd = sys_bpf(BPF_PROG_LOAD, ...); // dispatcher func_fd = sys_bpf(BPF_PROG_LOAD, ...); // replacement func err = sys_bpf(BPF_PROG_REPLACE_FUNC, prog_fd, btf_id, func_fd); // does *not* return an fd When using this, the kernel will flip the direction of the reference between BPF programs, so it goes main_prog -> replacement_prog. And instead of getting an fd back, this will make the replacement prog share its lifecycle with the main program, so that when the main program is released, so is the replacement (absent other references, of course). There could be an explicit 'release' command as well, of course, and a way to list all replacements on a program.Nack to such api. We hit this opposite direction issue with xdp and tc in the past. Not going to repeat the same mistake again.
Care to elaborate? What mistake, and what was the issue? -Toke