Re: [RFC] Removing most use of #if USE_IPV6 conditional

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Sun, 27 Jun 2010 17:19:51 +1200

Henrik Nordström wrote:
> lör 2010-06-26 klockan 14:22 -0600 skrev Alex Rousskov:
>
>> In other words, define USE_IPV6 as "use IPv6 addresses in system calls"?
>
> Correct.
>
>> And currently it is defined as "handle IPv6 addresses in URLs and use
>> IPv6 addresses in system calls"?
>
> Yes. Without USE_IPV6 we fails to even parse anything that looks like
> IPv6.
>
>> +1. Just document what USE_IPV6 means.
>
> Great.
>

At present it means enable/disable IPv6 support in IP::Address, with a
corollary of also disabling stuff that requires that storage support.

If you really wished it could be broken down into two, one for disabling
just connectivity, the other for disabling full storage and up support.

The cases Henrik points to:

  * URL parsing - require IPv6 address storage and library support to
verify its an IP and not "[example.com]"
   ** okay the url.cc ones can all go.
   ** IPv4-only case will end up dying with parsing unable to resolve
host name "dead::beef" instead of dying with invalid hostname "[dead::beef]"

  * DNS AAAA resolution - requires storage of the AAAA results to be
worth the extra processing. The only gain in allowing this would be to
show extra stats to admin of "you could have used IPv6 to get domain X"

  * FTP - requires IPv6 connectivity to even advertise EPSV (2) to the
server. Or the server is liable to respond saying "I am opening a port
at dead::beef:1"
   ** the other two (response handling) cases where the IPv6-only code
is run-time wrapped could go:
      if ( AI->ai_addrlen != sizeof(struct sockaddr_in) )
      if (addr.IsIPv6())

  * The UDP and TCP logging module ones can go as run-time wrapped.
   ** if (addr.IsIPv4())

  * Some of the SNMP ones are run-time tested. But the rest require v6
storage types.

Are there any others annoying you Henrik?

Amos

-- 
Please be using
   Current Stable Squid 2.7.STABLE9 or 3.1.4
Received on Sun Jun 27 2010 - 05:19:59 MDT

This archive was generated by hypermail 2.2.0 : Sun Jun 27 2010 - 12:00:10 MDT