From 8f0c2688d79d9822157de9651fc2516c2a1379cb Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Mon, 17 May 2021 19:34:02 +0300 Subject: [PATCH] ripd: fix interface wakeup after shutdown RIP schedules a call to `rip_interface_wakeup` in 1 second after receiving the interface UP event from zebra. The function is called even if the interface was shut down during this interval. This is incorrect and also leads to a crash in the following scenario: ``` vtysh -c "conf" -c "router rip vrf red" -c "network enp2s0" ip link add red type vrf table 1 ip link set enp2s0 vrf red ip link set enp2s0 down ip link set enp2s0 up && ip link del red ``` Signed-off-by: Igor Ryzhov --- ripd/rip_interface.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ripd/rip_interface.c b/ripd/rip_interface.c index 0b927c76fa..bdae2c5ef5 100644 --- a/ripd/rip_interface.c +++ b/ripd/rip_interface.c @@ -493,6 +493,9 @@ int rip_if_down(struct interface *ifp) struct listnode *listnode = NULL, *nextnode = NULL; ri = ifp->info; + + THREAD_OFF(ri->t_wakeup); + rip = ri->rip; if (rip) { for (rp = route_top(rip->table); rp; rp = route_next(rp))