--- Begin Message ---
Package: libc6
Version: 2.6.1-2
Severity: important
As the title implies, IPv6 networking is now broken when the system
does not have a globally scoped IPv6 address. As I discovered a few
weeks ago, this has a nasty side effect of breaking all local IPv6
services, because they are not longer considered.
I have written a test program (addrtest, attached) to demonstrate.
Compile with
c99 -o addrtest addrtest.c
and run with no arguments. To demonstrate the problem with a
Leafnode NNTP server running via openbsd-inetd on the localhost:
% grep nntp /etc/inetd.conf
nntp stream tcp6 nowait news /usr/sbin/tcpd /usr/sbin/leafnode
% netstat --tcp -l | grep nntp
tcp6 0 0 *:nntp *:* LISTEN
% /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:11:24:75:6D:56
inet addr:192.168.156.21 Bcast:192.168.156.255 Mask:255.255.255.0
inet6 addr: fe80::211:24ff:fe75:6d56/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:244661 errors:0 dropped:0 overruns:0 frame:0
TX packets:170326 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:268682462 (256.2 MiB) TX bytes:16191957 (15.4 MiB)
Interrupt:41 Base address:0xa400
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1200579 errors:0 dropped:0 overruns:0 frame:0
TX packets:1200579 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:362353281 (345.5 MiB) TX bytes:362353281 (345.5 MiB)
% ./addrtest
Addrinfo for 0x100120c0
Flags: 32
Family: 2
Socket Type: 1
Protocol: 6 (tcp)
Canonical name: (null)
Socket Address (len=16):
Port: 119
IPv4 Address: 127.0.0.1
Addrinfo for 0x100120f8
Flags: 32
Family: 2
Socket Type: 2
Protocol: 17 (udp)
Canonical name: (null)
Socket Address (len=16):
Port: 119
IPv4 Address: 127.0.0.1
% sudo /etc/init.d/aiccu start
Starting SixXS Automatic IPv6 Connectivity Client Utility (aiccu)...Tunnel Information for T11225:
POP Id : iedub01
IPv6 Local : 2001:770:100:ca::2/64
IPv6 Remote : 2001:770:100:ca::1/64
Tunnel Type : 6in4-heartbeat
Adminstate : enabled
Userstate : enabled
.
% /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:11:24:75:6D:56
inet addr:192.168.156.21 Bcast:192.168.156.255 Mask:255.255.255.0
inet6 addr: fe80::211:24ff:fe75:6d56/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:244762 errors:0 dropped:0 overruns:0 frame:0
TX packets:170366 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:268691686 (256.2 MiB) TX bytes:16195883 (15.4 MiB)
Interrupt:41 Base address:0xa400
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1200584 errors:0 dropped:0 overruns:0 frame:0
TX packets:1200584 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:362354897 (345.5 MiB) TX bytes:362354897 (345.5 MiB)
sixxs Link encap:IPv6-in-IPv4
inet6 addr: 2001:770:100:ca::2/64 Scope:Global
inet6 addr: fe80::c0a8:9c15/64 Scope:Link
UP POINTOPOINT RUNNING NOARP MTU:1280 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
% ./addrtest
Addrinfo for 0x10012140
Flags: 32
Family: 2
Socket Type: 1
Protocol: 6 (tcp)
Canonical name: (null)
Socket Address (len=16):
Port: 119
IPv4 Address: 127.0.0.1
Addrinfo for 0x100128b0
Flags: 32
Family: 2
Socket Type: 2
Protocol: 17 (udp)
Canonical name: (null)
Socket Address (len=16):
Port: 119
IPv4 Address: 127.0.0.1
Addrinfo for 0x100128e8
Flags: 32
Family: 2
Socket Type: 3
Protocol: 0 (ip)
Canonical name: (null)
Socket Address (len=16):
Port: 119
IPv4 Address: 127.0.0.1
Addrinfo for 0x100120c0
Flags: 32
Family: 10
Socket Type: 1
Protocol: 6 (tcp)
Canonical name: (null)
Socket Address (len=28):
Port: 119
IPv6 Address: ::1
Addrinfo for 0x10012100
Flags: 32
Family: 10
Socket Type: 2
Protocol: 17 (udp)
Canonical name: (null)
Socket Address (len=28):
Port: 119
IPv6 Address: ::1
As the above demonstrates, the service is not actually accessible
when the SiXXS link is down, due to only (invalid) IPv4 results
being returned. Even if they were valid, TCP wrappers would not
allow the connection. This means clients like slrn and Gnus can
not connect. It is reasonable to expect a service running on
the localhost to be accessible whether or not other unrelated
interfaces are up or down.
Regards,
Roger
-- System Information:
Debian Release: lenny/sid
APT prefers unstable
APT policy: (990, 'unstable')
Architecture: powerpc (ppc)
Kernel: Linux 2.6.22-2-powerpc
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages libc6 depends on:
ii libgcc1 1:4.2.1-5 GCC support library
libc6 recommends no packages.
-- no debconf information
/* Copyright © 2007 Roger Leigh <rleigh@debian.org>
*
* addrtest is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* addrtest is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*********************************************************************/
#define _GNU_SOURCE
#include <errno.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <netinet/in.h>
void
fail (const char *msg)
{
fprintf(stderr, "E: %s: %s\n", msg, strerror(errno));
exit(EXIT_FAILURE);
}
void
gaifail (const char *msg, int code)
{
fprintf(stderr, "E: %s: %s\n", msg, gai_strerror(code));
exit(EXIT_FAILURE);
}
int
main (void)
{
int status;
struct addrinfo hints;
hints.ai_flags = AI_ADDRCONFIG;
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = 0;
hints.ai_protocol = 0;
struct addrinfo *result = NULL;
if((status = getaddrinfo("ip6-localhost", "119", &hints, &result)) != 0)
//if((status = getaddrinfo("noc.sixxs.net", "https", NULL, &result)) != 0)
gaifail("Failed to get addrinfo", status);
{
struct addrinfo *cur = result;
while (cur->ai_next)
{
// Dump addrinfo
printf("\nAddrinfo for %p\n", (void *) cur);
printf("Flags:\t\t%d\n", cur->ai_flags);
printf("Family:\t\t%d\n", cur->ai_family);
printf("Socket Type:\t%d\n", cur->ai_socktype);
struct protoent *protocol = getprotobynumber(cur->ai_protocol);
if (protocol)
printf("Protocol:\t%d (%s)\n", cur->ai_protocol, protocol->p_name);
else
printf("Protocol:\t%d (Unknown)\n", cur->ai_protocol);
printf("Canonical name:\t%s\n", cur->ai_canonname);
if (cur->ai_addr)
{
printf("Socket Address (len=%d):\n", cur->ai_addrlen);
switch(cur->ai_family)
{
case AF_INET:
{
struct sockaddr_in *addr = (struct sockaddr_in *)cur->ai_addr;
printf(" Port:\t\t%d\n", ntohs(addr->sin_port));
char paddr[INET_ADDRSTRLEN];
if (inet_ntop(AF_INET, &addr->sin_addr, &paddr[0], cur->ai_addrlen) == NULL)
fail("Converting IPv4 address to readable form");
else
printf(" IPv4 Address:\t%s\n", &paddr[0]);
}
break;
case AF_INET6:
{
struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)cur->ai_addr;
printf(" Port:\t\t%d\n", ntohs(addr6->sin6_port));
char paddr[INET6_ADDRSTRLEN];
if (inet_ntop(AF_INET6, &addr6->sin6_addr, &paddr[0], cur->ai_addrlen) == NULL)
fail("Converting IPv6 address to readable form");
else
printf(" IPv6 Address:\t%s\n", &paddr[0]);
}
break;
default:
printf(" Unknown address family\n");
break;
}
}
cur = cur->ai_next;
}
}
freeaddrinfo(result);
return 0;
}
--- End Message ---
--- Begin Message ---
Source: glibc
Source-Version: 2.6.1-4
We believe that the bug you reported is fixed in the latest version of
glibc, which is due to be installed in the Debian FTP archive:
glibc-doc_2.6.1-4_all.deb
to pool/main/g/glibc/glibc-doc_2.6.1-4_all.deb
glibc_2.6.1-4.diff.gz
to pool/main/g/glibc/glibc_2.6.1-4.diff.gz
glibc_2.6.1-4.dsc
to pool/main/g/glibc/glibc_2.6.1-4.dsc
libc6-dbg_2.6.1-4_amd64.deb
to pool/main/g/glibc/libc6-dbg_2.6.1-4_amd64.deb
libc6-dev-i386_2.6.1-4_amd64.deb
to pool/main/g/glibc/libc6-dev-i386_2.6.1-4_amd64.deb
libc6-dev_2.6.1-4_amd64.deb
to pool/main/g/glibc/libc6-dev_2.6.1-4_amd64.deb
libc6-i386_2.6.1-4_amd64.deb
to pool/main/g/glibc/libc6-i386_2.6.1-4_amd64.deb
libc6-pic_2.6.1-4_amd64.deb
to pool/main/g/glibc/libc6-pic_2.6.1-4_amd64.deb
libc6-prof_2.6.1-4_amd64.deb
to pool/main/g/glibc/libc6-prof_2.6.1-4_amd64.deb
libc6-udeb_2.6.1-4_amd64.udeb
to pool/main/g/glibc/libc6-udeb_2.6.1-4_amd64.udeb
libc6_2.6.1-4_amd64.deb
to pool/main/g/glibc/libc6_2.6.1-4_amd64.deb
libnss-dns-udeb_2.6.1-4_amd64.udeb
to pool/main/g/glibc/libnss-dns-udeb_2.6.1-4_amd64.udeb
libnss-files-udeb_2.6.1-4_amd64.udeb
to pool/main/g/glibc/libnss-files-udeb_2.6.1-4_amd64.udeb
locales-all_2.6.1-4_amd64.deb
to pool/main/g/glibc/locales-all_2.6.1-4_amd64.deb
locales_2.6.1-4_all.deb
to pool/main/g/glibc/locales_2.6.1-4_all.deb
nscd_2.6.1-4_amd64.deb
to pool/main/g/glibc/nscd_2.6.1-4_amd64.deb
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to 441857@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Aurelien Jarno <aurel32@debian.org> (supplier of updated glibc package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Format: 1.7
Date: Thu, 13 Sep 2007 17:05:17 +0200
Source: glibc
Binary: libc0.1-prof libc6-dev-amd64 locales-all libc6-i686 libc6-dev-ppc64 libc0.3-pic glibc-doc libc0.3 libc6-dev-mipsn32 libc0.1-i686 libc0.1-i386 libc6-mips64 libc6.1-dev libc6-s390x libnss-files-udeb libc0.1-dev-i386 libc6-dev-sparc64 libc6-i386 libc0.3-dev libc6-udeb libc6-dbg libc6.1-pic libc6-dev libc0.3-prof libc0.1-udeb libc6-dev-i386 libc6.1-prof libc6-mipsn32 libc0.1-dev locales libc6-pic libc0.3-udeb libc6-dev-powerpc libc0.1-pic libc6-ppc64 libc0.3-dbg libc0.1-dbg libc6-amd64 libc0.1 libc6-prof libc6-xen libc6-dev-mips64 libc6-powerpc libc6 libc6-sparcv9b libc6.1-udeb libc6.1-dbg nscd libc6-sparc64 libnss-dns-udeb libc6.1 libc6-dev-s390x
Architecture: source amd64 all
Version: 2.6.1-4
Distribution: unstable
Urgency: low
Maintainer: Aurelien Jarno <aurel32@debian.org>
Changed-By: Aurelien Jarno <aurel32@debian.org>
Description:
glibc-doc - GNU C Library: Documentation
libc6 - GNU C Library: Shared libraries
libc6-dbg - GNU C Library: Libraries with debugging symbols
libc6-dev - GNU C Library: Development Libraries and Header Files
libc6-dev-i386 - GNU C Library: 32bit development libraries for AMD64
libc6-i386 - GNU C Library: 32bit shared libraries for AMD64
libc6-pic - GNU C Library: PIC archive library
libc6-prof - GNU C Library: Profiling Libraries
libc6-udeb - GNU C Library: Shared libraries - udeb (udeb)
libnss-dns-udeb - GNU C Library: NSS helper for DNS - udeb (udeb)
libnss-files-udeb - GNU C Library: NSS helper for files - udeb (udeb)
locales - GNU C Library: National Language (locale) data [support]
locales-all - GNU C Library: Precompiled locale data
nscd - GNU C Library: Name Service Cache Daemon
Closes: 441026 441355 441824 441857 441959 442101 442104
Changes:
glibc (2.6.1-4) unstable; urgency=low
.
* Disable any/local-ipv6-lookup.diff as it is causing breakages.
Closes: bug#441857.
* any/local-sysmacros.diff: use __inline instead of inline for
compatibility with ANSI. Closes: #441959.
* patches/localedata/tailor-iso14651_t1.diff: correctly fix fi_FI
locale. Closes: bug#441026.
* debian/rules.d/debhelper.mk: fix regex. Closes: #441824.
* Update French debconf translation, by Christian Perrier. Closes:
#442101.
* any/submitted-regex-collate.diff: fix regex engine for multibyte
characters and C collation. Closes: #441355.
* debian/local/manpages/locale-gen.8: fix manpage. Closes: #442104.
Files:
5549398b201b86e0381fb24b909d06ac 2059 libs required glibc_2.6.1-4.dsc
28cbad9100a811c20e76b7ddd2024727 678976 libs required glibc_2.6.1-4.diff.gz
f0713d389e90cc02731a12e64ecc2a14 1596666 doc optional glibc-doc_2.6.1-4_all.deb
87fdd626b98ab4bccf45db866fe48de8 4399204 libs standard locales_2.6.1-4_all.deb
e21d60c5b08354f2fc5a0fab375d5405 4916228 libs required libc6_2.6.1-4_amd64.deb
2a297149a9b2dfc13fbf48b2b9ecfcf6 2494886 libdevel optional libc6-dev_2.6.1-4_amd64.deb
902e283906bbe57347c94b8587d32d34 1931006 libdevel extra libc6-prof_2.6.1-4_amd64.deb
644e895923b7bd59f8bb558a9445ee7b 1466576 libdevel optional libc6-pic_2.6.1-4_amd64.deb
51423688ebcfb4352d3c3a264fae9786 2468524 libs extra locales-all_2.6.1-4_amd64.deb
bf6683f7177fdedb8141aff1f60aa3e6 3706012 libs optional libc6-i386_2.6.1-4_amd64.deb
ba3ed101070afa50a198136c428136ba 1403854 libdevel optional libc6-dev-i386_2.6.1-4_amd64.deb
b4f6b83a4cff0b69ade1377eb16ae34c 165188 admin optional nscd_2.6.1-4_amd64.deb
5913e24cbb8176e819614f43fb00e0a0 5229400 libdevel extra libc6-dbg_2.6.1-4_amd64.deb
20f3216c6f3fb474da7d3bf6ff7f0833 1112134 debian-installer extra libc6-udeb_2.6.1-4_amd64.udeb
f8e3ef9ed2b065c48d1a06a53b306fbc 9742 debian-installer extra libnss-dns-udeb_2.6.1-4_amd64.udeb
922564515accfdf47d327318a9563aed 17874 debian-installer extra libnss-files-udeb_2.6.1-4_amd64.udeb
Package-Type: udeb
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFG6dHpw3ao2vG823MRAvg3AJ4wmiixjKDCjfpYbp5wRurqXjWyRgCfbIrH
sN83QxRtTG70nKiceVDS2xg=
=BqvK
-----END PGP SIGNATURE-----
--- End Message ---