Patch V2: Prefer IPv6 DNS servers --- doc/android.txt | 3 ++- src/openvpn/tun.c | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/doc/android.txt b/doc/android.txt index 5f4ee95..e287be0 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 5950906..04ebf99 100644 --- a/src/openvpn/tun.c +++ b/src/openvpn/tun.c @@ -1629,14 +1629,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)); } -- 2.9.3 (Apple Git-75) ------------------------------------------------------------------------------ _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel