提交 be6e1981 编写于 作者: J Jakub Sitnicki 提交者: Alexei Starovoitov

bpftool: Extract helpers for showing link attach type

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: NAndrii Nakryiko <andriin@fb.com>
Signed-off-by: NJakub Sitnicki <jakub@cloudflare.com>
Signed-off-by: NAlexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200531082846.2117903-8-jakub@cloudflare.com
上级 d60d81ac
...@@ -62,6 +62,15 @@ show_link_header_json(struct bpf_link_info *info, json_writer_t *wtr) ...@@ -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); 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) static int get_prog_info(int prog_id, struct bpf_prog_info *info)
{ {
__u32 len = sizeof(*info); __u32 len = sizeof(*info);
...@@ -105,22 +114,13 @@ static int show_link_close_json(int fd, struct bpf_link_info *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", jsonw_uint_field(json_wtr, "prog_type",
prog_info.type); prog_info.type);
if (info->tracing.attach_type < ARRAY_SIZE(attach_type_name)) show_link_attach_type_json(info->tracing.attach_type,
jsonw_string_field(json_wtr, "attach_type", json_wtr);
attach_type_name[info->tracing.attach_type]);
else
jsonw_uint_field(json_wtr, "attach_type",
info->tracing.attach_type);
break; break;
case BPF_LINK_TYPE_CGROUP: case BPF_LINK_TYPE_CGROUP:
jsonw_lluint_field(json_wtr, "cgroup_id", jsonw_lluint_field(json_wtr, "cgroup_id",
info->cgroup.cgroup_id); info->cgroup.cgroup_id);
if (info->cgroup.attach_type < ARRAY_SIZE(attach_type_name)) show_link_attach_type_json(info->cgroup.attach_type, json_wtr);
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);
break; break;
default: default:
break; break;
...@@ -153,6 +153,14 @@ static void show_link_header_plain(struct bpf_link_info *info) ...@@ -153,6 +153,14 @@ static void show_link_header_plain(struct bpf_link_info *info)
printf("prog %u ", info->prog_id); 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) static int show_link_close_plain(int fd, struct bpf_link_info *info)
{ {
struct bpf_prog_info prog_info; struct bpf_prog_info prog_info;
...@@ -176,19 +184,11 @@ static int show_link_close_plain(int fd, struct bpf_link_info *info) ...@@ -176,19 +184,11 @@ static int show_link_close_plain(int fd, struct bpf_link_info *info)
else else
printf("\n\tprog_type %u ", prog_info.type); printf("\n\tprog_type %u ", prog_info.type);
if (info->tracing.attach_type < ARRAY_SIZE(attach_type_name)) show_link_attach_type_plain(info->tracing.attach_type);
printf("attach_type %s ",
attach_type_name[info->tracing.attach_type]);
else
printf("attach_type %u ", info->tracing.attach_type);
break; break;
case BPF_LINK_TYPE_CGROUP: case BPF_LINK_TYPE_CGROUP:
printf("\n\tcgroup_id %zu ", (size_t)info->cgroup.cgroup_id); printf("\n\tcgroup_id %zu ", (size_t)info->cgroup.cgroup_id);
if (info->cgroup.attach_type < ARRAY_SIZE(attach_type_name)) show_link_attach_type_plain(info->cgroup.attach_type);
printf("attach_type %s ",
attach_type_name[info->cgroup.attach_type]);
else
printf("attach_type %u ", info->cgroup.attach_type);
break; break;
default: default:
break; break;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册