libbpf: Add bpf_object__token_fd accessor
authorIhor Solodrai <ihor.solodrai@pm.me>
Fri, 13 Sep 2024 00:19:02 +0000 (00:19 +0000)
committerAndrii Nakryiko <andrii@kernel.org>
Fri, 13 Sep 2024 02:07:13 +0000 (19:07 -0700)
Add a LIBBPF_API function to retrieve the token_fd from a bpf_object.

Without this accessor, if user needs a token FD they have to get it
manually via bpf_token_create, even though a token might have been
already created by bpf_object__load.

Suggested-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Ihor Solodrai <ihor.solodrai@pm.me>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20240913001858.3345583-1-ihor.solodrai@pm.me
tools/lib/bpf/libbpf.c
tools/lib/bpf/libbpf.h
tools/lib/bpf/libbpf.map

index 84d4ec0..219facd 100644 (file)
@@ -9059,6 +9059,11 @@ unsigned int bpf_object__kversion(const struct bpf_object *obj)
        return obj ? obj->kern_version : 0;
 }
 
+int bpf_object__token_fd(const struct bpf_object *obj)
+{
+       return obj->token_fd ?: -1;
+}
+
 struct btf *bpf_object__btf(const struct bpf_object *obj)
 {
        return obj ? obj->btf : NULL;
index 6917653..9148430 100644 (file)
@@ -294,6 +294,14 @@ LIBBPF_API const char *bpf_object__name(const struct bpf_object *obj);
 LIBBPF_API unsigned int bpf_object__kversion(const struct bpf_object *obj);
 LIBBPF_API int bpf_object__set_kversion(struct bpf_object *obj, __u32 kern_version);
 
+/**
+ * @brief **bpf_object__token_fd** is an accessor for BPF token FD associated
+ * with BPF object.
+ * @param obj Pointer to a valid BPF object
+ * @return BPF token FD or -1, if it wasn't set
+ */
+LIBBPF_API int bpf_object__token_fd(const struct bpf_object *obj);
+
 struct btf;
 LIBBPF_API struct btf *bpf_object__btf(const struct bpf_object *obj);
 LIBBPF_API int bpf_object__btf_fd(const struct bpf_object *obj);
index 8f0d9ea..0096e48 100644 (file)
@@ -423,6 +423,7 @@ LIBBPF_1.5.0 {
                btf__relocate;
                bpf_map__autoattach;
                bpf_map__set_autoattach;
+               bpf_object__token_fd;
                bpf_program__attach_sockmap;
                ring__consume_n;
                ring_buffer__consume_n;