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 void assertContains(@NonNull Set set, @NonNull Set subset) {