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
This commit is contained in:
@@ -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 + ")");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user