diff options
author | Maciej Fijalkowski <maciejromanfijalkowski@gmail.com> | 2019-02-01 16:42:23 -0500 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2019-02-01 17:37:50 -0500 |
commit | f3cea32d56e96c510af454616104e3979f7626dd (patch) | |
tree | c533d2064965a7f1071d14b53105e591cbb24867 | |
parent | 6f20c71d8505d6ad0ddbfdb44838402aba9b7c4e (diff) |
libbpf: Add a helper for retrieving a map fd for a given name
XDP samples are mostly cooperating with eBPF maps through their file
descriptors. In case of a eBPF program that contains multiple maps it
might be tiresome to iterate through them and call bpf_map__fd for each
one. Add a helper mostly based on bpf_object__find_map_by_name, but
instead of returning the struct bpf_map pointer, return map fd.
Suggested-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
-rw-r--r-- | tools/lib/bpf/libbpf.c | 6 | ||||
-rw-r--r-- | tools/lib/bpf/libbpf.h | 3 | ||||
-rw-r--r-- | tools/lib/bpf/libbpf.map | 1 |
3 files changed, 10 insertions, 0 deletions
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 2ccde17957e6..03bc01ca2577 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c | |||
@@ -2884,6 +2884,12 @@ bpf_object__find_map_by_name(struct bpf_object *obj, const char *name) | |||
2884 | return NULL; | 2884 | return NULL; |
2885 | } | 2885 | } |
2886 | 2886 | ||
2887 | int | ||
2888 | bpf_object__find_map_fd_by_name(struct bpf_object *obj, const char *name) | ||
2889 | { | ||
2890 | return bpf_map__fd(bpf_object__find_map_by_name(obj, name)); | ||
2891 | } | ||
2892 | |||
2887 | struct bpf_map * | 2893 | struct bpf_map * |
2888 | bpf_object__find_map_by_offset(struct bpf_object *obj, size_t offset) | 2894 | bpf_object__find_map_by_offset(struct bpf_object *obj, size_t offset) |
2889 | { | 2895 | { |
diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h index 62ae6cb93da1..931be6f3408c 100644 --- a/tools/lib/bpf/libbpf.h +++ b/tools/lib/bpf/libbpf.h | |||
@@ -264,6 +264,9 @@ struct bpf_map; | |||
264 | LIBBPF_API struct bpf_map * | 264 | LIBBPF_API struct bpf_map * |
265 | bpf_object__find_map_by_name(struct bpf_object *obj, const char *name); | 265 | bpf_object__find_map_by_name(struct bpf_object *obj, const char *name); |
266 | 266 | ||
267 | LIBBPF_API int | ||
268 | bpf_object__find_map_fd_by_name(struct bpf_object *obj, const char *name); | ||
269 | |||
267 | /* | 270 | /* |
268 | * Get bpf_map through the offset of corresponding struct bpf_map_def | 271 | * Get bpf_map through the offset of corresponding struct bpf_map_def |
269 | * in the BPF object file. | 272 | * in the BPF object file. |
diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map index f6f96fc38c50..43ba9bb8d24b 100644 --- a/tools/lib/bpf/libbpf.map +++ b/tools/lib/bpf/libbpf.map | |||
@@ -131,4 +131,5 @@ LIBBPF_0.0.2 { | |||
131 | bpf_probe_map_type; | 131 | bpf_probe_map_type; |
132 | bpf_probe_prog_type; | 132 | bpf_probe_prog_type; |
133 | bpf_map_lookup_elem_flags; | 133 | bpf_map_lookup_elem_flags; |
134 | bpf_object__find_map_fd_by_name; | ||
134 | } LIBBPF_0.0.1; | 135 | } LIBBPF_0.0.1; |