Index: nd6.c =================================================================== RCS file: /cvs/src/sys/netinet6/nd6.c,v retrieving revision 1.182 diff -u -p -r1.182 nd6.c --- nd6.c 1 Jun 2016 23:45:19 -0000 1.182 +++ nd6.c 2 Jun 2016 00:04:21 -0000 @@ -314,7 +314,7 @@ nd6_llinfo_settimer(struct llinfo_nd6 *l ln->ln_expire = 0; timeout_del(&ln->ln_timer_ch); } else { - ln->ln_expire = time_second + secs; + ln->ln_expire = time_uptime + secs; timeout_add_sec(&ln->ln_timer_ch, secs); } @@ -1177,6 +1177,7 @@ nd6_ioctl(u_long cmd, caddr_t data, stru { struct llinfo_nd6 *ln; struct in6_addr nb_addr = nbi->addr; /* make local for safety */ + time_t expire; /* * XXX: KAME specific hack for scoped addresses @@ -1199,10 +1200,16 @@ nd6_ioctl(u_long cmd, caddr_t data, stru splx(s); break; } + expire = ln->ln_expire; + if (expire != 0) { + expire -= time_uptime; + expire += time_second; + } + nbi->state = ln->ln_state; nbi->asked = ln->ln_asked; nbi->isrouter = ln->ln_router; - nbi->expire = ln->ln_expire; + nbi->expire = expire; rtfree(rt); splx(s);