On Mon, Mar 06, 2017 at 01:12:12PM +0100, Martin Pieuchot wrote: > Diff below should solve that by resetting the 'asked' counter and allow > our NDP code to generate a new NS. Just like the delete command does.
arptfree() calls arpinvalidate() unconditionally. So I think we should always call nd6_invalidate() here. bluhm > Index: netinet6/nd6.c > =================================================================== > RCS file: /cvs/src/sys/netinet6/nd6.c,v > retrieving revision 1.205 > diff -u -p -r1.205 nd6.c > --- netinet6/nd6.c 3 Mar 2017 08:01:59 -0000 1.205 > +++ netinet6/nd6.c 6 Mar 2017 12:02:53 -0000 > @@ -834,7 +834,9 @@ nd6_free(struct rtentry *rt, int gc) > * caches, and disable the route entry not to be used in already > * cached routes. > */ > - if (!ISSET(rt->rt_flags, RTF_STATIC|RTF_CACHED)) > + if (ISSET(rt->rt_flags, RTF_CACHED)) > + nd6_invalidate(rt); > + else if (!ISSET(rt->rt_flags, RTF_STATIC)) > rtdeletemsg(rt, ifp, ifp->if_rdomain); > > if_put(ifp);
