ip vrf: Add json support for show command

Add json support to 'ip vrf sh':
$ ip -j -p vrf ls
[ {
        "name": "mgmt",
        "table": 1001
    } ]

Signed-off-by: David Ahern <dsahern@gmail.com>
This commit is contained in:
David Ahern 2019-09-18 09:42:21 -07:00
parent 92754430a6
commit 8c2093e5d2

View File

@ -566,9 +566,12 @@ static int ipvrf_print(struct nlmsghdr *n)
return 0; return 0;
} }
printf("%-16s %5u", name, tb_id); open_json_object(NULL);
print_string(PRINT_ANY, "name", "%-16s", name);
print_uint(PRINT_ANY, "table", " %5u", tb_id);
print_string(PRINT_FP, NULL, "%s", "\n");
close_json_object();
printf("\n");
return 1; return 1;
} }
@ -597,15 +600,21 @@ static int ipvrf_show(int argc, char **argv)
if (ip_link_list(ipvrf_filter_req, &linfo) == 0) { if (ip_link_list(ipvrf_filter_req, &linfo) == 0) {
struct nlmsg_list *l; struct nlmsg_list *l;
unsigned nvrf = 0; unsigned nvrf = 0;
int n;
n = printf("%-16s %5s\n", "Name", "Table"); new_json_obj(json);
printf("%.*s\n", n-1, "-----------------------");
print_string(PRINT_FP, NULL, "%-16s", "Name");
print_string(PRINT_FP, NULL, " %5s\n", "Table");
print_string(PRINT_FP, NULL, "%s\n",
"-----------------------");
for (l = linfo.head; l; l = l->next) for (l = linfo.head; l; l = l->next)
nvrf += ipvrf_print(&l->h); nvrf += ipvrf_print(&l->h);
if (!nvrf) if (!nvrf)
printf("No VRF has been configured\n"); print_string(PRINT_FP, NULL, "%s\n",
"No VRF has been configured");
delete_json_obj();
} else } else
rc = 1; rc = 1;