diff options
author | Louis Scalbert <louis.scalbert@6wind.com> | 2022-05-20 15:28:59 +0200 |
---|---|---|
committer | Louis Scalbert <louis.scalbert@6wind.com> | 2022-10-24 11:50:13 +0200 |
commit | 0e83283c661a22874e3ee5bc115787a6d17dc039 (patch) | |
tree | 25702cf57eae5f46024fe0b03ba83cd809a613d2 | |
parent | isisd: allow nexthop lookup on interface only (diff) | |
download | frr-0e83283c661a22874e3ee5bc115787a6d17dc039.tar.xz frr-0e83283c661a22874e3ee5bc115787a6d17dc039.zip |
isisd: apply fast-reroute when an interface falls down
Backup routes are sent to zebra by routing daemons such as isisd so that
the dataplane can pre-install them with a lower priority. When an
interface comes down, the associated primary routes are discarded by the
dataplane and the backup ones take over.
However, some dataplanes (e.g. Netlink ones) do not pre-install the
backup routes. Associated prefixes have no next-hop until SPF is
recomputed.
Apply fast-reroute as soon as an interface falls down by sending route
UPDATEs to zebra.
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
-rw-r--r-- | isisd/isis_circuit.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c index 7f5426abf..65332c76b 100644 --- a/isisd/isis_circuit.c +++ b/isisd/isis_circuit.c @@ -1636,9 +1636,14 @@ static int isis_ifp_up(struct interface *ifp) static int isis_ifp_down(struct interface *ifp) { + afi_t afi; struct isis_circuit *circuit = ifp->info; if (circuit) { + for (afi = AFI_IP; afi <= AFI_IP6; afi++) + isis_circuit_switchover_routes( + circuit, afi == AFI_IP ? AF_INET : AF_INET6, + NULL, ifp->ifindex); isis_csm_state_change(IF_DOWN_FROM_Z, circuit, ifp); SET_FLAG(circuit->flags, ISIS_CIRCUIT_FLAPPED_AFTER_SPF); |