ike-mobike: Force MOBIKE update after NAT mappings changed

The addresses observed by the client behind the NAT are exactly the same if
the NAT router gets restarted.

Fixes: 2b255f01af ("ike-mobike: Use ike_sa_t::update_hosts() to trigger events")
This commit is contained in:
Tobias Brunner 2021-06-10 16:39:18 +02:00 committed by Andreas Steffen
parent 036ae27645
commit abe51389c5
1 changed files with 4 additions and 1 deletions

View File

@ -499,6 +499,8 @@ METHOD(task_t, process_i, status_t,
}
else if (message->get_exchange_type(message) == INFORMATIONAL)
{
bool force = FALSE;
if (is_newer_update_queued(this))
{
return SUCCESS;
@ -533,6 +535,7 @@ METHOD(task_t, process_i, status_t,
}
else if (this->natd->has_mapping_changed(this->natd))
{ /* force a check/update if mappings have changed during a DPD */
force = TRUE;
this->check = TRUE;
DBG1(DBG_IKE, "detected changes in NAT mappings, "
"initiating MOBIKE update");
@ -553,7 +556,7 @@ METHOD(task_t, process_i, status_t,
{
other_new = other;
}
if (me_new || other_new)
if (me_new || other_new || force)
{
this->ike_sa->update_hosts(this->ike_sa, me_new, other_new,
UPDATE_HOSTS_FORCE_ALL);