]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
charon-tkm: Store context ids as int instead of bool
authorAdrian-Ken Rueegsegger <ken@codelabs.ch>
Fri, 1 Sep 2017 14:58:15 +0000 (16:58 +0200)
committerTobias Brunner <tobias@strongswan.org>
Fri, 15 Sep 2017 10:16:57 +0000 (12:16 +0200)
This is in preparation of making context ids refcountable.

src/charon-tkm/src/tkm/tkm_id_manager.c

index d8ff6753f9bd3ad041e588fd4693e1e338603cf3..b07409d19bd740f6f966df3836eff287e4699861 100644 (file)
@@ -43,7 +43,7 @@ struct private_tkm_id_manager_t {
        /**
         * Per-kind array of free context ids
         */
-       bool* ctxids[TKM_CTX_MAX];
+       int* ctxids[TKM_CTX_MAX];
 
        /**
         * Per-kind context limits.
@@ -85,9 +85,9 @@ METHOD(tkm_id_manager_t, acquire_id, int,
        this->locks[kind]->write_lock(this->locks[kind]);
        for (j = 0; j < this->limits[kind]; j++)
        {
-               if (!this->ctxids[kind][j])
+               if (this->ctxids[kind][j] == 0)
                {
-                       this->ctxids[kind][j] = true;
+                       this->ctxids[kind][j] = 1;
                        id = j + 1;
                        break;
                }
@@ -117,7 +117,10 @@ METHOD(tkm_id_manager_t, release_id, bool,
        }
 
        this->locks[kind]->write_lock(this->locks[kind]);
-       this->ctxids[kind][idx] = false;
+       if (this->ctxids[kind][idx] > 0)
+       {
+               this->ctxids[kind][idx]--;
+       }
        this->locks[kind]->unlock(this->locks[kind]);
 
        return TRUE;
@@ -155,7 +158,7 @@ tkm_id_manager_t *tkm_id_manager_create(const tkm_limits_t limits)
        for (i = 0; i < TKM_CTX_MAX; i++)
        {
                this->limits[i] = limits[i];
-               this->ctxids[i] = calloc(limits[i], sizeof(bool));
+               this->ctxids[i] = calloc(limits[i], sizeof(int));
                this->locks[i] = rwlock_create(RWLOCK_TYPE_DEFAULT);
                DBG2(DBG_LIB, "%N initialized, %llu slot(s)", tkm_context_kind_names, i,
                         limits[i]);