Yes, I missed this. I suspect you're right and it's only needed when doing vrf i/o.
Lou On 1/5/2016 11:02 AM, Vivek Venkatraman wrote: > You might have missed my comment interspersed in the code below - "VPN > routes shouldn't require a bgp_cleanup_table() because they are not > installed in zebra.". > > On Tue, Jan 5, 2016 at 6:57 AM, Lou Berger <[email protected] > <mailto:[email protected]>> wrote: > > Right. > > Lou > > On 1/5/2016 8:04 AM, Vivek Venkatraman wrote: > > Are the changes (fixes) here primarily related to cleaning up memory > > when a BGP instance is deleted? > > > > On Thu, Dec 24, 2015 at 10:10 AM, Lou Berger <[email protected] > <mailto:[email protected]> > > <mailto:[email protected] <mailto:[email protected]>>> wrote: > > > > Signed-off-by: Lou Berger <[email protected] > <mailto:[email protected]> <mailto:[email protected] > <mailto:[email protected]>>> > > Signed-off-by: David Lamparter > <[email protected] <mailto:[email protected]> > > <mailto:[email protected] > <mailto:[email protected]>>> > > --- > > /* Delete all kernel routes. */ > > void > > bgp_cleanup_routes (void) > > { > > struct bgp *bgp; > > struct listnode *node, *nnode; > > - struct bgp_node *rn; > > - struct bgp_table *table; > > - struct bgp_info *ri; > > + afi_t afi; > > > > for (ALL_LIST_ELEMENTS (bm->bgp, node, nnode, bgp)) > > { > > - table = bgp->rib[AFI_IP][SAFI_UNICAST]; > > + for (afi = AFI_IP; afi < AFI_MAX; ++afi) > > + { > > + struct bgp_node *rn; > > > > - for (rn = bgp_table_top (table); rn; rn = > bgp_route_next (rn)) > > - for (ri = rn->info; ri; ri = ri->next) > > - if (CHECK_FLAG (ri->flags, BGP_INFO_SELECTED) > > - && ri->type == ZEBRA_ROUTE_BGP > > - && ri->sub_type == BGP_ROUTE_NORMAL) > > - bgp_zebra_withdraw (&rn->p, ri,SAFI_UNICAST); > > + bgp_cleanup_table(bgp->rib[afi][SAFI_UNICAST], > > SAFI_UNICAST); > > > > - table = bgp->rib[AFI_IP6][SAFI_UNICAST]; > > + /* > > + * VPN and ENCAP tables are two-level (RD is top > level) > > + */ > > + for (rn = > bgp_table_top(bgp->rib[afi][SAFI_MPLS_VPN]); rn; > > + rn = bgp_route_next (rn)) > > + if (rn->info) > > + { > > + bgp_cleanup_table((struct bgp_table > > *)(rn->info), SAFI_MPLS_VPN); > > > > > > VPN routes shouldn't require a bgp_cleanup_table() because they are > > not installed in zebra. > > > > > > + bgp_table_finish ((struct bgp_table > > **)&(rn->info)); > > + rn->info = NULL; > > + bgp_unlock_node(rn); > > + } > > > > - for (rn = bgp_table_top (table); rn; rn = > bgp_route_next (rn)) > > - for (ri = rn->info; ri; ri = ri->next) > > - if (CHECK_FLAG (ri->flags, BGP_INFO_SELECTED) > > - && ri->type == ZEBRA_ROUTE_BGP > > - && ri->sub_type == BGP_ROUTE_NORMAL) > > - bgp_zebra_withdraw (&rn->p, ri,SAFI_UNICAST); > > } > > } > > > > > _______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
