From: David Ahern Date: Wed, 18 Sep 2019 16:42:21 +0000 (-0700) Subject: ip vrf: Add json support for show command X-Git-Tag: v5.5.0~77 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c2093e5d20cb36b564ce229595b2e76e07cc30b;p=thirdparty%2Fiproute2.git 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 --- diff --git a/ip/ipvrf.c b/ip/ipvrf.c index 43366f6e2..b9a43675c 100644 --- a/ip/ipvrf.c +++ b/ip/ipvrf.c @@ -566,9 +566,12 @@ static int ipvrf_print(struct nlmsghdr *n) 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; } @@ -597,15 +600,21 @@ static int ipvrf_show(int argc, char **argv) if (ip_link_list(ipvrf_filter_req, &linfo) == 0) { struct nlmsg_list *l; unsigned nvrf = 0; - int n; - n = printf("%-16s %5s\n", "Name", "Table"); - printf("%.*s\n", n-1, "-----------------------"); + new_json_obj(json); + + 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) nvrf += ipvrf_print(&l->h); 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 rc = 1;