Adopt children after syncing a rekeyed IKEv1 SA

This commit is contained in:
Martin Willi 2012-01-20 13:42:37 +01:00
parent fed5c33440
commit aa3b53e716
3 changed files with 10 additions and 2 deletions

View File

@ -19,6 +19,7 @@
#include <sa/ikev2/keymat_v2.h>
#include <sa/ikev1/keymat_v1.h>
#include <processing/jobs/callback_job.h>
#include <processing/jobs/adopt_children_job.h>
typedef struct private_ha_dispatcher_t private_ha_dispatcher_t;
typedef struct ha_diffie_hellman_t ha_diffie_hellman_t;
@ -427,6 +428,11 @@ static void process_ike_update(private_ha_dispatcher_t *this,
}
}
}
if (ike_sa->get_version(ike_sa) == IKEV1)
{
lib->processor->queue_job(lib->processor, (job_t*)
adopt_children_job_create(ike_sa->get_id(ike_sa)));
}
this->cache->cache(this->cache, ike_sa, message);
charon->ike_sa_manager->checkin(charon->ike_sa_manager, ike_sa);
}

View File

@ -88,7 +88,8 @@ METHOD(job_t, execute, void,
ike_sa = charon->ike_sa_manager->checkout(charon->ike_sa_manager, id);
if (ike_sa)
{
if (ike_sa->get_state(ike_sa) == IKE_ESTABLISHED &&
if ((ike_sa->get_state(ike_sa) == IKE_ESTABLISHED ||
ike_sa->get_state(ike_sa) == IKE_PASSIVE) &&
me->equals(me, ike_sa->get_my_host(ike_sa)) &&
other->equals(other, ike_sa->get_other_host(ike_sa)) &&
xauth->equals(xauth, ike_sa->get_other_eap_id(ike_sa)) &&

View File

@ -1375,7 +1375,8 @@ METHOD(ike_sa_manager_t, checkin, void,
}
/* apply identities for duplicate test */
if (ike_sa->get_state(ike_sa) == IKE_ESTABLISHED &&
if ((ike_sa->get_state(ike_sa) == IKE_ESTABLISHED ||
ike_sa->get_state(ike_sa) == IKE_PASSIVE) &&
entry->my_id == NULL && entry->other_id == NULL)
{
if (ike_sa->get_version(ike_sa) == IKEV1)