On Wed, Jun 6, 2018 at 2:25 PM, Ondrej Zajicek <santiago@crfreenet.org> wrote:
On Wed, Jun 06, 2018 at 01:33:53PM +0100, Thomás S. Bregolin wrote: [...]
I've attached a modified version of the test-withdraw script showing the issue. It seems my problem is related to the "start delay time" option. When I set it to 1, sometimes the withdrawal is sent, and sometimes it isn't. However, when it *isn't* sent, it is *never* sent, no matter how long I wait. The problem is solved by setting the timeout to a higher value, or using the default 5 seconds.
Hello
Note that in the modified version no protocols are removed, both testproto and testproto2 are still configured and running. Just the BGP export filter was changed, and because 'configure soft' was used, then it was not reloaded. That is expected.
But it is likely that if both changes happen simultaneously, i.e. a static protocol is removed and a BGP export filter is changed to no longer allow routes from that protocol, then withdraws are not sent. This is likely a bug, could be avoided by not doing both protocol removal and export filter change at the same time.
Oh, interesting! Indeed, if I remove just the filter or both the filter and route, the withdrawals are not sent. However, if I remove only the route, the withdrawal is sent. Indeed, as you say, it sounds like a bug. For two reasons: - BIRD should never remove a protocol without sending a withdrawal (unless that is wanted as a feature or configuration option); - There is no reason why removing the filter at the same time as the route should change the behaviour; Thank you once again for looking into this. Please let me know if I should write up a proper bug report and send it here. Thomás