bpftool: Extract helpers for showing link attach type
authorJakub Sitnicki <jakub@cloudflare.com>
Sun, 31 May 2020 08:28:41 +0000 (10:28 +0200)
committerAlexei Starovoitov <ast@kernel.org>
Mon, 1 Jun 2020 22:21:03 +0000 (15:21 -0700)
Code for printing link attach_type is duplicated in a couple of places, and
likely will be duplicated for future link types as well. Create helpers to
prevent duplication.

Suggested-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200531082846.2117903-8-jakub@cloudflare.com
tools/bpf/bpftool/link.c

index 670a561dc31bc5e58d1e91c7a2db8a0d86de67aa..1ff416eff3d7a5aac1312f47ce12e1bfdc376900 100644 (file)
@@ -62,6 +62,15 @@ show_link_header_json(struct bpf_link_info *info, json_writer_t *wtr)
        jsonw_uint_field(json_wtr, "prog_id", info->prog_id);
 }
 
+static void show_link_attach_type_json(__u32 attach_type, json_writer_t *wtr)
+{
+       if (attach_type < ARRAY_SIZE(attach_type_name))
+               jsonw_string_field(wtr, "attach_type",
+                                  attach_type_name[attach_type]);
+       else
+               jsonw_uint_field(wtr, "attach_type", attach_type);
+}
+
 static int get_prog_info(int prog_id, struct bpf_prog_info *info)
 {
        __u32 len = sizeof(*info);
@@ -105,22 +114,13 @@ static int show_link_close_json(int fd, struct bpf_link_info *info)
                        jsonw_uint_field(json_wtr, "prog_type",
                                         prog_info.type);
 
-               if (info->tracing.attach_type < ARRAY_SIZE(attach_type_name))
-                       jsonw_string_field(json_wtr, "attach_type",
-                              attach_type_name[info->tracing.attach_type]);
-               else
-                       jsonw_uint_field(json_wtr, "attach_type",
-                                        info->tracing.attach_type);
+               show_link_attach_type_json(info->tracing.attach_type,
+                                          json_wtr);
                break;
        case BPF_LINK_TYPE_CGROUP:
                jsonw_lluint_field(json_wtr, "cgroup_id",
                                   info->cgroup.cgroup_id);
-               if (info->cgroup.attach_type < ARRAY_SIZE(attach_type_name))
-                       jsonw_string_field(json_wtr, "attach_type",
-                              attach_type_name[info->cgroup.attach_type]);
-               else
-                       jsonw_uint_field(json_wtr, "attach_type",
-                                        info->cgroup.attach_type);
+               show_link_attach_type_json(info->cgroup.attach_type, json_wtr);
                break;
        default:
                break;
@@ -153,6 +153,14 @@ static void show_link_header_plain(struct bpf_link_info *info)
        printf("prog %u  ", info->prog_id);
 }
 
+static void show_link_attach_type_plain(__u32 attach_type)
+{
+       if (attach_type < ARRAY_SIZE(attach_type_name))
+               printf("attach_type %s  ", attach_type_name[attach_type]);
+       else
+               printf("attach_type %u  ", attach_type);
+}
+
 static int show_link_close_plain(int fd, struct bpf_link_info *info)
 {
        struct bpf_prog_info prog_info;
@@ -176,19 +184,11 @@ static int show_link_close_plain(int fd, struct bpf_link_info *info)
                else
                        printf("\n\tprog_type %u  ", prog_info.type);
 
-               if (info->tracing.attach_type < ARRAY_SIZE(attach_type_name))
-                       printf("attach_type %s  ",
-                              attach_type_name[info->tracing.attach_type]);
-               else
-                       printf("attach_type %u  ", info->tracing.attach_type);
+               show_link_attach_type_plain(info->tracing.attach_type);
                break;
        case BPF_LINK_TYPE_CGROUP:
                printf("\n\tcgroup_id %zu  ", (size_t)info->cgroup.cgroup_id);
-               if (info->cgroup.attach_type < ARRAY_SIZE(attach_type_name))
-                       printf("attach_type %s  ",
-                              attach_type_name[info->cgroup.attach_type]);
-               else
-                       printf("attach_type %u  ", info->cgroup.attach_type);
+               show_link_attach_type_plain(info->cgroup.attach_type);
                break;
        default:
                break;