accepting stroke initiation by a name of a child_cfg

This commit is contained in:
Martin Willi
2007-04-11 05:58:38 +00:00
parent 90faff8e5a
commit de55c6895f
5 changed files with 40 additions and 41 deletions
+24 -6
View File
@@ -171,20 +171,38 @@ static peer_cfg_t *get_peer_cfg(private_local_backend_t *this,
static peer_cfg_t *get_peer_cfg_by_name(private_local_backend_t *this,
char *name)
{
iterator_t *iterator;
iterator_t *i1, *i2;
peer_cfg_t *current, *found = NULL;
child_cfg_t *child;
iterator = this->cfgs->create_iterator(this->cfgs, TRUE);
while (iterator->iterate(iterator, (void**)&current))
i1 = this->cfgs->create_iterator(this->cfgs, TRUE);
while (i1->iterate(i1, (void**)&current))
{
/* compare peer_cfgs name first */
if (streq(current->get_name(current), name))
{
found = current;
found->get_ref(found);
break;
}
/* compare all child_cfg names otherwise */
i2 = current->create_child_cfg_iterator(current);
while (i2->iterate(i2, (void**)&child))
{
if (streq(child->get_name(child), name))
{
found = current;
found->get_ref(found);
break;
}
}
i2->destroy(i2);
if (found)
{
break;
}
}
iterator->destroy(iterator);
i1->destroy(i1);
return found;
}
@@ -224,8 +242,8 @@ local_backend_t *local_backend_create(void)
this->public.backend.get_ike_cfg = (ike_cfg_t*(*)(backend_t*, host_t *, host_t *))get_ike_cfg;
this->public.backend.get_peer_cfg = (peer_cfg_t*(*)(backend_t*, identification_t *, identification_t *))get_peer_cfg;
this->public.backend.get_peer_cfg_by_name = (peer_cfg_t*(*)(backend_t*, char *))get_peer_cfg_by_name;
this->public.create_peer_cfg_iterator = (iterator_t*(*)(local_backend_t*))create_peer_cfg_iterator;
this->public.create_peer_cfg_iterator = (iterator_t*(*)(local_backend_t*))create_peer_cfg_iterator;
this->public.get_peer_cfg_by_name = (peer_cfg_t*(*)(local_backend_t*, char *))get_peer_cfg_by_name;
this->public.add_peer_cfg = (void(*)(local_backend_t*, peer_cfg_t *))add_peer_cfg;
this->public.destroy = (void(*)(local_backend_t*))destroy;
@@ -54,6 +54,15 @@ struct local_backend_t {
*/
void (*add_peer_cfg)(local_backend_t *this, peer_cfg_t *config);
/**
* @brief Get a peer_config identified by name, or a name of its child_cfgs.
*
* @param this calling object
* @param name name of the peer config
* @return matching peer_config, or NULL if none found
*/
peer_cfg_t *(*get_peer_cfg_by_name)(local_backend_t *this, char *name);
/**
* @brief Create an iterator over all peer configs.
*
-18
View File
@@ -88,23 +88,6 @@ static peer_cfg_t *get_peer_cfg(private_cfg_store_t *this,
return config;
}
/**
* implements cfg_store_t.get_peer_by_name.
*/
static peer_cfg_t *get_peer_cfg_by_name(private_cfg_store_t *this, char *name)
{
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_by_name(backend, name);
}
iterator->destroy(iterator);
return config;
}
/**
* implements cfg_store_t.register_backend.
*/
@@ -152,7 +135,6 @@ cfg_store_t *cfg_store_create()
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.get_peer_cfg_by_name = (peer_cfg_t*(*)(cfg_store_t*, char *name))get_peer_cfg_by_name;
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;
-9
View File
@@ -90,15 +90,6 @@ struct cfg_store_t {
peer_cfg_t *(*get_peer_cfg)(cfg_store_t *this, identification_t *my_id,
identification_t *other_id);
/**
* @brief Get a peer_config identified by its name.
*
* @param this calling object
* @param name name of the peer config
* @return matching peer_config, or NULL if none found
*/
peer_cfg_t *(*get_peer_cfg_by_name)(cfg_store_t *this, char *name);
/**
* @brief Register a backend to be queried by the calls above.
*