Hi,
I maintain a Debian package for the IPv6 CVS branch of squid 2.5.x. On
the debian-ipv6 list Kalle Olavi Niemitalo mentioned some bugs in
lib/rfc1035.c. If you are interested, the patch for the file is attached.
Regards,
Oliver
diff -urNad /home/racon/squid/squid_2.5.3ipv6-20030616/lib/rfc1035.c
squid_2.5.3ipv6-20030616/lib/rfc1035.c
--- /home/racon/squid/squid_2.5.3ipv6-20030616/lib/rfc1035.c 2003-06-16
21:28:24.000000000 -0300
+++ squid_2.5.3ipv6-20030616/lib/rfc1035.c 2003-06-16 22:43:43.000000000 -0300
@@ -545,7 +545,7 @@
#if INET6
if (IN6_IS_ADDR_V4MAPPED(&addr)) {
- i = (unsigned int) ntohl(addr.s6_addr[3]);
+ i = (unsigned int) ntohl(addr.s6_addr32[3]);
#else
i = (unsigned int) ntohl(addr.s_addr);
#endif
@@ -557,28 +557,27 @@
#if INET6
} else {
/* a real IPv6 address */
- unsigned char * a = (unsigned char *)rev;
snprintf(rev, 72,
"%x.%x.%x.%x.%x.%x.%x.%x."
"%x.%x.%x.%x.%x.%x.%x.%x."
"%x.%x.%x.%x.%x.%x.%x.%x."
"%x.%x.%x.%x.%x.%x.%x.%x.ip6.int",
- a[0] & 0x0f, a[0] & 0xf0,
- a[1] & 0x0f, a[1] & 0xf0,
- a[2] & 0x0f, a[2] & 0xf0,
- a[3] & 0x0f, a[3] & 0xf0,
- a[4] & 0x0f, a[4] & 0xf0,
- a[5] & 0x0f, a[5] & 0xf0,
- a[6] & 0x0f, a[6] & 0xf0,
- a[7] & 0x0f, a[7] & 0xf0,
- a[8] & 0x0f, a[8] & 0xf0,
- a[9] & 0x0f, a[9] & 0xf0,
- a[10] & 0x0f, a[10] & 0xf0,
- a[11] & 0x0f, a[11] & 0xf0,
- a[12] & 0x0f, a[12] & 0xf0,
- a[13] & 0x0f, a[13] & 0xf0,
- a[14] & 0x0f, a[14] & 0xf0,
- a[15] & 0x0f, a[15] & 0xf0);
+ addr.s6_addr[15] & 0x0f, addr.s6_addr[15] >> 4,
+ addr.s6_addr[14] & 0x0f, addr.s6_addr[14] >> 4,
+ addr.s6_addr[13] & 0x0f, addr.s6_addr[13] >> 4,
+ addr.s6_addr[12] & 0x0f, addr.s6_addr[12] >> 4,
+ addr.s6_addr[11] & 0x0f, addr.s6_addr[11] >> 4,
+ addr.s6_addr[10] & 0x0f, addr.s6_addr[10] >> 4,
+ addr.s6_addr[9] & 0x0f, addr.s6_addr[9] >> 4,
+ addr.s6_addr[8] & 0x0f, addr.s6_addr[8] >> 4,
+ addr.s6_addr[7] & 0x0f, addr.s6_addr[7] >> 4,
+ addr.s6_addr[6] & 0x0f, addr.s6_addr[6] >> 4,
+ addr.s6_addr[5] & 0x0f, addr.s6_addr[5] >> 4,
+ addr.s6_addr[4] & 0x0f, addr.s6_addr[4] >> 4,
+ addr.s6_addr[3] & 0x0f, addr.s6_addr[3] >> 4,
+ addr.s6_addr[2] & 0x0f, addr.s6_addr[2] >> 4,
+ addr.s6_addr[1] & 0x0f, addr.s6_addr[1] >> 4,
+ addr.s6_addr[0] & 0x0f, addr.s6_addr[0] >> 4);
}
#endif
h.id = rfc1035Qid();