On Thu, Mar 09, 2017 at 02:20:28PM +0200, Lennert Buytenhek wrote: > On Mon, Mar 06, 2017 at 07:41:44PM +0200, Lennert Buytenhek wrote: > > > Hi! > > > > bgp_init() in proto/bgp/bgp.c does: > > > > P->accept_ra_types = c->secondary ? RA_ACCEPTED : RA_OPTIMAL; > > > > and then bgp_rx_open() in proto/bgp/packets.c does: > > > > if (p->add_path_tx) > > p->p.accept_ra_types = RA_ANY; > > > > As bgp_init() seems to only be called at configuration time, this > > means that if you have add path tx, and you have a peer that advertises > > rx add path and then reconnects without advertising rx add path, you > > will still have RA_ANY set on the sending side and not have the correct > > behavior of only sending the optimal route. (This is easy to verify.) > > > > Not entirely sure how you'd want to fix this, but perhaps replicating > > the RA_ACCEPTED / RA_OPTIONAL assignment in bgp_rx_open() (or just > > moving it there) would do the trick? > > In other words, something like this?
Hi Thanks for the bugreport and patch. We already found and fixed the bug during work on 2.0 branch [*], but we forgot to fix it in 1.6 branch. Your patch should be OK. [*] https://gitlab.labs.nic.cz/labs/bird/blob/int-new/proto/bgp/bgp.c#L528 -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santi...@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
signature.asc
Description: Digital signature