ike: Ignore rekeyed and deleted CHILD_SAs when reestablishing IKE_SAs

This commit is contained in:
Tobias Brunner
2018-04-12 16:32:47 +02:00
parent a1620c16ec
commit a747ad738c
2 changed files with 27 additions and 0 deletions
+18
View File
@@ -1928,6 +1928,15 @@ static status_t reestablish_children(private_ike_sa_t *this, ike_sa_t *new,
enumerator = create_child_sa_enumerator(this);
while (enumerator->enumerate(enumerator, (void**)&child_sa))
{
switch (child_sa->get_state(child_sa))
{
case CHILD_REKEYED:
case CHILD_DELETED:
/* ignore CHILD_SAs in these states */
continue;
default:
break;
}
if (force)
{
action = ACTION_RESTART;
@@ -2008,6 +2017,15 @@ METHOD(ike_sa_t, reestablish, status_t,
enumerator = array_create_enumerator(this->child_sas);
while (enumerator->enumerate(enumerator, (void**)&child_sa))
{
switch (child_sa->get_state(child_sa))
{
case CHILD_REKEYED:
case CHILD_DELETED:
/* ignore CHILD_SAs in these states */
continue;
default:
break;
}
if (this->state == IKE_DELETING)
{
action = child_sa->get_close_action(child_sa);