From: Mitesh Kanjariya Date: Tue, 17 Oct 2017 09:30:42 +0000 (-0700) Subject: zebra: json support for show vrf vni command X-Git-Tag: frr-4.0-dev~58^2~50 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=35be5542dda491a51f54d4a12ccf2454ed6cbe78;p=matthieu%2Ffrr.git zebra: json support for show vrf vni command Signed-off-by: Mitesh Kanjariya --- diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c index d63818c289..8724f3b1e2 100644 --- a/zebra/zebra_vty.c +++ b/zebra/zebra_vty.c @@ -1950,23 +1950,50 @@ DEFUN (no_vrf_vni_mapping, /* show vrf */ DEFUN (show_vrf_vni, show_vrf_vni_cmd, - "show vrf vni", + "show vrf vni [json]", SHOW_STR "VRF\n" - "VNI\n") + "VNI\n" + JSON_STR) { struct vrf *vrf; struct zebra_vrf *zvrf; + json_object *json = NULL; + json_object *json_vrfs = NULL; + u_char uj = use_json(argc, argv); + + if (uj) { + json = json_object_new_object(); + json_vrfs = json_object_new_array(); + } RB_FOREACH(vrf, vrf_name_head, &vrfs_by_name) { zvrf = vrf->info; if (!zvrf) continue; - vty_out(vty, "vrf: %s VNI: %u", - zvrf_name(zvrf), - zvrf->l3vni); - vty_out(vty, "\n"); + if (!uj) { + vty_out(vty, "vrf: %s VNI: %u", + zvrf_name(zvrf), + zvrf->l3vni); + vty_out(vty, "\n"); + } else { + json_object *json_vrf = NULL; + + json_vrf = json_object_new_object(); + json_object_string_add(json_vrf, "vrf", + zvrf_name(zvrf)); + json_object_int_add(json_vrf, "l3vni", + zvrf->l3vni); + json_object_array_add(json_vrfs, json_vrf); + } + } + + if (uj) { + json_object_object_add(json, "vrfs", json_vrfs); + vty_out(vty, "%s\n", json_object_to_json_string_ext( + json, JSON_C_TO_STRING_PRETTY)); + json_object_free(json); } return CMD_SUCCESS;