// public bool operator==(const IPAddress& addr1, const IPAddress& addr2) { if (addr1.family() == addr2.family()) { if (addr1.isV6()) { return (addr1.asV6() == addr2.asV6()); } else if (addr1.isV4()) { return (addr1.asV4() == addr2.asV4()); } else { CHECK_EQ(addr1.family(), AF_UNSPEC); // Two default initialized AF_UNSPEC addresses should be considered equal. // AF_UNSPEC is the only other value for which an IPAddress can be // created, in the default constructor case. return true; } } // addr1 is v4 mapped v6 address, addr2 is v4 if (addr1.isIPv4Mapped() && addr2.isV4()) { if (IPAddress::createIPv4(addr1) == addr2.asV4()) { return true; } } // addr2 is v4 mapped v6 address, addr1 is v4 if (addr2.isIPv4Mapped() && addr1.isV4()) { if (IPAddress::createIPv4(addr2) == addr1.asV4()) { return true; } } // we only compare IPv4 and IPv6 addresses return false; }