From cc394973d41f881b9bf6254d75a8eb0614c7b747 Mon Sep 17 00:00:00 2001 From: Xiao Ma Date: Thu, 9 Apr 2020 01:55:06 +0000 Subject: Add a new field changePrefixOnDecline in DhcpServingParamsParcel. A new boolean flag (changePrefixOnDecline) to be added in the DhcpServingParamsParcel, indicating whether or not the DHCP server should request a new prefix (e.g. a different subnet prefix) from IpServer when receiving DHCPDECLINE message. Bug: 130741856 Test: atest NetworkStackTests NetworkStackNextTests Merged-In: I8cb0f844ef98a5f17d4e07e1812a1abf73aa4c07 Change-Id: I8cb0f844ef98a5f17d4e07e1812a1abf73aa4c07 --- src/android/net/dhcp/DhcpServingParams.java | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/android/net/dhcp/DhcpServingParams.java b/src/android/net/dhcp/DhcpServingParams.java index 63f847d..c52cae9 100644 --- a/src/android/net/dhcp/DhcpServingParams.java +++ b/src/android/net/dhcp/DhcpServingParams.java @@ -90,6 +90,13 @@ public class DhcpServingParams { @Nullable public final Inet4Address clientAddr; + /** + * Indicates whether the DHCP server should request a new prefix from IpServer when receiving + * DHCPDECLINE message in certain particular link (e.g. there is only one downstream USB + * tethering client). If it's false, process DHCPDECLINE message as RFC2131#4.3.3 suggests. + */ + public final boolean changePrefixOnDecline; + /** * Checked exception thrown when some parameters used to build {@link DhcpServingParams} are * missing or invalid. @@ -103,7 +110,8 @@ public class DhcpServingParams { private DhcpServingParams(@NonNull LinkAddress serverAddr, @NonNull Set defaultRouters, @NonNull Set dnsServers, @NonNull Set excludedAddrs, - long dhcpLeaseTimeSecs, int linkMtu, boolean metered, Inet4Address clientAddr) { + long dhcpLeaseTimeSecs, int linkMtu, boolean metered, Inet4Address clientAddr, + boolean changePrefixOnDecline) { this.serverAddr = serverAddr; this.defaultRouters = defaultRouters; this.dnsServers = dnsServers; @@ -112,6 +120,7 @@ public class DhcpServingParams { this.linkMtu = linkMtu; this.metered = metered; this.clientAddr = clientAddr; + this.changePrefixOnDecline = changePrefixOnDecline; } /** @@ -140,6 +149,7 @@ public class DhcpServingParams { .setLinkMtu(parcel.linkMtu) .setMetered(parcel.metered) .setClientAddr(clientAddr) + .setChangePrefixOnDecline(parcel.changePrefixOnDecline) .build(); } @@ -195,6 +205,7 @@ public class DhcpServingParams { private int mLinkMtu = MTU_UNSET; private boolean mMetered; private Inet4Address mClientAddr; + private boolean mChangePrefixOnDecline; /** * Set the server address and served prefix for the DHCP server. @@ -328,6 +339,17 @@ public class DhcpServingParams { return this; } + /** + * Set whether the DHCP server should request a new prefix from IpServer when receiving + * DHCPDECLINE message in certain particular link. + * + *

If not set, the default value is false. + */ + public Builder setChangePrefixOnDecline(boolean changePrefixOnDecline) { + this.mChangePrefixOnDecline = changePrefixOnDecline; + return this; + } + /** * Create a new {@link DhcpServingParams} instance based on parameters set in the builder. * @@ -382,7 +404,7 @@ public class DhcpServingParams { Collections.unmodifiableSet(new HashSet<>(mDefaultRouters)), Collections.unmodifiableSet(new HashSet<>(mDnsServers)), Collections.unmodifiableSet(excl), - mDhcpLeaseTimeSecs, mLinkMtu, mMetered, mClientAddr); + mDhcpLeaseTimeSecs, mLinkMtu, mMetered, mClientAddr, mChangePrefixOnDecline); } } -- cgit v1.2.3