Re: Developer for IPv6 Squid patch.

From: Rafael Martinez Torres <rafael.martinez@dont-contact.us>
Date: Thu, 14 Apr 2005 11:54:06 +0200 (CEST)

Well, after having taken a look into the status of IPv6 on SQUID, things
are so:

STATUS:
-------
- squid-1.1: (KAME) For that SQUID was not so open to include it.

- squid-2.5: (Roger Venning) Build from module squid / branch s2_5 and
KAME patch, tag ipv6. (left over?)

- squid-3 : Build from HEAD, module squid3 / branch squid-3ipv6. (active)

SOME TECHNICAL COMMENTS:
-------------------
- squid-1.1: (unkown)

- squid-2.5: Excellent. Should be the master reference
for future work.

 ( See notes below on STRATEGY )

- squid-3: Very few changes. Some of then must be revised.

(Yes, Xuan, "struct sockaddr_storage" is neutral for IPv6-IPv4
programming, but If I'm not wrong it is not the counterpart of "struct
in_addr" as you suggest on include/utils.h...)

struct inaddr_storage
{
   struct sockaddr_storage embedded;
}

Take a look into the attached file.

STRATEGY:
---------

1.- I do subscribe conservative politics from SQUID, CVS.html/ Commit
checklist. Otherwise, we cannot warranty the suitability of the HEAD
branch. People involved usually have no time to end this work (even me
:-| ).

2.- The module/tag squid/ipv6 (not squid3) uses this portable hack at
src/defines.h

#ifdef INET6
#define IN_ADDR in6_addr
#else
#deine IN_ADDR in_addr
#endif

As there are many socket-related routines involved through the code, is is
preferable to read

struct IN_ADDR foo;

than

#ifdef INET6
struct in6_addr foo;
/*some else macros*/
#else
struct in_addr foo;
#endif

MANY-MANY TIMES ON A SOURCE-FILE. This become unreadable, since properly
speaking, IPv6 does not provide any application funcionality, like modules
snmp, wwcp...and your code is exhaustevely full of #ifdef INET6.

The drawback is you cannot "cvsmerge HEAD" before commit into main Squid
Release, since this affects the
prototypes on many routines on the HEAD branch.

-idnsPTRLookup(const struct in_addr addr, IDNSCB *callback, void *data).
+idnsPTRLookup(const struct IN_ADDR addr, IDNSCB *callback, void *data).

For the time beeing, I would ignore this conflict... WE have to test and
test...

3.- So the things, I would like to work on squid3/squid3-ipv6 branch
keeping an eye into squid/ipv6. For example, the configure.in is more robust on
squid/ipv6 than in squid3/squid3-ipv6. With some visual tools like
kompare and COMMON SENSE AIDED, you can include these routines on the
target squid3/squid3-ipv6.

  My first target is configure.in.

4.- By the way, as a jock, ENABLE_IPV6 is a miss-spell !! Should write
IPv6...!

------------------------------------------------------------------
PGP public key: http://www.ngn.euro6ix.org/IPv6/rafael.martinez.gpg

Received on Thu Apr 14 2005 - 03:54:20 MDT

This archive was generated by hypermail pre-2.1.9 : Sun May 01 2005 - 12:00:06 MDT