diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index c83a919efa..5ed23cfdc0 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -2306,6 +2306,20 @@ public class ConnectivityService extends IConnectivityManager.Stub { boolean routesChanged = (routeDiff.removed.size() != 0 || routeDiff.added.size() != 0); + // look for a radio-added default route (v4-only for now TODO) + RouteInfo[] routes = new RouteInfo[0]; + try { + routes = mNetd.getRoutes(newLp.getInterfaceName()); + } catch (Exception e) {} + + for (RouteInfo route : routes) { + if (route.isDefaultRoute() && route.getGateway() instanceof Inet4Address && + mAddedRoutes.contains(route) == false) { + throw new IllegalStateException("Unexpected default route found for interface " + + newLp.getInterfaceName()); + } + } + for (RouteInfo r : routeDiff.removed) { if (isLinkDefault || ! r.isDefaultRoute()) { removeRoute(curLp, r, TO_DEFAULT_TABLE);