Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Jan 2012 19:22:45 +0000 (UTC)
From:      Hajimu UMEMOTO <ume@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r230112 - in stable/8: lib/libc/net sbin/route
Message-ID:  <201201141922.q0EJMjmF045696@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ume
Date: Sat Jan 14 19:22:45 2012
New Revision: 230112
URL: http://svn.freebsd.org/changeset/base/230112

Log:
  MFC r229766:
    Handle the internal scope address representation of the KAME IPv6
    stack for the node-local multicast address.

Modified:
  stable/8/lib/libc/net/getaddrinfo.c
  stable/8/sbin/route/route.c
Directory Properties:
  stable/8/lib/libc/   (props changed)
  stable/8/sbin/route/   (props changed)

Modified: stable/8/lib/libc/net/getaddrinfo.c
==============================================================================
--- stable/8/lib/libc/net/getaddrinfo.c	Sat Jan 14 19:08:39 2012	(r230111)
+++ stable/8/lib/libc/net/getaddrinfo.c	Sat Jan 14 19:22:45 2012	(r230112)
@@ -1576,7 +1576,8 @@ ip6_str2scopeid(char *scope, struct sock
 	if (*scope == '\0')
 		return -1;
 
-	if (IN6_IS_ADDR_LINKLOCAL(a6) || IN6_IS_ADDR_MC_LINKLOCAL(a6)) {
+	if (IN6_IS_ADDR_LINKLOCAL(a6) || IN6_IS_ADDR_MC_LINKLOCAL(a6) ||
+	    IN6_IS_ADDR_MC_NODELOCAL(a6)) {
 		/*
 		 * We currently assume a one-to-one mapping between links
 		 * and interfaces, so we simply use interface indices for

Modified: stable/8/sbin/route/route.c
==============================================================================
--- stable/8/sbin/route/route.c	Sat Jan 14 19:08:39 2012	(r230111)
+++ stable/8/sbin/route/route.c	Sat Jan 14 19:22:45 2012	(r230112)
@@ -375,7 +375,8 @@ routename(struct sockaddr *sa)
 #ifdef __KAME__
 		if (sa->sa_len == sizeof(struct sockaddr_in6) &&
 		    (IN6_IS_ADDR_LINKLOCAL(&sin6.sin6_addr) ||
-		     IN6_IS_ADDR_MC_LINKLOCAL(&sin6.sin6_addr)) &&
+		     IN6_IS_ADDR_MC_LINKLOCAL(&sin6.sin6_addr) ||
+		     IN6_IS_ADDR_MC_NODELOCAL(&sin6.sin6_addr)) &&
 		    sin6.sin6_scope_id == 0) {
 			sin6.sin6_scope_id =
 			    ntohs(*(u_int16_t *)&sin6.sin6_addr.s6_addr[2]);
@@ -500,7 +501,8 @@ netname(struct sockaddr *sa)
 #ifdef __KAME__
 		if (sa->sa_len == sizeof(struct sockaddr_in6) &&
 		    (IN6_IS_ADDR_LINKLOCAL(&sin6.sin6_addr) ||
-		     IN6_IS_ADDR_MC_LINKLOCAL(&sin6.sin6_addr)) &&
+		     IN6_IS_ADDR_MC_LINKLOCAL(&sin6.sin6_addr) ||
+		     IN6_IS_ADDR_MC_NODELOCAL(&sin6.sin6_addr)) &&
 		    sin6.sin6_scope_id == 0) {
 			sin6.sin6_scope_id =
 			    ntohs(*(u_int16_t *)&sin6.sin6_addr.s6_addr[2]);
@@ -1002,7 +1004,8 @@ getaddr(int which, char *str, struct hos
 		memcpy(&su->sin6, res->ai_addr, sizeof(su->sin6));
 #ifdef __KAME__
 		if ((IN6_IS_ADDR_LINKLOCAL(&su->sin6.sin6_addr) ||
-		     IN6_IS_ADDR_MC_LINKLOCAL(&su->sin6.sin6_addr)) &&
+		     IN6_IS_ADDR_MC_LINKLOCAL(&su->sin6.sin6_addr) ||
+		     IN6_IS_ADDR_MC_NODELOCAL(&su->sin6.sin6_addr)) &&
 		    su->sin6.sin6_scope_id) {
 			*(u_int16_t *)&su->sin6.sin6_addr.s6_addr[2] =
 				htons(su->sin6.sin6_scope_id);



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