summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2019-01-04 09:41:09 -0500
committerDonald Sharp <sharpd@cumulusnetworks.com>2019-01-04 09:48:40 -0500
commitac5aa23f9362f8fd77a3c8ef66de92c125c7051a (patch)
tree48f8c9291ae87e31d0396ba937a4663e92f60ece
parentc45fb58dd310ba05ca9e1f2da05b37f79b7aa16c (diff)
zebra: Add a dump table information command to zebra
Allow zebra to dump the table information it has from a router perspective. This table looks like this: donna.cumulusnetworks.com# show zebra router table summary VRF NS ID VRF ID AFI SAFI Table Count --------------------------------------------------------------------------- default 0 0 IPv4 unicast 49 1 default 0 0 IPv4 unicast 254 7 default 0 0 IPv4 multicast 254 9 default 0 0 IPv6 unicast 254 1 default 0 0 IPv6 multicast 254 1 BLUE 0 31 IPv4 unicast 1005 0 BLUE 0 31 IPv4 multicast 1005 0 BLUE 0 31 IPv6 unicast 1005 0 BLUE 0 31 IPv6 multicast 1005 0 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
-rw-r--r--zebra/zebra_router.c19
-rw-r--r--zebra/zebra_router.h2
-rw-r--r--zebra/zebra_vty.c16
3 files changed, 37 insertions, 0 deletions
diff --git a/zebra/zebra_router.c b/zebra/zebra_router.c
index 7f911164cd..0c4d16906e 100644
--- a/zebra/zebra_router.c
+++ b/zebra/zebra_router.c
@@ -126,6 +126,25 @@ unsigned long zebra_router_score_proto(uint8_t proto, unsigned short instance)
return cnt;
}
+void zebra_router_show_table_summary(struct vty *vty)
+{
+ struct zebra_router_table *zrt;
+
+ vty_out(vty,
+ "VRF NS ID VRF ID AFI SAFI Table Count\n");
+ vty_out(vty,
+ "---------------------------------------------------------------------------\n");
+ RB_FOREACH (zrt, zebra_router_table_head, &zrouter.tables) {
+ rib_table_info_t *info = route_table_get_info(zrt->table);
+
+ vty_out(vty, "%-16s%5d %9d %7s %15s %8d %10lu\n", info->zvrf->vrf->name,
+ zrt->ns_id, info->zvrf->vrf->vrf_id,
+ afi2str(zrt->afi), safi2str(zrt->safi),
+ zrt->tableid,
+ zrt->table->count);
+ }
+}
+
void zebra_router_sweep_route(void)
{
struct zebra_router_table *zrt;
diff --git a/zebra/zebra_router.h b/zebra/zebra_router.h
index d6b8b66087..1e0788d1ba 100644
--- a/zebra/zebra_router.h
+++ b/zebra/zebra_router.h
@@ -81,4 +81,6 @@ extern int zebra_router_config_write(struct vty *vty);
extern unsigned long zebra_router_score_proto(uint8_t proto,
unsigned short instance);
extern void zebra_router_sweep_route(void);
+
+extern void zebra_router_show_table_summary(struct vty *vty);
#endif
diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c
index 8b06d2ae11..b18f0e943c 100644
--- a/zebra/zebra_vty.c
+++ b/zebra/zebra_vty.c
@@ -2857,6 +2857,20 @@ DEFUN (no_zebra_dplane_queue_limit,
return CMD_SUCCESS;
}
+DEFUN (zebra_show_routing_tables_summary,
+ zebra_show_routing_tables_summary_cmd,
+ "show zebra router table summary",
+ SHOW_STR
+ ZEBRA_STR
+ "The Zebra Router Information\n"
+ "Table Information about this Zebra Router\n"
+ "Summary Information\n")
+{
+ zebra_router_show_table_summary(vty);
+
+ return CMD_SUCCESS;
+}
+
/* Table configuration write function. */
static int config_write_table(struct vty *vty)
{
@@ -3000,4 +3014,6 @@ void zebra_vty_init(void)
install_element(VIEW_NODE, &show_dataplane_providers_cmd);
install_element(CONFIG_NODE, &zebra_dplane_queue_limit_cmd);
install_element(CONFIG_NODE, &no_zebra_dplane_queue_limit_cmd);
+
+ install_element(VIEW_NODE, &zebra_show_routing_tables_summary_cmd);
}