diff options
| author | markchien <markchien@google.com> | 2022-02-25 23:14:58 +0800 |
|---|---|---|
| committer | markchien <markchien@google.com> | 2022-03-31 16:32:55 +0800 |
| commit | fb65dfeb8da0c0ce4ec8ac63099ede54195e4da2 (patch) | |
| tree | 38b9b09286e53b73f7d7fdb1dd2befb583024331 /Tethering/src/com/android/networkstack/tethering/TetheringConfiguration.java | |
| parent | 3d4de57752ef58e0fb58d6cd14e71bff8646c37e (diff) | |
Add config_p2p_leases_subnet_prefix_length configuration
Add new rro configuration which can be used to make the p2p dhcp
prefix length larger to reserve the address range outside of leases
subnet prefix length for EAPOL-Key feature. This configuration only
valid if its value larger than dhcp server address prefix length and
config_tether_enable_legacy_wifi_p2p_dedicated_ip is true.
E.g.:leaseSubnetPrefixLength = 25, p2p static address = 192.168.49.1/24
dhcp range: 192.168.49.0 ~ 192.168.49.127 (192.168.49.1/25), reserved
192.168.49.128 ~ 192.168.49.255 for EAPOL-Key feature.
Bug: 170056953
Test: atest TetheringTests
Change-Id: I1319efd871796da7234383a29ab64a1623101ae7
Diffstat (limited to 'Tethering/src/com/android/networkstack/tethering/TetheringConfiguration.java')
| -rw-r--r-- | Tethering/src/com/android/networkstack/tethering/TetheringConfiguration.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Tethering/src/com/android/networkstack/tethering/TetheringConfiguration.java b/Tethering/src/com/android/networkstack/tethering/TetheringConfiguration.java index eaf85899a1..f9f3ed9cc9 100644 --- a/Tethering/src/com/android/networkstack/tethering/TetheringConfiguration.java +++ b/Tethering/src/com/android/networkstack/tethering/TetheringConfiguration.java @@ -149,6 +149,7 @@ public class TetheringConfiguration { // TODO: Add to TetheringConfigurationParcel if required. private final boolean mEnableBpfOffload; private final boolean mEnableWifiP2pDedicatedIp; + private final int mP2pLeasesSubnetPrefixLength; private final int mUsbTetheringFunction; protected final ContentResolver mContentResolver; @@ -214,9 +215,27 @@ public class TetheringConfiguration { R.bool.config_tether_enable_legacy_wifi_p2p_dedicated_ip, false /* defaultValue */); + mP2pLeasesSubnetPrefixLength = getP2pLeasesSubnetPrefixLengthFromRes(res, configLog); + configLog.log(toString()); } + private int getP2pLeasesSubnetPrefixLengthFromRes(final Resources res, final SharedLog log) { + if (!mEnableWifiP2pDedicatedIp) return 0; + + int prefixLength = getResourceInteger(res, + R.integer.config_p2p_leases_subnet_prefix_length, 0 /* default value */); + + // DhcpLeaseRepository ignores the first and last addresses of the range so the max prefix + // length is 30. + if (prefixLength < 0 || prefixLength > 30) { + log.e("Invalid p2p leases subnet prefix length configuration: " + prefixLength); + return 0; + } + + return prefixLength; + } + /** Check whether using legacy dhcp server. */ public boolean useLegacyDhcpServer() { return mEnableLegacyDhcpServer; @@ -272,6 +291,15 @@ public class TetheringConfiguration { return mEnableWifiP2pDedicatedIp; } + /** + * Get subnet prefix length of dhcp leases for wifi p2p. + * This feature only support when wifi p2p use dedicated address. If + * #shouldEnableWifiP2pDedicatedIp is false, this method would always return 0. + */ + public int getP2pLeasesSubnetPrefixLength() { + return mP2pLeasesSubnetPrefixLength; + } + /** Does the dumping.*/ public void dump(PrintWriter pw) { pw.print("activeDataSubId: "); @@ -310,6 +338,9 @@ public class TetheringConfiguration { pw.print("enableWifiP2pDedicatedIp: "); pw.println(mEnableWifiP2pDedicatedIp); + pw.print("p2pLeasesSubnetPrefixLength: "); + pw.println(mP2pLeasesSubnetPrefixLength); + pw.print("mUsbTetheringFunction: "); pw.println(isUsingNcm() ? "NCM" : "RNDIS"); } |
