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
This commit is contained in:
Ondrej Zajicek (work) 2017-03-11 16:21:28 +01:00
parent 1950a479c0
commit 27f6ba651e

View file

@ -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->gr_ready = p->cf->gr_mode && conn->peer_gr_able;
p->ext_messages = p->cf->enable_extended_messages && conn->peer_ext_messages_support; p->ext_messages = p->cf->enable_extended_messages && conn->peer_ext_messages_support;
/* Update RA mode */
if (p->add_path_tx) if (p->add_path_tx)
p->p.accept_ra_types = RA_ANY; 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); 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);