Routing workaround.
Change our order of operations so that secondary route table adds succeed. Working to understand the why of this too. bug:8361314 Change-Id: Ie25061eb38c62eaa5e60aa8a488496de49bdbd9d
This commit is contained in:
@@ -2348,28 +2348,6 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (RouteInfo r : routeDiff.added) {
|
|
||||||
if (isLinkDefault || ! r.isDefaultRoute()) {
|
|
||||||
addRoute(newLp, r, TO_DEFAULT_TABLE);
|
|
||||||
} else {
|
|
||||||
// add to a secondary route table
|
|
||||||
addRoute(newLp, r, TO_SECONDARY_TABLE);
|
|
||||||
|
|
||||||
// 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 (VDBG) log("Removing " + r + " for interface " + ifaceName);
|
|
||||||
try {
|
|
||||||
mNetd.removeRoute(ifaceName, r);
|
|
||||||
} catch (Exception e) {
|
|
||||||
// never crash - catch them all
|
|
||||||
if (DBG) loge("Exception trying to remove a route: " + e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isLinkDefault) {
|
if (!isLinkDefault) {
|
||||||
// handle DNS routes
|
// handle DNS routes
|
||||||
if (routesChanged) {
|
if (routesChanged) {
|
||||||
@@ -2394,6 +2372,29 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (RouteInfo r : routeDiff.added) {
|
||||||
|
if (isLinkDefault || ! r.isDefaultRoute()) {
|
||||||
|
addRoute(newLp, r, TO_DEFAULT_TABLE);
|
||||||
|
} else {
|
||||||
|
// add to a secondary route table
|
||||||
|
addRoute(newLp, r, TO_SECONDARY_TABLE);
|
||||||
|
|
||||||
|
// 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 (VDBG) log("Removing " + r + " for interface " + ifaceName);
|
||||||
|
try {
|
||||||
|
mNetd.removeRoute(ifaceName, r);
|
||||||
|
} catch (Exception e) {
|
||||||
|
// never crash - catch them all
|
||||||
|
if (DBG) loge("Exception trying to remove a route: " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return routesChanged;
|
return routesChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user