# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: henrik@henriknordstrom.net-20100514043944-\ # g3ebnh28azra2691 # target_branch: http://squid-cache.org/bzr/squid3/branches/SQUID_3_1/ # testament_sha1: e3f22f96d1ee2939e5e1d84baafba27b4f5074a0 # timestamp: 2010-05-14 06:41:15 +0200 # base_revision_id: henrik@henriknordstrom.net-20100514041330-\ # rjhy20x9gx4cu94c # # Begin patch === modified file 'src/cf.data.pre' --- src/cf.data.pre 2010-03-26 01:30:37 +0000 +++ src/cf.data.pre 2010-05-14 04:37:13 +0000 @@ -2837,7 +2837,7 @@ NAME: client_netmask TYPE: address LOC: Config.Addrs.client_netmask -DEFAULT: 255.255.255.255 +DEFAULT: no_addr DOC_START A netmask for client addresses in logfiles and cachemgr output. Change this to protect the privacy of your cache clients. @@ -4450,7 +4450,7 @@ NAME: wccp_router TYPE: address LOC: Config.Wccp.router -DEFAULT: 0.0.0.0 +DEFAULT: any_addr IFDEF: USE_WCCP DOC_START Use this option to define your WCCP ``home'' router for @@ -4816,14 +4816,14 @@ NAME: snmp_incoming_address TYPE: address LOC: Config.Addrs.snmp_incoming -DEFAULT: 0.0.0.0 +DEFAULT: any_addr IFDEF: SQUID_SNMP DOC_NONE NAME: snmp_outgoing_address TYPE: address LOC: Config.Addrs.snmp_outgoing -DEFAULT: 255.255.255.255 +DEFAULT: no_addr IFDEF: SQUID_SNMP DOC_START Just like 'udp_incoming_address', but for the SNMP port. @@ -4833,13 +4833,13 @@ snmp_outgoing_address is used for SNMP packets returned to SNMP agents. - The default snmp_incoming_address (0.0.0.0) is to listen on all + The default snmp_incoming_address is to listen on all available network interfaces. - If snmp_outgoing_address is set to 255.255.255.255 (the default) - it will use the same socket as snmp_incoming_address. Only - change this if you want to have SNMP replies sent using another - address than where this Squid listens for SNMP queries. + If snmp_outgoing_address is not set it will use the same socket + as snmp_incoming_address. Only change this if you want to have + SNMP replies sent using another address than where this Squid + listens for SNMP queries. NOTE, snmp_incoming_address and snmp_outgoing_address can not have the same value since they both use port 3401. @@ -4891,7 +4891,7 @@ NAME: udp_incoming_address TYPE: address LOC:Config.Addrs.udp_incoming -DEFAULT: 0.0.0.0 +DEFAULT: any_addr DOC_START udp_incoming_address is used for UDP packets received from other caches. @@ -4913,7 +4913,7 @@ NAME: udp_outgoing_address TYPE: address LOC: Config.Addrs.udp_outgoing -DEFAULT: 255.255.255.255 +DEFAULT: no_addr DOC_START udp_outgoing_address is used for UDP packets sent out to other caches. @@ -5115,7 +5115,7 @@ IFDEF: MULTICAST_MISS_STREAM TYPE: address LOC: Config.mcast_miss.addr -DEFAULT: 255.255.255.255 +DEFAULT: no_addr DOC_START If you enable this option, every "cache miss" URL will be sent out on the specified multicast address. === modified file 'src/comm.cc' --- src/comm.cc 2010-05-14 04:13:30 +0000 +++ src/comm.cc 2010-05-14 04:17:17 +0000 @@ -630,16 +630,6 @@ /* attempt native enabled port. */ sock = comm_openex(sock_type, proto, addr, flags, 0, note); -#if USE_IPV6 - /* under IPv6 there is the possibility IPv6 is present but disabled. */ - /* try again as IPv4-native */ - if ( sock < 0 && addr.IsIPv6() && addr.SetIPv4() ) { - /* attempt to open this IPv4-only. */ - sock = comm_openex(sock_type, proto, addr, flags, 0, note); - debugs(50, 2, HERE << "attempt open " << note << " socket on: " << addr); - } -#endif - return sock; } @@ -724,7 +714,24 @@ debugs(50, 3, "comm_openex: Attempt open socket for: " << addr ); - if ((new_socket = socket(AI->ai_family, AI->ai_socktype, AI->ai_protocol)) < 0) { + new_socket = socket(AI->ai_family, AI->ai_socktype, AI->ai_protocol); +#if USE_IPV6 + /* under IPv6 there is the possibility IPv6 is present but disabled. */ + /* try again as IPv4-native if possible */ + if ( new_socket < 0 && addr.IsIPv6() && addr.SetIPv4() ) { + /* attempt to open this IPv4-only. */ + addr.FreeAddrInfo(AI); + /* Setup the socket addrinfo details for use */ + addr.GetAddrInfo(AI); + AI->ai_socktype = sock_type; + AI->ai_protocol = proto; + debugs(50, 3, "comm_openex: Attempt fallback open socket for: " << addr ); + new_socket = socket(AI->ai_family, AI->ai_socktype, AI->ai_protocol); + debugs(50, 2, HERE << "attempt open " << note << " socket on: " << addr); + } +#endif + + if (new_socket < 0) { /* Increase the number of reserved fd's if calls to socket() * are failing because the open file table is full. This * limits the number of simultaneous clients */ === modified file 'src/ip/IpAddress.cc' --- src/ip/IpAddress.cc 2010-05-01 08:55:19 +0000 +++ src/ip/IpAddress.cc 2010-05-14 04:39:44 +0000 @@ -168,9 +168,6 @@ p1[i] &= p2[i]; } - /* we have found a situation where mask forms or destroys a IPv4 map. */ - check4Mapped(); - return changes; } @@ -288,6 +285,9 @@ const struct in6_addr IpAddress::v4_anyaddr = {{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }} }; +const struct in6_addr IpAddress::v4_noaddr = {{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }} +}; const struct in6_addr IpAddress::v6_noaddr = {{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }} }; @@ -511,9 +511,6 @@ memcpy(&m_SocketAddr, &s, sizeof(struct sockaddr_in)); #endif - /* maintain stored family values properly */ - check4Mapped(); - return *this; }; @@ -534,12 +531,6 @@ return *this; }; -void IpAddress::check4Mapped() -{ - // obsolete. - // TODO use this NOW to set the sin6_family properly on exporting. not on import. -} - #if USE_IPV6 IpAddress::IpAddress(struct sockaddr_in6 const &s) { @@ -551,8 +542,6 @@ { memcpy(&m_SocketAddr, &s, sizeof(struct sockaddr_in6)); - /* maintain address family properly */ - check4Mapped(); return *this; }; @@ -575,10 +564,6 @@ memcpy(&m_SocketAddr.sin_addr, &s, sizeof(struct in_addr)); #endif - - /* maintain stored family type properly */ - check4Mapped(); - return *this; }; @@ -596,9 +581,6 @@ memcpy(&m_SocketAddr.sin6_addr, &s, sizeof(struct in6_addr)); m_SocketAddr.sin6_family = AF_INET6; - /* maintain address family type properly */ - check4Mapped(); - return *this; }; @@ -1123,15 +1105,13 @@ if ( in.s_addr == 0x00000000) { /* ANYADDR */ - memset(&out, 0, sizeof(struct in6_addr)); + out = v4_anyaddr; } else if ( in.s_addr == 0xFFFFFFFF) { /* NOADDR */ - memset(&out, 255, sizeof(struct in6_addr)); + out = v4_noaddr; } else { /* general */ - memset(&out, 0, sizeof(struct in6_addr)); - out.s6_addr[10] = 0xFF; - out.s6_addr[11] = 0xFF; + out = v4_anyaddr; out.s6_addr[12] = ((uint8_t *)&in.s_addr)[0]; out.s6_addr[13] = ((uint8_t *)&in.s_addr)[1]; out.s6_addr[14] = ((uint8_t *)&in.s_addr)[2]; === modified file 'src/ip/IpAddress.h' --- src/ip/IpAddress.h 2010-03-01 10:17:37 +0000 +++ src/ip/IpAddress.h 2010-05-14 04:16:42 +0000 @@ -390,8 +390,6 @@ bool GetReverseString4(char buf[MAX_IPSTRLEN], const struct in_addr &dat) const; - void check4Mapped(); - #if USE_IPV6 bool GetReverseString6(char buf[MAX_IPSTRLEN], const struct in6_addr &dat) const; @@ -426,6 +424,7 @@ static const unsigned int MAX_IP6_STRLEN = STRLEN_IP6R; static const struct in6_addr v4_localhost; static const struct in6_addr v4_anyaddr; + static const struct in6_addr v4_noaddr; static const struct in6_addr v6_noaddr; #endif }; # Begin bundle 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