compare IKE config when reusing an existing IKE_SA to initiate a CHILD_SA

This commit is contained in:
Martin Willi
2009-08-03 14:37:24 +02:00
parent 10c13ed264
commit 5cb300e795
+13 -8
View File
@@ -1050,7 +1050,8 @@ static ike_sa_t* checkout_by_config(private_ike_sa_manager_t *this,
enumerator_t *enumerator;
entry_t *entry;
ike_sa_t *ike_sa = NULL;
peer_cfg_t *current_cfg;
peer_cfg_t *current_peer;
ike_cfg_t *current_ike;
u_int segment;
if (!this->reuse_ikesa)
@@ -1072,14 +1073,18 @@ static ike_sa_t* checkout_by_config(private_ike_sa_manager_t *this,
continue;
}
current_cfg = entry->ike_sa->get_peer_cfg(entry->ike_sa);
if (current_cfg && current_cfg->equals(current_cfg, peer_cfg))
current_peer = entry->ike_sa->get_peer_cfg(entry->ike_sa);
if (current_peer && current_peer->equals(current_peer, peer_cfg))
{
DBG2(DBG_MGR, "found an existing IKE_SA with a '%s' config",
current_cfg->get_name(current_cfg));
entry->checked_out = TRUE;
ike_sa = entry->ike_sa;
break;
current_ike = current_peer->get_ike_cfg(current_peer);
if (current_ike->equals(current_ike, peer_cfg->get_ike_cfg(peer_cfg)))
{
DBG2(DBG_MGR, "found an existing IKE_SA with a '%s' config",
current_peer->get_name(current_peer));
entry->checked_out = TRUE;
ike_sa = entry->ike_sa;
break;
}
}
}
enumerator->destroy(enumerator);