diff options
author | Stephen Hemminger <shemminger@vyatta.com> | 2009-05-21 08:51:03 -0700 |
---|---|---|
committer | Paul Jakma <paul@quagga.net> | 2009-06-18 20:18:28 +0100 |
commit | 0088b5dc55a91d27e572484e61df71b8ca2eddf4 (patch) | |
tree | f93714f98d12890f961794cd026b6bf2de75105e /lib | |
parent | dde7258666fd73878b4cc10b4b5b7c07e9be049e (diff) |
[bgpd] reference count the BGP instance
When a BGP instance is deleted with lots of routes and neighbors
it is possible for the peer rsclient queue to run after
bgp_delete has been called. This would lead to bgpd crashing,
see https://bugzilla.vyatta.com/show_bug.cgi?id=3436
The fix is to add reference counting to the BGP instance and defer
actual freeing until all references are gone.
This patch also fixes a memory leak where the self-reference
peer instance was being created but never freed.
The check in bgp_clear_route is no longer valid because it is possible
for it to be called when peer is in Deleted state during cleanup.
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions