diff options
Diffstat (limited to 'src/charon/config/cfg_store.c')
-rw-r--r-- | src/charon/config/cfg_store.c | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/src/charon/config/cfg_store.c b/src/charon/config/cfg_store.c deleted file mode 100644 index ef945da90..000000000 --- a/src/charon/config/cfg_store.c +++ /dev/null @@ -1,146 +0,0 @@ -/** - * @file cfg_store.c - * - * @brief Implementation of cfg_store_t. - * - */ - -/* - * Copyright (C) 2007 Martin Willi - * Hochschule fuer Technik Rapperswil - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * for more details. - */ - -#include <pthread.h> - -#include "cfg_store.h" - -#include <library.h> -#include <utils/linked_list.h> - - -typedef struct private_cfg_store_t private_cfg_store_t; - -/** - * Private data of an cfg_store_t object. - */ -struct private_cfg_store_t { - - /** - * Public part of cfg_store_t object. - */ - cfg_store_t public; - - /** - * list of registered backends - */ - linked_list_t *backends; - - /** - * mutex to lock backend list - */ - pthread_mutex_t mutex; -}; - -/** - * implements cfg_store_t.get_ike. - */ -static ike_cfg_t *get_ike_cfg(private_cfg_store_t *this, - host_t *my_host, host_t *other_host) -{ - backend_t *backend; - ike_cfg_t *config = NULL; - iterator_t *iterator = this->backends->create_iterator_locked( - this->backends, &this->mutex); - while (config == NULL && iterator->iterate(iterator, (void**)&backend)) - { - config = backend->get_ike_cfg(backend, my_host, other_host); - } - iterator->destroy(iterator); - return config; -} - -/** - * implements cfg_store_t.get_peer. - */ -static peer_cfg_t *get_peer_cfg(private_cfg_store_t *this, - identification_t *my_id, - identification_t *other_id) -{ - backend_t *backend; - peer_cfg_t *config = NULL; - iterator_t *iterator = this->backends->create_iterator_locked( - this->backends, &this->mutex); - while (config == NULL && iterator->iterate(iterator, (void**)&backend)) - { - config = backend->get_peer_cfg(backend, my_id, other_id); - } - iterator->destroy(iterator); - return config; -} - -/** - * implements cfg_store_t.register_backend. - */ -static void register_backend(private_cfg_store_t *this, backend_t *backend) -{ - pthread_mutex_lock(&this->mutex); - this->backends->insert_last(this->backends, backend); - pthread_mutex_unlock(&this->mutex); -} - -/** - * implements cfg_store_t.unregister_backend. - */ -static void unregister_backend(private_cfg_store_t *this, backend_t *backend) -{ - backend_t *current; - iterator_t *iterator = this->backends->create_iterator_locked( - this->backends, &this->mutex); - while (iterator->iterate(iterator, (void**)¤t)) - { - if (backend == current) - { - iterator->remove(iterator); - break; - } - } - iterator->destroy(iterator); -} - -/** - * Implementation of cfg_store_t.destroy. - */ -static void destroy(private_cfg_store_t *this) -{ - this->backends->destroy(this->backends); - free(this); -} - -/* - * Described in header-file - */ -cfg_store_t *cfg_store_create() -{ - private_cfg_store_t *this = malloc_thing(private_cfg_store_t); - - this->public.get_ike_cfg = (ike_cfg_t*(*)(cfg_store_t*, host_t *, host_t *))get_ike_cfg; - this->public.get_peer_cfg = (peer_cfg_t*(*)(cfg_store_t*, identification_t *, identification_t *))get_peer_cfg; - this->public.register_backend = (void(*)(cfg_store_t*, backend_t *))register_backend; - this->public.unregister_backend = (void(*)(cfg_store_t*, backend_t *))unregister_backend; - this->public.destroy = (void(*)(cfg_store_t*))destroy; - - this->backends = linked_list_create(); - pthread_mutex_init(&this->mutex, NULL); - - return &this->public; -} |