On Tue, May 07, 2013 at 04:48:41PM +0200, Janne Johansson wrote: > this patch (stupidly) fixes my problem. I don't like my broken setup, > but this works.
We've determined the RFC doesn't require source addresses in neighbour solicitations to be sent from a matching prefix. I don't see any reason why responding to such solicitations is bad. I agree with removing this check. > Index: nd6_nbr.c > =================================================================== > RCS file: /cvs/src/sys/netinet6/nd6_nbr.c,v > retrieving revision 1.66 > diff -u -p -r1.66 nd6_nbr.c > --- nd6_nbr.c 7 Mar 2013 09:03:16 -0000 1.66 > +++ nd6_nbr.c 7 May 2013 11:44:56 -0000 > @@ -132,17 +132,7 @@ nd6_ns_input(struct mbuf *m, int off, in > "(wrong ip6 dst)\n")); > goto bad; > } > - } else { > - /* > - * Make sure the source address is from a neighbor's address. > - */ > - if (!in6_ifpprefix(ifp, &saddr6)) { > - nd6log((LOG_INFO, "nd6_ns_input: " > - "NS packet from non-neighbor\n")); > - goto bad; > - } > } > - > > if (IN6_IS_ADDR_MULTICAST(&taddr6)) { > nd6log((LOG_INFO, "nd6_ns_input: bad NS target (multicast)\n"));