libbpf: Introduce libbpf_bpf_link_type_str
authorDaniel Müller <deso@posteo.net>
Mon, 23 May 2022 23:04:26 +0000 (23:04 +0000)
committerAndrii Nakryiko <andrii@kernel.org>
Thu, 2 Jun 2022 23:26:33 +0000 (16:26 -0700)
This change introduces a new function, libbpf_bpf_link_type_str, to the
public libbpf API. The function allows users to get a string
representation for a bpf_link_type enum variant.

Signed-off-by: Daniel Müller <deso@posteo.net>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Quentin Monnet <quentin@isovalent.com>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/20220523230428.3077108-11-deso@posteo.net
tools/lib/bpf/libbpf.c
tools/lib/bpf/libbpf.h
tools/lib/bpf/libbpf.map

index fa3987b..5afe4cb 100644 (file)
@@ -118,6 +118,19 @@ static const char * const attach_type_name[] = {
        [BPF_TRACE_KPROBE_MULTI]        = "trace_kprobe_multi",
 };
 
+static const char * const link_type_name[] = {
+       [BPF_LINK_TYPE_UNSPEC]                  = "unspec",
+       [BPF_LINK_TYPE_RAW_TRACEPOINT]          = "raw_tracepoint",
+       [BPF_LINK_TYPE_TRACING]                 = "tracing",
+       [BPF_LINK_TYPE_CGROUP]                  = "cgroup",
+       [BPF_LINK_TYPE_ITER]                    = "iter",
+       [BPF_LINK_TYPE_NETNS]                   = "netns",
+       [BPF_LINK_TYPE_XDP]                     = "xdp",
+       [BPF_LINK_TYPE_PERF_EVENT]              = "perf_event",
+       [BPF_LINK_TYPE_KPROBE_MULTI]            = "kprobe_multi",
+       [BPF_LINK_TYPE_STRUCT_OPS]              = "struct_ops",
+};
+
 static const char * const map_type_name[] = {
        [BPF_MAP_TYPE_UNSPEC]                   = "unspec",
        [BPF_MAP_TYPE_HASH]                     = "hash",
@@ -9423,6 +9436,14 @@ const char *libbpf_bpf_attach_type_str(enum bpf_attach_type t)
        return attach_type_name[t];
 }
 
+const char *libbpf_bpf_link_type_str(enum bpf_link_type t)
+{
+       if (t < 0 || t >= ARRAY_SIZE(link_type_name))
+               return NULL;
+
+       return link_type_name[t];
+}
+
 const char *libbpf_bpf_map_type_str(enum bpf_map_type t)
 {
        if (t < 0 || t >= ARRAY_SIZE(map_type_name))
index 37a234b..5b34ca5 100644 (file)
@@ -61,6 +61,15 @@ LIBBPF_API int libbpf_strerror(int err, char *buf, size_t size);
 LIBBPF_API const char *libbpf_bpf_attach_type_str(enum bpf_attach_type t);
 
 /**
+ * @brief **libbpf_bpf_link_type_str()** converts the provided link type value
+ * into a textual representation.
+ * @param t The link type.
+ * @return Pointer to a static string identifying the link type. NULL is
+ * returned for unknown **bpf_link_type** values.
+ */
+LIBBPF_API const char *libbpf_bpf_link_type_str(enum bpf_link_type t);
+
+/**
  * @brief **libbpf_bpf_map_type_str()** converts the provided map type value
  * into a textual representation.
  * @param t The map type.
index 44c5369..38e284f 100644 (file)
@@ -463,6 +463,7 @@ LIBBPF_0.8.0 {
 LIBBPF_1.0.0 {
        global:
                libbpf_bpf_attach_type_str;
+               libbpf_bpf_link_type_str;
                libbpf_bpf_map_type_str;
                libbpf_bpf_prog_type_str;