diff options
| author | Paul Jakma <paul.jakma@sun.com> | 2007-06-22 19:11:14 +0000 | 
|---|---|---|
| committer | Paul Jakma <paul.jakma@sun.com> | 2007-06-22 19:11:14 +0000 | 
| commit | 536792cd883439237c4098f925ea6921122d12ef (patch) | |
| tree | 5ba9e4a51c477046ce90aa24af08331053030225 | |
| parent | 11770e10861ccb684b608396c798aea9da05a1a2 (diff) | |
[bgpd] bug #368: Fix possible loop between peers going Idle<->OpenSent
2007-06-22 Paul Jakma <paul.jakma@sun.com>
	* bgp_fsm.c: (struct FSM) Bug #368. TCP Errors during OpenSent
	  should cycle to Active, not to Idle or else peer bringup can
	  race and cycle Idle<->Active. Reported and fix tested by
	  Mukesh Agrawal.
| -rw-r--r-- | bgpd/ChangeLog | 7 | ||||
| -rw-r--r-- | bgpd/bgp_fsm.c | 6 | 
2 files changed, 10 insertions, 3 deletions
| diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog index b2191d48..a871f421 100644 --- a/bgpd/ChangeLog +++ b/bgpd/ChangeLog @@ -1,3 +1,10 @@ +2007-06-22 Paul Jakma <paul.jakma@sun.com> + +	* bgp_fsm.c: (struct FSM) Bug #368. TCP Errors during OpenSent +	  should cycle to Active, not to Idle or else peer bringup can +	  race and cycle Idle<->Active. Reported and fix tested by +	  Mukesh Agrawal. +  2007-05-25 Paul Jakma <paul.jakma@sun.com>  	* bgp_route.c: (bgp_default_originate) Sanity check added diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index db7e69af..15bd8a6c 100644 --- a/bgpd/bgp_fsm.c +++ b/bgpd/bgp_fsm.c @@ -963,10 +963,10 @@ struct {      /* OpenSent, */      {bgp_ignore,  OpenSent},	/* BGP_Start                    */      {bgp_stop,    Idle},	/* BGP_Stop                     */ -    {bgp_stop,    Idle},	/* TCP_connection_open          */ +    {bgp_stop,    Active},	/* TCP_connection_open          */      {bgp_stop,    Active},	/* TCP_connection_closed        */ -    {bgp_ignore,  Idle},	/* TCP_connection_open_failed   */ -    {bgp_stop,    Idle},	/* TCP_fatal_error              */ +    {bgp_stop,    Active},	/* TCP_connection_open_failed   */ +    {bgp_stop,    Active},	/* TCP_fatal_error              */      {bgp_ignore,  Idle},	/* ConnectRetry_timer_expired   */      {bgp_fsm_holdtime_expire, Idle},	/* Hold_Timer_expired           */      {bgp_ignore,  Idle},	/* KeepAlive_timer_expired      */ | 
