traffic-selector: Add a hash() method
This commit is contained in:
@@ -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,
|
METHOD(traffic_selector_t, destroy, void,
|
||||||
private_traffic_selector_t *this)
|
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,
|
.set_address = _set_address,
|
||||||
.to_subnet = _to_subnet,
|
.to_subnet = _to_subnet,
|
||||||
.clone = _clone_,
|
.clone = _clone_,
|
||||||
|
.hash = _hash,
|
||||||
.destroy = _destroy,
|
.destroy = _destroy,
|
||||||
},
|
},
|
||||||
.from_port = from_port,
|
.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);
|
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
|
* Destroys the ts object
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user