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 */ |