diff --git a/services/net/java/android/net/dhcp/DhcpServingParams.java b/services/net/java/android/net/dhcp/DhcpServingParams.java index ba9d116d0bd51..6d58bc63a5f23 100644 --- a/services/net/java/android/net/dhcp/DhcpServingParams.java +++ b/services/net/java/android/net/dhcp/DhcpServingParams.java @@ -28,6 +28,8 @@ import android.net.IpPrefix; import android.net.LinkAddress; import android.net.NetworkUtils; +import com.google.android.collect.Sets; + import java.net.Inet4Address; import java.util.Collections; import java.util.HashSet; @@ -154,6 +156,25 @@ public class DhcpServingParams { return this; } + /** + * Set the default routers to be advertised to DHCP clients. + * + *
Each router must be inside the served prefix. This may be an empty list of routers, + * but it must always be set explicitly before building the {@link DhcpServingParams}. + */ + public Builder setDefaultRouters(@NonNull Inet4Address... defaultRouters) { + return setDefaultRouters(Sets.newArraySet(defaultRouters)); + } + + /** + * Convenience method to build the parameters with no default router. + * + *
Equivalent to calling {@link #setDefaultRouters(Inet4Address...)} with no address. + */ + public Builder withNoDefaultRouter() { + return setDefaultRouters(); + } + /** * Set the DNS servers to be advertised to DHCP clients. * @@ -165,6 +186,25 @@ public class DhcpServingParams { return this; } + /** + * Set the DNS servers to be advertised to DHCP clients. + * + *
This may be an empty list of servers, but it must always be set explicitly before + * building the {@link DhcpServingParams}. + */ + public Builder setDnsServers(@NonNull Inet4Address... dnsServers) { + return setDnsServers(Sets.newArraySet(dnsServers)); + } + + /** + * Convenience method to build the parameters with no DNS server. + * + *
Equivalent to calling {@link #setDnsServers(Inet4Address...)} with no address. + */ + public Builder withNoDnsServer() { + return setDnsServers(); + } + /** * Set excluded addresses that the DHCP server is not allowed to assign to clients. * @@ -176,6 +216,16 @@ public class DhcpServingParams { return this; } + /** + * Set excluded addresses that the DHCP server is not allowed to assign to clients. + * + *
This parameter is optional. DNS servers and default routers are always excluded
+ * and do not need to be set here.
+ */
+ public Builder setExcludedAddrs(@NonNull Inet4Address... excludedAddrs) {
+ return setExcludedAddrs(Sets.newArraySet(excludedAddrs));
+ }
+
/**
* Set the lease time for leases assigned by the DHCP server.
*
diff --git a/tests/net/java/android/net/dhcp/DhcpServingParamsTest.java b/tests/net/java/android/net/dhcp/DhcpServingParamsTest.java
index dfa09a9f205c6..b6a4073a64da9 100644
--- a/tests/net/java/android/net/dhcp/DhcpServingParamsTest.java
+++ b/tests/net/java/android/net/dhcp/DhcpServingParamsTest.java
@@ -37,7 +37,6 @@ import org.junit.runner.RunWith;
import java.net.Inet4Address;
import java.util.Arrays;
-import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
@@ -150,14 +149,14 @@ public class DhcpServingParamsTest {
@Test(expected = InvalidParameterException.class)
public void testBuild_PrefixTooSmall() throws InvalidParameterException {
- mBuilder.setDefaultRouters(Collections.singleton(parseAddr("192.168.0.254")))
+ mBuilder.setDefaultRouters(parseAddr("192.168.0.254"))
.setServerAddr(new LinkAddress(TEST_SERVER_ADDR, 31))
.build();
}
@Test(expected = InvalidParameterException.class)
public void testBuild_RouterNotInPrefix() throws InvalidParameterException {
- mBuilder.setDefaultRouters(Collections.singleton(parseAddr("192.168.254.254"))).build();
+ mBuilder.setDefaultRouters(parseAddr("192.168.254.254")).build();
}
private static