aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2013-03-07 18:20:10 +0100
committerTobias Brunner <tobias@strongswan.org>2013-03-20 15:24:26 +0100
commit8249f288f2fcc5e7e340d8212d38183d76f59e6c (patch)
treebf515ff68b152b2199ed046d258dac4801ee2030
parentee66565d43fcbcdd6b6ab9c5f434e91abff65248 (diff)
downloadstrongswan-8249f288f2fcc5e7e340d8212d38183d76f59e6c.tar.bz2
strongswan-8249f288f2fcc5e7e340d8212d38183d76f59e6c.tar.xz
android: Request and install an IPv6 DNS server
-rw-r--r--src/frontends/android/jni/libandroidbridge/backend/android_attr.c20
-rw-r--r--src/frontends/android/jni/libandroidbridge/vpnservice_builder.c6
2 files changed, 17 insertions, 9 deletions
diff --git a/src/frontends/android/jni/libandroidbridge/backend/android_attr.c b/src/frontends/android/jni/libandroidbridge/backend/android_attr.c
index bf6073fef..1d7bf14bb 100644
--- a/src/frontends/android/jni/libandroidbridge/backend/android_attr.c
+++ b/src/frontends/android/jni/libandroidbridge/backend/android_attr.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 Tobias Brunner
+ * Copyright (C) 2012-2013 Tobias Brunner
* Copyright (C) 2012 Giuliano Grassi
* Copyright (C) 2012 Ralf Sager
* Hochschule fuer Technik Rapperswil
@@ -47,6 +47,9 @@ METHOD(attribute_handler_t, handle, bool,
case INTERNAL_IP4_DNS:
dns = host_create_from_chunk(AF_INET, data, 0);
break;
+ case INTERNAL_IP6_DNS:
+ dns = host_create_from_chunk(AF_INET6, data, 0);
+ break;
default:
return FALSE;
}
@@ -70,22 +73,31 @@ METHOD(attribute_handler_t, release, void,
/* DNS servers cannot be removed from an existing TUN device */
}
-METHOD(enumerator_t, enumerate_dns, bool,
+METHOD(enumerator_t, enumerate_dns6, bool,
enumerator_t *this, configuration_attribute_type_t *type, chunk_t *data)
{
- *type = INTERNAL_IP4_DNS;
+ *type = INTERNAL_IP6_DNS;
*data = chunk_empty;
this->enumerate = (void*)return_false;
return TRUE;
}
+METHOD(enumerator_t, enumerate_dns4, bool,
+ enumerator_t *this, configuration_attribute_type_t *type, chunk_t *data)
+{
+ *type = INTERNAL_IP4_DNS;
+ *data = chunk_empty;
+ this->enumerate = (void*)_enumerate_dns6;
+ return TRUE;
+}
+
METHOD(attribute_handler_t, create_attribute_enumerator, enumerator_t*,
private_android_attr_t *this, identification_t *server, linked_list_t *vips)
{
enumerator_t *enumerator;
INIT(enumerator,
- .enumerate = (void*)_enumerate_dns,
+ .enumerate = (void*)_enumerate_dns4,
.destroy = (void*)free,
);
return enumerator;
diff --git a/src/frontends/android/jni/libandroidbridge/vpnservice_builder.c b/src/frontends/android/jni/libandroidbridge/vpnservice_builder.c
index 5232bc482..6b10228d0 100644
--- a/src/frontends/android/jni/libandroidbridge/vpnservice_builder.c
+++ b/src/frontends/android/jni/libandroidbridge/vpnservice_builder.c
@@ -161,16 +161,12 @@ METHOD(vpnservice_builder_t, add_dns, bool,
JNIEnv *env;
jmethodID method_id;
jstring str;
- char buf[INET_ADDRSTRLEN];
+ char buf[INET6_ADDRSTRLEN];
androidjni_attach_thread(&env);
DBG2(DBG_LIB, "builder: adding DNS server %H", dns);
- if (dns->get_family(dns) != AF_INET)
- {
- goto failed;
- }
if (snprintf(buf, sizeof(buf), "%H", dns) >= sizeof(buf))
{
goto failed;