From 29ceb84855f486b43f320cacb7aa0511cde3c027 Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Mon, 17 May 2021 19:35:57 +0300 Subject: [PATCH] ripngd: fix interface wakeup after shutdown RIPNG schedules a call to `ripng_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 ripng 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 && sleep 2 && ip link del red ``` Signed-off-by: Igor Ryzhov --- ripngd/ripng_interface.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ripngd/ripng_interface.c b/ripngd/ripng_interface.c index c4d494804f..6828398617 100644 --- a/ripngd/ripng_interface.c +++ b/ripngd/ripng_interface.c @@ -169,6 +169,9 @@ static int ripng_if_down(struct interface *ifp) struct listnode *listnode = NULL, *nextnode = NULL; ri = ifp->info; + + THREAD_OFF(ri->t_wakeup); + ripng = ri->ripng; if (ripng)