From fd0597c8e4f406514e541c56c579d0d8df05e23e Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Mon, 25 Jul 2011 17:00:13 -0700 Subject: [PATCH] Use dns proxy a bit. Sets the current default interface and sets the dns per interface. port of changes 23041 and 22098 from opensource. bug:5060618 Change-Id: I80e7ef88727eeb8ff2b48059f69b270e5a6b5c16 --- core/java/android/net/NetworkUtils.java | 15 +++++++++++++++ .../com/android/server/ConnectivityService.java | 11 +++++++++++ 2 files changed, 26 insertions(+) diff --git a/core/java/android/net/NetworkUtils.java b/core/java/android/net/NetworkUtils.java index 76534ef3d8..e07cbcefbb 100644 --- a/core/java/android/net/NetworkUtils.java +++ b/core/java/android/net/NetworkUtils.java @@ -20,6 +20,7 @@ import java.net.InetAddress; import java.net.Inet4Address; import java.net.Inet6Address; import java.net.UnknownHostException; +import java.util.Collection; import android.util.Log; @@ -235,4 +236,18 @@ public class NetworkUtils { throw new IllegalArgumentException(e); } } + + /** + * Create a string array of host addresses from a collection of InetAddresses + * @param addrs a Collection of InetAddresses + * @return an array of Strings containing their host addresses + */ + public static String[] makeStrings(Collection addrs) { + String[] result = new String[addrs.size()]; + int i=0; + for (InetAddress addr : addrs) { + result[i++] = addr.getHostAddress(); + } + return result; + } } diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 2bbf92e2bb..3c2f6195d3 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -1757,8 +1757,19 @@ public class ConnectivityService extends IConnectivityManager.Stub { LinkProperties p = nt.getLinkProperties(); if (p == null) return; Collection dnses = p.getDnses(); + try { + mNetd.setDnsServersForInterface(p.getInterfaceName(), + NetworkUtils.makeStrings(dnses)); + } catch (Exception e) { + Slog.e(TAG, "exception setting dns servers: " + e); + } boolean changed = false; if (mNetConfigs[netType].isDefault()) { + try { + mNetd.setDefaultInterfaceForDns(p.getInterfaceName()); + } catch (Exception e) { + Slog.e(TAG, "exception setting default dns interface: " + e); + } int j = 1; if (dnses.size() == 0 && mDefaultDns != null) { String dnsString = mDefaultDns.getHostAddress();