--------------------- PatchSet 1428 Date: 2005/06/01 16:27:30 Author: rmartinez Branch: squid3-ipv6 Tag: (none) Log: Simplifying INET6 branch. Still can be cleaner. Any way multicast is NOT ready Members: src/multicast.cc:1.2.10.2->1.2.10.3 Index: squid3/src/multicast.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/multicast.cc,v retrieving revision 1.2.10.2 retrieving revision 1.2.10.3 diff -u -r1.2.10.2 -r1.2.10.3 --- squid3/src/multicast.cc 5 May 2005 09:21:53 -0000 1.2.10.2 +++ squid3/src/multicast.cc 1 Jun 2005 16:27:30 -0000 1.2.10.3 @@ -1,6 +1,6 @@ /* - * $Id: multicast.cc,v 1.2.10.2 2005/05/05 09:21:53 rmartinez Exp $ + * $Id: multicast.cc,v 1.2.10.3 2005/06/01 16:27:30 rmartinez Exp $ * * DEBUG: section 7 Multicast * AUTHOR: Martin Hamilton @@ -59,11 +59,7 @@ { #ifdef IP_MULTICAST_TTL int fd = theInIcpConnection; -#if INET6 - struct ipv6_mreq mr; -#else - struct ip_mreq mr; -#endif + struct IP_MREQ mr; int i; int x; char c = 0; @@ -79,24 +75,19 @@ #if INET6 mr.ipv6mr_multiaddr = *(ia->in_addrs + i); - mr.ipv6mr_interface = -1; /* ** FIXME ** we need specify an interface number */ - x = setsockopt(fd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP /*IP_JOIN_GROUP*/, /* ** FIXME ** */ - (char *) &mr, sizeof(struct ipv6_mreq)); + mr.ipv6mr_interface = 0; /* ** FIXME ** we need specify an interface number */ #else mr.imr_multiaddr = *(ia->in_addrs + i); mr.imr_interface = INADDR_ANY_ASSIGN; - x = setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, - (char *) &mr, sizeof(struct ip_mreq)); #endif + x = setsockopt(fd, (AF_FAMILY==AF_INET6) ? IPPROTO_IPV6 : IPPROTO_IP, (AF_FAMILY==AF_INET6) ? IPV6_ADD_MEMBERSHIP : IPV6_ADD_MEMBERSHIP /*IP_JOIN_GROUP*/, /* ** FIXME ** */ + (char *) &mr, sizeof(struct IP_MREQ)); + if (x < 0) debug(7, 1) ("comm_join_mcast_groups: FD %d, [%s]\n", fd, INET_NTOA(*(ia->in_addrs + i))); -#if INET6 - x = setsockopt(fd, IPPROTO_IPV6, IP_MULTICAST_LOOP, &c, 1); -#else - x = setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, &c, 1); -#endif + x = setsockopt(fd, (AF_FAMILY==AF_INET6) ? IPPROTO_IPV6 : IPPROTO_IP, IP_MULTICAST_LOOP, &c, 1); if (x < 0) debug(7, 1) ("Can't disable multicast loopback: %s\n", xstrerror());