Okay. I'll update the patch. Lou
On 1/6/2016 8:23 AM, Donald Sharp wrote: > I'm in agreement that the machineparse variable should be dropped. If > we are going to go down the path of machine parsing I would prefer > that we implement something fairly industry standard, like json. > > donald > > On Thu, Dec 24, 2015 at 1:10 PM, Lou Berger <lber...@labn.net > <mailto:lber...@labn.net>> wrote: > > [DL: the machineparse foo should probably be dropped] > > Signed-off-by: Lou Berger <lber...@labn.net > <mailto:lber...@labn.net>> > --- > 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 > Quagga-dev@lists.quagga.net <mailto:Quagga-dev@lists.quagga.net> > https://lists.quagga.net/mailman/listinfo/quagga-dev > > _______________________________________________ Quagga-dev mailing list Quagga-dev@lists.quagga.net https://lists.quagga.net/mailman/listinfo/quagga-dev