aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorReto Buerki <reet@codelabs.ch>2012-08-09 16:13:55 +0200
committerTobias Brunner <tobias@strongswan.org>2013-03-19 15:23:45 +0100
commit84967b44392cd61b2c251086d07c0685e42f56b8 (patch)
treed8efdc06ffd809e06816b43e96fefba21b32bb8e /src
parent50e35e66d22f6d50d016ff322a53623c82969777 (diff)
downloadstrongswan-84967b44392cd61b2c251086d07c0685e42f56b8.tar.bz2
strongswan-84967b44392cd61b2c251086d07c0685e42f56b8.tar.xz
id_manager: Use limits given by TKM
Diffstat (limited to 'src')
-rw-r--r--src/charon-tkm/src/tkm/tkm_id_manager.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/charon-tkm/src/tkm/tkm_id_manager.c b/src/charon-tkm/src/tkm/tkm_id_manager.c
index 8426a2cef..f069e0eba 100644
--- a/src/charon-tkm/src/tkm/tkm_id_manager.c
+++ b/src/charon-tkm/src/tkm/tkm_id_manager.c
@@ -45,6 +45,11 @@ struct private_tkm_id_manager_t {
bool* ctxids[TKM_CTX_MAX];
/**
+ * Per-kind context limits.
+ */
+ tkm_limits_t limits;
+
+ /**
* rwlocks for context id lists
*/
rwlock_t *locks[TKM_CTX_MAX];
@@ -66,7 +71,8 @@ static bool is_valid_kind(const tkm_context_kind_t kind)
METHOD(tkm_id_manager_t, acquire_id, int,
private_tkm_id_manager_t * const this, const tkm_context_kind_t kind)
{
- int j, id = 0;
+ int id = 0;
+ uint64_t j;
if (!is_valid_kind(kind))
{
@@ -76,7 +82,7 @@ METHOD(tkm_id_manager_t, acquire_id, int,
}
this->locks[kind]->write_lock(this->locks[kind]);
- for (j = 0; j < TKM_LIMIT; j++)
+ for (j = 0; j < this->limits[kind]; j++)
{
if (this->ctxids[kind][j])
{
@@ -135,7 +141,8 @@ METHOD(tkm_id_manager_t, destroy, void,
tkm_id_manager_t *tkm_id_manager_create(const tkm_limits_t limits)
{
private_tkm_id_manager_t *this;
- int i, j;
+ int i;
+ uint64_t j;
INIT(this,
.public = {
@@ -147,13 +154,16 @@ tkm_id_manager_t *tkm_id_manager_create(const tkm_limits_t limits)
for (i = 0; i < TKM_CTX_MAX; i++)
{
- this->ctxids[i] = malloc(TKM_LIMIT * sizeof(bool));
+ this->limits[i] = limits[i];
+ this->ctxids[i] = malloc(limits[i] * sizeof(bool));
this->locks[i] = rwlock_create(RWLOCK_TYPE_DEFAULT);
- for (j = 0; j < TKM_LIMIT; j++)
+ for (j = 0; j < limits[i]; j++)
{
/* available id slots are in true state (is_available) */
this->ctxids[i][j] = true;
}
+ DBG2(DBG_LIB, "%N initialized, %llu slot(s)",
+ tkm_context_kind_names, i, limits[i]);
}
return &this->public;