Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 Apr 2011 12:32:07 +0000 (UTC)
From:      "Bjoern A. Zeeb" <bz@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org
Subject:   svn commit: r220775 - stable/7/sys/netinet6
Message-ID:  <201104181232.p3ICW75Q071808@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bz
Date: Mon Apr 18 12:32:06 2011
New Revision: 220775
URL: http://svn.freebsd.org/changeset/base/220775

Log:
  MFC r220743:
  
    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
    Tested by:	Pete French (petefrench ingresso.co.uk)
    Reported by:	Pete French (petefrench ingresso.co.uk on stable)
    Reported by:	bz, simon on Y! cluster
    Reported by:	kib
  PR:		kern/151908
  X-Early-MFC:	yes

Modified:
  stable/7/sys/netinet6/nd6_nbr.c
Directory Properties:
  stable/7/sys/   (props changed)
  stable/7/sys/cddl/contrib/opensolaris/   (props changed)
  stable/7/sys/contrib/dev/acpica/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)

Modified: stable/7/sys/netinet6/nd6_nbr.c
==============================================================================
--- stable/7/sys/netinet6/nd6_nbr.c	Mon Apr 18 12:27:57 2011	(r220774)
+++ stable/7/sys/netinet6/nd6_nbr.c	Mon Apr 18 12:32:06 2011	(r220775)
@@ -327,7 +327,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) |
 		    (ip6_forwarding ? ND_NA_FLAG_ROUTER : 0),
-		    tlladdr, (struct sockaddr *)&proxydl);
+		    tlladdr, proxy ? (struct sockaddr *)&proxydl : NULL);
 		goto freeit;
 	}
 
@@ -337,7 +337,7 @@ nd6_ns_input(struct mbuf *m, int off, in
 	nd6_na_output(ifp, &saddr6, &taddr6,
 	    ((anycast || proxy || !tlladdr) ? 0 : ND_NA_FLAG_OVERRIDE) |
 	    (ip6_forwarding ? ND_NA_FLAG_ROUTER : 0) | ND_NA_FLAG_SOLICITED,
-	    tlladdr, (struct sockaddr *)&proxydl);
+	    tlladdr, proxy ? (struct sockaddr *)&proxydl : NULL);
  freeit:
 	m_freem(m);
 	return;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201104181232.p3ICW75Q071808>