Merge "Add the list of private DNS addresses to LinkProperties" into pi-dev
am: f12a2130a4 Change-Id: I4b739c56e658690532ae9deb0b9a3bc9b2adf8b0
This commit is contained in:
@@ -50,6 +50,7 @@ public final class LinkProperties implements Parcelable {
|
|||||||
private String mIfaceName;
|
private String mIfaceName;
|
||||||
private ArrayList<LinkAddress> mLinkAddresses = new ArrayList<LinkAddress>();
|
private ArrayList<LinkAddress> mLinkAddresses = new ArrayList<LinkAddress>();
|
||||||
private ArrayList<InetAddress> mDnses = new ArrayList<InetAddress>();
|
private ArrayList<InetAddress> mDnses = new ArrayList<InetAddress>();
|
||||||
|
private ArrayList<InetAddress> mValidatedPrivateDnses = new ArrayList<InetAddress>();
|
||||||
private boolean mUsePrivateDns;
|
private boolean mUsePrivateDns;
|
||||||
private String mPrivateDnsServerName;
|
private String mPrivateDnsServerName;
|
||||||
private String mDomains;
|
private String mDomains;
|
||||||
@@ -167,6 +168,9 @@ public final class LinkProperties implements Parcelable {
|
|||||||
mIfaceName = source.getInterfaceName();
|
mIfaceName = source.getInterfaceName();
|
||||||
for (LinkAddress l : source.getLinkAddresses()) mLinkAddresses.add(l);
|
for (LinkAddress l : source.getLinkAddresses()) mLinkAddresses.add(l);
|
||||||
for (InetAddress i : source.getDnsServers()) mDnses.add(i);
|
for (InetAddress i : source.getDnsServers()) mDnses.add(i);
|
||||||
|
for (InetAddress i : source.getValidatedPrivateDnsServers()) {
|
||||||
|
mValidatedPrivateDnses.add(i);
|
||||||
|
}
|
||||||
mUsePrivateDns = source.mUsePrivateDns;
|
mUsePrivateDns = source.mUsePrivateDns;
|
||||||
mPrivateDnsServerName = source.mPrivateDnsServerName;
|
mPrivateDnsServerName = source.mPrivateDnsServerName;
|
||||||
mDomains = source.getDomains();
|
mDomains = source.getDomains();
|
||||||
@@ -374,7 +378,7 @@ public final class LinkProperties implements Parcelable {
|
|||||||
* Replaces the DNS servers in this {@code LinkProperties} with
|
* Replaces the DNS servers in this {@code LinkProperties} with
|
||||||
* the given {@link Collection} of {@link InetAddress} objects.
|
* the given {@link Collection} of {@link InetAddress} objects.
|
||||||
*
|
*
|
||||||
* @param addresses The {@link Collection} of DNS servers to set in this object.
|
* @param dnsServers The {@link Collection} of DNS servers to set in this object.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public void setDnsServers(Collection<InetAddress> dnsServers) {
|
public void setDnsServers(Collection<InetAddress> dnsServers) {
|
||||||
@@ -447,6 +451,65 @@ public final class LinkProperties implements Parcelable {
|
|||||||
return mPrivateDnsServerName;
|
return mPrivateDnsServerName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the given {@link InetAddress} to the list of validated private DNS servers,
|
||||||
|
* if not present. This is distinct from the server name in that these are actually
|
||||||
|
* resolved addresses.
|
||||||
|
*
|
||||||
|
* @param dnsServer The {@link InetAddress} to add to the list of validated private DNS servers.
|
||||||
|
* @return true if the DNS server was added, false if it was already present.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public boolean addValidatedPrivateDnsServer(InetAddress dnsServer) {
|
||||||
|
if (dnsServer != null && !mValidatedPrivateDnses.contains(dnsServer)) {
|
||||||
|
mValidatedPrivateDnses.add(dnsServer);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the given {@link InetAddress} from the list of validated private DNS servers.
|
||||||
|
*
|
||||||
|
* @param dnsServer The {@link InetAddress} to remove from the list of validated private DNS
|
||||||
|
* servers.
|
||||||
|
* @return true if the DNS server was removed, false if it did not exist.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public boolean removeValidatedPrivateDnsServer(InetAddress dnsServer) {
|
||||||
|
if (dnsServer != null) {
|
||||||
|
return mValidatedPrivateDnses.remove(dnsServer);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replaces the validated private DNS servers in this {@code LinkProperties} with
|
||||||
|
* the given {@link Collection} of {@link InetAddress} objects.
|
||||||
|
*
|
||||||
|
* @param dnsServers The {@link Collection} of validated private DNS servers to set in this
|
||||||
|
* object.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public void setValidatedPrivateDnsServers(Collection<InetAddress> dnsServers) {
|
||||||
|
mValidatedPrivateDnses.clear();
|
||||||
|
for (InetAddress dnsServer: dnsServers) {
|
||||||
|
addValidatedPrivateDnsServer(dnsServer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns all the {@link InetAddress} for validated private DNS servers on this link.
|
||||||
|
* These are resolved from the private DNS server name.
|
||||||
|
*
|
||||||
|
* @return An umodifiable {@link List} of {@link InetAddress} for validated private
|
||||||
|
* DNS servers on this link.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public List<InetAddress> getValidatedPrivateDnsServers() {
|
||||||
|
return Collections.unmodifiableList(mValidatedPrivateDnses);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the DNS domain search path used on this link.
|
* Sets the DNS domain search path used on this link.
|
||||||
*
|
*
|
||||||
@@ -715,6 +778,15 @@ public final class LinkProperties implements Parcelable {
|
|||||||
privateDnsServerName = "PrivateDnsServerName: " + mPrivateDnsServerName + " ";
|
privateDnsServerName = "PrivateDnsServerName: " + mPrivateDnsServerName + " ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String validatedPrivateDns = "";
|
||||||
|
if (!mValidatedPrivateDnses.isEmpty()) {
|
||||||
|
validatedPrivateDns = "ValidatedPrivateDnsAddresses: [";
|
||||||
|
for (InetAddress addr : mValidatedPrivateDnses) {
|
||||||
|
validatedPrivateDns += addr.getHostAddress() + ",";
|
||||||
|
}
|
||||||
|
validatedPrivateDns += "] ";
|
||||||
|
}
|
||||||
|
|
||||||
String domainName = "Domains: " + mDomains;
|
String domainName = "Domains: " + mDomains;
|
||||||
|
|
||||||
String mtu = " MTU: " + mMtu;
|
String mtu = " MTU: " + mMtu;
|
||||||
@@ -976,6 +1048,20 @@ public final class LinkProperties implements Parcelable {
|
|||||||
target.getPrivateDnsServerName()));
|
target.getPrivateDnsServerName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compares this {@code LinkProperties} validated private DNS addresses against
|
||||||
|
* the target
|
||||||
|
*
|
||||||
|
* @param target LinkProperties to compare.
|
||||||
|
* @return {@code true} if both are identical, {@code false} otherwise.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public boolean isIdenticalValidatedPrivateDnses(LinkProperties target) {
|
||||||
|
Collection<InetAddress> targetDnses = target.getValidatedPrivateDnsServers();
|
||||||
|
return (mValidatedPrivateDnses.size() == targetDnses.size())
|
||||||
|
? mValidatedPrivateDnses.containsAll(targetDnses) : false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compares this {@code LinkProperties} Routes against the target
|
* Compares this {@code LinkProperties} Routes against the target
|
||||||
*
|
*
|
||||||
@@ -1074,6 +1160,7 @@ public final class LinkProperties implements Parcelable {
|
|||||||
&& isIdenticalAddresses(target)
|
&& isIdenticalAddresses(target)
|
||||||
&& isIdenticalDnses(target)
|
&& isIdenticalDnses(target)
|
||||||
&& isIdenticalPrivateDns(target)
|
&& isIdenticalPrivateDns(target)
|
||||||
|
&& isIdenticalValidatedPrivateDnses(target)
|
||||||
&& isIdenticalRoutes(target)
|
&& isIdenticalRoutes(target)
|
||||||
&& isIdenticalHttpProxy(target)
|
&& isIdenticalHttpProxy(target)
|
||||||
&& isIdenticalStackedLinks(target)
|
&& isIdenticalStackedLinks(target)
|
||||||
@@ -1120,6 +1207,19 @@ public final class LinkProperties implements Parcelable {
|
|||||||
return new CompareResult<>(mDnses, target != null ? target.getDnsServers() : null);
|
return new CompareResult<>(mDnses, target != null ? target.getDnsServers() : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compares the validated private DNS addresses in this LinkProperties with another
|
||||||
|
* LinkProperties.
|
||||||
|
*
|
||||||
|
* @param target a LinkProperties with the new list of validated private dns addresses
|
||||||
|
* @return the differences between the DNS addresses.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public CompareResult<InetAddress> compareValidatedPrivateDnses(LinkProperties target) {
|
||||||
|
return new CompareResult<>(mValidatedPrivateDnses,
|
||||||
|
target != null ? target.getValidatedPrivateDnsServers() : null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compares all routes in this LinkProperties with another LinkProperties,
|
* Compares all routes in this LinkProperties with another LinkProperties,
|
||||||
* examining both the the base link and all stacked links.
|
* examining both the the base link and all stacked links.
|
||||||
@@ -1168,6 +1268,7 @@ public final class LinkProperties implements Parcelable {
|
|||||||
return ((null == mIfaceName) ? 0 : mIfaceName.hashCode()
|
return ((null == mIfaceName) ? 0 : mIfaceName.hashCode()
|
||||||
+ mLinkAddresses.size() * 31
|
+ mLinkAddresses.size() * 31
|
||||||
+ mDnses.size() * 37
|
+ mDnses.size() * 37
|
||||||
|
+ mValidatedPrivateDnses.size() * 61
|
||||||
+ ((null == mDomains) ? 0 : mDomains.hashCode())
|
+ ((null == mDomains) ? 0 : mDomains.hashCode())
|
||||||
+ mRoutes.size() * 41
|
+ mRoutes.size() * 41
|
||||||
+ ((null == mHttpProxy) ? 0 : mHttpProxy.hashCode())
|
+ ((null == mHttpProxy) ? 0 : mHttpProxy.hashCode())
|
||||||
@@ -1192,6 +1293,10 @@ public final class LinkProperties implements Parcelable {
|
|||||||
for (InetAddress d : mDnses) {
|
for (InetAddress d : mDnses) {
|
||||||
dest.writeByteArray(d.getAddress());
|
dest.writeByteArray(d.getAddress());
|
||||||
}
|
}
|
||||||
|
dest.writeInt(mValidatedPrivateDnses.size());
|
||||||
|
for (InetAddress d : mValidatedPrivateDnses) {
|
||||||
|
dest.writeByteArray(d.getAddress());
|
||||||
|
}
|
||||||
dest.writeBoolean(mUsePrivateDns);
|
dest.writeBoolean(mUsePrivateDns);
|
||||||
dest.writeString(mPrivateDnsServerName);
|
dest.writeString(mPrivateDnsServerName);
|
||||||
dest.writeString(mDomains);
|
dest.writeString(mDomains);
|
||||||
@@ -1234,6 +1339,13 @@ public final class LinkProperties implements Parcelable {
|
|||||||
netProp.addDnsServer(InetAddress.getByAddress(in.createByteArray()));
|
netProp.addDnsServer(InetAddress.getByAddress(in.createByteArray()));
|
||||||
} catch (UnknownHostException e) { }
|
} catch (UnknownHostException e) { }
|
||||||
}
|
}
|
||||||
|
addressCount = in.readInt();
|
||||||
|
for (int i = 0; i < addressCount; i++) {
|
||||||
|
try {
|
||||||
|
netProp.addValidatedPrivateDnsServer(
|
||||||
|
InetAddress.getByAddress(in.createByteArray()));
|
||||||
|
} catch (UnknownHostException e) { }
|
||||||
|
}
|
||||||
netProp.setUsePrivateDns(in.readBoolean());
|
netProp.setUsePrivateDns(in.readBoolean());
|
||||||
netProp.setPrivateDnsServerName(in.readString());
|
netProp.setPrivateDnsServerName(in.readString());
|
||||||
netProp.setDomains(in.readString());
|
netProp.setDomains(in.readString());
|
||||||
@@ -1265,9 +1377,9 @@ public final class LinkProperties implements Parcelable {
|
|||||||
*/
|
*/
|
||||||
public static boolean isValidMtu(int mtu, boolean ipv6) {
|
public static boolean isValidMtu(int mtu, boolean ipv6) {
|
||||||
if (ipv6) {
|
if (ipv6) {
|
||||||
if ((mtu >= MIN_MTU_V6 && mtu <= MAX_MTU)) return true;
|
if (mtu >= MIN_MTU_V6 && mtu <= MAX_MTU) return true;
|
||||||
} else {
|
} else {
|
||||||
if ((mtu >= MIN_MTU && mtu <= MAX_MTU)) return true;
|
if (mtu >= MIN_MTU && mtu <= MAX_MTU) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import android.net.LinkProperties;
|
|||||||
import android.net.LinkProperties.CompareResult;
|
import android.net.LinkProperties.CompareResult;
|
||||||
import android.net.LinkProperties.ProvisioningChange;
|
import android.net.LinkProperties.ProvisioningChange;
|
||||||
import android.net.RouteInfo;
|
import android.net.RouteInfo;
|
||||||
|
import android.os.Parcel;
|
||||||
import android.support.test.filters.SmallTest;
|
import android.support.test.filters.SmallTest;
|
||||||
import android.support.test.runner.AndroidJUnit4;
|
import android.support.test.runner.AndroidJUnit4;
|
||||||
import android.system.OsConstants;
|
import android.system.OsConstants;
|
||||||
@@ -82,6 +83,9 @@ public class LinkPropertiesTest {
|
|||||||
assertTrue(source.isIdenticalPrivateDns(target));
|
assertTrue(source.isIdenticalPrivateDns(target));
|
||||||
assertTrue(target.isIdenticalPrivateDns(source));
|
assertTrue(target.isIdenticalPrivateDns(source));
|
||||||
|
|
||||||
|
assertTrue(source.isIdenticalValidatedPrivateDnses(target));
|
||||||
|
assertTrue(target.isIdenticalValidatedPrivateDnses(source));
|
||||||
|
|
||||||
assertTrue(source.isIdenticalRoutes(target));
|
assertTrue(source.isIdenticalRoutes(target));
|
||||||
assertTrue(target.isIdenticalRoutes(source));
|
assertTrue(target.isIdenticalRoutes(source));
|
||||||
|
|
||||||
@@ -784,4 +788,35 @@ public class LinkPropertiesTest {
|
|||||||
assertEquals(new ArraySet<>(expectAdded), new ArraySet<>(result.added));
|
assertEquals(new ArraySet<>(expectAdded), new ArraySet<>(result.added));
|
||||||
assertEquals(new ArraySet<>(expectRemoved), (new ArraySet<>(result.removed)));
|
assertEquals(new ArraySet<>(expectRemoved), (new ArraySet<>(result.removed)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLinkPropertiesParcelable() {
|
||||||
|
LinkProperties source = new LinkProperties();
|
||||||
|
source.setInterfaceName(NAME);
|
||||||
|
// set 2 link addresses
|
||||||
|
source.addLinkAddress(LINKADDRV4);
|
||||||
|
source.addLinkAddress(LINKADDRV6);
|
||||||
|
// set 2 dnses
|
||||||
|
source.addDnsServer(DNS1);
|
||||||
|
source.addDnsServer(DNS2);
|
||||||
|
// set 2 gateways
|
||||||
|
source.addRoute(new RouteInfo(GATEWAY1));
|
||||||
|
source.addRoute(new RouteInfo(GATEWAY2));
|
||||||
|
// set 2 validated private dnses
|
||||||
|
source.addValidatedPrivateDnsServer(DNS6);
|
||||||
|
source.addValidatedPrivateDnsServer(GATEWAY61);
|
||||||
|
|
||||||
|
source.setMtu(MTU);
|
||||||
|
|
||||||
|
Parcel p = Parcel.obtain();
|
||||||
|
source.writeToParcel(p, /* flags */ 0);
|
||||||
|
p.setDataPosition(0);
|
||||||
|
final byte[] marshalled = p.marshall();
|
||||||
|
p = Parcel.obtain();
|
||||||
|
p.unmarshall(marshalled, 0, marshalled.length);
|
||||||
|
p.setDataPosition(0);
|
||||||
|
LinkProperties dest = LinkProperties.CREATOR.createFromParcel(p);
|
||||||
|
|
||||||
|
assertEquals(source, dest);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user