From 27f6ba651ebb07201f7964c8f14a254267f0f26a Mon Sep 17 00:00:00 2001 From: "Ondrej Zajicek (work)" Date: Sat, 11 Mar 2017 16:21:28 +0100 Subject: [PATCH] BGP: Fix bug in ADD_PATH When a BGP session with ADD_PATH is restarted and the neighbor do not announce ADD_PATH capability during reconnect, the accept_ra_types is still set to RA_ANY. Thanks to Lennert Buytenhek for the bugreport --- proto/bgp/packets.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/proto/bgp/packets.c b/proto/bgp/packets.c index d100b7d0..ab87bdcc 100644 --- a/proto/bgp/packets.c +++ b/proto/bgp/packets.c @@ -1037,8 +1037,13 @@ bgp_rx_open(struct bgp_conn *conn, byte *pkt, uint len) p->gr_ready = p->cf->gr_mode && conn->peer_gr_able; p->ext_messages = p->cf->enable_extended_messages && conn->peer_ext_messages_support; + /* Update RA mode */ if (p->add_path_tx) p->p.accept_ra_types = RA_ANY; + else if (p->cf->secondary) + p->p.accept_ra_types = RA_ACCEPTED; + else + p->p.accept_ra_types = RA_OPTIMAL; DBG("BGP: Hold timer set to %d, keepalive to %d, AS to %d, ID to %x, AS4 session to %d\n", conn->hold_time, conn->keepalive_time, p->remote_as, p->remote_id, p->as4_session);