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
This commit is contained in:
Robert Greenwalt
2011-07-25 17:00:13 -07:00
parent cae18f1a8e
commit fd0597c8e4
2 changed files with 26 additions and 0 deletions

View File

@@ -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<InetAddress> addrs) {
String[] result = new String[addrs.size()];
int i=0;
for (InetAddress addr : addrs) {
result[i++] = addr.getHostAddress();
}
return result;
}
}

View File

@@ -1757,8 +1757,19 @@ public class ConnectivityService extends IConnectivityManager.Stub {
LinkProperties p = nt.getLinkProperties();
if (p == null) return;
Collection<InetAddress> 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();