aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-08-08 13:20:34 +0200
committerTobias Brunner <tobias@strongswan.org>2012-08-13 11:00:28 +0200
commitdffee9e2b0496ba2a5989e419be9131b37c245e7 (patch)
tree1a5608f4419d219c197c5fddbdc478a3fef0d03d
parent66211196a70301dca7d271aab3a9c55b66a91e14 (diff)
downloadstrongswan-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.java37
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.