diff options
author | Tobias Brunner <tobias@strongswan.org> | 2010-09-24 14:33:39 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2010-10-14 17:36:19 +0200 |
commit | 5232ebb1b46d7072bd8621590e8efec7ee9f8de7 (patch) | |
tree | 05af43009ebc743330ea0bbd65ecfca2b4914dba /src | |
parent | 8a47cd909b8cb8ec99b30f4d3c7bb1e09ffc96cb (diff) | |
download | strongswan-5232ebb1b46d7072bd8621590e8efec7ee9f8de7.tar.bz2 strongswan-5232ebb1b46d7072bd8621590e8efec7ee9f8de7.tar.xz |
Added function to clear all credentials from mem_cred_t.
Diffstat (limited to 'src')
-rw-r--r-- | src/libstrongswan/credentials/sets/mem_cred.c | 23 | ||||
-rw-r--r-- | src/libstrongswan/credentials/sets/mem_cred.h | 5 |
2 files changed, 25 insertions, 3 deletions
diff --git a/src/libstrongswan/credentials/sets/mem_cred.c b/src/libstrongswan/credentials/sets/mem_cred.c index f1d40dd4b..cabbdaec7 100644 --- a/src/libstrongswan/credentials/sets/mem_cred.c +++ b/src/libstrongswan/credentials/sets/mem_cred.c @@ -361,15 +361,31 @@ METHOD(mem_cred_t, add_shared, void, this->lock->unlock(this->lock); } -METHOD(mem_cred_t, destroy, void, +METHOD(mem_cred_t, clear, void, private_mem_cred_t *this) { + this->lock->write_lock(this->lock); this->trusted->destroy_offset(this->trusted, - offsetof(certificate_t, destroy)); + offsetof(certificate_t, destroy)); this->untrusted->destroy_offset(this->untrusted, - offsetof(certificate_t, destroy)); + offsetof(certificate_t, destroy)); this->keys->destroy_offset(this->keys, offsetof(private_key_t, destroy)); this->shared->destroy_function(this->shared, (void*)shared_entry_destroy); + this->trusted = linked_list_create(); + this->untrusted = linked_list_create(); + this->keys = linked_list_create(); + this->shared = linked_list_create(); + this->lock->unlock(this->lock); +} + +METHOD(mem_cred_t, destroy, void, + private_mem_cred_t *this) +{ + _clear(this); + this->trusted->destroy(this->trusted); + this->untrusted->destroy(this->untrusted); + this->keys->destroy(this->keys); + this->shared->destroy(this->shared); this->lock->destroy(this->lock); free(this); } @@ -393,6 +409,7 @@ mem_cred_t *mem_cred_create() .add_cert = _add_cert, .add_key = _add_key, .add_shared = _add_shared, + .clear = _clear, .destroy = _destroy, }, .trusted = linked_list_create(), diff --git a/src/libstrongswan/credentials/sets/mem_cred.h b/src/libstrongswan/credentials/sets/mem_cred.h index ccb04e6fd..b26e43d6c 100644 --- a/src/libstrongswan/credentials/sets/mem_cred.h +++ b/src/libstrongswan/credentials/sets/mem_cred.h @@ -59,6 +59,11 @@ struct mem_cred_t { void (*add_shared)(mem_cred_t *this, shared_key_t *shared, ...); /** + * Clear all credentials from the credential set. + */ + void (*clear)(mem_cred_t *this); + + /** * Destroy a mem_cred_t. */ void (*destroy)(mem_cred_t *this); |