mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-11 17:37:53 +00:00
64-bits alignment for RoutingKey
This commit is contained in:
parent
a728d9db5b
commit
eb44fdf7a8
@ -98,12 +98,11 @@ namespace data
|
||||
|
||||
XORMetric operator^(const RoutingKey& key1, const RoutingKey& key2)
|
||||
{
|
||||
// TODO: implementation depends on CPU
|
||||
XORMetric m;
|
||||
((uint64_t *)m.metric)[0] = ((uint64_t *)key1.hash)[0] ^ ((uint64_t *)key2.hash)[0];
|
||||
((uint64_t *)m.metric)[1] = ((uint64_t *)key1.hash)[1] ^ ((uint64_t *)key2.hash)[1];
|
||||
((uint64_t *)m.metric)[2] = ((uint64_t *)key1.hash)[2] ^ ((uint64_t *)key2.hash)[2];
|
||||
((uint64_t *)m.metric)[3] = ((uint64_t *)key1.hash)[3] ^ ((uint64_t *)key2.hash)[3];
|
||||
m.metric_ll[0] = key1.hash_ll[0] ^ key2.hash_ll[0];
|
||||
m.metric_ll[1] = key1.hash_ll[1] ^ key2.hash_ll[1];
|
||||
m.metric_ll[2] = key1.hash_ll[2] ^ key2.hash_ll[2];
|
||||
m.metric_ll[3] = key1.hash_ll[3] ^ key2.hash_ll[3];
|
||||
return m;
|
||||
}
|
||||
}
|
||||
|
11
Identity.h
11
Identity.h
@ -78,7 +78,7 @@ namespace data
|
||||
bool operator== (const IdentHash& other) const { return !memcmp (m_Hash, other.m_Hash, 32); };
|
||||
bool operator< (const IdentHash& other) const { return memcmp (m_Hash, other.m_Hash, 32) < 0; };
|
||||
|
||||
bool FromBase32(const std::string&);
|
||||
bool FromBase32(const std::string&);
|
||||
|
||||
private:
|
||||
|
||||
@ -89,14 +89,19 @@ namespace data
|
||||
void CreateRandomDHKeysPair (DHKeysPair * keys); // for transport sessions
|
||||
|
||||
// kademlia
|
||||
struct RoutingKey
|
||||
union RoutingKey
|
||||
{
|
||||
uint8_t hash[32];
|
||||
uint64_t hash_ll[4];
|
||||
};
|
||||
|
||||
struct XORMetric
|
||||
{
|
||||
uint8_t metric[32];
|
||||
union
|
||||
{
|
||||
uint8_t metric[32];
|
||||
uint64_t metric_ll[4];
|
||||
};
|
||||
|
||||
void SetMin () { memset (metric, 0, 32); };
|
||||
void SetMax () { memset (metric, 0xFF, 32); };
|
||||
|
Loading…
Reference in New Issue
Block a user