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]> 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]>> wrote: > > > > Signed-off-by: Lou Berger <[email protected] <mailto:[email protected] > >> > > Signed-off-by: David Lamparter <[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
