From 568891d9282383747c418a59ee714281726f390a Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Fri, 4 Apr 2014 13:38:00 -0700 Subject: [PATCH] Add multinetwork netd calls bug:13732575 Change-Id: I7f030bd63971ff71d32a221e50318c781e7f2370 --- .../android/os/INetworkManagementService.aidl | 15 ++ .../server/NetworkManagementService.java | 164 ++++++++++++++++++ 2 files changed, 179 insertions(+) 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