From 913c895216c0cb248ed0ce910e69dd84b285c064 Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Mon, 7 Apr 2014 17:36:35 -0700 Subject: [PATCH] Update netd interface Adding netId for route changes bug:13732575 Change-Id: Id171412a0f580f71398c9b0b8742acb1f3ef5a1e --- .../android/os/INetworkManagementService.aidl | 8 +-- .../server/NetworkManagementService.java | 59 +++++-------------- 2 files changed, 19 insertions(+), 48 deletions(-) diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl index f56df79abc59f..d3b4a11c3cb39 100644 --- a/core/java/android/os/INetworkManagementService.aidl +++ b/core/java/android/os/INetworkManagementService.aidl @@ -469,11 +469,11 @@ interface INetworkManagementService 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 addRouteForNetId(int netId, in RouteInfo routeInfo); + void removeRouteForNetId(int netId, in RouteInfo routeInfo); - void addLegacyRouteForNetId(in RouteInfo routeInfo, int uid); - void removeLegacyRouteForNetId(in RouteInfo routeInfo, int uid); + void addLegacyRouteForNetId(int netId, in RouteInfo routeInfo, int uid); + void removeLegacyRouteForNetId(int netId, in RouteInfo routeInfo, int uid); void setDefaultNetId(int netId, boolean resetOldSockets); void clearDefaultNetId(); diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java index 0fecdf9d80d2b..878d6c1f6eac3 100644 --- a/services/core/java/com/android/server/NetworkManagementService.java +++ b/services/core/java/com/android/server/NetworkManagementService.java @@ -897,16 +897,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub final LinkAddress la = route.getDestination(); cmd.appendArg(la.getAddress().getHostAddress()); cmd.appendArg(la.getNetworkPrefixLength()); - - if (route.getGateway() == null) { - if (la.getAddress() instanceof Inet4Address) { - cmd.appendArg("0.0.0.0"); - } else { - cmd.appendArg("::0"); - } - } else { - cmd.appendArg(route.getGateway().getHostAddress()); - } + cmd.appendArg(route.getGateway().getHostAddress()); try { mConnector.execute(cmd); @@ -2081,35 +2072,25 @@ public class NetworkManagementService extends INetworkManagementService.Stub } @Override - public void addRouteForNetId(RouteInfo routeInfo) { - modifyRouteForNetId(routeInfo, ADD); + public void addRouteForNetId(int netId, RouteInfo routeInfo) { + modifyRouteForNetId(netId, routeInfo, ADD); } @Override - public void removeRouteForNetId(RouteInfo routeInfo) { - modifyRouteForNetId(routeInfo, REMOVE); + public void removeRouteForNetId(int netId, RouteInfo routeInfo) { + modifyRouteForNetId(netId, routeInfo, REMOVE); } - private void modifyRouteForNetId(RouteInfo routeInfo, String action) { + private void modifyRouteForNetId(int netId, RouteInfo routeInfo, String action) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); - final Command cmd = new Command("network", "route", action); + final Command cmd = new Command("network", "route", action, netId); // create quadlet: dest-ip-addr prefixlength gateway-ip-addr iface final LinkAddress la = routeInfo.getDestination(); cmd.appendArg(la.getAddress().getHostAddress()); cmd.appendArg(la.getNetworkPrefixLength()); - - if (routeInfo.getGateway() == null) { - if (la.getAddress() instanceof Inet4Address) { - cmd.appendArg("0.0.0.0"); - } else { - cmd.appendArg("::0"); - } - } else { - cmd.appendArg(routeInfo.getGateway().getHostAddress()); - } - + cmd.appendArg(routeInfo.getGateway().getHostAddress()); cmd.appendArg(routeInfo.getInterface()); try { @@ -2120,35 +2101,25 @@ public class NetworkManagementService extends INetworkManagementService.Stub } @Override - public void addLegacyRouteForNetId(RouteInfo routeInfo, int uid) { - modifyLegacyRouteForNetId(routeInfo, uid, ADD); + public void addLegacyRouteForNetId(int netId, RouteInfo routeInfo, int uid) { + modifyLegacyRouteForNetId(netId, routeInfo, uid, ADD); } @Override - public void removeLegacyRouteForNetId(RouteInfo routeInfo, int uid) { - modifyLegacyRouteForNetId(routeInfo, uid, REMOVE); + public void removeLegacyRouteForNetId(int netId, RouteInfo routeInfo, int uid) { + modifyLegacyRouteForNetId(netId, routeInfo, uid, REMOVE); } - private void modifyLegacyRouteForNetId(RouteInfo routeInfo, int uid, String action) { + private void modifyLegacyRouteForNetId(int netId, RouteInfo routeInfo, int uid, String action) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); - final Command cmd = new Command("network", "legacy", uid, "route", action); + final Command cmd = new Command("network", "legacy", uid, "route", action, netId); // create quadlet: dest-ip-addr prefixlength gateway-ip-addr iface final LinkAddress la = routeInfo.getDestination(); cmd.appendArg(la.getAddress().getHostAddress()); cmd.appendArg(la.getNetworkPrefixLength()); - - if (routeInfo.getGateway() == null) { - if (la.getAddress() instanceof Inet4Address) { - cmd.appendArg("0.0.0.0"); - } else { - cmd.appendArg("::0"); - } - } else { - cmd.appendArg(routeInfo.getGateway().getHostAddress()); - } - + cmd.appendArg(routeInfo.getGateway().getHostAddress()); cmd.appendArg(routeInfo.getInterface()); try {