summaryrefslogtreecommitdiffstats
path: root/wifi/java
diff options
context:
space:
mode:
authorRobert Greenwalt <robdroid@android.com>2010-06-15 15:43:39 -0700
committerRobert Greenwalt <robdroid@android.com>2010-07-13 18:07:41 -0700
commit47f69fe2999e46004f2f2463b70d38de9ff7079a (patch)
tree875b979084ecb5f10e78c70baec531ea8d8e8b91 /wifi/java
parent50331a1e2f1f36e78886832a694ca8fbc8d0cafc (diff)
downloadframeworks_base-47f69fe2999e46004f2f2463b70d38de9ff7079a.zip
frameworks_base-47f69fe2999e46004f2f2463b70d38de9ff7079a.tar.gz
frameworks_base-47f69fe2999e46004f2f2463b70d38de9ff7079a.tar.bz2
Pass network properties to ConnectivityService.
Used as a bag to hold ipaddr, gateway, dns, proxy info. addr's are InetAddresses for v4/v6 use. Cleaning up some old v4-only code bug:2655015 Change-Id: I7ac886fe5c519e8bab42f49cd82a5189d9c9ab59
Diffstat (limited to 'wifi/java')
-rw-r--r--wifi/java/android/net/wifi/WifiStateTracker.java81
1 files changed, 62 insertions, 19 deletions
diff --git a/wifi/java/android/net/wifi/WifiStateTracker.java b/wifi/java/android/net/wifi/WifiStateTracker.java
index 5b4faf9..5780a04 100644
--- a/wifi/java/android/net/wifi/WifiStateTracker.java
+++ b/wifi/java/android/net/wifi/WifiStateTracker.java
@@ -30,6 +30,7 @@ import android.net.NetworkUtils;
import android.net.ConnectivityManager;
import android.net.NetworkInfo.DetailedState;
import android.net.NetworkInfo.State;
+import android.net.NetworkProperties;
import android.os.Message;
import android.os.Parcelable;
import android.os.Handler;
@@ -54,6 +55,9 @@ import android.content.Context;
import android.database.ContentObserver;
import com.android.internal.app.IBatteryStats;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
@@ -211,6 +215,7 @@ public class WifiStateTracker extends Handler implements NetworkStateTracker {
private boolean mDisconnectExpected;
private DhcpHandler mDhcpTarget;
private DhcpInfo mDhcpInfo;
+ private NetworkProperties mNetworkProperties;
private int mLastSignalLevel = -1;
private String mLastBssid;
private String mLastSsid;
@@ -315,7 +320,6 @@ public class WifiStateTracker extends Handler implements NetworkStateTracker {
private String mInterfaceName;
private static String LS = System.getProperty("line.separator");
- private static String[] sDnsPropNames;
private Handler mTarget;
private Context mContext;
private boolean mPrivateDnsRouteSet = false;
@@ -379,10 +383,7 @@ public class WifiStateTracker extends Handler implements NetworkStateTracker {
mSettingsObserver = new SettingsObserver(new Handler());
mInterfaceName = SystemProperties.get("wifi.interface", "tiwlan0");
- sDnsPropNames = new String[] {
- "dhcp." + mInterfaceName + ".dns1",
- "dhcp." + mInterfaceName + ".dns2"
- };
+ mNetworkProperties = new NetworkProperties();
mBatteryStats = IBatteryStats.Stub.asInterface(ServiceManager.getService("batteryinfo"));
}
@@ -477,15 +478,6 @@ public class WifiStateTracker extends Handler implements NetworkStateTracker {
}
/**
- * Return the IP addresses of the DNS servers available for the WLAN
- * network interface.
- * @return a list of DNS addresses, with no holes.
- */
- public String[] getDnsPropNames() {
- return sDnsPropNames;
- }
-
- /**
* Return the name of our WLAN network interface.
* @return the name of our interface.
*/
@@ -901,6 +893,7 @@ public class WifiStateTracker extends Handler implements NetworkStateTracker {
}
setDetailedState(DetailedState.DISCONNECTED);
setSupplicantState(SupplicantState.UNINITIALIZED);
+ mNetworkProperties.clear();
mHaveIpAddress = false;
mObtainingIpAddress = false;
if (died) {
@@ -1008,6 +1001,7 @@ public class WifiStateTracker extends Handler implements NetworkStateTracker {
reconnectCommand();
}
} else if (newState == SupplicantState.DISCONNECTED) {
+ mNetworkProperties.clear();
mHaveIpAddress = false;
if (isDriverStopped() || mDisconnectExpected) {
handleDisconnectedState(DetailedState.DISCONNECTED, true);
@@ -1192,6 +1186,7 @@ public class WifiStateTracker extends Handler implements NetworkStateTracker {
}
mReconnectCount = 0;
mHaveIpAddress = true;
+ configureNetworkProperties();
mObtainingIpAddress = false;
mWifiInfo.setIpAddress(mDhcpInfo.ipAddress);
mLastSignalLevel = -1; // force update of signal strength
@@ -1217,6 +1212,7 @@ public class WifiStateTracker extends Handler implements NetworkStateTracker {
// [31- 1] Reserved for future use
// [ 0- 0] Interface configuration succeeded (1) or failed (0)
EventLog.writeEvent(EVENTLOG_INTERFACE_CONFIGURATION_STATE_CHANGED, 0);
+ mNetworkProperties.clear();
mHaveIpAddress = false;
mWifiInfo.setIpAddress(0);
mObtainingIpAddress = false;
@@ -1289,6 +1285,49 @@ public class WifiStateTracker extends Handler implements NetworkStateTracker {
return disabledNetwork;
}
+
+ private void configureNetworkProperties() {
+ try {
+ mNetworkProperties.setInterface(NetworkInterface.getByName(mInterfaceName));
+ } catch (SocketException e) {
+ Log.e(TAG, "SocketException creating NetworkInterface from " + mInterfaceName +
+ ". e=" + e);
+ return;
+ } catch (NullPointerException e) {
+ Log.e(TAG, "NPE creating NetworkInterface. e=" + e);
+ return;
+ }
+ // TODO - fix this for v6
+ try {
+ mNetworkProperties.addAddress(InetAddress.getByAddress(
+ NetworkUtils.v4IntToArray(mDhcpInfo.ipAddress)));
+ } catch (UnknownHostException e) {
+ Log.e(TAG, "Exception setting IpAddress using " + mDhcpInfo + ", e=" + e);
+ }
+
+ try {
+ mNetworkProperties.setGateway(InetAddress.getByAddress(NetworkUtils.v4IntToArray(
+ mDhcpInfo.gateway)));
+ } catch (UnknownHostException e) {
+ Log.e(TAG, "Exception setting Gateway using " + mDhcpInfo + ", e=" + e);
+ }
+
+ try {
+ mNetworkProperties.addDns(InetAddress.getByAddress(
+ NetworkUtils.v4IntToArray(mDhcpInfo.dns1)));
+ } catch (UnknownHostException e) {
+ Log.e(TAG, "Exception setting Dns1 using " + mDhcpInfo + ", e=" + e);
+ }
+ try {
+ mNetworkProperties.addDns(InetAddress.getByAddress(
+ NetworkUtils.v4IntToArray(mDhcpInfo.dns2)));
+
+ } catch (UnknownHostException e) {
+ Log.e(TAG, "Exception setting Dns2 using " + mDhcpInfo + ", e=" + e);
+ }
+ // TODO - add proxy info
+ }
+
private void configureInterface() {
checkPollTimer();
mLastSignalLevel = -1;
@@ -1300,11 +1339,9 @@ public class WifiStateTracker extends Handler implements NetworkStateTracker {
} else {
int event;
if (NetworkUtils.configureInterface(mInterfaceName, mDhcpInfo)) {
- mHaveIpAddress = true;
event = EVENT_INTERFACE_CONFIGURATION_SUCCEEDED;
if (LOCAL_LOGD) Log.v(TAG, "Static IP configuration succeeded");
} else {
- mHaveIpAddress = false;
event = EVENT_INTERFACE_CONFIGURATION_FAILED;
if (LOCAL_LOGD) Log.v(TAG, "Static IP configuration failed");
}
@@ -1339,6 +1376,7 @@ public class WifiStateTracker extends Handler implements NetworkStateTracker {
*/
public void resetConnections(boolean disableInterface) {
if (LOCAL_LOGD) Log.d(TAG, "Reset connections and stopping DHCP");
+ mNetworkProperties.clear();
mHaveIpAddress = false;
mObtainingIpAddress = false;
mWifiInfo.setIpAddress(0);
@@ -2282,11 +2320,12 @@ public class WifiStateTracker extends Handler implements NetworkStateTracker {
mNotificationRepeatTime = 0;
mNumScansSinceNetworkStateChange = 0;
}
-
+
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
- sb.append("interface ").append(mInterfaceName);
+
+ sb.append(mNetworkProperties.toString());
sb.append(" runState=");
if (mRunState >= 1 && mRunState <= mRunStateNames.length) {
sb.append(mRunStateNames[mRunState-1]);
@@ -2366,7 +2405,7 @@ public class WifiStateTracker extends Handler implements NetworkStateTracker {
setBluetoothCoexistenceMode(
WifiNative.BLUETOOTH_COEXISTENCE_MODE_DISABLED);
}
-
+
powerMode = getPowerMode();
if (powerMode < 0) {
// Handle the case where supplicant driver does not support
@@ -2588,4 +2627,8 @@ public class WifiStateTracker extends Handler implements NetworkStateTracker {
Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 1) == 1;
}
}
+
+ public NetworkProperties getNetworkProperties() {
+ return mNetworkProperties;
+ }
}