diff options
4 files changed, 15 insertions, 1 deletions
diff --git a/src/frontends/android/jni/Android.mk b/src/frontends/android/jni/Android.mk index e5659a4df..ad5ddd6d3 100644 --- a/src/frontends/android/jni/Android.mk +++ b/src/frontends/android/jni/Android.mk @@ -57,6 +57,7 @@ include $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk, \ vstr \ openssl \ libandroidbridge \ + strongswan/src/libipsec \ strongswan/src/libcharon \ strongswan/src/libhydra \ strongswan/src/libstrongswan \ diff --git a/src/frontends/android/jni/libandroidbridge/Android.mk b/src/frontends/android/jni/libandroidbridge/Android.mk index 7f25a540a..3b8b98b86 100644 --- a/src/frontends/android/jni/libandroidbridge/Android.mk +++ b/src/frontends/android/jni/libandroidbridge/Android.mk @@ -9,6 +9,7 @@ charonservice.c LOCAL_C_INCLUDES += \ $(libvstr_PATH) \ + $(strongswan_PATH)/src/libipsec \ $(strongswan_PATH)/src/libhydra \ $(strongswan_PATH)/src/libcharon \ $(strongswan_PATH)/src/libstrongswan @@ -26,7 +27,7 @@ LOCAL_PRELINK_MODULE := false LOCAL_LDLIBS := -llog -LOCAL_SHARED_LIBRARIES := libstrongswan libhydra libcharon +LOCAL_SHARED_LIBRARIES := libstrongswan libhydra libipsec libcharon include $(BUILD_SHARED_LIBRARY) diff --git a/src/frontends/android/jni/libandroidbridge/charonservice.c b/src/frontends/android/jni/libandroidbridge/charonservice.c index ecc243481..424d50d24 100644 --- a/src/frontends/android/jni/libandroidbridge/charonservice.c +++ b/src/frontends/android/jni/libandroidbridge/charonservice.c @@ -18,6 +18,7 @@ #include <jni.h> #include <hydra.h> +#include <ipsec.h> #include <daemon.h> #include <library.h> @@ -88,10 +89,19 @@ JNI_METHOD(CharonVpnService, initializeCharon, void) return; } + if (!libipsec_init()) + { + libipsec_deinit(); + libhydra_deinit(); + library_deinit(); + return; + } + if (!libcharon_init("charon") || !charon->initialize(charon, PLUGINS)) { libcharon_deinit(); + libipsec_deinit(); libhydra_deinit(); library_deinit(); return; @@ -107,6 +117,7 @@ JNI_METHOD(CharonVpnService, initializeCharon, void) JNI_METHOD(CharonVpnService, deinitializeCharon, void) { libcharon_deinit(); + libipsec_deinit(); libhydra_deinit(); library_deinit(); } diff --git a/src/frontends/android/src/org/strongswan/android/CharonVpnService.java b/src/frontends/android/src/org/strongswan/android/CharonVpnService.java index 596372f9d..52d427c2f 100644 --- a/src/frontends/android/src/org/strongswan/android/CharonVpnService.java +++ b/src/frontends/android/src/org/strongswan/android/CharonVpnService.java @@ -45,6 +45,7 @@ public class CharonVpnService extends VpnService { System.loadLibrary("strongswan"); System.loadLibrary("hydra"); System.loadLibrary("charon"); + System.loadLibrary("ipsec"); System.loadLibrary("androidbridge"); } } |