Specify netId when adding/removing routes.
Change-Id: I07fd950aee726e9721153f75c3e4c10d8e19d8e9
diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java
index 24af6b6..a0da2c0 100644
--- a/services/core/java/com/android/server/NetworkManagementService.java
+++ b/services/core/java/com/android/server/NetworkManagementService.java
@@ -868,36 +868,24 @@
}
@Override
- public void addRoute(String interfaceName, RouteInfo route) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
- modifyRoute(interfaceName, ADD, route, DEFAULT);
+ public void addRoute(int netId, RouteInfo route) {
+ modifyRoute(netId, ADD, route);
}
@Override
- public void removeRoute(String interfaceName, RouteInfo route) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
- modifyRoute(interfaceName, REMOVE, route, DEFAULT);
+ public void removeRoute(int netId, RouteInfo route) {
+ modifyRoute(netId, REMOVE, route);
}
- @Override
- public void addSecondaryRoute(String interfaceName, RouteInfo route) {
+ private void modifyRoute(int netId, String action, RouteInfo route) {
mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
- modifyRoute(interfaceName, ADD, route, SECONDARY);
- }
- @Override
- public void removeSecondaryRoute(String interfaceName, RouteInfo route) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
- modifyRoute(interfaceName, REMOVE, route, SECONDARY);
- }
+ final Command cmd = new Command("network", "route", action, netId);
- private void modifyRoute(String interfaceName, String action, RouteInfo route, String type) {
- final Command cmd = new Command("interface", "route", action, interfaceName, type);
-
- // create triplet: dest-ip-addr prefixlength gateway-ip-addr
+ // create triplet: interface dest-ip-addr/prefixlength gateway-ip-addr
final LinkAddress la = route.getDestination();
- cmd.appendArg(la.getAddress().getHostAddress());
- cmd.appendArg(la.getNetworkPrefixLength());
+ cmd.appendArg(route.getInterface());
+ cmd.appendArg(la.getAddress().getHostAddress() + "/" + la.getNetworkPrefixLength());
cmd.appendArg(route.getGateway().getHostAddress());
try {
@@ -1972,35 +1960,6 @@
}
@Override
- public void addRouteForNetId(int netId, RouteInfo routeInfo) {
- modifyRouteForNetId(netId, routeInfo, ADD);
- }
-
- @Override
- public void removeRouteForNetId(int netId, RouteInfo routeInfo) {
- modifyRouteForNetId(netId, routeInfo, REMOVE);
- }
-
- private void modifyRouteForNetId(int netId, RouteInfo routeInfo, String action) {
- mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
-
- 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());
- cmd.appendArg(routeInfo.getGateway().getHostAddress());
- cmd.appendArg(routeInfo.getInterface());
-
- try {
- mConnector.execute(cmd);
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
- }
- }
-
- @Override
public void addLegacyRouteForNetId(int netId, RouteInfo routeInfo, int uid) {
modifyLegacyRouteForNetId(netId, routeInfo, uid, ADD);
}