diff options
author | Tobias Brunner <tobias@strongswan.org> | 2014-07-28 13:12:09 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2014-09-12 10:29:36 +0200 |
commit | 7840952edc49720627bd97f69eb472267ffb8c75 (patch) | |
tree | 13f74dc948972e4cf106d796ec778eb2b441ae87 /src | |
parent | 1b17f647a5fa030b5efa4cf4c44173b9e2de61f1 (diff) | |
download | strongswan-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.c | 7 | ||||
-rw-r--r-- | src/libcharon/sa/ikev2/tasks/ike_mobike.h | 3 |
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. |