mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-28 13:22:57 +00:00
tools/bpf: bpftool, split the function do_dump()
do_dump() function in bpftool/map.c has deep indentations. In order to reduce deep indent, let's move element printing code out of do_dump() into dump_map_elem() function. Signed-off-by: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp> Acked-by: Jakub Kicinski <jakub.kicinski@netronome.com> Acked-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Song Liu <songliubraving@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
3b4a63f674
commit
18a781daa9
1 changed files with 49 additions and 34 deletions
|
@ -658,6 +658,54 @@ static int do_show(int argc, char **argv)
|
||||||
return errno == ENOENT ? 0 : -1;
|
return errno == ENOENT ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int dump_map_elem(int fd, void *key, void *value,
|
||||||
|
struct bpf_map_info *map_info, struct btf *btf,
|
||||||
|
json_writer_t *btf_wtr)
|
||||||
|
{
|
||||||
|
int num_elems = 0;
|
||||||
|
|
||||||
|
if (!bpf_map_lookup_elem(fd, key, value)) {
|
||||||
|
if (json_output) {
|
||||||
|
print_entry_json(map_info, key, value, btf);
|
||||||
|
} else {
|
||||||
|
if (btf) {
|
||||||
|
struct btf_dumper d = {
|
||||||
|
.btf = btf,
|
||||||
|
.jw = btf_wtr,
|
||||||
|
.is_plain_text = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
do_dump_btf(&d, map_info, key, value);
|
||||||
|
} else {
|
||||||
|
print_entry_plain(map_info, key, value);
|
||||||
|
}
|
||||||
|
num_elems++;
|
||||||
|
}
|
||||||
|
return num_elems;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* lookup error handling */
|
||||||
|
if (map_is_map_of_maps(map_info->type) ||
|
||||||
|
map_is_map_of_progs(map_info->type))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (json_output) {
|
||||||
|
jsonw_name(json_wtr, "key");
|
||||||
|
print_hex_data_json(key, map_info->key_size);
|
||||||
|
jsonw_name(json_wtr, "value");
|
||||||
|
jsonw_start_object(json_wtr);
|
||||||
|
jsonw_string_field(json_wtr, "error",
|
||||||
|
"can't lookup element");
|
||||||
|
jsonw_end_object(json_wtr);
|
||||||
|
} else {
|
||||||
|
p_info("can't lookup element with key: ");
|
||||||
|
fprint_hex(stderr, key, map_info->key_size, " ");
|
||||||
|
fprintf(stderr, "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int do_dump(int argc, char **argv)
|
static int do_dump(int argc, char **argv)
|
||||||
{
|
{
|
||||||
struct bpf_map_info info = {};
|
struct bpf_map_info info = {};
|
||||||
|
@ -713,40 +761,7 @@ static int do_dump(int argc, char **argv)
|
||||||
err = 0;
|
err = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
num_elems += dump_map_elem(fd, key, value, &info, btf, btf_wtr);
|
||||||
if (!bpf_map_lookup_elem(fd, key, value)) {
|
|
||||||
if (json_output)
|
|
||||||
print_entry_json(&info, key, value, btf);
|
|
||||||
else
|
|
||||||
if (btf) {
|
|
||||||
struct btf_dumper d = {
|
|
||||||
.btf = btf,
|
|
||||||
.jw = btf_wtr,
|
|
||||||
.is_plain_text = true,
|
|
||||||
};
|
|
||||||
|
|
||||||
do_dump_btf(&d, &info, key, value);
|
|
||||||
} else {
|
|
||||||
print_entry_plain(&info, key, value);
|
|
||||||
}
|
|
||||||
num_elems++;
|
|
||||||
} else if (!map_is_map_of_maps(info.type) &&
|
|
||||||
!map_is_map_of_progs(info.type)) {
|
|
||||||
if (json_output) {
|
|
||||||
jsonw_name(json_wtr, "key");
|
|
||||||
print_hex_data_json(key, info.key_size);
|
|
||||||
jsonw_name(json_wtr, "value");
|
|
||||||
jsonw_start_object(json_wtr);
|
|
||||||
jsonw_string_field(json_wtr, "error",
|
|
||||||
"can't lookup element");
|
|
||||||
jsonw_end_object(json_wtr);
|
|
||||||
} else {
|
|
||||||
p_info("can't lookup element with key: ");
|
|
||||||
fprint_hex(stderr, key, info.key_size, " ");
|
|
||||||
fprintf(stderr, "\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
prev_key = key;
|
prev_key = key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue