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>
This commit is contained in:
Donald Sharp 2019-01-04 09:41:09 -05:00
parent c45fb58dd3
commit ac5aa23f93
3 changed files with 37 additions and 0 deletions

View file

@ -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;

View file

@ -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

View file

@ -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);
}