* sysdeps/posix/getaddrinfo.c (get_scope): Loopback addresses have
authorUlrich Drepper <drepper@redhat.com>
Wed, 14 May 2008 22:33:51 +0000 (22:33 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 14 May 2008 22:33:51 +0000 (22:33 +0000)
to be treated like link-local addresses.

ChangeLog
sysdeps/posix/getaddrinfo.c

index 5a06103..eec1fb9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2008-05-14  Ulrich Drepper  <drepper@redhat.com>
 
+       * sysdeps/posix/getaddrinfo.c (get_scope): Loopback addresses have
+       to be treated like link-local addresses.
+
        * sysdeps/posix/getaddrinfo.c (getaddrinfo): Add _res_hconf_init
        if necessary.
 
index c8965ef..855c5a5 100644 (file)
@@ -1112,7 +1112,10 @@ get_scope (const struct sockaddr_in6 *in6)
     {
       if (! IN6_IS_ADDR_MULTICAST (&in6->sin6_addr))
        {
-         if (IN6_IS_ADDR_LINKLOCAL (&in6->sin6_addr))
+         if (IN6_IS_ADDR_LINKLOCAL (&in6->sin6_addr)
+             /* RFC 4291 2.5.3 says that the loopback address is to be
+                treated like a link-local address.  */
+             || IN6_IS_ADDR_LOOPBACK (&in6->sin6_addr))
            scope = 2;
          else if (IN6_IS_ADDR_SITELOCAL (&in6->sin6_addr))
            scope = 5;