aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaciej Fijalkowski <maciejromanfijalkowski@gmail.com>2019-02-01 16:42:23 -0500
committerDaniel Borkmann <daniel@iogearbox.net>2019-02-01 17:37:50 -0500
commitf3cea32d56e96c510af454616104e3979f7626dd (patch)
treec533d2064965a7f1071d14b53105e591cbb24867
parent6f20c71d8505d6ad0ddbfdb44838402aba9b7c4e (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.c6
-rw-r--r--tools/lib/bpf/libbpf.h3
-rw-r--r--tools/lib/bpf/libbpf.map1
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
2887int
2888bpf_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
2887struct bpf_map * 2893struct bpf_map *
2888bpf_object__find_map_by_offset(struct bpf_object *obj, size_t offset) 2894bpf_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;
264LIBBPF_API struct bpf_map * 264LIBBPF_API struct bpf_map *
265bpf_object__find_map_by_name(struct bpf_object *obj, const char *name); 265bpf_object__find_map_by_name(struct bpf_object *obj, const char *name);
266 266
267LIBBPF_API int
268bpf_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;