diff options
Diffstat (limited to 'wifi')
-rw-r--r-- | wifi/java/android/net/wifi/WifiInfo.java | 25 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiNative.java | 2 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiStateMachine.java | 6 |
3 files changed, 22 insertions, 11 deletions
diff --git a/wifi/java/android/net/wifi/WifiInfo.java b/wifi/java/android/net/wifi/WifiInfo.java index 4312bfd..f60ae48 100644 --- a/wifi/java/android/net/wifi/WifiInfo.java +++ b/wifi/java/android/net/wifi/WifiInfo.java @@ -19,7 +19,11 @@ package android.net.wifi; import android.os.Parcelable; import android.os.Parcel; import android.net.NetworkInfo.DetailedState; +import android.net.NetworkUtils; +import java.net.InetAddress; +import java.net.Inet6Address; +import java.net.UnknownHostException; import java.util.EnumMap; /** @@ -61,7 +65,7 @@ public class WifiInfo implements Parcelable { public static final String LINK_SPEED_UNITS = "Mbps"; private int mLinkSpeed; - private int mIpAddress; + private InetAddress mIpAddress; private String mMacAddress; @@ -72,7 +76,6 @@ public class WifiInfo implements Parcelable { mSupplicantState = SupplicantState.UNINITIALIZED; mRssi = -9999; mLinkSpeed = -1; - mIpAddress = 0; mHiddenSSID = false; } @@ -172,12 +175,13 @@ public class WifiInfo implements Parcelable { mSupplicantState = state; } - void setIpAddress(int address) { + void setInetAddress(InetAddress address) { mIpAddress = address; } public int getIpAddress() { - return mIpAddress; + if (mIpAddress == null || mIpAddress instanceof Inet6Address) return 0; + return NetworkUtils.inetAddressToInt(mIpAddress); } /** @@ -251,7 +255,12 @@ public class WifiInfo implements Parcelable { dest.writeInt(mNetworkId); dest.writeInt(mRssi); dest.writeInt(mLinkSpeed); - dest.writeInt(mIpAddress); + if (mIpAddress != null) { + dest.writeByte((byte)1); + dest.writeByteArray(mIpAddress.getAddress()); + } else { + dest.writeByte((byte)0); + } dest.writeString(getSSID()); dest.writeString(mBSSID); dest.writeString(mMacAddress); @@ -266,7 +275,11 @@ public class WifiInfo implements Parcelable { info.setNetworkId(in.readInt()); info.setRssi(in.readInt()); info.setLinkSpeed(in.readInt()); - info.setIpAddress(in.readInt()); + if (in.readByte() == 1) { + try { + info.setInetAddress(InetAddress.getByAddress(in.createByteArray())); + } catch (UnknownHostException e) {} + } info.setSSID(in.readString()); info.mBSSID = in.readString(); info.mMacAddress = in.readString(); diff --git a/wifi/java/android/net/wifi/WifiNative.java b/wifi/java/android/net/wifi/WifiNative.java index d920108..39676b0 100644 --- a/wifi/java/android/net/wifi/WifiNative.java +++ b/wifi/java/android/net/wifi/WifiNative.java @@ -16,8 +16,6 @@ package android.net.wifi; -import android.net.DhcpInfo; - /** * Native calls for sending requests to the supplicant daemon, and for * receiving asynchronous events. All methods of the form "xxxxCommand()" diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java index e951616..26fae7f 100644 --- a/wifi/java/android/net/wifi/WifiStateMachine.java +++ b/wifi/java/android/net/wifi/WifiStateMachine.java @@ -1393,7 +1393,7 @@ public class WifiStateMachine extends HierarchicalStateMachine { sendNetworkStateChangeBroadcast(mLastBssid); /* Reset data structures */ - mWifiInfo.setIpAddress(0); + mWifiInfo.setInetAddress(null); mWifiInfo.setBSSID(null); mWifiInfo.setSSID(null); mWifiInfo.setNetworkId(-1); @@ -2543,7 +2543,7 @@ public class WifiStateMachine extends HierarchicalStateMachine { synchronized (mDhcpInfoInternal) { addr = NetworkUtils.numericToInetAddress(mDhcpInfoInternal.ipAddress); } - mWifiInfo.setIpAddress(NetworkUtils.inetAddressToInt(addr)); + mWifiInfo.setInetAddress(addr); configureLinkProperties(); if (getNetworkDetailedState() == DetailedState.CONNECTED) { sendLinkConfigurationChangedBroadcast(); @@ -2556,7 +2556,7 @@ public class WifiStateMachine extends HierarchicalStateMachine { transitionTo(mConnectedState); break; case CMD_IP_CONFIG_FAILURE: - mWifiInfo.setIpAddress(0); + mWifiInfo.setInetAddress(null); Log.e(TAG, "IP configuration failed"); /** |