Detecting IPv6 support
Martin v. Löwis
loewis at informatik.hu-berlin.de
Wed Sep 18 02:48:52 EDT 2002
Pekka Pessi <Pekka.Pessi at nokia.com> writes:
> I have Redhat 7.3. The prepackaged RPMs have disabled IPv6, but
> the underlying OS supports it. So, this is what happens with the
> bind() system call, for instance:
I see. Testing for that isn't really supported. A reliable way is to
inspect pyconfig.h, whose location is available through
distutils.sysconfig.get_config_h_filename(); check whether it contains
a line
#define ENABLE_IPV6 1
(more precisely, check whether the line containing ENABLE_IPV6 does
not contain undef, and starts with whitespace*#.
> So AF_INET6 is there, and I can create a socket, but everything
> dealing with addresses fails.
That, perhaps, gives a reliable test, too: See whether
socket.getaddrinfo("::",80) succeeds.
Determining whether the system "supports" IPv6 is more tricky: If you
can create an INET6 socket, the system supports the protocol. I don't
know how to find out whether there are any configured non-local
interfaces. I don't think there is a way to determine whether the
system has v6 connectivity to "the world".
Regards,
Martin
More information about the Python-list
mailing list