]> git.puffer.fish Git - matthieu/frr.git/commit
isisd: fix isis_route_merge_verify logic
authorChristian Franke <chris@opensourcerouting.org>
Thu, 26 Jul 2018 08:02:15 +0000 (10:02 +0200)
committerChristian Franke <chris@opensourcerouting.org>
Fri, 3 Aug 2018 11:25:39 +0000 (13:25 +0200)
commit26b0598f6b6f55b33e225cb96012fa0e18b23e92
treea8de30d58dfd1207156737d05a48e0777c971a0e
parentc30f211bbab2afdb9755838b2c8c6bb9adb3dc91
isisd: fix isis_route_merge_verify logic

This addresses two issues for L1L2 operation:

a) If an L1 route has ROUTE_ACTIVE unset and an L2 route for the same
destination has ROUTE_ACTIVE set, isisd would still put the L1 route
into the merged table. This causes the route for the destination to
get uninstalled from zebra until the next SPF run, which is incorrect.

To fix this, look at the ROUTE_ACTIVE flag and allow L2 routes to win
against L1 routes, when the L1 has ROUTE_ACTIVE unset.

b) If an L1 route wins against an existing L2 route, the ZEBRA_SYNCED
flag would remain on the L2 route. This leads to the problem that when
the L1 route disappears again, the L2 doesn't get reinstalled, since
isisd assumes it's already in the RIB because ZEBRA_SYNCED is set.

Solve this by clearing ZEBRA_SYNCED on L2 routes, if they lose against
an L1 route.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
isisd/isis_route.c