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
---------------------------------------------------------------------------------|
|struct sockaddr        | Abstract for AF_INET,AF_UNIX.
---------------------------------------------------------------------------------|
|struct sockaddr_in     | Concrete for AF_INET => IPv4 addr + port
---------------------------------------------------------------------------------|
|struct sockaddr_un     | Concrete for AF_UNIX => file path
---------------------------------------------------------------------------------|
|struct sockaddr_storage| Abstract for AF_INET,AF_INET6 (AF_UNIX?)
---------------------------------------------------------------------------------|
|struct sockaddr_in6    | Concrete for AF_INET6 => IPv6 addr+port+flw_inf+scp_id
---------------------------------------------------------------------------------|
|struct in_addr         | Concrete IPv4 address format ( NOT include port)
---------------------------------------------------------------------------------|
|struct in6_addr        | Concrete IPv6 address format (NOT include port)
---------------------------------------------------------------------------------|

Reply via email to