summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Greenwalt <rgreenwalt@google.com>2011-08-11 09:55:08 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-08-11 09:55:08 -0700
commitbde7a61a06beca0966f60c909c98ecc0979d3130 (patch)
tree81edbbe96cad3af7dacf6636200d9574f1f6c686
parent08633c79164c8ab7362d6af1cf9ab576916fa7e0 (diff)
parente6b2429cf719f30259a3eae61b94524b5cff4fab (diff)
downloadframeworks_base-bde7a61a06beca0966f60c909c98ecc0979d3130.zip
frameworks_base-bde7a61a06beca0966f60c909c98ecc0979d3130.tar.gz
frameworks_base-bde7a61a06beca0966f60c909c98ecc0979d3130.tar.bz2
Merge "Remove default routes for non-default networks."
-rw-r--r--services/java/com/android/server/ConnectivityService.java13
1 files changed, 13 insertions, 0 deletions
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 3ae7a3f..acfc7a4 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -1831,6 +1831,19 @@ public class ConnectivityService extends IConnectivityManager.Stub {
for (RouteInfo r : routeDiff.added) {
if (isLinkDefault || ! r.isDefaultRoute()) {
addRoute(newLp, r);
+ } else {
+ // many radios add a default route even when we don't want one.
+ // remove the default route unless somebody else has asked for it
+ String ifaceName = newLp.getInterfaceName();
+ if (TextUtils.isEmpty(ifaceName) == false && mAddedRoutes.contains(r) == false) {
+ if (DBG) log("Removing " + r + " for interface " + ifaceName);
+ try {
+ mNetd.removeRoute(ifaceName, r);
+ } catch (Exception e) {
+ // never crash - catch them all
+ loge("Exception trying to remove a route: " + e);
+ }
+ }
}
}