diff options
| author | Robert Greenwalt <rgreenwalt@google.com> | 2011-03-24 21:41:41 -0700 |
|---|---|---|
| committer | Robert Greenwalt <rgreenwalt@google.com> | 2011-03-25 08:59:08 -0700 |
| commit | 7cf5b419da5a49ccead2af51c7b6587ce1195958 (patch) | |
| tree | 6d248cbcbd093a1de555bbd5c8596f228c7d7d13 /services/java/com/android/server/ConnectivityService.java | |
| parent | 6a19759c0fae744e80c032ca3c23932e73e6d9d9 (diff) | |
Fix some alt-network issues.
Two issues.
1) remove default routes for non-default networks.
2) don't report mobile is the active default network just because
it is active.
bug:4157610
Change-Id: I9e7c94718a5b1f08840b219b304ba3904259a65f
Diffstat (limited to 'services/java/com/android/server/ConnectivityService.java')
| -rw-r--r-- | services/java/com/android/server/ConnectivityService.java | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index d37558f36498..6694dbe8ff4d 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -591,18 +591,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { */ public NetworkInfo getActiveNetworkInfo() { enforceAccessPermission(); - for (int type=0; type <= ConnectivityManager.MAX_NETWORK_TYPE; type++) { - if (mNetAttributes[type] == null || !mNetAttributes[type].isDefault()) { - continue; - } - NetworkStateTracker t = mNetTrackers[type]; - NetworkInfo info = t.getNetworkInfo(); - if (info.isConnected()) { - if (DBG && type != mActiveDefaultNetwork) Slog.e(TAG, - "connected default network is not " + - "mActiveDefaultNetwork!"); - return info; - } + if (mActiveDefaultNetwork != -1) { + return mNetTrackers[mActiveDefaultNetwork].getNetworkInfo(); } return null; } @@ -1338,6 +1328,15 @@ public class ConnectivityService extends IConnectivityManager.Stub { if (mNetAttributes[netType].isDefault()) { mNetTrackers[netType].addDefaultRoute(); } else { + // many radios add a default route even when we don't want one. + // remove the default interface unless we need it for our active network + if (mActiveDefaultNetwork != -1) { + String defaultIface = mNetTrackers[mActiveDefaultNetwork].getInterfaceName(); + if (defaultIface != null && + !defaultIface.equals(mNetTrackers[netType].getInterfaceName())) { + mNetTrackers[netType].removeDefaultRoute(); + } + } mNetTrackers[netType].addPrivateDnsRoutes(); } } else { |
