Loading services/java/com/android/server/ConnectivityService.java +54 −77 Original line number Diff line number Diff line Loading @@ -605,7 +605,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { !network.isTeardownRequested()) { if (ni.isConnected() == true) { // add the pid-specific dns handleDnsConfigurationChange(); handleDnsConfigurationChange(networkType); if (DBG) Slog.d(TAG, "special network already active"); return Phone.APN_ALREADY_ACTIVE; } Loading Loading @@ -967,7 +967,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } // do this before we broadcast the change handleConnectivityChange(); handleConnectivityChange(prevNetType); sendStickyBroadcast(intent); /* Loading Loading @@ -1123,9 +1123,6 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } // do this before we broadcast the change handleConnectivityChange(); sendStickyBroadcast(intent); /* * If the failover network is already connected, then immediately send Loading Loading @@ -1204,7 +1201,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { } thisNet.setTeardownRequested(false); updateNetworkSettings(thisNet); handleConnectivityChange(); handleConnectivityChange(type); sendConnectedBroadcast(info); } Loading @@ -1231,26 +1228,18 @@ public class ConnectivityService extends IConnectivityManager.Stub { } /** * After any kind of change in the connectivity state of any network, * make sure that anything that depends on the connectivity state of * more than one network is set up correctly. We're mainly concerned * with making sure that the list of DNS servers is set up according * to which networks are connected, and ensuring that the right routing * table entries exist. * After a change in the connectivity state of a network. We're mainly * concerned with making sure that the list of DNS servers is set up * according to which networks are connected, and ensuring that the * right routing table entries exist. */ private void handleConnectivityChange() { private void handleConnectivityChange(int netType) { /* * If a non-default network is enabled, add the host routes that * will allow it's DNS servers to be accessed. Only * If both mobile and wifi are enabled, add the host routes that * will allow MMS traffic to pass on the mobile network. But * remove the default route for the mobile network, so that there * will be only one default route, to ensure that all traffic * except MMS will travel via Wi-Fi. * will allow it's DNS servers to be accessed. */ handleDnsConfigurationChange(); handleDnsConfigurationChange(netType); for (int netType : mPriorityList) { if (mNetTrackers[netType].getNetworkInfo().isConnected()) { if (mNetAttributes[netType].isDefault()) { addDefaultRoute(mNetTrackers[netType]); Loading @@ -1265,7 +1254,6 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } } } private void addPrivateDnsRoutes(NetworkStateTracker nt) { boolean privateDnsRouteSet = nt.isPrivateDnsRouteSet(); Loading Loading @@ -1310,18 +1298,13 @@ public class ConnectivityService extends IConnectivityManager.Stub { if (p == null) return; String interfaceName = p.getInterfaceName(); InetAddress defaultGatewayAddr = p.getGateway(); boolean defaultRouteSet = nt.isDefaultRouteSet(); if ((interfaceName != null) && (defaultGatewayAddr != null ) && (defaultRouteSet == false)) { boolean error = (NetworkUtils.setDefaultRoute(interfaceName, defaultGatewayAddr) < 0); if (DBG && !error) { if ((interfaceName != null) && (defaultGatewayAddr != null )) { if ((NetworkUtils.setDefaultRoute(interfaceName, defaultGatewayAddr) >= 0) && DBG) { NetworkInfo networkInfo = nt.getNetworkInfo(); Slog.d(TAG, "addDefaultRoute for " + networkInfo.getTypeName() + " (" + interfaceName + "), GatewayAddr=" + defaultGatewayAddr); } nt.defaultRouteSet(!error); } } Loading @@ -1330,16 +1313,13 @@ public class ConnectivityService extends IConnectivityManager.Stub { NetworkProperties p = nt.getNetworkProperties(); if (p == null) return; String interfaceName = p.getInterfaceName(); boolean defaultRouteSet = nt.isDefaultRouteSet(); if (interfaceName != null && defaultRouteSet == true) { boolean error = (NetworkUtils.removeDefaultRoute(interfaceName) < 0); if (DBG && !error) { if (interfaceName != null) { if ((NetworkUtils.removeDefaultRoute(interfaceName) >= 0) && DBG) { NetworkInfo networkInfo = nt.getNetworkInfo(); Slog.d(TAG, "removeDefaultRoute for " + networkInfo.getTypeName() + " (" + interfaceName + ")"); } nt.defaultRouteSet(error); } } Loading Loading @@ -1480,15 +1460,12 @@ public class ConnectivityService extends IConnectivityManager.Stub { SystemProperties.set("net.dnschange", "" + (n+1)); } private void handleDnsConfigurationChange() { private void handleDnsConfigurationChange(int netType) { // add default net's dns entries for (int x = mPriorityList.length-1; x>= 0; x--) { int netType = mPriorityList[x]; NetworkStateTracker nt = mNetTrackers[netType]; if (nt != null && nt.getNetworkInfo().isConnected() && !nt.isTeardownRequested()) { if (nt != null && nt.getNetworkInfo().isConnected() && !nt.isTeardownRequested()) { NetworkProperties p = nt.getNetworkProperties(); if (p == null) continue; if (p == null) return; Collection<InetAddress> dnses = p.getDnses(); if (mNetAttributes[netType].isDefault()) { int j = 1; Loading @@ -1512,11 +1489,9 @@ public class ConnectivityService extends IConnectivityManager.Stub { writePidDns(dnses, pid.intValue()); } } } } bumpDns(); } } private int getRestoreDefaultNetworkDelay() { String restoreDefaultNetworkDelayStr = SystemProperties.get( Loading Loading @@ -1654,9 +1629,11 @@ public class ConnectivityService extends IConnectivityManager.Stub { (Notification) msg.obj); case NetworkStateTracker.EVENT_CONFIGURATION_CHANGED: handleDnsConfigurationChange(); // TODO - make this handle ip/proxy/gateway/dns changes info = (NetworkInfo) msg.obj; type = info.getType(); handleDnsConfigurationChange(type); break; case NetworkStateTracker.EVENT_ROAMING_CHANGED: // fill me in break; Loading Loading
services/java/com/android/server/ConnectivityService.java +54 −77 Original line number Diff line number Diff line Loading @@ -605,7 +605,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { !network.isTeardownRequested()) { if (ni.isConnected() == true) { // add the pid-specific dns handleDnsConfigurationChange(); handleDnsConfigurationChange(networkType); if (DBG) Slog.d(TAG, "special network already active"); return Phone.APN_ALREADY_ACTIVE; } Loading Loading @@ -967,7 +967,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } // do this before we broadcast the change handleConnectivityChange(); handleConnectivityChange(prevNetType); sendStickyBroadcast(intent); /* Loading Loading @@ -1123,9 +1123,6 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } // do this before we broadcast the change handleConnectivityChange(); sendStickyBroadcast(intent); /* * If the failover network is already connected, then immediately send Loading Loading @@ -1204,7 +1201,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { } thisNet.setTeardownRequested(false); updateNetworkSettings(thisNet); handleConnectivityChange(); handleConnectivityChange(type); sendConnectedBroadcast(info); } Loading @@ -1231,26 +1228,18 @@ public class ConnectivityService extends IConnectivityManager.Stub { } /** * After any kind of change in the connectivity state of any network, * make sure that anything that depends on the connectivity state of * more than one network is set up correctly. We're mainly concerned * with making sure that the list of DNS servers is set up according * to which networks are connected, and ensuring that the right routing * table entries exist. * After a change in the connectivity state of a network. We're mainly * concerned with making sure that the list of DNS servers is set up * according to which networks are connected, and ensuring that the * right routing table entries exist. */ private void handleConnectivityChange() { private void handleConnectivityChange(int netType) { /* * If a non-default network is enabled, add the host routes that * will allow it's DNS servers to be accessed. Only * If both mobile and wifi are enabled, add the host routes that * will allow MMS traffic to pass on the mobile network. But * remove the default route for the mobile network, so that there * will be only one default route, to ensure that all traffic * except MMS will travel via Wi-Fi. * will allow it's DNS servers to be accessed. */ handleDnsConfigurationChange(); handleDnsConfigurationChange(netType); for (int netType : mPriorityList) { if (mNetTrackers[netType].getNetworkInfo().isConnected()) { if (mNetAttributes[netType].isDefault()) { addDefaultRoute(mNetTrackers[netType]); Loading @@ -1265,7 +1254,6 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } } } private void addPrivateDnsRoutes(NetworkStateTracker nt) { boolean privateDnsRouteSet = nt.isPrivateDnsRouteSet(); Loading Loading @@ -1310,18 +1298,13 @@ public class ConnectivityService extends IConnectivityManager.Stub { if (p == null) return; String interfaceName = p.getInterfaceName(); InetAddress defaultGatewayAddr = p.getGateway(); boolean defaultRouteSet = nt.isDefaultRouteSet(); if ((interfaceName != null) && (defaultGatewayAddr != null ) && (defaultRouteSet == false)) { boolean error = (NetworkUtils.setDefaultRoute(interfaceName, defaultGatewayAddr) < 0); if (DBG && !error) { if ((interfaceName != null) && (defaultGatewayAddr != null )) { if ((NetworkUtils.setDefaultRoute(interfaceName, defaultGatewayAddr) >= 0) && DBG) { NetworkInfo networkInfo = nt.getNetworkInfo(); Slog.d(TAG, "addDefaultRoute for " + networkInfo.getTypeName() + " (" + interfaceName + "), GatewayAddr=" + defaultGatewayAddr); } nt.defaultRouteSet(!error); } } Loading @@ -1330,16 +1313,13 @@ public class ConnectivityService extends IConnectivityManager.Stub { NetworkProperties p = nt.getNetworkProperties(); if (p == null) return; String interfaceName = p.getInterfaceName(); boolean defaultRouteSet = nt.isDefaultRouteSet(); if (interfaceName != null && defaultRouteSet == true) { boolean error = (NetworkUtils.removeDefaultRoute(interfaceName) < 0); if (DBG && !error) { if (interfaceName != null) { if ((NetworkUtils.removeDefaultRoute(interfaceName) >= 0) && DBG) { NetworkInfo networkInfo = nt.getNetworkInfo(); Slog.d(TAG, "removeDefaultRoute for " + networkInfo.getTypeName() + " (" + interfaceName + ")"); } nt.defaultRouteSet(error); } } Loading Loading @@ -1480,15 +1460,12 @@ public class ConnectivityService extends IConnectivityManager.Stub { SystemProperties.set("net.dnschange", "" + (n+1)); } private void handleDnsConfigurationChange() { private void handleDnsConfigurationChange(int netType) { // add default net's dns entries for (int x = mPriorityList.length-1; x>= 0; x--) { int netType = mPriorityList[x]; NetworkStateTracker nt = mNetTrackers[netType]; if (nt != null && nt.getNetworkInfo().isConnected() && !nt.isTeardownRequested()) { if (nt != null && nt.getNetworkInfo().isConnected() && !nt.isTeardownRequested()) { NetworkProperties p = nt.getNetworkProperties(); if (p == null) continue; if (p == null) return; Collection<InetAddress> dnses = p.getDnses(); if (mNetAttributes[netType].isDefault()) { int j = 1; Loading @@ -1512,11 +1489,9 @@ public class ConnectivityService extends IConnectivityManager.Stub { writePidDns(dnses, pid.intValue()); } } } } bumpDns(); } } private int getRestoreDefaultNetworkDelay() { String restoreDefaultNetworkDelayStr = SystemProperties.get( Loading Loading @@ -1654,9 +1629,11 @@ public class ConnectivityService extends IConnectivityManager.Stub { (Notification) msg.obj); case NetworkStateTracker.EVENT_CONFIGURATION_CHANGED: handleDnsConfigurationChange(); // TODO - make this handle ip/proxy/gateway/dns changes info = (NetworkInfo) msg.obj; type = info.getType(); handleDnsConfigurationChange(type); break; case NetworkStateTracker.EVENT_ROAMING_CHANGED: // fill me in break; Loading