traffic-selector: Add a hash() method

This commit is contained in:
Martin Willi
2015-02-20 13:34:48 +01:00
parent 5499473c33
commit 6d4649573e
2 changed files with 20 additions and 0 deletions
@@ -685,6 +685,17 @@ METHOD(traffic_selector_t, clone_, traffic_selector_t*,
}
}
METHOD(traffic_selector_t, hash, u_int,
private_traffic_selector_t *this, u_int hash)
{
return chunk_hash_inc(get_from_address(this),
chunk_hash_inc(get_to_address(this),
chunk_hash_inc(chunk_from_thing(this->from_port),
chunk_hash_inc(chunk_from_thing(this->to_port),
chunk_hash_inc(chunk_from_thing(this->protocol),
hash)))));
}
METHOD(traffic_selector_t, destroy, void,
private_traffic_selector_t *this)
{
@@ -974,6 +985,7 @@ static private_traffic_selector_t *traffic_selector_create(u_int8_t protocol,
.set_address = _set_address,
.to_subnet = _to_subnet,
.clone = _clone_,
.hash = _hash,
.destroy = _destroy,
},
.from_port = from_port,
@@ -220,6 +220,14 @@ struct traffic_selector_t {
*/
bool (*to_subnet) (traffic_selector_t *this, host_t **net, u_int8_t *mask);
/**
* Create a hash value for the traffic selector.
*
* @param inc optional value for incremental hashing
* @return calculated hash value for the traffic selector
*/
u_int (*hash)(traffic_selector_t *this, u_int inc);
/**
* Destroys the ts object
*/