]> git.puffer.fish Git - mirror/frr.git/commit
isisd: uninstall local routes that don't have any valid nexthop
authorRenato Westphal <renato@opensourcerouting.org>
Thu, 5 Nov 2020 12:40:26 +0000 (09:40 -0300)
committerRenato Westphal <renato@opensourcerouting.org>
Mon, 23 Nov 2020 17:50:32 +0000 (14:50 -0300)
commite33b95b4bb0afa46b89c3335443a9c316436fc9c
treea4aa337e025facdc707577c3b050efe21e75cd18
parent4f3e4669f0230dcdaa250fc341b91a8b7e5eb132
isisd: uninstall local routes that don't have any valid nexthop

Once the remote end of a connected link is shut down (or lose
its address), isisd will remove the corresponding route from its
RIB after SPF runs. A new route for the same destination should
be computed based on the local LSP, and that route by definition
doesn't have any nexthop.  The problem is that, when isisd tries
to replace the old route by the new one, it fails because routes
without nexthops can't be installed.  That causes the old invalid
route to remain in the RIB when it shouldn't. To fix this problem,
change the zebra interface code to uninstall a route whenever it
can't be installed (because it lacks nexthops) instead of doing
nothing in that case.

This change should fix occasional failures of the test_isis_sr_topo1
topotest.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
12 files changed:
isisd/isis_zebra.c
tests/topotests/isis-sr-topo1/rt2/step10/show_ip_route.ref
tests/topotests/isis-sr-topo1/rt4/step3/show_ip_route.ref
tests/topotests/isis-sr-topo1/rt5/step10/show_ip_route.ref
tests/topotests/isis-sr-topo1/rt5/step2/show_ip_route.ref
tests/topotests/isis-sr-topo1/rt5/step3/show_ip_route.ref
tests/topotests/isis-sr-topo1/rt5/step4/show_ip_route.ref
tests/topotests/isis-sr-topo1/rt5/step5/show_ip_route.ref
tests/topotests/isis-sr-topo1/rt5/step6/show_ip_route.ref
tests/topotests/isis-sr-topo1/rt5/step7/show_ip_route.ref
tests/topotests/isis-sr-topo1/rt5/step8/show_ip_route.ref
tests/topotests/isis-sr-topo1/rt5/step9/show_ip_route.ref