diff options
| author | Irfan Sheriff <isheriff@google.com> | 2010-10-01 16:08:28 -0700 |
|---|---|---|
| committer | Irfan Sheriff <isheriff@google.com> | 2010-10-06 11:04:05 -0700 |
| commit | ed5d7d17c9e9837ce7a6a10698cce9f6e4101acd (patch) | |
| tree | f92135dd4aea005231596dc69a813a88eb1ebf63 /core/java/android/net/LinkProperties.java | |
| parent | 32e60fbea7888dcc4cb9612f27674888bb56f9c3 (diff) | |
Add LinkAddress
LinkAddress stores IP address + prefix for a network link
Change-Id: Id3e74e9d0a62121d097ebdc9be064eeea257ba1f
Diffstat (limited to 'core/java/android/net/LinkProperties.java')
| -rw-r--r-- | core/java/android/net/LinkProperties.java | 65 |
1 files changed, 35 insertions, 30 deletions
diff --git a/core/java/android/net/LinkProperties.java b/core/java/android/net/LinkProperties.java index f411eac1b2d9..f1545eab4686 100644 --- a/core/java/android/net/LinkProperties.java +++ b/core/java/android/net/LinkProperties.java @@ -36,8 +36,8 @@ import java.util.Collections; */ public class LinkProperties implements Parcelable { - private NetworkInterface mIface; - private Collection<InetAddress> mAddresses; + String mIfaceName; + private Collection<LinkAddress> mLinkAddresses; private Collection<InetAddress> mDnses; private InetAddress mGateway; private ProxyProperties mHttpProxy; @@ -49,34 +49,42 @@ public class LinkProperties implements Parcelable { // copy constructor instead of clone public LinkProperties(LinkProperties source) { if (source != null) { - mIface = source.getInterface(); - mAddresses = source.getAddresses(); + mIfaceName = source.getInterfaceName(); + mLinkAddresses = source.getLinkAddresses(); mDnses = source.getDnses(); mGateway = source.getGateway(); mHttpProxy = new ProxyProperties(source.getHttpProxy()); } } - public void setInterface(NetworkInterface iface) { - mIface = iface; - } - public NetworkInterface getInterface() { - return mIface; + public void setInterfaceName(String iface) { + mIfaceName = iface; } + public String getInterfaceName() { - return (mIface == null ? null : mIface.getName()); + return mIfaceName; } - public void addAddress(InetAddress address) { - mAddresses.add(address); - } public Collection<InetAddress> getAddresses() { - return Collections.unmodifiableCollection(mAddresses); + Collection<InetAddress> addresses = new ArrayList<InetAddress>(); + for (LinkAddress linkAddress : mLinkAddresses) { + addresses.add(linkAddress.getAddress()); + } + return Collections.unmodifiableCollection(addresses); + } + + public void addLinkAddress(LinkAddress address) { + mLinkAddresses.add(address); + } + + public Collection<LinkAddress> getLinkAddresses() { + return Collections.unmodifiableCollection(mLinkAddresses); } public void addDns(InetAddress dns) { mDnses.add(dns); } + public Collection<InetAddress> getDnses() { return Collections.unmodifiableCollection(mDnses); } @@ -96,8 +104,8 @@ public class LinkProperties implements Parcelable { } public void clear() { - mIface = null; - mAddresses = new ArrayList<InetAddress>(); + mIfaceName = null; + mLinkAddresses = new ArrayList<LinkAddress>(); mDnses = new ArrayList<InetAddress>(); mGateway = null; mHttpProxy = null; @@ -113,11 +121,11 @@ public class LinkProperties implements Parcelable { @Override public String toString() { - String ifaceName = (mIface == null ? "" : "InterfaceName: " + mIface.getName() + " "); + String ifaceName = (mIfaceName == null ? "" : "InterfaceName: " + mIfaceName + " "); - String ip = "IpAddresses: ["; - for (InetAddress addr : mAddresses) ip += addr.getHostAddress() + ","; - ip += "] "; + String linkAddresses = "LinkAddresses: ["; + for (LinkAddress addr : mLinkAddresses) linkAddresses += addr.toString(); + linkAddresses += "] "; String dns = "DnsAddresses: ["; for (InetAddress addr : mDnses) dns += addr.getHostAddress() + ","; @@ -126,7 +134,7 @@ public class LinkProperties implements Parcelable { String proxy = (mHttpProxy == null ? "" : "HttpProxy: " + mHttpProxy.toString() + " "); String gateway = (mGateway == null ? "" : "Gateway: " + mGateway.getHostAddress() + " "); - return ifaceName + ip + gateway + dns + proxy; + return ifaceName + linkAddresses + gateway + dns + proxy; } /** @@ -135,12 +143,11 @@ public class LinkProperties implements Parcelable { */ public void writeToParcel(Parcel dest, int flags) { dest.writeString(getInterfaceName()); - dest.writeInt(mAddresses.size()); - //TODO: explore an easy alternative to preserve hostname - // without doing a lookup - for(InetAddress a : mAddresses) { - dest.writeByteArray(a.getAddress()); + dest.writeInt(mLinkAddresses.size()); + for(LinkAddress linkAddress : mLinkAddresses) { + dest.writeParcelable(linkAddress, flags); } + dest.writeInt(mDnses.size()); for(InetAddress d : mDnses) { dest.writeByteArray(d.getAddress()); @@ -170,16 +177,14 @@ public class LinkProperties implements Parcelable { String iface = in.readString(); if (iface != null) { try { - netProp.setInterface(NetworkInterface.getByName(iface)); + netProp.setInterfaceName(iface); } catch (Exception e) { return null; } } int addressCount = in.readInt(); for (int i=0; i<addressCount; i++) { - try { - netProp.addAddress(InetAddress.getByAddress(in.createByteArray())); - } catch (UnknownHostException e) { } + netProp.addLinkAddress((LinkAddress)in.readParcelable(null)); } addressCount = in.readInt(); for (int i=0; i<addressCount; i++) { |
