On Tue, Jun 8, 2021 at 12:20 AM Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> wrote: > > > 2) All existing bpf_link targets, except netdev, are fs based, hence an fd makes > > sense for them naturally. TC filters, or any other netlink based fs analogy is not applicable. bpf_link-s for tracing and xdp have nothing to do with file systems. > > things, are not even > > related to fs, hence fd does not make sense here, like we never bind a netdev > > to a fd. > > > > Yes, none of them create any objects. It is only a side effect of current > semantics that you are able to control the filter's lifetime using the bpf_link > as filter creation is also accompanied with its attachment to the qdisc. I think it makes sense to create these objects as part of establishing bpf_link. ingress qdisc is a fake qdisc anyway. If we could go back in time I would argue that its existence doesn't need to be shown in iproute2. It's an object that serves no purpose other than attaching filters to it. It doesn't do any queuing unlike real qdiscs. It's an artifact of old choices. Old doesn't mean good. The kernel is full of such quirks and oddities. New api-s shouldn't blindly follow them. tc qdisc add dev eth0 clsact is a useless command with nop effect.