Add RouteInfo objects for tracking routes.

Used to have list of gateways for default routes, but general static routes
should be supported.

Change-Id: I01730142c6139f2b833b9d48f5381d2d320b69f6
This commit is contained in:
Robert Greenwalt
2011-04-28 14:28:50 -07:00
parent 2240524be9
commit 5a901298ed
5 changed files with 237 additions and 49 deletions

View File

@@ -34,6 +34,7 @@ import android.net.NetworkStateTracker;
import android.net.NetworkUtils;
import android.net.Proxy;
import android.net.ProxyProperties;
import android.net.RouteInfo;
import android.net.vpn.VpnManager;
import android.net.wifi.WifiStateTracker;
import android.os.Binder;
@@ -1413,14 +1414,19 @@ public class ConnectivityService extends IConnectivityManager.Stub {
if (p == null) return;
String interfaceName = p.getInterfaceName();
if (TextUtils.isEmpty(interfaceName)) return;
for (InetAddress gateway : p.getGateways()) {
for (RouteInfo route : p.getRoutes()) {
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());
//TODO - handle non-default routes
if (route.isDefaultRoute()) {
InetAddress gateway = route.getGateway();
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());
}
}
}
}