I made a patch for that. It works at least for my test case. I had to add additional parameter to nl_parse_multipath() function to pass information about this exception for dead routes. But may be there are better ways to do that. For example to set "s->krt_src" earlier, but I do not know if it will not break something else. Or may be it is even better to add additional field to "struct nl_parse_state" for that. On Mon, Dec 27, 2021 at 5:35 PM Ondrej Zajicek <santiago@crfreenet.org> wrote:
On Mon, Dec 27, 2021 at 02:51:34PM +0100, Alexander Zubkov wrote:
Hi all,
I'll pop up this old discussion. I've found a bug with bird handling its routes when ignore_routes_with_linkdown is enabled. And I suspect it is related to this patch. The problem is that bird does not replace or delete the routes it installed when they are marked as dead. For example if we stop it with "graceful restart", the routes are left in the table and after we start bird again with updated config, this old route remains in the table. I can reproduce it with bird compiled from master branch now. Now, that I have found this thread, I suppose, that this changes blind bird for all such routes during the scan. As a result bird also ignores its own routes (proto bird), which causes problems. I think there should be an exception for the routes that are installed by bird itself.
Hi
You are right, it makes sense to apply dead-flag handling only to to non-bird routes. Will fix that.
-- Elen sila lumenn' omentielvo
Ondrej 'Santiago' Zajicek (email: santiago@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."