On Tue, Mar 19, 2024 at 10:54 AM Yonghong Song <yonghong.song@xxxxxxxxx> wrote: > > Introduce two libbpf API functions bpf_program__attach_sk_msg() > and bpf_program__attach_sk_skb() which allow user to get a bpf_link > for their corresponding programs. > > Signed-off-by: Yonghong Song <yonghong.song@xxxxxxxxx> > --- > tools/lib/bpf/libbpf.c | 14 ++++++++++++++ > tools/lib/bpf/libbpf.h | 4 ++++ > tools/lib/bpf/libbpf.map | 2 ++ > 3 files changed, 20 insertions(+) > > diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c > index 7d413415d0d5..1b8e1f47a5e6 100644 > --- a/tools/lib/bpf/libbpf.c > +++ b/tools/lib/bpf/libbpf.c > @@ -149,6 +149,8 @@ static const char * const link_type_name[] = { > [BPF_LINK_TYPE_TCX] = "tcx", > [BPF_LINK_TYPE_UPROBE_MULTI] = "uprobe_multi", > [BPF_LINK_TYPE_NETKIT] = "netkit", > + [BPF_LINK_TYPE_SK_MSG] = "sk_msg", > + [BPF_LINK_TYPE_SK_SKB] = "sk_skb", > }; > > static const char * const map_type_name[] = { > @@ -12493,6 +12495,18 @@ bpf_program__attach_netns(const struct bpf_program *prog, int netns_fd) > return bpf_program_attach_fd(prog, netns_fd, "netns", NULL); > } > > +struct bpf_link * > +bpf_program__attach_sk_msg(const struct bpf_program *prog, int map_fd) > +{ > + return bpf_program_attach_fd(prog, map_fd, "sk_msg", NULL); > +} > + > +struct bpf_link * > +bpf_program__attach_sk_skb(const struct bpf_program *prog, int map_fd) > +{ > + return bpf_program_attach_fd(prog, map_fd, "sk_skb", NULL); > +} > + > struct bpf_link *bpf_program__attach_xdp(const struct bpf_program *prog, int ifindex) > { > /* target_fd/target_ifindex use the same field in LINK_CREATE */ > diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h > index 7b510761f545..4a2c04a9c6c3 100644 > --- a/tools/lib/bpf/libbpf.h > +++ b/tools/lib/bpf/libbpf.h > @@ -784,6 +784,10 @@ bpf_program__attach_cgroup(const struct bpf_program *prog, int cgroup_fd); > LIBBPF_API struct bpf_link * > bpf_program__attach_netns(const struct bpf_program *prog, int netns_fd); > LIBBPF_API struct bpf_link * > +bpf_program__attach_sk_msg(const struct bpf_program *prog, int map_fd); > +LIBBPF_API struct bpf_link * > +bpf_program__attach_sk_skb(const struct bpf_program *prog, int map_fd); > +LIBBPF_API struct bpf_link * > bpf_program__attach_xdp(const struct bpf_program *prog, int ifindex); > LIBBPF_API struct bpf_link * > bpf_program__attach_freplace(const struct bpf_program *prog, > diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map > index 86804fd90dd1..11a1ad798129 100644 > --- a/tools/lib/bpf/libbpf.map > +++ b/tools/lib/bpf/libbpf.map > @@ -410,6 +410,8 @@ LIBBPF_1.3.0 { > > LIBBPF_1.4.0 { > global: > + bpf_program__attach_sk_msg; > + bpf_program__attach_sk_skb; same suggestion, it seems like having a more generic bpf_program__attach_sockmap() or something along those lines would be better? please also see what changes need to be done in bpf_link_create() API > bpf_token_create; > btf__new_split; > btf_ext__raw_data; > -- > 2.43.0 >