[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#455671: marked as done (libc6: Please support fe80::[...]%eth0-like nameservers in /etc/resolv.conf)



Your message dated Wed, 5 Mar 2008 10:53:12 +0100
with message-id <20080305095312.GA27860@volta.aurel32.net>
and subject line Re: libc6: Please support fe80::[...]%eth0-like nameservers in /etc/resolv.conf
has caused the Debian Bug report #455671,
regarding libc6: Please support fe80::[...]%eth0-like nameservers in /etc/resolv.conf
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
455671: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=455671
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: libc6
Version: 2.7-4
Severity: wishlist
Tags: patch

It seems that glibc's resolver does not support IPv6 link-local
addresses with an explicit scope (like fe80::[...]%eth0), in the
nameserver options in /etc/resolv.conf. Currently, nameservers with a
scope fail to be parsed. Nameservers with a link-local address (without
scope) are parsed and used, but obviously do not work (connect() fails
with EINVAL because a sin6_scope_id of 0 is used with the link-local
address).

With the apparition of the new RDNSS option (RFC5006), which allows
for DNS configuration through stateless autoconf, we expect that IPv6
link-local resolvers may be used, and set into /etc/resolv.conf.
Kernel-side support is included in Linux 2.6.24, and the corresponding
userland RDNSS daemon is currently under development and will be shipped
in the next release of the ndisc6 package. We would need glibc to
support this feature to integrate our work.

Please review this patch, and consider it for application and submission
to upstream.

--- resolv/res_init.c	2007-12-09 17:30:57.000000000 +0100
+++ resolv/res_init.c	2007-12-09 18:19:40.000000000 +0100
@@ -74,11 +74,14 @@ static const char rcsid[] = "$BINDId: re
 #include <sys/socket.h>
 #include <sys/time.h>
 
+#include <net/if.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <arpa/nameser.h>
 
+#include <assert.h>
 #include <ctype.h>
+#include <netdb.h>
 #include <resolv.h>
 #include <stdio.h>
 #include <stdio_ext.h>
@@ -327,6 +330,8 @@ __res_vinit(res_state statp, int preinit
 
                         if ((el = strchr(cp, '\n')) != NULL)
                             *el = '\0';
+                        if ((el = strchr(cp, SCOPE_DELIMITER)) != NULL)
+                            *el = '\0';
                         if ((*cp != '\0') &&
                             (inet_pton(AF_INET6, cp, &a6) > 0)) {
                             struct sockaddr_in6 *sa6;
@@ -336,6 +341,27 @@ __res_vinit(res_state statp, int preinit
                                 sa6->sin6_addr = a6;
                                 sa6->sin6_family = AF_INET6;
                                 sa6->sin6_port = htons(NAMESERVER_PORT);
+
+                                if (el != NULL) {
+                                    int try_numericscope = 0;
+                                    if (IN6_IS_ADDR_LINKLOCAL(&a6)
+                                        || IN6_IS_ADDR_MC_LINKLOCAL(&a6)) {
+                                        sa6->sin6_scope_id = if_nametoindex(el + 1);
+                                        if (sa6->sin6_scope_id == 0)
+                                            try_numericscope = 1;
+                                    } else
+                                        try_numericscope = 1;
+
+                                        if (try_numericscope != 0) {
+                                            char *end;
+                                            assert(sizeof(uint32_t) <= sizeof(unsigned long));
+                                            sa6->sin6_scope_id = (uint32_t) strtoul(el + 1, &end, 10);
+                                            if (*end != '\0')
+                                                sa6->sin6_scope_id = 0;
+                                    }
+                                } else
+                                    sa6->sin6_scope_id = 0;
+
 				statp->_u._ext.nsaddrs[nservall] = sa6;
 				statp->_u._ext.nssocks[nservall] = -1;
 				statp->_u._ext.nsmap[nservall] = MAXNS + 1;

Regards,

-- 
Pierre Ynard

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 2.6.23.8-grsec
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages libc6 depends on:
ii  libgcc1                       1:4.2.2-4  GCC support library

libc6 recommends no packages.

-- debconf information:
  glibc/restart-failed:
  glibc/restart-services:



--- End Message ---
--- Begin Message ---
Version: 2.7-9

On Tue, Dec 11, 2007 at 05:03:55AM +0100, Pierre Ynard wrote:
> Package: libc6
> Version: 2.7-4
> Severity: wishlist
> Tags: patch
> 
> It seems that glibc's resolver does not support IPv6 link-local
> addresses with an explicit scope (like fe80::[...]%eth0), in the
> nameserver options in /etc/resolv.conf. Currently, nameservers with a
> scope fail to be parsed. Nameservers with a link-local address (without
> scope) are parsed and used, but obviously do not work (connect() fails
> with EINVAL because a sin6_scope_id of 0 is used with the link-local
> address).
> 
> With the apparition of the new RDNSS option (RFC5006), which allows
> for DNS configuration through stateless autoconf, we expect that IPv6
> link-local resolvers may be used, and set into /etc/resolv.conf.
> Kernel-side support is included in Linux 2.6.24, and the corresponding
> userland RDNSS daemon is currently under development and will be shipped
> in the next release of the ndisc6 package. We would need glibc to
> support this feature to integrate our work.
> 
> Please review this patch, and consider it for application and submission
> to upstream.
> 

This patch has been applied in version 2.7-9, it's just that I forget to
add the bug number to the changelog. Closing the bug now.

-- 
  .''`.  Aurelien Jarno	            | GPG: 1024D/F1BCDB73
 : :' :  Debian developer           | Electrical Engineer
 `. `'   aurel32@debian.org         | aurelien@aurel32.net
   `-    people.debian.org/~aurel32 | www.aurel32.net


--- End Message ---

Reply to: