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 <iryzhov@nfware.com>
This commit is contained in:
Igor Ryzhov 2021-05-17 19:35:57 +03:00
parent 8f0c2688d7
commit 29ceb84855

View File

@ -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)