Added a get_count() method to IKE_SA manager
This commit is contained in:
@@ -1556,14 +1556,30 @@ METHOD(ike_sa_manager_t, has_contact, bool,
|
|||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
METHOD(ike_sa_manager_t, get_half_open_count, int,
|
METHOD(ike_sa_manager_t, get_count, u_int,
|
||||||
|
private_ike_sa_manager_t *this)
|
||||||
|
{
|
||||||
|
u_int segment, count = 0;
|
||||||
|
mutex_t *mutex;
|
||||||
|
|
||||||
|
for (segment = 0; segment < this->segment_count; segment++)
|
||||||
|
{
|
||||||
|
mutex = this->segments[segment & this->segment_mask].mutex;
|
||||||
|
mutex->lock(mutex);
|
||||||
|
count += this->segments[segment].count;
|
||||||
|
mutex->unlock(mutex);
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
METHOD(ike_sa_manager_t, get_half_open_count, u_int,
|
||||||
private_ike_sa_manager_t *this, host_t *ip)
|
private_ike_sa_manager_t *this, host_t *ip)
|
||||||
{
|
{
|
||||||
linked_list_t *list;
|
linked_list_t *list;
|
||||||
u_int segment, row;
|
u_int segment, row;
|
||||||
rwlock_t *lock;
|
rwlock_t *lock;
|
||||||
chunk_t addr;
|
chunk_t addr;
|
||||||
int count = 0;
|
u_int count = 0;
|
||||||
|
|
||||||
if (ip)
|
if (ip)
|
||||||
{
|
{
|
||||||
@@ -1745,6 +1761,7 @@ ike_sa_manager_t *ike_sa_manager_create()
|
|||||||
.create_enumerator = _create_enumerator,
|
.create_enumerator = _create_enumerator,
|
||||||
.checkin = _checkin,
|
.checkin = _checkin,
|
||||||
.checkin_and_destroy = _checkin_and_destroy,
|
.checkin_and_destroy = _checkin_and_destroy,
|
||||||
|
.get_count = _get_count,
|
||||||
.get_half_open_count = _get_half_open_count,
|
.get_half_open_count = _get_half_open_count,
|
||||||
.flush = _flush,
|
.flush = _flush,
|
||||||
.destroy = _destroy,
|
.destroy = _destroy,
|
||||||
|
|||||||
@@ -191,6 +191,13 @@ struct ike_sa_manager_t {
|
|||||||
*/
|
*/
|
||||||
void (*checkin_and_destroy) (ike_sa_manager_t* this, ike_sa_t *ike_sa);
|
void (*checkin_and_destroy) (ike_sa_manager_t* this, ike_sa_t *ike_sa);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the number of IKE_SAs currently registered.
|
||||||
|
*
|
||||||
|
* @return number of registered IKE_SAs
|
||||||
|
*/
|
||||||
|
u_int (*get_count)(ike_sa_manager_t *this);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the number of IKE_SAs which are in the connecting state.
|
* Get the number of IKE_SAs which are in the connecting state.
|
||||||
*
|
*
|
||||||
@@ -204,7 +211,7 @@ struct ike_sa_manager_t {
|
|||||||
* @param ip NULL for all, IP for half open IKE_SAs with IP
|
* @param ip NULL for all, IP for half open IKE_SAs with IP
|
||||||
* @return number of half open IKE_SAs
|
* @return number of half open IKE_SAs
|
||||||
*/
|
*/
|
||||||
int (*get_half_open_count) (ike_sa_manager_t *this, host_t *ip);
|
u_int (*get_half_open_count) (ike_sa_manager_t *this, host_t *ip);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete all existing IKE_SAs and destroy them immediately.
|
* Delete all existing IKE_SAs and destroy them immediately.
|
||||||
|
|||||||
Reference in New Issue
Block a user