From: Tobias Brunner Date: Wed, 8 Aug 2012 11:20:34 +0000 (+0200) Subject: Helper function added that retrieves a local IP address X-Git-Tag: 5.0.1~210^2~40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dffee9e2b0496ba2a5989e419be9131b37c245e7;p=thirdparty%2Fstrongswan.git Helper function added that retrieves a local IP address --- 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 d66a5517d8..6b454654aa 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 en = NetworkInterface.getNetworkInterfaces(); + while (en.hasMoreElements()) + { + NetworkInterface intf = en.nextElement(); + + Enumeration 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.