aboutsummaryrefslogtreecommitdiffstats
path: root/src/frontends/android/jni/libandroidbridge/backend/android_service.c
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-08-08 14:46:22 +0200
committerTobias Brunner <tobias@strongswan.org>2012-08-13 11:09:34 +0200
commit62e6630b248b0f7e387dae8d16dd56db71262b35 (patch)
tree70a544f8e497ba77618287bf3defbc642bfd44fb /src/frontends/android/jni/libandroidbridge/backend/android_service.c
parenta2993d72435970805f271231bf169e9c5a092508 (diff)
downloadstrongswan-62e6630b248b0f7e387dae8d16dd56db71262b35.tar.bz2
strongswan-62e6630b248b0f7e387dae8d16dd56db71262b35.tar.xz
Add virtual IP to the TUN device builder
After the CHILD_SA is established we can easily get this address from the IKE_SA.
Diffstat (limited to 'src/frontends/android/jni/libandroidbridge/backend/android_service.c')
-rw-r--r--src/frontends/android/jni/libandroidbridge/backend/android_service.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/frontends/android/jni/libandroidbridge/backend/android_service.c b/src/frontends/android/jni/libandroidbridge/backend/android_service.c
index 691d5fc6d..d44bebc9a 100644
--- a/src/frontends/android/jni/libandroidbridge/backend/android_service.c
+++ b/src/frontends/android/jni/libandroidbridge/backend/android_service.c
@@ -80,13 +80,21 @@ static bool setup_tun_device(private_android_service_t *this,
ike_sa_t *ike_sa, child_sa_t *child_sa)
{
vpnservice_builder_t *builder;
+ host_t *vip;
int tunfd;
DBG1(DBG_DMN, "setting up TUN device for CHILD_SA %s{%u}",
child_sa->get_name(child_sa), child_sa->get_reqid(child_sa));
+ vip = ike_sa->get_virtual_ip(ike_sa, TRUE);
+ if (!vip || vip->is_anyaddr(vip))
+ {
+ DBG1(DBG_DMN, "setting up TUN device failed, no virtual IP found");
+ return FALSE;
+ }
builder = charonservice->get_vpnservice_builder(charonservice);
- if (!builder->set_mtu(builder, TUN_DEFAULT_MTU))
+ if (!builder->add_address(builder, vip) ||
+ !builder->set_mtu(builder, TUN_DEFAULT_MTU))
{
return FALSE;
}