[bgpd] Bug #302, bgpd can get stuck in state Clearing

2006-12-07 Paul Jakma <paul.jakma@sun.com>

	* bgp_fsm.c: Bug #302 fix, diagnosis, suggestions and testing
	  by Juergen Kammer <j.kammer@eurodata.de>. Fix follows from
	  his suggested fix, just made in a slightly different way.
	  (bgp_event) Transitions into Clearing always must call
	  bgp_clear_route_all().
	  (bgp_stop) No need to clear routes here, BGP FSM should do
	  it.
This commit is contained in:
Paul Jakma 2006-12-08 00:31:22 +00:00
parent ed589c1577
commit 95fdcd8a79
2 changed files with 18 additions and 5 deletions

View File

@ -1,3 +1,13 @@
2006-12-07 Paul Jakma <paul.jakma@sun.com>
* bgp_fsm.c: Bug #302 fix, diagnosis, suggestions and testing
by Juergen Kammer <j.kammer@eurodata.de>. Fix follows from
his suggested fix, just made in a slightly different way.
(bgp_event) Transitions into Clearing always must call
bgp_clear_route_all().
(bgp_stop) No need to clear routes here, BGP FSM should do
it.
2006-11-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* bgp_debug.h: Declare new bgp_debug_zebra conf and term flags,

View File

@ -483,9 +483,6 @@ bgp_stop (struct peer *peer)
/* Reset uptime. */
bgp_uptime_reset (peer);
/* Need of clear of peer. */
bgp_clear_route_all (peer);
/* Reset peer synctime */
peer->synctime = 0;
}
@ -1092,8 +1089,14 @@ bgp_event (struct thread *thread)
{
/* If status is changed. */
if (next != peer->status)
bgp_fsm_change_status (peer, next);
{
/* Transition into Clearing must /always/ clear all routes.. */
if (next == Clearing)
bgp_clear_route_all (peer);
bgp_fsm_change_status (peer, next);
}
/* Make sure timer is set. */
bgp_timer_set (peer);
}