From 536792cd883439237c4098f925ea6921122d12ef Mon Sep 17 00:00:00 2001 From: Paul Jakma Date: Fri, 22 Jun 2007 19:11:14 +0000 Subject: [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. --- bgpd/ChangeLog | 7 +++++++ bgpd/bgp_fsm.c | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'bgpd') 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 + + * 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 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 */ -- cgit v1.2.1