]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Workaround for some broken BGP implementations that skip initial KEEPALIVE.
authorOndrej Zajicek <santiago@crfreenet.org>
Tue, 2 Feb 2010 09:14:21 +0000 (10:14 +0100)
committerOndrej Zajicek <santiago@crfreenet.org>
Tue, 2 Feb 2010 09:14:21 +0000 (10:14 +0100)
proto/bgp/packets.c

index 03cc4ee0d27155e6a2e16b8f466ce854a27432b8..329efb3ce76cadc3d3b326edeee43fbbec66a9ed 100644 (file)
@@ -1001,6 +1001,10 @@ bgp_rx_update(struct bgp_conn *conn, byte *pkt, int len)
 
   BGP_TRACE_RL(&rl_rcv_update, D_PACKETS, "Got UPDATE");
 
+  /* Workaround for some BGP implementations that skip initial KEEPALIVE */
+  if (conn->state == BS_OPENCONFIRM)
+    bgp_conn_enter_established_state(conn);
+
   if (conn->state != BS_ESTABLISHED)
     { bgp_error(conn, 5, 0, NULL, 0); return; }
   bgp_start_timer(conn->hold_timer, conn->hold_time);