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:
Tobias Brunner
2020-03-06 10:31:30 +01:00
parent 1c6b43b8ea
commit e0dd36c9c7
7 changed files with 57 additions and 32 deletions
@@ -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 "
+3 -2
View File
@@ -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 "
+2 -2
View File
@@ -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",