svn commit: r220743 - head/sys/netinet6

Bjoern A. Zeeb bz at FreeBSD.org
Sun Apr 17 16:07:08 UTC 2011


Author: bz
Date: Sun Apr 17 16:07:08 2011
New Revision: 220743
URL: http://svn.freebsd.org/changeset/base/220743

Log:
  Fix IPv6 ND.  After r219562 we in nd6_ns_input() were erroneously always
  passing the cached proxydl reference (sockaddr_dl initialized or not) to
  nd6_na_output().  nd6_na_output() will thus assume a proxy NA.  Revert to
  conditionally passing either &proxydl or NULL if no proxy case desired.
  
  Tested by:	ipv6gw and ref9-i386
  Reported by:	Pete French (petefrench ingresso.co.uk on stable)
  Reported by:	bz, simon on Y! cluster
  Reported by:	kib
  PR:		kern/151908
  MFC after:	3 days

Modified:
  head/sys/netinet6/nd6_nbr.c

Modified: head/sys/netinet6/nd6_nbr.c
==============================================================================
--- head/sys/netinet6/nd6_nbr.c	Sun Apr 17 16:04:39 2011	(r220742)
+++ head/sys/netinet6/nd6_nbr.c	Sun Apr 17 16:07:08 2011	(r220743)
@@ -340,7 +340,7 @@ nd6_ns_input(struct mbuf *m, int off, in
 		nd6_na_output(ifp, &in6_all, &taddr6,
 		    ((anycast || proxy || !tlladdr) ? 0 : ND_NA_FLAG_OVERRIDE) |
 		    (V_ip6_forwarding ? ND_NA_FLAG_ROUTER : 0),
-		    tlladdr, (struct sockaddr *)&proxydl);
+		    tlladdr, proxy ? (struct sockaddr *)&proxydl : NULL);
 		goto freeit;
 	}
 
@@ -350,7 +350,7 @@ nd6_ns_input(struct mbuf *m, int off, in
 	nd6_na_output(ifp, &saddr6, &taddr6,
 	    ((anycast || proxy || !tlladdr) ? 0 : ND_NA_FLAG_OVERRIDE) |
 	    (V_ip6_forwarding ? ND_NA_FLAG_ROUTER : 0) | ND_NA_FLAG_SOLICITED,
-	    tlladdr, (struct sockaddr *)&proxydl);
+	    tlladdr, proxy ? (struct sockaddr *)&proxydl : NULL);
  freeit:
 	if (ifa != NULL)
 		ifa_free(ifa);


More information about the svn-src-head mailing list