summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/ConnectivityService.java
diff options
context:
space:
mode:
authorRobert Greenwalt <rgreenwalt@google.com>2011-03-22 18:47:42 -0700
committerRobert Greenwalt <rgreenwalt@google.com>2011-03-22 18:47:42 -0700
commitedcb4f9d560a85970030e1df70426e8d1e2267d2 (patch)
tree1a4cbcdd220f9f93832df8c66744d272dccea4a5 /services/java/com/android/server/ConnectivityService.java
parent3a2575f7e6b1f6da97bd8233dfd3baa8883c5610 (diff)
Fix adding of default route.
If you deleted the host routes (started a secondary network like mms, supl of hipri and then ended it) you would lose the host route to the default gateway. Then if you needed to re-add the default gateway route (lost the connection and removed the default route and then re-established) you couldn't - can't add a gateway that isn't routable apparently. This happens if you are in a video chat and lose your connection without losing the interface (PPP keeps it up for a bit). Fixed it by having addDefaultRoute first add a hsot route for the gateway before adding the default route. This allows the default add to succeed. bug:3490353 Change-Id: I415e7319832e6456f8757b14c4f79f098a08839b
Diffstat (limited to 'services/java/com/android/server/ConnectivityService.java')
-rw-r--r--services/java/com/android/server/ConnectivityService.java21
1 files changed, 13 insertions, 8 deletions
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 14a6b96ab0b0..fcb4c23af276 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -1415,10 +1415,13 @@ public class ConnectivityService extends IConnectivityManager.Stub {
if (TextUtils.isEmpty(interfaceName)) return;
for (InetAddress gateway : p.getGateways()) {
- if (!NetworkUtils.addDefaultRoute(interfaceName, gateway) && DBG) {
- NetworkInfo networkInfo = nt.getNetworkInfo();
- log("addDefaultRoute for " + networkInfo.getTypeName() +
- " (" + interfaceName + "), GatewayAddr=" + gateway.getHostAddress());
+ if (NetworkUtils.addHostRoute(interfaceName, gateway, null) &&
+ NetworkUtils.addDefaultRoute(interfaceName, gateway)) {
+ if (DBG) {
+ NetworkInfo networkInfo = nt.getNetworkInfo();
+ log("addDefaultRoute for " + networkInfo.getTypeName() +
+ " (" + interfaceName + "), GatewayAddr=" + gateway.getHostAddress());
+ }
}
}
}
@@ -1430,10 +1433,12 @@ public class ConnectivityService extends IConnectivityManager.Stub {
String interfaceName = p.getInterfaceName();
if (interfaceName != null) {
- if ((NetworkUtils.removeDefaultRoute(interfaceName) >= 0) && DBG) {
- NetworkInfo networkInfo = nt.getNetworkInfo();
- log("removeDefaultRoute for " + networkInfo.getTypeName() + " (" +
- interfaceName + ")");
+ if (NetworkUtils.removeDefaultRoute(interfaceName) >= 0) {
+ if (DBG) {
+ NetworkInfo networkInfo = nt.getNetworkInfo();
+ log("removeDefaultRoute for " + networkInfo.getTypeName() + " (" +
+ interfaceName + ")");
+ }
}
}
}