From: Arne Schwabe Date: Tue, 22 Nov 2016 11:38:36 +0000 (+0100) Subject: Handle DNS6 option on Android X-Git-Tag: v2.4_beta2~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=39b7d4da02c40e76640c4da96ef7da7a6354cc00;p=thirdparty%2Fopenvpn.git Handle DNS6 option on Android Patch V2: Prefer IPv6 DNS servers Acked-by: Gert Doering Message-Id: <1479814716-20116-1-git-send-email-arne@rfc2549.org> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg13195.html Signed-off-by: Gert Doering --- diff --git a/doc/android.txt b/doc/android.txt index 5f4ee9529..e287be0a8 100644 --- a/doc/android.txt +++ b/doc/android.txt @@ -47,7 +47,8 @@ ROUTE network netmask To tell the UI which routes should be set on the tun interface. -DNSSERVER serverip +DNSSERVER IP server address +DNS6SERVER IPv6 server address DNSDOMAIN searchdomain To set the DNS server and search domain. diff --git a/src/openvpn/tun.c b/src/openvpn/tun.c index a079f4718..3ebf2b2b5 100644 --- a/src/openvpn/tun.c +++ b/src/openvpn/tun.c @@ -1638,14 +1638,20 @@ void open_tun (const char *dev, const char *dev_type, const char *dev_node, struct tuntap *tt) { #define ANDROID_TUNNAME "vpnservice-tun" - int i; struct user_pass up; struct gc_arena gc = gc_new (); bool opentun; int oldtunfd = tt->fd; - for (i = 0; i < tt->options.dns_len; ++i) { + /* Prefer IPv6 DNS servers, + * Android will use the DNS server in the order we specify*/ + for (int i = 0; i < tt->options.dns6_len; i++) { + management_android_control (management, "DNS6SERVER", + print_in6_addr (tt->options.dns6[i], 0, &gc)); + } + + for (int i = 0; i < tt->options.dns_len; i++) { management_android_control (management, "DNSSERVER", print_in_addr_t(tt->options.dns[i], 0, &gc)); }