From: Amos Jeffries Date: Sat, 1 May 2010 07:42:29 +0000 (-0600) Subject: Make Ip::Address < operator work with NOADDR X-Git-Tag: SQUID_3_2_0_1~248 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6232d0a7652b6b56c5ba6d6c1720df5e6a852366;p=thirdparty%2Fsquid.git Make Ip::Address < operator work with NOADDR --- diff --git a/src/ip/IpAddress.cc b/src/ip/IpAddress.cc index 9cbf4d94a9..853c652b2c 100644 --- a/src/ip/IpAddress.cc +++ b/src/ip/IpAddress.cc @@ -949,7 +949,7 @@ Ip::Address::operator >(const Ip::Address &rhs) const bool Ip::Address::operator <(const Ip::Address &rhs) const { - if (IsNoAddr() && !rhs.IsNoAddr()) + if (IsAnyAddr() && !rhs.IsAnyAddr()) return true; return ( matchIPAddr(rhs) < 0); diff --git a/src/ip/testIpAddress.cc b/src/ip/testIpAddress.cc index c8a93f02f4..cc3c5a0ac1 100644 --- a/src/ip/testIpAddress.cc +++ b/src/ip/testIpAddress.cc @@ -334,6 +334,28 @@ testIpAddress::testBooleans() CPPUNIT_ASSERT( ( lhsIPA <= rhsIPA ) ); CPPUNIT_ASSERT( !( lhsIPA < rhsIPA ) ); + /* test equality versus ANYADDR */ + lhsIPA.SetAnyAddr(); + rhsIPA.SetAnyAddr(); + CPPUNIT_ASSERT( lhsIPA.matchIPAddr(rhsIPA) == 0 ); + CPPUNIT_ASSERT( ( lhsIPA == rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA != rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA >= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA > rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA <= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA < rhsIPA ) ); + + /* test equality versus NOADDR */ + lhsIPA.SetNoAddr(); + rhsIPA.SetNoAddr(); + CPPUNIT_ASSERT( lhsIPA.matchIPAddr(rhsIPA) == 0 ); + CPPUNIT_ASSERT( ( lhsIPA == rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA != rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA >= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA > rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA <= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA < rhsIPA ) ); + /* test inequality (less than) */ lhsIPA = valLow; rhsIPA = valHigh; @@ -345,8 +367,52 @@ testIpAddress::testBooleans() CPPUNIT_ASSERT( ( lhsIPA <= rhsIPA ) ); CPPUNIT_ASSERT( ( lhsIPA < rhsIPA ) ); + /* test inequality versus ANYADDR (less than) */ + lhsIPA.SetAnyAddr(); + rhsIPA = valHigh; + CPPUNIT_ASSERT( lhsIPA.matchIPAddr(rhsIPA) < 0 ); + CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA != rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA >= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA > rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA <= rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA < rhsIPA ) ); + + /* test inequality versus NOADDR (less than) */ + lhsIPA = valLow; + rhsIPA.SetNoAddr(); + CPPUNIT_ASSERT( lhsIPA.matchIPAddr(rhsIPA) < 0 ); + CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA != rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA >= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA > rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA <= rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA < rhsIPA ) ); + + /* test inequality (greater than) */ + lhsIPA = valHigh; + rhsIPA = valLow; + CPPUNIT_ASSERT( lhsIPA.matchIPAddr(rhsIPA) > 0 ); + CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA != rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA >= rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA > rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA <= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA < rhsIPA ) ); + /* test inequality (greater than) */ lhsIPA = valHigh; + rhsIPA.SetAnyAddr(); + CPPUNIT_ASSERT( lhsIPA.matchIPAddr(rhsIPA) > 0 ); + CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA != rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA >= rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA > rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA <= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA < rhsIPA ) ); + + /* test inequality versus NOADDR (greater than) */ + lhsIPA.SetNoAddr(); rhsIPA = valLow; CPPUNIT_ASSERT( lhsIPA.matchIPAddr(rhsIPA) > 0 ); CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) );