From ca75bc897d694826595fbea0024f1f35c162d008 Mon Sep 17 00:00:00 2001 From: ruibin zhang Date: Thu, 23 May 2019 19:35:30 +0800 Subject: [PATCH] Add the DHCP server address to LinkProperties. Bug: 134098566 Test: see subsequent CL in topic Change-Id: If0f80067934189137c87cd379e7ae47b187562fd --- core/java/android/net/LinkProperties.java | 44 +++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/core/java/android/net/LinkProperties.java b/core/java/android/net/LinkProperties.java index ed509cb3da..d2efd5b6c4 100644 --- a/core/java/android/net/LinkProperties.java +++ b/core/java/android/net/LinkProperties.java @@ -63,6 +63,7 @@ public final class LinkProperties implements Parcelable { private String mPrivateDnsServerName; private String mDomains; private ArrayList mRoutes = new ArrayList<>(); + private Inet4Address mDhcpServerAddress; private ProxyInfo mHttpProxy; private int mMtu; // in the format "rmem_min,rmem_def,rmem_max,wmem_min,wmem_def,wmem_max" @@ -196,6 +197,7 @@ public final class LinkProperties implements Parcelable { addStackedLink(l); } setMtu(source.mMtu); + setDhcpServerAddress(source.getDhcpServerAddress()); mTcpBufferSizes = source.mTcpBufferSizes; mNat64Prefix = source.mNat64Prefix; mWakeOnLanSupported = source.mWakeOnLanSupported; @@ -459,6 +461,24 @@ public final class LinkProperties implements Parcelable { mPrivateDnsServerName = privateDnsServerName; } + /** + * Set DHCP server address. + * + * @param serverAddress the server address to set. + */ + public void setDhcpServerAddress(@Nullable Inet4Address serverAddress) { + mDhcpServerAddress = serverAddress; + } + + /** + * Get DHCP server address + * + * @return The current DHCP server address. + */ + public @Nullable Inet4Address getDhcpServerAddress() { + return mDhcpServerAddress; + } + /** * Returns the private DNS server name that is in use. If not {@code null}, * private DNS is in strict mode. In this mode, applications should ensure @@ -851,6 +871,7 @@ public final class LinkProperties implements Parcelable { mHttpProxy = null; mStackedLinks.clear(); mMtu = 0; + mDhcpServerAddress = null; mTcpBufferSizes = null; mNat64Prefix = null; mWakeOnLanSupported = false; @@ -919,6 +940,11 @@ public final class LinkProperties implements Parcelable { resultJoiner.add("WakeOnLanSupported: true"); } + if (mDhcpServerAddress != null) { + resultJoiner.add("ServerAddress:"); + resultJoiner.add(mDhcpServerAddress.toString()); + } + if (mTcpBufferSizes != null) { resultJoiner.add("TcpBufferSizes:"); resultJoiner.add(mTcpBufferSizes); @@ -1272,6 +1298,17 @@ public final class LinkProperties implements Parcelable { return TextUtils.equals(getInterfaceName(), target.getInterfaceName()); } + /** + * Compares this {@code LinkProperties} DHCP server address against the target + * + * @param target LinkProperties to compare. + * @return {@code true} if both are identical, {@code false} otherwise. + * @hide + */ + public boolean isIdenticalDhcpServerAddress(@NonNull LinkProperties target) { + return Objects.equals(mDhcpServerAddress, target.mDhcpServerAddress); + } + /** * Compares this {@code LinkProperties} interface addresses against the target * @@ -1489,6 +1526,7 @@ public final class LinkProperties implements Parcelable { */ return isIdenticalInterfaceName(target) && isIdenticalAddresses(target) + && isIdenticalDhcpServerAddress(target) && isIdenticalDnses(target) && isIdenticalPrivateDns(target) && isIdenticalValidatedPrivateDnses(target) @@ -1613,6 +1651,7 @@ public final class LinkProperties implements Parcelable { + mMtu * 51 + ((null == mTcpBufferSizes) ? 0 : mTcpBufferSizes.hashCode()) + (mUsePrivateDns ? 57 : 0) + + ((null == mDhcpServerAddress) ? 0 : mDhcpServerAddress.hashCode()) + mPcscfs.size() * 67 + ((null == mPrivateDnsServerName) ? 0 : mPrivateDnsServerName.hashCode()) + Objects.hash(mNat64Prefix) @@ -1635,6 +1674,7 @@ public final class LinkProperties implements Parcelable { dest.writeString(mPrivateDnsServerName); writeAddresses(dest, mPcscfs); dest.writeString(mDomains); + dest.writeByteArray(mDhcpServerAddress.getAddress()); dest.writeInt(mMtu); dest.writeString(mTcpBufferSizes); dest.writeInt(mRoutes.size()); @@ -1722,6 +1762,10 @@ public final class LinkProperties implements Parcelable { } catch (UnknownHostException e) { } } netProp.setDomains(in.readString()); + try { + netProp.setDhcpServerAddress((Inet4Address) InetAddress + .getByAddress(in.createByteArray())); + } catch (UnknownHostException e) { } netProp.setMtu(in.readInt()); netProp.setTcpBufferSizes(in.readString()); addressCount = in.readInt();