diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2019-01-04 09:41:09 -0500 |
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2019-01-04 09:48:40 -0500 |
| commit | ac5aa23f9362f8fd77a3c8ef66de92c125c7051a (patch) | |
| tree | 48f8c9291ae87e31d0396ba937a4663e92f60ece | |
| parent | c45fb58dd310ba05ca9e1f2da05b37f79b7aa16c (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.c | 19 | ||||
| -rw-r--r-- | zebra/zebra_router.h | 2 | ||||
| -rw-r--r-- | zebra/zebra_vty.c | 16 |
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); } |
