aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2014-07-28 13:12:09 +0200
committerTobias Brunner <tobias@strongswan.org>2014-09-12 10:29:36 +0200
commit7840952edc49720627bd97f69eb472267ffb8c75 (patch)
tree13f74dc948972e4cf106d796ec778eb2b441ae87 /src
parent1b17f647a5fa030b5efa4cf4c44173b9e2de61f1 (diff)
downloadstrongswan-7840952edc49720627bd97f69eb472267ffb8c75.tar.bz2
strongswan-7840952edc49720627bd97f69eb472267ffb8c75.tar.xz
ike-mobike: Return FALSE in transmit() if no path was available
Diffstat (limited to 'src')
-rw-r--r--src/libcharon/sa/ikev2/tasks/ike_mobike.c7
-rw-r--r--src/libcharon/sa/ikev2/tasks/ike_mobike.h3
2 files changed, 7 insertions, 3 deletions
diff --git a/src/libcharon/sa/ikev2/tasks/ike_mobike.c b/src/libcharon/sa/ikev2/tasks/ike_mobike.c
index 7d26de144..65679016c 100644
--- a/src/libcharon/sa/ikev2/tasks/ike_mobike.c
+++ b/src/libcharon/sa/ikev2/tasks/ike_mobike.c
@@ -306,7 +306,7 @@ static void apply_port(host_t *host, host_t *old, u_int16_t port, bool local)
host->set_port(host, port);
}
-METHOD(ike_mobike_t, transmit, void,
+METHOD(ike_mobike_t, transmit, bool,
private_ike_mobike_t *this, packet_t *packet)
{
host_t *me, *other, *me_old, *other_old;
@@ -314,10 +314,11 @@ METHOD(ike_mobike_t, transmit, void,
ike_cfg_t *ike_cfg;
packet_t *copy;
int family = AF_UNSPEC;
+ bool found = FALSE;
if (!this->check)
{
- return;
+ return TRUE;
}
switch (charon->socket->supported_families(charon->socket))
@@ -357,9 +358,11 @@ METHOD(ike_mobike_t, transmit, void,
copy->set_source(copy, me);
copy->set_destination(copy, other);
charon->sender->send(charon->sender, copy);
+ found = TRUE;
}
}
enumerator->destroy(enumerator);
+ return found;
}
METHOD(task_t, build_i, status_t,
diff --git a/src/libcharon/sa/ikev2/tasks/ike_mobike.h b/src/libcharon/sa/ikev2/tasks/ike_mobike.h
index 2946f5e4a..bb2318c9c 100644
--- a/src/libcharon/sa/ikev2/tasks/ike_mobike.h
+++ b/src/libcharon/sa/ikev2/tasks/ike_mobike.h
@@ -70,8 +70,9 @@ struct ike_mobike_t {
* probing.
*
* @param packet the packet to transmit
+ * @return TRUE if transmitted, FALSE if no path found
*/
- void (*transmit)(ike_mobike_t *this, packet_t *packet);
+ bool (*transmit)(ike_mobike_t *this, packet_t *packet);
/**
* Check if this task is probing for routability.