svn commit: r274342 - head/sys/netinet6

Andrey V. Elsukov ae at FreeBSD.org
Mon Nov 10 10:59:09 UTC 2014


Author: ae
Date: Mon Nov 10 10:59:08 2014
New Revision: 274342
URL: https://svnweb.freebsd.org/changeset/base/274342

Log:
  For now handle only multicast addresses, we still use routes to
  LLA unicasts yet.
  
  Sponsored by:	Yandex LLC

Modified:
  head/sys/netinet6/in6_src.c

Modified: head/sys/netinet6/in6_src.c
==============================================================================
--- head/sys/netinet6/in6_src.c	Mon Nov 10 09:55:35 2014	(r274341)
+++ head/sys/netinet6/in6_src.c	Mon Nov 10 10:59:08 2014	(r274342)
@@ -587,10 +587,18 @@ selectroute(struct sockaddr_in6 *dstsock
 			goto getroute;
 	}
 	/*
+	 * If the destination address is a multicast address and the outgoing
+	 * interface for the address is specified by the caller, use it.
+	 */
+	if (IN6_IS_ADDR_MULTICAST(dst) &&
+	    mopts != NULL && (ifp = mopts->im6o_multicast_ifp) != NULL) {
+		goto done; /* we do not need a route for multicast. */
+	}
+	/*
 	 * If destination address is LLA or link- or node-local multicast,
 	 * use it's embedded scope zone id to determine outgoing interface.
 	 */
-	if (IN6_IS_SCOPE_LINKLOCAL(dst) ||
+	if (IN6_IS_ADDR_MC_LINKLOCAL(dst) ||
 	    IN6_IS_ADDR_MC_NODELOCAL(dst)) {
 		zoneid = ntohs(in6_getscope(dst));
 		if (zoneid > 0) {
@@ -598,14 +606,6 @@ selectroute(struct sockaddr_in6 *dstsock
 			goto done;
 		}
 	}
-	/*
-	 * If the destination address is a multicast address and the outgoing
-	 * interface for the address is specified by the caller, use it.
-	 */
-	if (IN6_IS_ADDR_MULTICAST(dst) &&
-	    mopts != NULL && (ifp = mopts->im6o_multicast_ifp) != NULL) {
-		goto done; /* we do not need a route for multicast. */
-	}
 
   getroute:
 	/*


More information about the svn-src-all mailing list