266 Commits

Author SHA1 Message Date
Aaron Huang
23e4f46c1a Have FrameworksVcnTests access hidden API
(cherry picked from commit 023328e204d2ab167f45827a13bc31b68ee27d59)
Bug: 204153604
Test: build, FrameworksVcnTests
Change-Id: I2e92f27b4d10612d9000c0fc0d5866dd0313a336
Merged-In: I2e92f27b4d10612d9000c0fc0d5866dd0313a336
2022-02-08 14:31:46 +00:00
Benedict Wong
ab7f5b533d Merge "Revert "Revert "Listen for individual subscription mobile data toggles""" 2022-01-19 16:51:09 +00:00
Benedict Wong
e0606dfb49 Revert "Revert "Listen for individual subscription mobile data toggles""
This reverts commit f598641d7fef0d816eea13ffc1d708f6b8b4cb27.

Reason for revert: Build breakage could not possibly have been th caused by the initial CL. Cause was a String index overflow "Caused by: com.android.tools.r8.internal.du: String-index overflow."

Tested with local build of aosp-master/full-eng, completes successfully.
Change-Id: I207372c9513b450cf246874ba1d1e98dbd147f27
2022-01-14 02:20:59 +00:00
Joseph Jang
f598641d7f Revert "Listen for individual subscription mobile data toggles"
This reverts commit 66896667a6faf53d2175fd7b9b6e66d2f0e7d387.

Reason for revert: <Suspect cause the build break report by b/214340258>

Change-Id: If8ddbfe8a0a8d445c4971572cf3301ebbb816347
2022-01-13 10:40:45 +00:00
Benedict Wong
ee22e0d57d Add minimum required bandwidth to network templates
This change adds a minimum required bandwidth to the VCN network
templates, ensuring that a minimum bar of throughput can be required of
underlying networks.

Bug: 211008106
Test: atest FrameworksVcnTests
Change-Id: I929428f75e5e543966a03061d13f300dd8b0956f
2022-01-13 05:35:50 +00:00
Benedict Wong
66896667a6 Listen for individual subscription mobile data toggles
This change ensures that the VCN listens for changes on a
per-subscription basis. In the DSDS case, the
Settings.Global.MOBILE_DATA toggles is insufficient, as the toggles for
individual subscriptions are changed instead of the global toggle.

Without this patch, the VCN may ignore changes in the user toggles, and
continue providing data service even after user data is disabled.
Similarly, it may fail to bring up a VCN when user data is re-enabled.

Bug: 214247774
Test: atest FrameworksVcnTests
Change-Id: I1e84c25f48eab90dca163eda809fc11d5d21bc31
2022-01-13 01:58:01 +00:00
Benedict Wong
179826efdc Merge changes Ib7d51cf1,I92bd2831
* changes:
  Expose APIs to configure underlying network priority
  Update setter/getters to configure underlying network priority
2022-01-12 05:21:03 +00:00
Benedict Wong
bdbdbe19f8 Merge changes Ia5022310,Ia4529d08
* changes:
  Remove VCN Carrier Privilege grace period
  Update TelephonySubscriptionTracker to use CarrierPrivilegesListener
2022-01-08 01:43:17 +00:00
Benedict Wong
fb4a590dbc Remove VCN Carrier Privilege grace period
This change removes the grace period after the VCN is notified that a
provisioning app is no longer carrier privileged. This is due to the
switch to use CarrierPrivilegesTracker, which inherently has the
identical grace period.

This both simplifies the code, as well as removes some edge cases. As
such, tests for the delay before VCN tears down are no longer necessary.

Bug: 183554244
Test: atest FrameworksVcnTests
Change-Id: Ia50223108e45eeaedc860adf5e29a6ea459d956f
2022-01-07 22:11:26 +00:00
Benedict Wong
31d56f8298 Update TelephonySubscriptionTracker to use CarrierPrivilegesListener
This change adds use for CarrierPrivilegesListener to use the callbacks
as triggers to re-check carrier privileges. For simplicity, the carrier
privileges returned by the callback are not used, as it requires an
additional layer of caching. Instead, a query is performed, which
should hit a cache in the CarrierPrivilegesTracker, thus not be
performance-sensitive.

Bug: 183554244
Test: atest FrameworksVcnTests
Change-Id: Ia4529d087ee7f0deca7101c6849183ba7267c067
2022-01-07 22:11:22 +00:00
Yan Yan
451df7d904 Expose APIs to configure underlying network priority
This commit expose VcnUnderlyingNetworkTemplate classes
and methods to configure those objects in VcnGatewayConnectionConfig.

Those APIs allow callers to configure the underlying network priority
for VCN gateway when VCN is doing route selection. Callers can
construct VcnUnderlyingNeworkTemplate with network requirements and
then set VcnUnderlyingNeworkTemplate list from most preffered to least
preffered in VcnGatewayConnectionConfig.

Bug: 205343355
CTS-Coverage-Bug: 209498272
Test: atest FrameworksVcnTests, CtsVcnTestCases
Test: make update-api
Change-Id: Ib7d51cf1ce562a1acbcb767ec569d7e11c861a1d
2022-01-06 14:51:54 -08:00
Yan Yan
1161a591e7 Update setter/getters to configure underlying network priority
- Update setters for configuring meteredness, roaming and
  opportunistic to take an int instead of a boolean
- Update NetworkPriorityClassifier and tests accordingly

Bug: 206044122
Test: atest FrameworksVcnTests, CtsVcnTestCases
Change-Id: I92bd2831cc42d634d73b842c42d18fa93a4ed46c
2022-01-06 10:52:39 -08:00
Yan Yan
a9eec89e4b Rename VcnUnderlyingNetworkPrioirty to VcnUnderlyingNetworkTemplate
Rename the classes' names as well as the test files.

Bug: 206044122
Test: atest FrameworksVcnTests, CtsVcnTestCases
Change-Id: I19d13acf0e46921a7254a39dff2af332c36ab2b2
2022-01-06 10:52:26 -08:00
Treehugger Robot
1a0f225c83 Merge "Support parsing VcnGatewayConnectionConfig without UnderlyingNetworkPriorities" 2021-12-09 01:56:52 +00:00
Yan Yan
eae9b5d0c4 Support parsing VcnGatewayConnectionConfig without UnderlyingNetworkPriorities
This commit fixes the NullPointerException issue in converting a
PersistableBundle without UnderlyingNetworkPriorities to a
VcnGatewayConnectionConfig, by adding a null check and building
the VcnGatewayConnectionConfig with the default
UnderlyingNetworkPriority list.

Bug: 209142575
Test: atest FrameworksVcnTests (new tests), CtsVcnTestCases
Change-Id: I888d2994c86ba250c3fc9ee1851dccb5e6ef3e77
2021-12-08 12:23:28 -08:00
Yan Yan
9df3f48cb0 Merge "Update #hashCode & #equals with mUnderlyingNetworkPriorities" 2021-12-08 20:15:08 +00:00
Yan Yan
d3a7de1333 Update #hashCode & #equals with mUnderlyingNetworkPriorities
Update VcnGatewayConnectionConfig to consider
mUnderlyingNetworkPriorities in #hashCode and #equals methods

Rename #setAllowedPlmnIds and #getAllowedPlmnIds
to #setAllowedOperatorPlmnIds and #getAllowedOperatorPlmnIds

Bug: 206044122
Test: atest FrameworksVcnTests(new tests), CtsVcnTestCases
Change-Id: Id16d88024bbb7ef275da0304f2dde1413a18de10
2021-12-07 19:18:05 -08:00
Yan Yan
36a25527b4 Merge "Calculate priority based on caller configurations" 2021-12-07 18:10:47 +00:00
Yan Yan
738ed7b7b2 Calculate priority based on caller configurations
Update NetworkPriorityClassifier to calculate priority
according to the VcnUnderlyingNetworkPriority list
configured in VcnGatewayConnectionConfig

Bug: 206044122
Test: atest FrameworksVcnTests(new)
Test: atest CtsVcnTestCses
Change-Id: I55afa916af44db655a568aae2488877f2c177d59
2021-12-06 18:52:23 -08:00
Benedict Wong
4bfa0ebc53 Merge "Immediately tear down VCN network when entering Airplane Mode" 2021-12-03 21:26:06 +00:00
Benedict Wong
c0e108a497 Immediately tear down VCN network when entering Airplane Mode
This change immediately tears down the VCN network if all underlying
networks are lost, and the device is in airplane mode. This ensures
consistency where other components may not understand the lingering
behavior of the VCN network

Bug: 207014742
Test: atest FrameworksVcnTests
Change-Id: Ib05f0c4255e847eed7d8623b35c5a7dfedd920d6
2021-12-03 01:48:21 +00:00
Yan Yan
fee736f47c Support configuring VcnUnderlyingNetworkPriority in VcnGatwayConnectionConfig
Bug: 206044122
Test: atest FrameworksVcnTests(new tests)
Test: atest CtsVcnTestCases
Change-Id: I5cd2982fcbfe5ce4ee36edb91f1f9f9b55d28d9a
2021-12-01 10:34:02 -08:00
Yan Yan
0376684dea Create VcnCellUnderlyingNetworkPriority
Create VcnCellUnderlyingNetworkPriority to allow VCN callers
to configure network prioritization.

Bug: 206044122
Test: atest FrameworksVcnTests(new tests)
Test: atest CtsVcnTestCases
Change-Id: Ia7f44c5f956ff75c39e20d9761f1bd5c987644ee
2021-12-01 10:33:49 -08:00
Yan Yan
629cb6935e Create VcnUnderlyingNetworkPriority and the subclass for Wifi
Create VcnUnderlyingNetworkPriority and VcnWifiUnderlyingNetworkPriority
to allow VCN callers to configure network prioritization.

Bug: 206044122
Test: atest FrameworksVcnTests(new tests)
Test: atest CtsVcnTestCases
Change-Id: I540f826176c7085780be93e42fdbc3ff0ad537d7
2021-11-30 16:55:55 -08:00
Yan Yan
3628ecb45f Split out NetworkPriorityClassifier and UnderlyingNetworkRecord
Move UnderlyingNetworkRecord to a spearate file, and
move calculatePriorityClass to a new class NetworkPriorityClassifier.

This is a preparation CL to support vcn routeselection with
configurable network priority classes and network metric
monitors.

Bug: 206044122
Test: atest FrameworksVcnTests, CtsVcnTestCases
Change-Id: I88aa9e8dcf01524ddce9f913f40a4c712f8c878d
2021-11-23 18:11:50 -08:00
Yan Yan
3d20aa2cf8 Rename UnderlyingNetworkTracker to UnderlyingNetworkController
Bug: 206044122
Test: atest FrameworksVcnTests, CtsVcnTestCases
Change-Id: I6b4888f8252999446a29076937d9695278ff6a66
2021-11-23 18:08:26 -08:00
Benedict Wong
5fcdfc99f1 Merge "Pull underlying network MTU using Java APIs" 2021-11-09 18:08:14 +00:00
Benedict Wong
12fd089484 Pull underlying network MTU using Java APIs
This change ensures that if the VCN's underlying network MTU is not
reported via the LinkProperties APIs (as in the case of Carrier WiFi),
the kernel values will be used (as possible).

Bug: 204813618
Test: Manual testing
Test: atest FrameworksVcnTests CtsVcnTestCases
Change-Id: If291aa6b915e4da39152a679bbe3e40216b42f44
2021-11-08 23:00:35 +00:00
Lucas Lin
74ef57b885 Merge "Set underlying network of VCN" 2021-11-03 00:44:40 +00:00
lucaslin
07ca5cb00e Set underlying network of VCN
VCN has already known its underlying network, so set it into
NetworkCapabilities directly.

Bug: 191918368
Test: atest FrameworksVcnTests
Change-Id: Ibfe4f12bc5f3a8b7679d8a2c3b1b2f2161b9c9e5
2021-11-01 22:56:53 +08:00
Nagendra Prasad Nagarle Basavaraju
3afaa9e51a Support encoding/decoding IkeSessionParams with
IKE_OPTION_INITIAL_CONTACT

This commit updates IkeSessionParamsUtils to be able
to encode/decode IkeSessionParams with IKE_OPTION_INITIAL_CONTACT
to/from a PersistableBundle

If this option is set for an IKE Session, The
INITIAL CONTACT  message is sent to the peer
to ensure that old security associations (SAs)
on the peer are deleted.

Bug: 186179788
Test: atest FrameworksIkeTests
Change-Id: I4ecd36ae222d95a84e8e6897a219f8accb9ed83b
2021-10-29 03:03:51 +00:00
Benedict Wong
24e038e8a4 Merge "Always trigger safe mode callbacks" am: 831f78825b
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1811936

Change-Id: Ib8cf8010996f6eb52db438f5944af4b5ee66af7a
2021-09-10 18:56:56 +00:00
Benedict Wong
971ef77ddd Always trigger safe mode callbacks
This change ensures that safe mode callbacks are always triggered from
the VcnGatewayConnection up, ensuring that if a gateway connection
is restarted and successfully validates, it will notify the Vcn class,
and kick it out of safe mode.

Previously, if a VCN had entered safe mode, and a config was updated,
the newly updated VcnGatewayConnection would be brought up as "not" in
safe mode, and thus the onSafeModeStatusChanged() callback would never
be fired if the new VcnGatewayConnection successfully connected.

Calling onSafeModeStatusChanged() multiple times is safe, and serves as
a "connection status changed" callback.

Bug: 196841140
Test: atest FrameworksVcnTests
Test: manual testing
Change-Id: I43c82ada9e9429e8283be65ab73d13075dfd6038
2021-09-01 22:48:23 +00:00
Benedict Wong
2a1b0ab7cd Merge "Set TRANSPORT_PRIMARY for VCN NetworkOffers and NetworkAgents" am: d92daec786 am: 697971f693
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1772025

Change-Id: I3d678a8d3315f884bacfd3052218416604bf3e2c
2021-07-21 02:05:47 +00:00
Benedict Wong
d92daec786 Merge "Set TRANSPORT_PRIMARY for VCN NetworkOffers and NetworkAgents" 2021-07-21 01:29:25 +00:00
Benedict Wong
8d6f7c7280 Set TRANSPORT_PRIMARY for VCN NetworkOffers and NetworkAgents
This change sets TRANSPORT_PRIMARY for all NetworkScore objects passed
to ConnectivityService by the VCN. Without this patch, a VCN in safe
mode will never get any NetworkRequests, since the new Policy-based
NetworkRanker always prioritizes a existing satisfier of a network,
regardless of score. However, a higher-priority policy check ensures
that a TRANSPORT_PRIMARY request is used if it exists. This changes the
VCN to utilize that functionality.

Bug: 194122634
Test: atest FrameworksVcnTests
Change-Id: I3a298a6c4c594c6e224f3f05764614802c00e9b0
2021-07-21 00:44:19 +00:00
Benedict Wong
adcba0ef9c Merge "Ensure VcnGatewayConnection#isQuitting never gets unset after being set" am: fc9e0c982f am: e98f254f96
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1768623

Change-Id: I418557047f10b0224583f9e99770169356f07fa9
2021-07-16 22:16:36 +00:00
Benedict Wong
fc9e0c982f Merge "Ensure VcnGatewayConnection#isQuitting never gets unset after being set" 2021-07-16 21:29:36 +00:00
Benedict Wong
e8c548fd02 Ensure VcnGatewayConnection#isQuitting never gets unset after being set
This change ensures that the VcnGatewayConnection can never abort a
quitting command; specifically, if a non-quitting disconnect request is
processed after a quitting disconnect request, the isQuitting value MUST
continue to stay set (as true).

Failure to OR the values results in orphaned VcnGatewayConnection(s),
and the VCN network thrashing.

Additionally reduce verbosity of local logs, to ensure it better
captures failures and logWtf(s)

Bug: 192776413
Test: atest FrameworksVcnTests
Change-Id: Iec8dae701838794261957609bae4e270eaa9cdc7
2021-07-16 12:10:08 -07:00
Benedict Wong
ee52376594 Merge "Limit VCNs to one running at a given time" am: 9e6e3ce643 am: 4d16027790
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1767050

Change-Id: I89be4b61ec4e3a7ed24b817acf52a9c58fb5b4f2
2021-07-16 03:27:31 +00:00
Benedict Wong
3433a8e5d9 Limit VCNs to one running at a given time
This change ensures that there is only ever one VCN running at a given
point in time, and that if the device has switched to using a
subscription in a different subscription group, the VCN will immediately
tear down.

This ensures that when on a DSDS device, when the VCN-enabled
subscription is not the default/active subscription, the other
subscription's network will never be outscored by the VCN, and thus get
torn down.

Bug: 190761448
Test: atest FrameworksVcnTests
Test: Manual testing to ensure common functionality
Change-Id: I8031fab7502880d38420058451df41f47567c458
2021-07-15 12:04:05 -07:00
Benedict Wong
b1f2cc2814 Merge "Add VCN underlying networks" am: 447fbc3788 am: b9c06bc020
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1750241

Change-Id: I93ec50a1004dc79352dd72270828cb199e0e150d
2021-07-02 19:12:53 +00:00
Benedict Wong
447fbc3788 Merge "Add VCN underlying networks" 2021-07-02 18:42:43 +00:00
Benedict Wong
1bfdfa2754 Add VCN underlying networks
This change declares underlying networks for the VCN for the purposes of
app data accounting

Bug: 190620024
Test: atest FrameworksVcnTests
Change-Id: Ida2cd5975250604064b0baed00bc7c201ea97c5e
2021-07-01 19:49:57 -07:00
Benedict Wong
f241f1c3af Merge "Fix dangling NetworkAgent" am: 6ff2b288f6 am: 7d3359abba
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1748961

Change-Id: Ie8acd1ef22cf1edf82068c2b814970dde6e6af7e
2021-06-25 23:42:03 +00:00
Benedict Wong
6ff2b288f6 Merge "Fix dangling NetworkAgent" 2021-06-25 23:02:37 +00:00
Benedict Wong
7207a83ca8 Fix dangling NetworkAgent
This change fixes the potential for a networkAgent to be left dangling,
due to a situation where a VcnGatewayConnection shuts down, but fails to
unregister it's NetworkAgent.

The root cause was that the NetworkAgent was not unregistered when
moving to the DisconnectedState from the RetryTimeoutState, and the new
state assumed that there was no NetworkAgent, and thus failed to close
it when disconnecting.

Thus, this change ensures that the NetworkAgent is closed before moving
to the DisconnectedState. Additionally, it adds safety-checks to
onQuitting(), ensuring that if all else fails, these fields are cleaned
up.

Lastly, this change adds the specific gateway reference to facilitate
future debugging of issues such as this where there is potential for
duplicate networks, or gateway connections.

Bug: 191707296
Test: atest FrameworksVcnTests
Change-Id: I84cd43a0c136662f5c2d229650f1f5f889e6f144
2021-06-25 19:37:17 +00:00
Yan Yan
627f34fab2 Merge "Include IkeTunnelConnectionParams in #hashCode and #equals" am: 320056b32d am: 8d9fa0b9e6
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1742657

Change-Id: I061ad3d218a460a7f859fe442b1111f3432ae28c
2021-06-23 02:18:09 +00:00
Yan Yan
320056b32d Merge "Include IkeTunnelConnectionParams in #hashCode and #equals" 2021-06-22 22:41:03 +00:00
Yan Yan
16006a61b9 Include IkeTunnelConnectionParams in #hashCode and #equals
This commit includes IkeTunnelConnectionParams in
VcnGatewayConnectionConfig#hashCode and
VcnGatewayConnectionConfig#equals.

This commit fixes the issue that VcnGatewayConnection was not
being restarted as expected.

Bug: 191317512
Test: atest FrameworksVcnTests (new tests added)
Test: atest CtsVcnTestCases
Change-Id: I70182f9b645e55eced1e0a048a1bd87778c1c0f6
2021-06-22 11:37:38 -07:00