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