summaryrefslogtreecommitdiff
path: root/node/Hashtable.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/Hashtable.hpp')
-rw-r--r--node/Hashtable.hpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/node/Hashtable.hpp b/node/Hashtable.hpp
index 59a57726..29c54838 100644
--- a/node/Hashtable.hpp
+++ b/node/Hashtable.hpp
@@ -372,9 +372,12 @@ private:
}
static inline unsigned long _hc(const uint64_t i)
{
- // NOTE: this is fine for network IDs, but might be bad for other kinds
- // of IDs if they are not evenly or randomly distributed.
- return (unsigned long)((i ^ (i >> 32)) * 2654435761ULL);
+ /* NOTE: this assumes that 'i' is evenly distributed, which is the case for
+ * packet IDs and network IDs -- the two use cases in ZT for uint64_t keys.
+ * These values are also greater than 0xffffffff so they'll map onto a full
+ * bucket count just fine no matter what happens. Normally you'd want to
+ * hash an integer key index in a hash table. */
+ return (unsigned long)i;
}
inline void _grow()