mirror of
https://github.com/strongswan/strongswan.git
synced 2025-10-05 00:00:45 -04:00
child-cfg: Generalize get_ke_method() method
This commit is contained in:
parent
e47193a7c0
commit
d739316681
@ -473,24 +473,23 @@ METHOD(child_cfg_t, get_close_action, action_t,
|
||||
return this->close_action;
|
||||
}
|
||||
|
||||
METHOD(child_cfg_t, get_ke_method, key_exchange_method_t,
|
||||
private_child_cfg_t *this)
|
||||
METHOD(child_cfg_t, get_algorithm, uint16_t,
|
||||
private_child_cfg_t *this, transform_type_t type)
|
||||
{
|
||||
enumerator_t *enumerator;
|
||||
proposal_t *proposal;
|
||||
uint16_t method = MODP_NONE;
|
||||
uint16_t alg = 0;
|
||||
|
||||
enumerator = this->proposals->create_enumerator(this->proposals);
|
||||
while (enumerator->enumerate(enumerator, &proposal))
|
||||
{
|
||||
if (proposal->get_algorithm(proposal, KEY_EXCHANGE_METHOD, &method,
|
||||
NULL))
|
||||
if (proposal->get_algorithm(proposal, type, &alg, NULL))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
enumerator->destroy(enumerator);
|
||||
return method;
|
||||
return alg;
|
||||
}
|
||||
|
||||
METHOD(child_cfg_t, get_inactivity, uint32_t,
|
||||
@ -654,7 +653,7 @@ child_cfg_t *child_cfg_create(char *name, child_cfg_create_t *data)
|
||||
.get_dpd_action = _get_dpd_action,
|
||||
.get_close_action = _get_close_action,
|
||||
.get_lifetime = _get_lifetime,
|
||||
.get_ke_method = _get_ke_method,
|
||||
.get_algorithm = _get_algorithm,
|
||||
.get_inactivity = _get_inactivity,
|
||||
.get_reqid = _get_reqid,
|
||||
.get_if_id = _get_if_id,
|
||||
|
@ -203,11 +203,16 @@ struct child_cfg_t {
|
||||
action_t (*get_close_action) (child_cfg_t *this);
|
||||
|
||||
/**
|
||||
* Get the key exchange method to use for CHILD_SA setup.
|
||||
* Get the first algorithm of a certain transform type that's contained in
|
||||
* any of the configured proposals.
|
||||
*
|
||||
* @return key exchange method to use
|
||||
* For instance, use with KEY_EXCHANGE_METHOD to get the KE method to use
|
||||
* for the CHILD_SA initiation.
|
||||
*
|
||||
* @param type transform type to look for
|
||||
* @return algorithm identifier (0 for none)
|
||||
*/
|
||||
key_exchange_method_t (*get_ke_method)(child_cfg_t *this);
|
||||
uint16_t (*get_algorithm)(child_cfg_t *this, transform_type_t type);
|
||||
|
||||
/**
|
||||
* Get the inactivity timeout value.
|
||||
|
@ -865,7 +865,8 @@ METHOD(task_t, build_i, status_t,
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
group = this->config->get_ke_method(this->config);
|
||||
group = this->config->get_algorithm(this->config,
|
||||
KEY_EXCHANGE_METHOD);
|
||||
if (group != MODP_NONE)
|
||||
{
|
||||
proposal_t *proposal;
|
||||
|
@ -1103,7 +1103,8 @@ METHOD(task_t, build_i, status_t,
|
||||
}
|
||||
if (!this->retry && this->dh_group == MODP_NONE)
|
||||
{ /* during a rekeying the group might already be set */
|
||||
this->dh_group = this->config->get_ke_method(this->config);
|
||||
this->dh_group = this->config->get_algorithm(this->config,
|
||||
KEY_EXCHANGE_METHOD);
|
||||
}
|
||||
break;
|
||||
case IKE_AUTH:
|
||||
|
Loading…
x
Reference in New Issue
Block a user