ikev1: Get and set the lifetimes of the selected proposal/transform
Previously, we simply used the lifetimes of the first proposal/transform, which is not correct if the initiator uses different lifetimes in its proposals/transforms.
This commit is contained in:
@@ -415,7 +415,8 @@ METHOD(task_t, process_r, status_t,
|
||||
this->ike_sa->set_proposal(this->ike_sa, this->proposal);
|
||||
|
||||
this->method = sa_payload->get_auth_method(sa_payload);
|
||||
this->lifetime = sa_payload->get_lifetime(sa_payload);
|
||||
this->lifetime = sa_payload->get_lifetime(sa_payload,
|
||||
this->proposal);
|
||||
|
||||
switch (this->method)
|
||||
{
|
||||
@@ -653,7 +654,7 @@ METHOD(task_t, process_i, status_t,
|
||||
}
|
||||
this->ike_sa->set_proposal(this->ike_sa, this->proposal);
|
||||
|
||||
lifetime = sa_payload->get_lifetime(sa_payload);
|
||||
lifetime = sa_payload->get_lifetime(sa_payload, this->proposal);
|
||||
if (lifetime != this->lifetime)
|
||||
{
|
||||
DBG1(DBG_IKE, "received lifetime %us does not match configured "
|
||||
|
||||
@@ -406,7 +406,8 @@ METHOD(task_t, process_r, status_t,
|
||||
this->ike_sa->set_proposal(this->ike_sa, this->proposal);
|
||||
|
||||
this->method = sa_payload->get_auth_method(sa_payload);
|
||||
this->lifetime = sa_payload->get_lifetime(sa_payload);
|
||||
this->lifetime = sa_payload->get_lifetime(sa_payload,
|
||||
this->proposal);
|
||||
|
||||
this->state = MM_SA;
|
||||
return NEED_MORE;
|
||||
@@ -654,7 +655,7 @@ METHOD(task_t, process_i, status_t,
|
||||
}
|
||||
this->ike_sa->set_proposal(this->ike_sa, this->proposal);
|
||||
|
||||
lifetime = sa_payload->get_lifetime(sa_payload);
|
||||
lifetime = sa_payload->get_lifetime(sa_payload, this->proposal);
|
||||
if (lifetime != this->lifetime)
|
||||
{
|
||||
DBG1(DBG_IKE, "received lifetime %us does not match configured "
|
||||
|
||||
@@ -744,8 +744,8 @@ static void apply_lifetimes(private_quick_mode_t *this, sa_payload_t *sa_payload
|
||||
uint32_t lifetime;
|
||||
uint64_t lifebytes;
|
||||
|
||||
lifetime = sa_payload->get_lifetime(sa_payload);
|
||||
lifebytes = sa_payload->get_lifebytes(sa_payload);
|
||||
lifetime = sa_payload->get_lifetime(sa_payload, this->proposal);
|
||||
lifebytes = sa_payload->get_lifebytes(sa_payload, this->proposal);
|
||||
if (this->lifetime != lifetime)
|
||||
{
|
||||
DBG1(DBG_IKE, "received %us lifetime, configured %us",
|
||||
|
||||
Reference in New Issue
Block a user