diff options
Diffstat (limited to 'bgpd/bgp_vty.c')
-rw-r--r-- | bgpd/bgp_vty.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 06c4abdb..afa5fed1 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -1342,7 +1342,7 @@ DEFUN (no_neighbor, { peer = peer_lookup (vty->index, &su); if (peer) - peer_delete (peer); + peer_delete (peer); } return CMD_SUCCESS; @@ -2043,7 +2043,10 @@ peer_rsclient_set_vty (struct vty *vty, const char *peer_str, return CMD_SUCCESS; if ( ! peer_rsclient_active (peer) ) - listnode_add_sort (bgp->rsclient, peer); + { + peer = peer_lock (peer); /* rsclient peer list reference */ + listnode_add_sort (bgp->rsclient, peer); + } ret = peer_af_flag_set (peer, afi, safi, PEER_FLAG_RSERVER_CLIENT); if (ret < 0) @@ -2143,7 +2146,10 @@ peer_rsclient_unset_vty (struct vty *vty, const char *peer_str, return bgp_vty_return (vty, ret); if ( ! peer_rsclient_active (peer) ) - listnode_delete (bgp->rsclient, peer); + { + peer_unlock (peer); /* peer bgp rsclient reference */ + listnode_delete (bgp->rsclient, peer); + } bgp_table_finish (peer->rib[bgp_node_afi(vty)][bgp_node_safi(vty)]); |