From b089e30eeae71e3c6ed75b4e91c21b622610be9d Mon Sep 17 00:00:00 2001 From: florian Date: Fri, 3 Aug 2018 09:11:56 +0000 Subject: [PATCH] Account when the next nd6_timer_to is scheduled in nd6_timer() otherwise nd6_llinfo_settimer() might wrongly assume that a timeout is already scheduled earlier and not schedule one itself. This in turn lead to the neighbor cache no longer updating because neighbor solicitations were not send. Observed by many. OK kn --- sys/netinet6/nd6.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/netinet6/nd6.c b/sys/netinet6/nd6.c index bce15ad5135..f11c067fbbd 100644 --- a/sys/netinet6/nd6.c +++ b/sys/netinet6/nd6.c @@ -1,4 +1,4 @@ -/* $OpenBSD: nd6.c,v 1.225 2018/07/11 21:18:23 nayden Exp $ */ +/* $OpenBSD: nd6.c,v 1.226 2018/08/03 09:11:56 florian Exp $ */ /* $KAME: nd6.c,v 1.280 2002/06/08 19:52:07 itojun Exp $ */ /* @@ -336,8 +336,10 @@ nd6_timer(void *arg) secs = expire - time_uptime; if (secs < 0) secs = 0; - if (!TAILQ_EMPTY(&nd6_list)) + if (!TAILQ_EMPTY(&nd6_list)) { + nd6_timer_next = time_uptime + secs; timeout_add_sec(&nd6_timer_to, secs); + } NET_UNLOCK(); } -- 2.20.1