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

Reply via email to