From: Ondrej Zajicek Date: Tue, 2 Feb 2010 09:14:21 +0000 (+0100) Subject: Workaround for some broken BGP implementations that skip initial KEEPALIVE. X-Git-Tag: v1.2.1~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=44f26560ec9f108039e6736d6de929f899bf20ea;p=thirdparty%2Fbird.git Workaround for some broken BGP implementations that skip initial KEEPALIVE. --- diff --git a/proto/bgp/packets.c b/proto/bgp/packets.c index 03cc4ee0d..329efb3ce 100644 --- a/proto/bgp/packets.c +++ b/proto/bgp/packets.c @@ -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);