diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl index 9e03f95048d97..f56df79abc59f 100644 --- a/core/java/android/os/INetworkManagementService.aidl +++ b/core/java/android/os/INetworkManagementService.aidl @@ -465,4 +465,19 @@ interface INetworkManagementService * remove a network */ void removeNetwork(int netId); + + void addDnsServersForNetId(int netId, in String[] servers, in String domains); + void removeDnsServersForNetId(int netId, in String[] servers, in String domains); + + void addRouteForNetId(in RouteInfo routeInfo); + void removeRouteForNetId(in RouteInfo routeInfo); + + void addLegacyRouteForNetId(in RouteInfo routeInfo, int uid); + void removeLegacyRouteForNetId(in RouteInfo routeInfo, int uid); + + void setDefaultNetId(int netId, boolean resetOldSockets); + void clearDefaultNetId(); + + void setPermission(boolean internal, boolean changeNetState, in int[] uids); + void clearPermission(in int[] uids); } diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java index b9c86dc5a9e26..0fecdf9d80d2b 100644 --- a/services/core/java/com/android/server/NetworkManagementService.java +++ b/services/core/java/com/android/server/NetworkManagementService.java @@ -2030,6 +2030,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub pw.print("Firewall enabled: "); pw.println(mFirewallEnabled); } + @Override public void createNetwork(int netId, String iface) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); @@ -2040,6 +2041,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub } } + @Override public void removeNetwork(int netId) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); @@ -2049,4 +2051,166 @@ public class NetworkManagementService extends INetworkManagementService.Stub throw e.rethrowAsParcelableException(); } } + + @Override + public void addDnsServersForNetId(int netId, String[] servers, String domains) { + modifyDnsServersForNetId(netId, servers, domains, ADD); + } + + @Override + public void removeDnsServersForNetId(int netId, String[] servers, + String domains) { + modifyDnsServersForNetId(netId, servers, domains, REMOVE); + } + + private void modifyDnsServersForNetId(int netId, String[] servers, + String domains, String action) { + mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); + + final Command cmd = new Command("network", "dns", action, netId, servers.length); + for(int i=0; i