svn commit: r230111 - in stable/9: lib/libc/net sbin/route
Hajimu UMEMOTO
ume at FreeBSD.org
Sat Jan 14 19:08:40 UTC 2012
Author: ume
Date: Sat Jan 14 19:08:39 2012
New Revision: 230111
URL: http://svn.freebsd.org/changeset/base/230111
Log:
MFC r229766:
Handle the internal scope address representation of the KAME IPv6
stack for the node-local multicast address.
Modified:
stable/9/lib/libc/net/getaddrinfo.c
stable/9/sbin/route/route.c
Directory Properties:
stable/9/lib/libc/ (props changed)
stable/9/sbin/route/ (props changed)
Modified: stable/9/lib/libc/net/getaddrinfo.c
==============================================================================
--- stable/9/lib/libc/net/getaddrinfo.c Sat Jan 14 18:16:10 2012 (r230110)
+++ stable/9/lib/libc/net/getaddrinfo.c Sat Jan 14 19:08:39 2012 (r230111)
@@ -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/9/sbin/route/route.c
==============================================================================
--- stable/9/sbin/route/route.c Sat Jan 14 18:16:10 2012 (r230110)
+++ stable/9/sbin/route/route.c Sat Jan 14 19:08:39 2012 (r230111)
@@ -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);
More information about the svn-src-stable-9
mailing list