[PATCH iproute2-next] ip vrf: Add json support for show command
From: David Ahern <dsahern@kernel.org>
Date: 2019-09-19 15:48:14
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: David Ahern <redacted>
Add json support to 'ip vrf sh':
$ ip -j -p vrf ls
[ {
"name": "mgmt",
"table": 1001
} ]
Signed-off-by: David Ahern <redacted>
---
ip/ipvrf.c | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/ip/ipvrf.c b/ip/ipvrf.c
index 43366f6e25f0..b9a43675cbd6 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;
--
2.11.0