diff options
author | Robert Greenwalt <rgreenwalt@google.com> | 2011-07-06 07:48:21 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-07-06 07:48:21 -0700 |
commit | 37dbfcaf836cf37d1e404cd2cf25f4ed670bc80f (patch) | |
tree | 80ef6ef90c6aed3449334b60e9f9cf85f3072d4d /services | |
parent | c0c07d4ff689a6050ef368933b9c53283a01520a (diff) | |
parent | 7022db4cd2ca3721631595d7379eabb2cc77f6a9 (diff) | |
download | frameworks_base-37dbfcaf836cf37d1e404cd2cf25f4ed670bc80f.zip frameworks_base-37dbfcaf836cf37d1e404cd2cf25f4ed670bc80f.tar.gz frameworks_base-37dbfcaf836cf37d1e404cd2cf25f4ed670bc80f.tar.bz2 |
am 7022db4c: am 2b62c4fb: am 38bb0123: Merge "Added methods to support dns cache per interface"
* commit '7022db4cd2ca3721631595d7379eabb2cc77f6a9':
Added methods to support dns cache per interface
Diffstat (limited to 'services')
-rw-r--r-- | services/java/com/android/server/NetworkManagementService.java | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/services/java/com/android/server/NetworkManagementService.java b/services/java/com/android/server/NetworkManagementService.java index 0b4b958..b34906f 100644 --- a/services/java/com/android/server/NetworkManagementService.java +++ b/services/java/com/android/server/NetworkManagementService.java @@ -949,4 +949,65 @@ class NetworkManagementService extends INetworkManagementService.Stub { public int getInterfaceTxThrottle(String iface) { return getInterfaceThrottle(iface, false); } + + public void setDefaultInterfaceForDns(String iface) throws IllegalStateException { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.CHANGE_NETWORK_STATE, "NetworkManagementService"); + try { + String cmd = "resolver setdefaultif " + iface; + + mConnector.doCommand(cmd); + } catch (NativeDaemonConnectorException e) { + throw new IllegalStateException( + "Error communicating with native daemon to set default interface", e); + } + } + + public void setDnsServersForInterface(String iface, String[] servers) + throws IllegalStateException { + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.CHANGE_NETWORK_STATE, + "NetworkManagementService"); + try { + String cmd = "resolver setifdns " + iface; + for (String s : servers) { + if (s != null && !"0.0.0.0".equals(s) && + !"::".equals(s) && !"0:0:0:0:0:0:0:0".equals(s)) { + cmd += " " + InetAddress.getByName(s).getHostAddress(); + } + } + + mConnector.doCommand(cmd); + } catch (UnknownHostException e) { + throw new IllegalStateException("failed to resolve dns address.", e); + } catch (NativeDaemonConnectorException e) { + throw new IllegalStateException( + "Error communicating with native deamon to set dns for interface", e); + } + } + + public void flushDefaultDnsCache() throws IllegalStateException { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.CHANGE_NETWORK_STATE, "NetworkManagementService"); + try { + String cmd = "resolver flushdefaultif"; + + mConnector.doCommand(cmd); + } catch (NativeDaemonConnectorException e) { + throw new IllegalStateException( + "Error communicating with native deamon to flush default interface", e); + } + } + + public void flushInterfaceDnsCache(String iface) throws IllegalStateException { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.CHANGE_NETWORK_STATE, "NetworkManagementService"); + try { + String cmd = "resolver flushif " + iface; + + mConnector.doCommand(cmd); + } catch (NativeDaemonConnectorException e) { + throw new IllegalStateException( + "Error communicating with native deamon to flush interface " + iface, e); + } + } } |