diff options
author | Robert Greenwalt <rgreenwalt@google.com> | 2011-08-11 09:55:08 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-08-11 09:55:08 -0700 |
commit | bde7a61a06beca0966f60c909c98ecc0979d3130 (patch) | |
tree | 81edbbe96cad3af7dacf6636200d9574f1f6c686 | |
parent | 08633c79164c8ab7362d6af1cf9ab576916fa7e0 (diff) | |
parent | e6b2429cf719f30259a3eae61b94524b5cff4fab (diff) | |
download | frameworks_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.java | 13 |
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); + } + } } } |