From: Paul Jakma Date: Fri, 22 Jun 2007 19:11:14 +0000 (+0000) Subject: [bgpd] bug #368: Fix possible loop between peers going Idle<->OpenSent X-Git-Tag: frr-2.0-rc1~2501 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=536792cd883439237c4098f925ea6921122d12ef;p=mirror%2Ffrr.git [bgpd] bug #368: Fix possible loop between peers going Idle<->OpenSent 2007-06-22 Paul Jakma * 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. --- diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog index b2191d4836..a871f42145 100644 --- a/bgpd/ChangeLog +++ b/bgpd/ChangeLog @@ -1,3 +1,10 @@ +2007-06-22 Paul Jakma + + * 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 * bgp_route.c: (bgp_default_originate) Sanity check added diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index db7e69af07..15bd8a6c83 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 */