diff options
author | Tobias Brunner <tobias@strongswan.org> | 2012-08-08 13:20:34 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2012-08-13 11:00:28 +0200 |
commit | dffee9e2b0496ba2a5989e419be9131b37c245e7 (patch) | |
tree | 1a5608f4419d219c197c5fddbdc478a3fef0d03d | |
parent | 66211196a70301dca7d271aab3a9c55b66a91e14 (diff) | |
download | strongswan-dffee9e2b0496ba2a5989e419be9131b37c245e7.tar.bz2 strongswan-dffee9e2b0496ba2a5989e419be9131b37c245e7.tar.xz |
Helper function added that retrieves a local IP address
-rw-r--r-- | src/frontends/android/src/org/strongswan/android/logic/CharonVpnService.java | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/frontends/android/src/org/strongswan/android/logic/CharonVpnService.java b/src/frontends/android/src/org/strongswan/android/logic/CharonVpnService.java index d66a5517d..6b454654a 100644 --- a/src/frontends/android/src/org/strongswan/android/logic/CharonVpnService.java +++ b/src/frontends/android/src/org/strongswan/android/logic/CharonVpnService.java @@ -17,9 +17,13 @@ package org.strongswan.android.logic; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.SocketException; import java.security.cert.CertificateEncodingException; import java.security.cert.X509Certificate; import java.util.ArrayList; +import java.util.Enumeration; import org.strongswan.android.data.VpnProfile; import org.strongswan.android.data.VpnProfileDataSource; @@ -399,6 +403,39 @@ public class CharonVpnService extends VpnService implements Runnable */ public native void deinitializeCharon(); + /** + * Helper function that retrieves a local IPv4 address. + * + * @return string representation of an IPv4 address, or null if none found + */ + private static String getLocalIPv4Address() + { + try + { + Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); + while (en.hasMoreElements()) + { + NetworkInterface intf = en.nextElement(); + + Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); + while (enumIpAddr.hasMoreElements()) + { + InetAddress inetAddress = enumIpAddr.nextElement(); + if (!inetAddress.isLoopbackAddress() && inetAddress.getAddress().length == 4) + { + return inetAddress.getHostAddress().toString(); + } + } + } + } + catch (SocketException ex) + { + ex.printStackTrace(); + return null; + } + return null; + } + /* * The libraries are extracted to /data/data/org.strongswan.android/... * during installation. |