[DL: the machineparse foo should probably be dropped]

    Signed-off-by: Lou Berger <[email protected]>
---
 bgpd/bgp_mplsvpn.c |  2 +-
 bgpd/bgp_route.c   | 56 ++++++++++++++++++++++++++++++++++++++----------------
 bgpd/bgp_route.h   |  2 +-
 3 files changed, 42 insertions(+), 18 deletions(-)

diff --git a/bgpd/bgp_mplsvpn.c b/bgpd/bgp_mplsvpn.c
index 719822f..2d52d9f 100644
--- a/bgpd/bgp_mplsvpn.c
+++ b/bgpd/bgp_mplsvpn.c
@@ -564,7 +564,7 @@ bgp_show_mpls_vpn (struct vty *vty, struct prefix_rd *prd, 
enum bgp_show_type ty
                if (tags)
                  route_vty_out_tag (vty, &rm->p, ri, 0, SAFI_MPLS_VPN);
                else
-                 route_vty_out (vty, &rm->p, ri, 0, SAFI_MPLS_VPN);
+                    route_vty_out (vty, &rm->p, ri, 0, SAFI_MPLS_VPN, 0);
              }
         }
     }
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index c4b87a0..036d27d 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -5917,8 +5917,13 @@ route_vty_short_status_out (struct vty *vty, struct 
bgp_info *binfo)
 
 /* called from terminal list command */
 void
-route_vty_out (struct vty *vty, struct prefix *p,
-              struct bgp_info *binfo, int display, safi_t safi)
+route_vty_out(
+    struct vty *vty,
+    struct prefix *p,
+    struct bgp_info *binfo,
+    int display,
+    safi_t safi,
+    int machineparse)
 {
   struct attr *attr;
   
@@ -5926,7 +5931,7 @@ route_vty_out (struct vty *vty, struct prefix *p,
   route_vty_short_status_out (vty, binfo);
   
   /* print prefix and mask */
-  if (! display)
+  if (!display || machineparse)
     route_vty_out_route (p, vty);
   else
     vty_out (vty, "%*s", 17, " ");
@@ -6002,20 +6007,29 @@ route_vty_out (struct vty *vty, struct prefix *p,
 
 
       if (attr->flag & ATTR_FLAG_BIT (BGP_ATTR_MULTI_EXIT_DISC))
-       vty_out (vty, "%10u", attr->med);
+       vty_out (vty, "%10u ", attr->med);
       else
-       vty_out (vty, "          ");
+       if (machineparse)
+         vty_out (vty, "-         ");
+       else
+         vty_out (vty, "          ");
 
       if (attr->flag & ATTR_FLAG_BIT (BGP_ATTR_LOCAL_PREF))
-       vty_out (vty, "%7u", attr->local_pref);
+       vty_out (vty, "%7u ", attr->local_pref);
       else
-       vty_out (vty, "       ");
+       if (machineparse)
+         vty_out (vty, "-      ");
+       else
+         vty_out (vty, "       ");
 
       vty_out (vty, "%7u ", (attr->extra ? attr->extra->weight : 0));
     
       /* Print aspath */
       if (attr->aspath)
         aspath_print_vty (vty, "%s", attr->aspath, " ");
+      else
+       if (machineparse)
+          vty_out (vty, "-");
 
       /* Print origin */
       vty_out (vty, "%s", bgp_origin_str[attr->origin]);
@@ -6067,12 +6081,12 @@ route_vty_out_tmp (struct vty *vty, struct prefix *p,
 #endif /* HAVE_IPV6 */
 
       if (attr->flag & ATTR_FLAG_BIT (BGP_ATTR_MULTI_EXIT_DISC))
-       vty_out (vty, "%10u", attr->med);
+       vty_out (vty, "%10u ", attr->med);
       else
        vty_out (vty, "          ");
 
       if (attr->flag & ATTR_FLAG_BIT (BGP_ATTR_LOCAL_PREF))
-       vty_out (vty, "%7u", attr->local_pref);
+       vty_out (vty, "%7u ", attr->local_pref);
       else
        vty_out (vty, "       ");
       
@@ -6323,7 +6337,11 @@ route_vty_out_detail (struct vty *vty, struct bgp *bgp, 
struct prefix *p,
            vty_out (vty, " (inaccessible)"); 
          else if (binfo->extra && binfo->extra->igpmetric)
            vty_out (vty, " (metric %u)", binfo->extra->igpmetric);
-         vty_out (vty, " from %s", sockunion2str (&binfo->peer->su, buf, 
SU_ADDRSTRLEN));
+         if (!sockunion2str (&binfo->peer->su, buf, sizeof(buf))) {
+           buf[0] = '?';
+           buf[1] = 0;
+         }
+         vty_out (vty, " from %s", buf);
          if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ORIGINATOR_ID))
            vty_out (vty, " (%s)", inet_ntoa (attr->extra->originator_id));
          else
@@ -6477,9 +6495,14 @@ bgp_show_table (struct vty *vty, struct bgp_table 
*table, struct in_addr *router
   int header = 1;
   int display;
   unsigned long output_count;
+  unsigned long total_count;
+  int machineparse = 0;
 
   /* This is first entry point, so reset total line. */
   output_count = 0;
+  total_count  = 0;
+  if (type == bgp_show_type_normal && output_arg == (void *)1)
+    machineparse = 1;
 
   /* Start processing of routes. */
   for (rn = bgp_table_top (table); rn; rn = bgp_route_next (rn)) 
@@ -6489,6 +6512,7 @@ bgp_show_table (struct vty *vty, struct bgp_table *table, 
struct in_addr *router
 
        for (ri = rn->info; ri; ri = ri->next)
          {
+            total_count++;
            if (type == bgp_show_type_flap_statistics
                || type == bgp_show_type_flap_address
                || type == bgp_show_type_flap_prefix
@@ -6672,7 +6696,7 @@ bgp_show_table (struct vty *vty, struct bgp_table *table, 
struct in_addr *router
                     || type == bgp_show_type_flap_neighbor)
              flap_route_vty_out (vty, &rn->p, ri, display, SAFI_UNICAST);
            else
-             route_vty_out (vty, &rn->p, ri, display, SAFI_UNICAST);
+             route_vty_out (vty, &rn->p, ri, display, SAFI_UNICAST, 
machineparse);
            display++;
          }
        if (display)
@@ -6683,11 +6707,11 @@ bgp_show_table (struct vty *vty, struct bgp_table 
*table, struct in_addr *router
   if (output_count == 0)
     {
       if (type == bgp_show_type_normal)
-       vty_out (vty, "No BGP network exists%s", VTY_NEWLINE);
+        vty_out (vty, "No BGP prefixes displayed, %ld exist%s", total_count, 
VTY_NEWLINE);
     }
   else
-    vty_out (vty, "%sTotal number of prefixes %ld%s",
-            VTY_NEWLINE, output_count, VTY_NEWLINE);
+    vty_out (vty, "%sDisplayed  %ld out of %ld total prefixes%s",
+            VTY_NEWLINE, output_count, total_count, VTY_NEWLINE);
 
   return CMD_SUCCESS;
 }
@@ -9787,7 +9811,7 @@ bgp_table_stats (struct vty *vty, struct bgp *bgp, afi_t 
afi, safi_t safi)
   
   if (!bgp->rib[afi][safi])
     {
-      vty_out (vty, "%% No RIB exist for the AFI/SAFI%s", VTY_NEWLINE);
+      vty_out (vty, "%% No RIB exists for the AFI/SAFI%s", VTY_NEWLINE);
       return CMD_WARNING;
     }
   
@@ -9878,7 +9902,7 @@ bgp_table_stats_vty (struct vty *vty, const char *name,
 
   if (!bgp)
     {
-      vty_out (vty, "%% No such BGP instance exist%s", VTY_NEWLINE);
+      vty_out (vty, "%% No such BGP instance exists%s", VTY_NEWLINE);
       return CMD_WARNING;
     }
   if (strncmp (afi_str, "ipv", 3) == 0)
diff --git a/bgpd/bgp_route.h b/bgpd/bgp_route.h
index 455a413..97ce5d3 100644
--- a/bgpd/bgp_route.h
+++ b/bgpd/bgp_route.h
@@ -240,7 +240,7 @@ extern u_char bgp_distance_apply (struct prefix *, struct 
bgp_info *, struct bgp
 extern afi_t bgp_node_afi (struct vty *);
 extern safi_t bgp_node_safi (struct vty *);
 
-extern void route_vty_out (struct vty *, struct prefix *, struct bgp_info *, 
int, safi_t);
+extern void route_vty_out (struct vty *, struct prefix *, struct bgp_info *, 
int, safi_t, int);
 extern void route_vty_out_tag (struct vty *, struct prefix *, struct bgp_info 
*, int, safi_t);
 extern void route_vty_out_tmp (struct vty *, struct prefix *, struct attr *, 
safi_t);
 
-- 
2.1.3


_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to