]> git.puffer.fish Git - mirror/frr.git/commitdiff
[bgpd] bug #368: Fix possible loop between peers going Idle<->OpenSent
authorPaul Jakma <paul.jakma@sun.com>
Fri, 22 Jun 2007 19:11:14 +0000 (19:11 +0000)
committerPaul Jakma <paul.jakma@sun.com>
Fri, 22 Jun 2007 19:11:14 +0000 (19:11 +0000)
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.

bgpd/ChangeLog
bgpd/bgp_fsm.c

index b2191d4836bdfcf99e2126da8e7f7d08f21f054c..a871f42145a0e5e931298306eeca88aeb52a48ad 100644 (file)
@@ -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
index db7e69af07497d77204cfb0ae36354187a0f9136..15bd8a6c837d97bd33e40f87b9896b8721c23816 100644 (file)
@@ -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      */