Support removing specific routes from local_network
am: 6599ee8b96
Change-Id: I51a341796698ff02aa7a62f5f8b66050982f488e
This commit is contained in:
@@ -442,6 +442,7 @@ interface INetworkManagementService
|
||||
|
||||
void addInterfaceToLocalNetwork(String iface, in List<RouteInfo> routes);
|
||||
void removeInterfaceFromLocalNetwork(String iface);
|
||||
int removeRoutesFromLocalNetwork(in List<RouteInfo> routes);
|
||||
|
||||
void setAllowOnlyVpnForUids(boolean enable, in UidRange[] uidRanges);
|
||||
}
|
||||
|
||||
@@ -2774,4 +2774,19 @@ public class NetworkManagementService extends INetworkManagementService.Stub
|
||||
public void removeInterfaceFromLocalNetwork(String iface) {
|
||||
modifyInterfaceInNetwork("remove", "local", iface);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int removeRoutesFromLocalNetwork(List<RouteInfo> routes) {
|
||||
int failures = 0;
|
||||
|
||||
for (RouteInfo route : routes) {
|
||||
try {
|
||||
modifyRoute("remove", "local", route);
|
||||
} catch (IllegalStateException e) {
|
||||
failures++;
|
||||
}
|
||||
}
|
||||
|
||||
return failures;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,8 +157,17 @@ class IPv6TetheringInterfaceServices {
|
||||
}
|
||||
} else {
|
||||
if (mLastLocalRoutes != null && !mLastLocalRoutes.isEmpty()) {
|
||||
// TODO: Remove only locally added network routes.
|
||||
// mNMSwervice.removeInterfaceFromLocalNetwork(mIfName);
|
||||
try {
|
||||
final int removalFailures =
|
||||
mNMService.removeRoutesFromLocalNetwork(mLastLocalRoutes);
|
||||
if (removalFailures > 0) {
|
||||
Log.e(TAG,
|
||||
String.format("Failed to remove %d IPv6 routes from local table.",
|
||||
removalFailures));
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Failed to remove IPv6 routes from local table: ", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user