bpf: Implement BPF XDP link-specific introspection APIs
Implement XDP link-specific show_fdinfo and link_info to emit ifindex. Signed-off-by: Andrii Nakryiko <andriin@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20200722064603.3350758-7-andriin@fb.com
This commit is contained in:
parent
026a4c28e1
commit
c1931c9784
|
@ -4069,6 +4069,9 @@ struct bpf_link_info {
|
|||
__u32 netns_ino;
|
||||
__u32 attach_type;
|
||||
} netns;
|
||||
struct {
|
||||
__u32 ifindex;
|
||||
} xdp;
|
||||
};
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
|
|
|
@ -8996,6 +8996,35 @@ static void bpf_xdp_link_dealloc(struct bpf_link *link)
|
|||
kfree(xdp_link);
|
||||
}
|
||||
|
||||
static void bpf_xdp_link_show_fdinfo(const struct bpf_link *link,
|
||||
struct seq_file *seq)
|
||||
{
|
||||
struct bpf_xdp_link *xdp_link = container_of(link, struct bpf_xdp_link, link);
|
||||
u32 ifindex = 0;
|
||||
|
||||
rtnl_lock();
|
||||
if (xdp_link->dev)
|
||||
ifindex = xdp_link->dev->ifindex;
|
||||
rtnl_unlock();
|
||||
|
||||
seq_printf(seq, "ifindex:\t%u\n", ifindex);
|
||||
}
|
||||
|
||||
static int bpf_xdp_link_fill_link_info(const struct bpf_link *link,
|
||||
struct bpf_link_info *info)
|
||||
{
|
||||
struct bpf_xdp_link *xdp_link = container_of(link, struct bpf_xdp_link, link);
|
||||
u32 ifindex = 0;
|
||||
|
||||
rtnl_lock();
|
||||
if (xdp_link->dev)
|
||||
ifindex = xdp_link->dev->ifindex;
|
||||
rtnl_unlock();
|
||||
|
||||
info->xdp.ifindex = ifindex;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int bpf_xdp_link_update(struct bpf_link *link, struct bpf_prog *new_prog,
|
||||
struct bpf_prog *old_prog)
|
||||
{
|
||||
|
@ -9041,6 +9070,8 @@ out_unlock:
|
|||
static const struct bpf_link_ops bpf_xdp_link_lops = {
|
||||
.release = bpf_xdp_link_release,
|
||||
.dealloc = bpf_xdp_link_dealloc,
|
||||
.show_fdinfo = bpf_xdp_link_show_fdinfo,
|
||||
.fill_link_info = bpf_xdp_link_fill_link_info,
|
||||
.update_prog = bpf_xdp_link_update,
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue