From 3a05566d0eb5327d4eea87250392c94c4e70669a Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Tue, 22 May 2018 18:04:00 +0200 Subject: [PATCH] ike-mobike: Always use this task for DPDs even if not behind a NAT This allows switching to probing mode if the client is on a public IP and this is the active task and connectivity gets restored. We only add NAT-D payloads if we are currently behind a NAT (to detect changed NAT mappings), a MOBIKE update that might follow will add them in case we move behind a NAT. --- src/libcharon/sa/ikev2/task_manager_v2.c | 3 +-- src/libcharon/sa/ikev2/tasks/ike_mobike.c | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/libcharon/sa/ikev2/task_manager_v2.c b/src/libcharon/sa/ikev2/task_manager_v2.c index fff5672336..2facedbb06 100644 --- a/src/libcharon/sa/ikev2/task_manager_v2.c +++ b/src/libcharon/sa/ikev2/task_manager_v2.c @@ -1946,8 +1946,7 @@ METHOD(task_manager_t, queue_dpd, void, { ike_mobike_t *mobike; - if (this->ike_sa->supports_extension(this->ike_sa, EXT_MOBIKE) && - this->ike_sa->has_condition(this->ike_sa, COND_NAT_HERE)) + if (this->ike_sa->supports_extension(this->ike_sa, EXT_MOBIKE)) { #ifdef ME peer_cfg_t *cfg = this->ike_sa->get_peer_cfg(this->ike_sa); diff --git a/src/libcharon/sa/ikev2/tasks/ike_mobike.c b/src/libcharon/sa/ikev2/tasks/ike_mobike.c index fe41a1cacf..b2ad0a02af 100644 --- a/src/libcharon/sa/ikev2/tasks/ike_mobike.c +++ b/src/libcharon/sa/ikev2/tasks/ike_mobike.c @@ -193,7 +193,7 @@ static void process_payloads(private_ike_mobike_t *this, message_t *message) case NAT_DETECTION_DESTINATION_IP: { /* NAT check in this MOBIKE exchange, create subtask for it */ - if (this->natd == NULL) + if (!this->natd) { this->natd = ike_natd_create(this->ike_sa, this->initiator); } @@ -648,7 +648,7 @@ METHOD(ike_mobike_t, roam, void, METHOD(ike_mobike_t, dpd, void, private_ike_mobike_t *this) { - if (!this->natd) + if (!this->natd && this->ike_sa->has_condition(this->ike_sa, COND_NAT_HERE)) { this->natd = ike_natd_create(this->ike_sa, this->initiator); } -- 2.47.2