diff options
author | Remi NGUYEN VAN <reminv@google.com> | 2019-10-28 17:04:55 +0900 |
---|---|---|
committer | Xiao Ma <xiaom@google.com> | 2020-02-19 21:54:01 +0900 |
commit | 2a7389299668893d0532838af5f9210f0884604a (patch) | |
tree | ba7578961ae0e0bc5684b9b1825e9cbcc4dce5bd /src/android/net/ip/IpClient.java | |
parent | 21907e1cdc3dc9f86c4446d7e111a6637aefcec4 (diff) |
Add captive portal info to DhcpClient output
Requesting the captive portal option is flagged off by default.
The URL it provides will be used to support the captive portal API; see
RFC7710bis.
Bug: 139269711
Test: atest NetworkStackTests NetworkStackNextTests
Test: atest NetworkStackIntegrationTests NetworkStackNextIntegrationTests
Change-Id: I783466e0e60f364e79cd76af3fe43a7862d35cf2
Diffstat (limited to 'src/android/net/ip/IpClient.java')
-rw-r--r-- | src/android/net/ip/IpClient.java | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/android/net/ip/IpClient.java b/src/android/net/ip/IpClient.java index 47f955a..173f136 100644 --- a/src/android/net/ip/IpClient.java +++ b/src/android/net/ip/IpClient.java @@ -36,6 +36,7 @@ import android.net.ProvisioningConfigurationParcelable; import android.net.ProxyInfo; import android.net.RouteInfo; import android.net.TcpKeepalivePacketDataParcelable; +import android.net.Uri; import android.net.apf.ApfCapabilities; import android.net.apf.ApfFilter; import android.net.dhcp.DhcpClient; @@ -57,6 +58,7 @@ import android.text.TextUtils; import android.util.LocalLog; import android.util.Log; import android.util.Pair; +import android.util.Patterns; import android.util.SparseArray; import androidx.annotation.NonNull; @@ -1192,6 +1194,15 @@ public class IpClient extends StateMachine { if (mDhcpResults.mtu != 0) { newLp.setMtu(mDhcpResults.mtu); } + + final String capportUrl = mDhcpResults.captivePortalApiUrl; + // Uri.parse does no syntax check; do a simple regex check to eliminate garbage. + // If the URL is still incorrect data fetching will fail later, which is fine. + if (capportUrl != null && Patterns.WEB_URL.matcher(capportUrl).matches()) { + NetworkInformationShimImpl.newInstance() + .setCaptivePortalApiUrl(newLp, Uri.parse(capportUrl)); + } + // TODO: also look at the IPv6 RA (netlink) for captive portal URL } // [4] Add in TCP buffer sizes and HTTP Proxy config, if available. |