mirror of
https://github.com/strongswan/strongswan.git
synced 2025-10-06 00:00:47 -04:00
Properly hash pointers for hash tables where appropriate
Simply using the pointer is not optimal for our hash table implementation, which simply masks the key to determine the bucket.
This commit is contained in:
parent
7522fcffd2
commit
3b09c02ec0
@ -46,22 +46,6 @@ struct private_dhcp_provider_t {
|
||||
dhcp_socket_t *socket;
|
||||
};
|
||||
|
||||
/**
|
||||
* Hashtable hash function
|
||||
*/
|
||||
static u_int hash(void *key)
|
||||
{
|
||||
return (uintptr_t)key;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hashtable equals function
|
||||
*/
|
||||
static bool equals(void *a, void *b)
|
||||
{
|
||||
return a == b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hash ID and host to a key
|
||||
*/
|
||||
@ -226,7 +210,8 @@ dhcp_provider_t *dhcp_provider_create(dhcp_socket_t *socket)
|
||||
},
|
||||
.socket = socket,
|
||||
.mutex = mutex_create(MUTEX_TYPE_DEFAULT),
|
||||
.transactions = hashtable_create(hash, equals, 8),
|
||||
.transactions = hashtable_create(hashtable_hash_ptr,
|
||||
hashtable_equals_ptr, 8),
|
||||
);
|
||||
|
||||
return &this->public;
|
||||
|
@ -73,22 +73,6 @@ typedef struct {
|
||||
*/
|
||||
static private_eap_radius_forward_t *singleton = NULL;
|
||||
|
||||
/**
|
||||
* Hashtable hash function
|
||||
*/
|
||||
static u_int hash(uintptr_t key)
|
||||
{
|
||||
return key;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hashtable equals function
|
||||
*/
|
||||
static bool equals(uintptr_t a, uintptr_t b)
|
||||
{
|
||||
return a == b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Free a queue entry
|
||||
*/
|
||||
@ -442,10 +426,8 @@ eap_radius_forward_t *eap_radius_forward_create()
|
||||
.to_attr = parse_selector(lib->settings->get_str(lib->settings,
|
||||
"%s.plugins.eap-radius.forward.radius_to_ike", "",
|
||||
lib->ns)),
|
||||
.from = hashtable_create((hashtable_hash_t)hash,
|
||||
(hashtable_equals_t)equals, 8),
|
||||
.to = hashtable_create((hashtable_hash_t)hash,
|
||||
(hashtable_equals_t)equals, 8),
|
||||
.from = hashtable_create(hashtable_hash_ptr, hashtable_equals_ptr, 8),
|
||||
.to = hashtable_create(hashtable_hash_ptr, hashtable_equals_ptr, 8),
|
||||
.mutex = mutex_create(MUTEX_TYPE_DEFAULT),
|
||||
);
|
||||
|
||||
|
@ -58,22 +58,6 @@ struct private_ha_cache_t {
|
||||
mutex_t *mutex;
|
||||
};
|
||||
|
||||
/**
|
||||
* Hashtable hash function
|
||||
*/
|
||||
static u_int hash(void *key)
|
||||
{
|
||||
return (uintptr_t)key;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hashtable equals function
|
||||
*/
|
||||
static bool equals(void *a, void *b)
|
||||
{
|
||||
return a == b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cache entry for an IKE_SA
|
||||
*/
|
||||
@ -380,7 +364,7 @@ ha_cache_t *ha_cache_create(ha_kernel_t *kernel, ha_socket_t *socket,
|
||||
.count = count,
|
||||
.kernel = kernel,
|
||||
.socket = socket,
|
||||
.cache = hashtable_create(hash, equals, 8),
|
||||
.cache = hashtable_create(hashtable_hash_ptr, hashtable_equals_ptr, 8),
|
||||
.mutex = mutex_create(MUTEX_TYPE_DEFAULT),
|
||||
);
|
||||
|
||||
|
@ -94,22 +94,6 @@ bool cred_encoding_args(va_list args, ...)
|
||||
return !failed;
|
||||
}
|
||||
|
||||
/**
|
||||
* hashtable hash() function
|
||||
*/
|
||||
static u_int hash(void *key)
|
||||
{
|
||||
return (uintptr_t)key;
|
||||
}
|
||||
|
||||
/**
|
||||
* hashtable equals() function
|
||||
*/
|
||||
static bool equals(void *key1, void *key2)
|
||||
{
|
||||
return key1 == key2;
|
||||
}
|
||||
|
||||
METHOD(cred_encoding_t, get_cache, bool,
|
||||
private_cred_encoding_t *this, cred_encoding_type_t type, void *cache,
|
||||
chunk_t *encoding)
|
||||
@ -289,7 +273,8 @@ cred_encoding_t *cred_encoding_create()
|
||||
|
||||
for (type = 0; type < CRED_ENCODING_MAX; type++)
|
||||
{
|
||||
this->cache[type] = hashtable_create(hash, equals, 8);
|
||||
this->cache[type] = hashtable_create(hashtable_hash_ptr,
|
||||
hashtable_equals_ptr, 8);
|
||||
}
|
||||
|
||||
return &this->public;
|
||||
|
Loading…
x
Reference in New Issue
Block a user