Index: nd6.c =================================================================== RCS file: /cvs/src/sys/netinet6/nd6.c,v retrieving revision 1.183 diff -u -p -r1.183 nd6.c --- nd6.c 3 Jun 2016 02:08:15 -0000 1.183 +++ nd6.c 3 Jun 2016 03:46:50 -0000 @@ -311,10 +311,10 @@ nd6_llinfo_settimer(struct llinfo_nd6 *l s = splsoftnet(); if (secs < 0) { - ln->ln_expire = 0; + ln->ln_rt->rt_expire = 0; timeout_del(&ln->ln_timer_ch); } else { - ln->ln_expire = time_uptime + secs; + ln->ln_rt->rt_expire = time_uptime + secs; timeout_add_sec(&ln->ln_timer_ch, secs); } @@ -981,7 +981,7 @@ nd6_rtrequest(struct ifnet *ifp, int req if (req == RTM_ADD) { /* * gate should have some valid AF_LINK entry, - * and ln->ln_expire should have some lifetime + * and ln expire should have some lifetime * which is specified by ndp command. */ ln->ln_state = ND6_LLINFO_REACHABLE; @@ -1200,7 +1200,7 @@ nd6_ioctl(u_long cmd, caddr_t data, stru splx(s); break; } - expire = ln->ln_expire; + expire = ln->ln_rt->rt_expire; if (expire != 0) { expire -= time_uptime; expire += time_second; Index: nd6.h =================================================================== RCS file: /cvs/src/sys/netinet6/nd6.h,v retrieving revision 1.60 diff -u -p -r1.60 nd6.h --- nd6.h 1 Jun 2016 23:45:19 -0000 1.60 +++ nd6.h 3 Jun 2016 03:46:50 -0000 @@ -144,7 +144,6 @@ struct llinfo_nd6 { TAILQ_ENTRY(llinfo_nd6) ln_list; struct rtentry *ln_rt; struct mbuf *ln_hold; /* last packet until resolved/timeout */ - time_t ln_expire; /* lifetime for NDP state transition */ long ln_asked; /* number of queries already sent for addr */ int ln_byhint; /* # of times we made it reachable by UL hint */ short ln_state; /* reachability state */ @@ -154,7 +153,7 @@ struct llinfo_nd6 { }; #define ND6_IS_LLINFO_PROBREACH(n) ((n)->ln_state > ND6_LLINFO_INCOMPLETE) -#define ND6_LLINFO_PERMANENT(n) ((n)->ln_expire == 0) +#define ND6_LLINFO_PERMANENT(n) ((n)->ln_rt->rt_expire == 0) /* node constants */ #define MAX_REACHABLE_TIME 3600000 /* msec */