diff options
-rw-r--r-- | bgpd/bgp_vty.c | 3 | ||||
-rw-r--r-- | bgpd/bgpd.c | 6 |
2 files changed, 7 insertions, 2 deletions
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index d42f8121..0e689359 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -2193,7 +2193,8 @@ peer_rsclient_unset_vty (struct vty *vty, const char *peer_str, listnode_delete (bgp->rsclient, peer); } - bgp_table_finish (peer->rib[bgp_node_afi(vty)][bgp_node_safi(vty)]); + bgp_table_finish (peer->rib[afi][safi]); + peer->rib[afi][safi] = NULL; return CMD_SUCCESS; } diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index c4e54f03..b37e577d 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -1243,7 +1243,10 @@ peer_delete (struct peer *peer) for (afi = AFI_IP; afi < AFI_MAX; afi++) for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++) if (peer->rib[afi][safi] && ! peer->af_group[afi][safi]) - bgp_table_finish (peer->rib[afi][safi]); + { + bgp_table_finish (peer->rib[afi][safi]); + peer->rib[afi][safi] = NULL; + } /* Buffers. */ if (peer->ibuf) @@ -1835,6 +1838,7 @@ peer_group_bind (struct bgp *bgp, union sockunion *su, } bgp_table_finish (peer->rib[afi][safi]); + peer->rib[afi][safi] = NULL; /* Import policy. */ if (peer->filter[afi][safi].map[RMAP_IMPORT].name) |