mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 15:47:22 +00:00
1. Added json output to "show ip route <prefix>" command
2. Added tag O/P to "show ip route json" command Signed-off-by: Ameya Dharkar adharkar@vmware.com
This commit is contained in:
parent
461302049e
commit
96d71e3878
@ -1307,6 +1307,9 @@ static void vty_show_ip_route(struct vty *vty, struct route_node *rn,
|
|||||||
json_object_int_add(json_route, "metric", re->metric);
|
json_object_int_add(json_route, "metric", re->metric);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (re->tag)
|
||||||
|
json_object_int_add(json_route, "tag", re->tag);
|
||||||
|
|
||||||
json_object_int_add(json_route, "internalStatus",
|
json_object_int_add(json_route, "internalStatus",
|
||||||
re->status);
|
re->status);
|
||||||
json_object_int_add(json_route, "internalFlags",
|
json_object_int_add(json_route, "internalFlags",
|
||||||
@ -1630,6 +1633,29 @@ static void vty_show_ip_route(struct vty *vty, struct route_node *rn,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void vty_show_ip_route_detail_json(struct vty *vty,
|
||||||
|
struct route_node *rn)
|
||||||
|
{
|
||||||
|
json_object *json = NULL;
|
||||||
|
json_object *json_prefix = NULL;
|
||||||
|
struct route_entry *re;
|
||||||
|
char buf[BUFSIZ];
|
||||||
|
|
||||||
|
json = json_object_new_object();
|
||||||
|
|
||||||
|
RNODE_FOREACH_RE (rn, re) {
|
||||||
|
json_prefix = json_object_new_array();
|
||||||
|
vty_show_ip_route(vty, rn, re, json_prefix);
|
||||||
|
prefix2str(&rn->p, buf, sizeof buf);
|
||||||
|
json_object_object_add(json, buf, json_prefix);
|
||||||
|
json_prefix = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
vty_out(vty, "%s\n", json_object_to_json_string_ext(
|
||||||
|
json, JSON_C_TO_STRING_PRETTY));
|
||||||
|
json_object_free(json);
|
||||||
|
}
|
||||||
|
|
||||||
static void do_show_route_helper(struct vty *vty, struct zebra_vrf *zvrf,
|
static void do_show_route_helper(struct vty *vty, struct zebra_vrf *zvrf,
|
||||||
struct route_table *table, afi_t afi,
|
struct route_table *table, afi_t afi,
|
||||||
bool use_fib, route_tag_t tag,
|
bool use_fib, route_tag_t tag,
|
||||||
@ -1711,15 +1737,15 @@ static void do_show_route_helper(struct vty *vty, struct zebra_vrf *zvrf,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (json_prefix) {
|
if (json_prefix) {
|
||||||
prefix2str(&rn->p, buf, sizeof buf);
|
prefix2str(&rn->p, buf, sizeof(buf));
|
||||||
json_object_object_add(json, buf, json_prefix);
|
json_object_object_add(json, buf, json_prefix);
|
||||||
json_prefix = NULL;
|
json_prefix = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (use_json) {
|
if (use_json) {
|
||||||
vty_out(vty, "%s\n", json_object_to_json_string_ext(
|
vty_out(vty, "%s\n", json_object_to_json_string_ext(json,
|
||||||
json, JSON_C_TO_STRING_PRETTY));
|
JSON_C_TO_STRING_PRETTY));
|
||||||
json_object_free(json);
|
json_object_free(json);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2058,7 +2084,8 @@ DEFPY (show_route_detail,
|
|||||||
X:X::X:X$address\
|
X:X::X:X$address\
|
||||||
|X:X::X:X/M$prefix\
|
|X:X::X:X/M$prefix\
|
||||||
>\
|
>\
|
||||||
>",
|
>\
|
||||||
|
[json$json]",
|
||||||
SHOW_STR
|
SHOW_STR
|
||||||
IP_STR
|
IP_STR
|
||||||
"IP routing table\n"
|
"IP routing table\n"
|
||||||
@ -2069,7 +2096,8 @@ DEFPY (show_route_detail,
|
|||||||
"IP routing table\n"
|
"IP routing table\n"
|
||||||
VRF_FULL_CMD_HELP_STR
|
VRF_FULL_CMD_HELP_STR
|
||||||
"IPv6 Address\n"
|
"IPv6 Address\n"
|
||||||
"IPv6 prefix\n")
|
"IPv6 prefix\n"
|
||||||
|
JSON_STR)
|
||||||
{
|
{
|
||||||
afi_t afi = ipv4 ? AFI_IP : AFI_IP6;
|
afi_t afi = ipv4 ? AFI_IP : AFI_IP6;
|
||||||
struct route_table *table;
|
struct route_table *table;
|
||||||
@ -2100,7 +2128,10 @@ DEFPY (show_route_detail,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
vty_show_ip_route_detail(vty, rn, 0);
|
if (json)
|
||||||
|
vty_show_ip_route_detail_json(vty, rn);
|
||||||
|
else
|
||||||
|
vty_show_ip_route_detail(vty, rn, 0);
|
||||||
|
|
||||||
route_unlock_node(rn);
|
route_unlock_node(rn);
|
||||||
}
|
}
|
||||||
@ -2125,7 +2156,10 @@ DEFPY (show_route_detail,
|
|||||||
return CMD_WARNING;
|
return CMD_WARNING;
|
||||||
}
|
}
|
||||||
|
|
||||||
vty_show_ip_route_detail(vty, rn, 0);
|
if (json)
|
||||||
|
vty_show_ip_route_detail_json(vty, rn);
|
||||||
|
else
|
||||||
|
vty_show_ip_route_detail(vty, rn, 0);
|
||||||
|
|
||||||
route_unlock_node(rn);
|
route_unlock_node(rn);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user