]> git.proxmox.com Git - mirror_frr.git/commitdiff
zebra: Modify `show ip route summary` to allow you to specify a table
authorDonald Sharp <sharpd@cumulusnetworks.com>
Sat, 7 Sep 2019 00:31:41 +0000 (20:31 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 11 Sep 2019 12:16:18 +0000 (08:16 -0400)
Add a bit of extra command `show ip route summary table XXX`
To allow end user to specify a specific table that they want
summary information on.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
zebra/zebra_vty.c

index 38de01e228926561e58469c4b7d89f78085fc401..7984481093c45e5f01eb34a47304584f42c08ffb 100644 (file)
@@ -1384,35 +1384,37 @@ DEFPY (show_route_detail,
 
 DEFPY (show_route_summary,
        show_route_summary_cmd,
-       "show\
-         <\
-          ip$ipv4 route [vrf <NAME$vrf_name|all$vrf_all>]\
-            summary [prefix$prefix]\
-          |ipv6$ipv6 route [vrf <NAME$vrf_name|all$vrf_all>]\
-           summary [prefix$prefix]\
-        >",
+       "show <ip$ipv4|ipv6$ipv6> route [vrf <NAME$vrf_name|all$vrf_all>] \
+            summary [table (1-4294967295)$table_id] [prefix$prefix]",
        SHOW_STR
        IP_STR
-       "IP routing table\n"
-       VRF_FULL_CMD_HELP_STR
-       "Summary of all routes\n"
-       "Prefix routes\n"
        IP6_STR
        "IP routing table\n"
        VRF_FULL_CMD_HELP_STR
        "Summary of all routes\n"
+       "Table to display summary for\n"
+       "The table number\n"
        "Prefix routes\n")
 {
        afi_t afi = ipv4 ? AFI_IP : AFI_IP6;
        struct route_table *table;
 
+       if (table_id == 0)
+               table_id = RT_TABLE_MAIN;
+
        if (vrf_all) {
                struct vrf *vrf;
                struct zebra_vrf *zvrf;
 
                RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
-                       if ((zvrf = vrf->info) == NULL
-                           || (table = zvrf->table[afi][SAFI_UNICAST]) == NULL)
+                       if ((zvrf = vrf->info) == NULL)
+                               continue;
+
+                       table = zebra_vrf_table_with_table_id(afi,
+                                                             SAFI_UNICAST,
+                                                             zvrf->vrf->vrf_id,
+                                                             table_id);
+                       if (!table)
                                continue;
 
                        if (prefix)
@@ -1426,7 +1428,9 @@ DEFPY (show_route_summary,
                if (vrf_name)
                        VRF_GET_ID(vrf_id, vrf_name, false);
 
-               table = zebra_vrf_table(afi, SAFI_UNICAST, vrf_id);
+               table = zebra_vrf_table_with_table_id(afi,
+                                                     SAFI_UNICAST,
+                                                     vrf_id, table_id);
                if (!table)
                        return CMD_SUCCESS;