aboutsummaryrefslogtreecommitdiffstats
path: root/src/frontends/android/jni/libandroidbridge/vpnservice_builder.h
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-08-13 12:07:52 +0200
committerTobias Brunner <tobias@strongswan.org>2012-08-13 12:07:52 +0200
commit09ae3d79ca0f1143736a0de45678915a3ebe5a3f (patch)
treed304e8e618450d0e4867dfc72e14ed575a442c20 /src/frontends/android/jni/libandroidbridge/vpnservice_builder.h
parente4ef4c9877d5ccb773ace0edf655351428c39572 (diff)
parentefbb5e8c57330ec730825aa31ac5153f1d1c5913 (diff)
downloadstrongswan-09ae3d79ca0f1143736a0de45678915a3ebe5a3f.tar.bz2
strongswan-09ae3d79ca0f1143736a0de45678915a3ebe5a3f.tar.xz
Merge branch 'android-app'
This branch introduces a userland IPsec implementation (libipsec) and an Android App which targets the VpnService API that is provided by Android 4+. The implementation is based on the bachelor thesis 'Userland IPsec for Android 4' by Giuliano Grassi and Ralf Sager.
Diffstat (limited to 'src/frontends/android/jni/libandroidbridge/vpnservice_builder.h')
-rw-r--r--src/frontends/android/jni/libandroidbridge/vpnservice_builder.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/frontends/android/jni/libandroidbridge/vpnservice_builder.h b/src/frontends/android/jni/libandroidbridge/vpnservice_builder.h
new file mode 100644
index 000000000..82efd05f7
--- /dev/null
+++ b/src/frontends/android/jni/libandroidbridge/vpnservice_builder.h
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2012 Tobias Brunner
+ * Copyright (C) 2012 Giuliano Grassi
+ * Copyright (C) 2012 Ralf Sager
+ * Hochschule fuer Technik Rapperswil
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+/**
+ * @defgroup vpnservice_builder vpnservice_builder
+ * @{ @ingroup libandroidbridge
+ */
+
+#ifndef VPNSERVICE_BUILDER_H_
+#define VPNSERVICE_BUILDER_H_
+
+#include <jni.h>
+
+#include <library.h>
+#include <utils/host.h>
+
+typedef struct vpnservice_builder_t vpnservice_builder_t;
+
+/**
+ * VpnService.Builder, used to build a TUN device.
+ *
+ * Communicates with CharonVpnService.BuilderAdapter via JNI
+ */
+struct vpnservice_builder_t {
+
+ /**
+ * Add an interface address
+ *
+ * @param addr the desired interface address
+ * @return TRUE on success
+ */
+ bool (*add_address)(vpnservice_builder_t *this, host_t *addr);
+
+ /**
+ * Add a route
+ *
+ * @param net the network address
+ * @param prefix_length the prefix length
+ * @return TRUE on success
+ */
+ bool (*add_route)(vpnservice_builder_t *this, host_t *net, int prefix);
+
+ /**
+ * Add a DNS server
+ *
+ * @param dns the address of the DNS server
+ * @return TRUE on success
+ */
+ bool (*add_dns)(vpnservice_builder_t *this, host_t *dns);
+
+ /**
+ * Set the MTU for the TUN device
+ *
+ * @param mtu the MTU to set
+ * @return TRUE on success
+ */
+ bool (*set_mtu)(vpnservice_builder_t *this, int mtu);
+
+ /**
+ * Build the TUN device
+ *
+ * @return the TUN file descriptor, -1 if failed
+ */
+ int (*establish)(vpnservice_builder_t *this);
+
+ /**
+ * Destroy a vpnservice_builder
+ */
+ void (*destroy)(vpnservice_builder_t *this);
+
+};
+
+/**
+ * Create a vpnservice_builder instance
+ *
+ * @param builder CharonVpnService.BuilderAdapter object
+ * @return vpnservice_builder_t instance
+ */
+vpnservice_builder_t *vpnservice_builder_create(jobject builder);
+
+#endif /** VPNSERVICE_BUILDER_H_ @}*/