From 24efb41874f8c9773f65511a23190b4e933502b5 Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Thu, 14 Mar 2013 13:16:04 -0700 Subject: [PATCH] Fail fast if somebody is adding default routes bug:2655011 Change-Id: I25da940e024825bc6e1d1ac5fe7b0d951609c1c1 --- .../com/android/server/ConnectivityService.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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);