Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Jun 2015 07:23:33 +0000 (UTC)
From:      "Andrey V. Elsukov" <ae@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r284016 - stable/10/sys/netinet6
Message-ID:  <201506050723.t557NXJh027002@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ae
Date: Fri Jun  5 07:23:32 2015
New Revision: 284016
URL: https://svnweb.freebsd.org/changeset/base/284016

Log:
  Rework r281868 to not skip RTM announces for tunneling interfaces.
  This is direct commit to stable/10.
  
  Tested by:	tuexen@

Modified:
  stable/10/sys/netinet6/in6.c

Modified: stable/10/sys/netinet6/in6.c
==============================================================================
--- stable/10/sys/netinet6/in6.c	Fri Jun  5 07:17:14 2015	(r284015)
+++ stable/10/sys/netinet6/in6.c	Fri Jun  5 07:23:32 2015	(r284016)
@@ -155,29 +155,28 @@ in6_ifaddloop(struct ifaddr *ifa)
 
 	ia = ifa2ia6(ifa);
 	ifp = ifa->ifa_ifp;
-	if (nd6_need_cache(ifp) == 0)
-		return;
-	IF_AFDATA_LOCK(ifp);
-	ifa->ifa_rtrequest = nd6_rtrequest;
-	ln = lla_lookup(LLTABLE6(ifp), (LLE_CREATE | LLE_IFADDR |
-	    LLE_EXCLUSIVE), (struct sockaddr *)&ia->ia_addr);
-	IF_AFDATA_UNLOCK(ifp);
-	if (ln != NULL) {
-		ln->la_expire = 0;  /* for IPv6 this means permanent */
-		ln->ln_state = ND6_LLINFO_REACHABLE;
-		/*
-		 * initialize for rtmsg generation
-		 */
-		bzero(&gateway, sizeof(gateway));
-		gateway.sdl_len = sizeof(gateway);
-		gateway.sdl_family = AF_LINK;
-		gateway.sdl_nlen = 0;
-		gateway.sdl_alen = 6;
-		memcpy(gateway.sdl_data, &ln->ll_addr.mac_aligned,
-		    sizeof(ln->ll_addr));
-		LLE_WUNLOCK(ln);
+	/*
+	 * initialize for rtmsg generation
+	 */
+	bzero(&gateway, sizeof(gateway));
+	gateway.sdl_len = sizeof(gateway);
+	gateway.sdl_family = AF_LINK;
+	if (nd6_need_cache(ifp) != 0) {
+		IF_AFDATA_LOCK(ifp);
+		ifa->ifa_rtrequest = nd6_rtrequest;
+		ln = lla_lookup(LLTABLE6(ifp), (LLE_CREATE | LLE_IFADDR |
+		    LLE_EXCLUSIVE), (struct sockaddr *)&ia->ia_addr);
+		IF_AFDATA_UNLOCK(ifp);
+		if (ln != NULL) {
+			ln->la_expire = 0;  /* for IPv6 this means permanent */
+			ln->ln_state = ND6_LLINFO_REACHABLE;
+
+			gateway.sdl_alen = 6;
+			memcpy(gateway.sdl_data, &ln->ll_addr.mac_aligned,
+			    sizeof(ln->ll_addr));
+			LLE_WUNLOCK(ln);
+		}
 	}
-
 	bzero(&rt, sizeof(rt));
 	rt.rt_gateway = (struct sockaddr *)&gateway;
 	memcpy(&mask, &ia->ia_prefixmask, sizeof(ia->ia_prefixmask));



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