tools: bpftool: show frozen status for maps
When listing maps, read their "frozen" status from procfs, and tell if maps are frozen. As commit log for map freezing command mentions that the feature might be extended with flags (e.g. for write-only instead of read-only) in the future, use an integer and not a boolean for JSON output. Signed-off-by: Quentin Monnet <quentin.monnet@netronome.com> Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
Родитель
1f8919b170
Коммит
c354ff2ef2
|
@ -481,9 +481,11 @@ static int parse_elem(char **argv, struct bpf_map_info *info,
|
|||
|
||||
static int show_map_close_json(int fd, struct bpf_map_info *info)
|
||||
{
|
||||
char *memlock;
|
||||
char *memlock, *frozen_str;
|
||||
int frozen = 0;
|
||||
|
||||
memlock = get_fdinfo(fd, "memlock");
|
||||
frozen_str = get_fdinfo(fd, "frozen");
|
||||
|
||||
jsonw_start_object(json_wtr);
|
||||
|
||||
|
@ -533,6 +535,12 @@ static int show_map_close_json(int fd, struct bpf_map_info *info)
|
|||
}
|
||||
close(fd);
|
||||
|
||||
if (frozen_str) {
|
||||
frozen = atoi(frozen_str);
|
||||
free(frozen_str);
|
||||
}
|
||||
jsonw_int_field(json_wtr, "frozen", frozen);
|
||||
|
||||
if (info->btf_id)
|
||||
jsonw_int_field(json_wtr, "btf_id", info->btf_id);
|
||||
|
||||
|
@ -555,9 +563,11 @@ static int show_map_close_json(int fd, struct bpf_map_info *info)
|
|||
|
||||
static int show_map_close_plain(int fd, struct bpf_map_info *info)
|
||||
{
|
||||
char *memlock;
|
||||
char *memlock, *frozen_str;
|
||||
int frozen = 0;
|
||||
|
||||
memlock = get_fdinfo(fd, "memlock");
|
||||
frozen_str = get_fdinfo(fd, "frozen");
|
||||
|
||||
printf("%u: ", info->id);
|
||||
if (info->type < ARRAY_SIZE(map_type_name))
|
||||
|
@ -610,9 +620,23 @@ static int show_map_close_plain(int fd, struct bpf_map_info *info)
|
|||
printf("\n\tpinned %s", obj->path);
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
if (frozen_str) {
|
||||
frozen = atoi(frozen_str);
|
||||
free(frozen_str);
|
||||
}
|
||||
|
||||
if (!info->btf_id && !frozen)
|
||||
return 0;
|
||||
|
||||
printf("\t");
|
||||
|
||||
if (info->btf_id)
|
||||
printf("\n\tbtf_id %d", info->btf_id);
|
||||
printf("btf_id %d", info->btf_id);
|
||||
|
||||
if (frozen)
|
||||
printf("%sfrozen", info->btf_id ? " " : "");
|
||||
|
||||
printf("\n");
|
||||
return 0;
|
||||
|
|
Загрузка…
Ссылка в новой задаче