From c30bf7957eda4f857185f6d23255fbdd27d77764 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 2 Feb 2015 14:44:24 -0800 Subject: Hash code method for InetAddress --- node/InetAddress.hpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/node/InetAddress.hpp b/node/InetAddress.hpp index d22b1ca9..d934e4d4 100644 --- a/node/InetAddress.hpp +++ b/node/InetAddress.hpp @@ -270,6 +270,20 @@ public: } } + /** + * @return Checksum of this address (not portable, so don't use for long-term storage purposes) + */ + inline uint64_t hashCode() const + { + switch(_sa.saddr.sa_family) { + case AF_INET: + return ((uint64_t)_sa.sin.sin_port + (uint64_t)(_sa.sin.sin_addr.s_addr)); + case AF_INET6: + return ((uint64_t)_sa.sin6.sin6_port + ( ((const uint64_t *)_sa.sin6.sin6_addr.s6_addr)[0] ^ ((const uint64_t *)_sa.sin6.sin6_addr.s6_addr)[1] )); + } + return 0; + } + /** * @return Combined length of internal structure, room for either V4 or V6 */ -- cgit v1.2.3