Commit Graph

373 Commits

Author SHA1 Message Date
Automerger Merge Worker
6b606b390b Resolve ambiguous argument.
CTS tests don't have access to TestNetworkAgent and therefore
require overloading this method, which means 'null' is ambiguous.

Bug: 139268426
Test: FrameworksNetTests
Change-Id: I5d7deea82d7114fa38f37b90f94fe7e6073bd848
(cherry picked from commit ff83f1d7ee)
2020-03-15 12:56:05 +00:00
Cody Kesting
a206538274 Merge "Clear UIDs when sharing NetworkCapabilties for ConnectivityDiagnostics." into rvc-dev 2020-03-13 18:44:50 +00:00
Lucas Lin
2221a86262 Merge "Remove redundant connected notification" into rvc-dev 2020-03-10 02:21:07 +00:00
Cody Kesting
a3b71c4c20 Clear UIDs when sharing NetworkCapabilties for ConnectivityDiagnostics.
ConnectivityDiagnostics shares NetworkCapabilities in
ConnectivityReports and DataStallReports. These NetworkCapabilities need
to have their UIDs scrubbed before they are shared with callbacks.

Bug: 148942124
Test: atest FrameworksNetTests
Change-Id: I5bde5a8116f7e36b8f4de49adf4cab8ec45a5aa4
Merged-In: I5bde5a8116f7e36b8f4de49adf4cab8ec45a5aa4
(cherry picked from commit 3de2432655)
2020-03-09 08:27:10 -07:00
Chalard Jean
842b8d727d Merge "Remove the NetworkScore class." into rvc-dev 2020-03-09 05:54:30 +00:00
Automerger Merge Worker
7d66c267e7 Add more assertions to testStackedLinkProperties.
Check all routes that are added and removed instead of just some
of them. This is in preparation of an upcoming change that
switches to adding and creating routes by issuing direct calls to
netd.

Also rename the misleading ipv4Default route variable to
ipv4Subnet, which is what it actually is.

Bug: 142892223
Test: test-only change
Change-Id: I7d111382be215a926a7d7d4701bd3c3e94372b99
Merged-In: I7d111382be215a926a7d7d4701bd3c3e94372b99
(cherry picked from commit dcb35cb9a5)
2020-03-09 03:48:15 +00:00
Automerger Merge Worker
3d40f57841 Remove the NetworkScore class.
This class is useless at this point and introduces overhead.

Bug: 113554781
Test: FrameworksNetTests
Change-Id: Ib5f540070222865260c16c7182cc13c710a243c2
Merged-In: Ib5f540070222865260c16c7182cc13c710a243c2
(cherry picked from commit c3489ad3a6)
2020-03-09 03:46:34 +00:00
Automerger Merge Worker
d9375e4a5e test: ConnectivityService: Validate Route Add/Del
Validate route addition and deletion after linkProperties are
changed.

Bug: 142892223
Test: atest ConnectivityServiceTest#testStackedLinkProperties
Change-Id: I18296b933e856a0f8a4c1dbd75bd35024853bfbb
Merged-In: I18296b933e856a0f8a4c1dbd75bd35024853bfbb
(cherry picked from commit a22a979a0c)
2020-03-09 03:36:10 +00:00
lucaslin
8c407bd646 Remove redundant connected notification
Remove the old connected notification since there is a new file
- NetworkStackNotifier.java which will send the connected
notification when captive portal validated.

Bug: 149883761
Test: 1. atest FrameworksNetTests
      2. Sign-in a captive portal and see if there is a redundant
      connected notification.

Change-Id: Id11a9b99dd04772a92af8d527104906c47bf64cd
Merged-In: Id11a9b99dd04772a92af8d527104906c47bf64cd
2020-03-05 06:48:12 +00:00
TreeHugger Robot
80c2e07e00 Merge changes from topic "revert-10343065-HRWTWGOFZV"
* changes:
  Revert "[NS D05] Rework how to tear down networks"
  Revert "[NS D06] Implement more policies"
  Revert "[NS D07] Use the unmodified legacy score"
2020-02-21 07:53:30 +00:00
Chalard Jean
fb8307638a Revert "[NS D05] Rework how to tear down networks"
Revert submission 10343065

Reason for revert: This is part of a feature that was punted out of R.
Reverted Changes:
Ic9a3d3363:[NS D05] Rework how to tear down networks
I7d815f873:[NS D06] Implement more policies
I561098476:[NS D07] Use the unmodified legacy score

Change-Id: I8d2696d15999265d79abfc9163e7e5ccad873cfe
2020-02-20 07:32:12 +00:00
Chalard Jean
10c8d542ff Revert "[NS D07] Use the unmodified legacy score"
Revert submission 10343065

Reason for revert: This is part of a feature that was punted out of R.
Reverted Changes:
Ic9a3d3363:[NS D05] Rework how to tear down networks
I7d815f873:[NS D06] Implement more policies
I561098476:[NS D07] Use the unmodified legacy score

Change-Id: I184817e3aa290afdbe6721a7c36332b940434d3a
2020-02-20 07:32:12 +00:00
Automerger Merge Worker
5c3fd8d2b3 Merge "Sanitize owner UID iff owning app does not have location permissions." am: 239908298e am: 8b18b53599 am: 662028385d
Change-Id: I9b8fb3ff8d907ecda918a8a926edb133b742c8f1
2020-02-20 05:59:35 +00:00
Qingxi Li
239908298e Merge "Sanitize owner UID iff owning app does not have location permissions." 2020-02-20 05:20:27 +00:00
Qingxi Li
9c5d8b963c Sanitize owner UID iff owning app does not have location permissions.
This change adds permission checking to ensure that the following
conditions are enforced in order for apps to receive the owner UID:
1. The app must be the owner of the network
2. The app must hold the FINE_LOCATION permission/appop
3. The user must have their location toggle enabled.

Bug: 142072839
Test: atest FrameworksNetTests
Change-Id: I7a981a82f1219828ee89c8c96eb9d2efd153377f
2020-02-20 01:02:42 +00:00
Chalard Jean
ff83b0e467 [NS D07] Use the unmodified legacy score
Ranking used to make use of the various adjustments in
ConnectivityService. These are now implemented in policy.

Test: ConnectivityServiceTest

Change-Id: I56109847678ea5cda1752511123ba652c0f4fe36
2020-02-19 22:17:13 +09:00
Chalard Jean
ea0cf5084c [NS D05] Rework how to tear down networks
Networks are torn down if they don't satisfy requests but only if
they are found unable to ever do so. This is important because
general-purpose networks typically turn up unvalidated, which
means they would get torn down immediately in the presence of
some worse network that is already validated.

Note that functionally it's the same as before for the existing
scores, except that
• An exiting network that doesn't satisfy any request is always
  torn down immediately – this is WAI
• An unmetered network is never torn down when compared to a
  metered network – this is a bugfix (previously the platform
  would tear down an unmetered cellular on grounds that it
  could not beat the performance of a metered Ethernet, but
  that's wrong ; the bug was never realized because Android
  always thinks Ethernet is unmetered)
• An unvalidated network will not be torn down if the current
  satisfier is also unvalidated, even if the satisfier is much
  faster. This is the reason for the change in the test. It's
  wrong to tear down in this case because even if much slower
  the slower network should win if it validates and the other
  doesn't.

Test: ConnectivityServiceTest
Change-Id: Ic9a3d336306a25d1272976ce467aa7c908af7bef
2020-02-19 21:27:22 +09:00
Benedict Wong
522f3c932d Add always-on VPN support for platform VPNs
This commit allows Platform VPNs to be started as part of always-on
mode.

Test: FrameworksNetTests passing, new tests added in subsequent CL
Test: Manually tested.
Change-Id: I5eda88e5b406a0e425eb7424665cf702e0979324
Merged-In: I5eda88e5b406a0e425eb7424665cf702e0979324
2020-02-18 22:13:31 +00:00
Benedict Wong
b570e8654d Add always-on VPN support for platform VPNs
This commit allows Platform VPNs to be started as part of always-on
mode.

Test: FrameworksNetTests passing, new tests added in subsequent CL
Test: Manually tested.
Change-Id: I5eda88e5b406a0e425eb7424665cf702e0979324
2020-02-18 18:58:54 +00:00
Benedict Wong
a265e4325d Merge changes Ide9daebc,Id47ada57 am: 88ec62afa9 am: eb43144549 am: 99c31b925c
Change-Id: Iaacfbe8b221d79e3d06d0d7ea81528db13e4611a
2020-02-18 06:35:06 +00:00
Benedict Wong
eb43144549 Merge changes Ide9daebc,Id47ada57 am: 88ec62afa9
Change-Id: Ied52fed05566a0d75e82007170210205db7832a8
2020-02-17 22:01:24 +00:00
Benedict Wong
88ec62afa9 Merge changes Ide9daebc,Id47ada57
* changes:
  Ensure all VPN runners clean up state when exiting
  Enforce restricted user, getConnectionOwnerUid checks
2020-02-17 21:30:35 +00:00
Lorenzo Colitti
9ce6aea73d Merge changes from topics "capport_dhcpresults", "nm_cb_capport" am: f202725395 am: 2c7a224e1b am: b7c9d205bf
Change-Id: Ie27e5dfd51b38194fa104cbd73f9bbe7c4395e0f
2020-02-17 14:20:04 +00:00
Chiachang Wang
0511cbcdd5 Merge "Update state in NetworkInfo when network resumes" am: a853d2dc37 am: 29a6b4f42f am: 3b9e7d958c
Change-Id: I98e64e6197c5e79e6425f39053981f7bf389a895
2020-02-17 14:18:56 +00:00
Lorenzo Colitti
2c7a224e1b Merge changes from topics "capport_dhcpresults", "nm_cb_capport" am: f202725395
Change-Id: I22bbbb598aaca6ba6c73ab37d34e855ec0def48f
2020-02-15 17:36:37 +00:00
Lorenzo Colitti
f202725395 Merge changes from topics "capport_dhcpresults", "nm_cb_capport"
* changes:
  Add CaptivePortalApiUrl to DhcpResults
  Send LinkProperties update on new capport data
2020-02-15 17:22:18 +00:00
Chiachang Wang
29a6b4f42f Merge "Update state in NetworkInfo when network resumes" am: a853d2dc37
Change-Id: I26e4b318f7acacde38ee5cf0977fd63fc5567d79
2020-02-15 03:31:36 +00:00
Chiachang Wang
a853d2dc37 Merge "Update state in NetworkInfo when network resumes" 2020-02-15 03:16:31 +00:00
Remi NGUYEN VAN
91aa5bc463 Send LinkProperties update on new capport data
When new CaptivePortalData is received from NetworkMonitor, send a
LinkProperties updated callback.
The updated LinkProperties only contain CaptivePortalData if the
receiver has NETWORK_SETTINGS or MAINLINE_NETWORK_STACK permissions, as
defined in the current callback code.

Test: atest FrameworksNetTests
Bug: 139269711

Change-Id: I68595a519171b31792259849efff5f58c43cacd4
2020-02-15 05:00:17 +09:00
Chiachang Wang
a5d8fe8637 Update state in NetworkInfo when network resumes
State override is only handled when state is changed from
CONNECTED to SUSPENDED but not reverse path. Handle both ways
for SUSPENDED state.

Bug: 148678431
Test: FrameworkNetTests
Change-Id: I9333f865d61bbf008fdb8ca162ad17dfdffd1d67
2020-02-14 16:41:33 +08:00
Benedict Wong
5d50ce8181 Enforce restricted user, getConnectionOwnerUid checks
This CL adds checks to ensure restricted users cannot change or
start/stop platform VPNs. In addition, this also adds checks to the
ConnectivityManager#getConnectionOwnerUid() to ensure that only
VpnService based VPNs can identify connections

Bug: 148040659
Test: FrameworksNetTests run
Change-Id: Id47ada5766036bfc84f3ba47f66f2d2683af916d
2020-02-14 00:09:47 -08:00
Roshan Pius
ef628d3a79 RELAND: NetworkRequest: Embed requestor uid & packageName
Add the requestorUid & requestorPackageName fields to
NetworkCapabilities. This is populated by CS when
a new network request is received.
These 2 requestor fields are also optionally used for network
matching. All of the regular app initiated requests will have the
requestor uid and package name set by connectivity service. Network
agents can optionally set the requestorUid and requestorPackageName
to restrict the network created only to the app that requested the network.

This will help removing the necessity for the various specifiers to embed
the uid & package name info in the specifier for network matching.

Note: NetworkSpecifier.assertValidFromUid() is deprecated & removed in
favor of setting the uid/package name on the agent to restrict the
network to a certain app (useful for wifi peer to peer API & wifi aware).

Bug: 144102365
Test: Verified that wifi network request related CTS verifier tests
pass.
Test: Device boots up and connects to wifi networks
Merged-In: I207c446108afdac7ee2c25e6bbcbc37c4e3f6529

Change-Id: I58775e82aa7725aac5aa27ca9d2b5ee8f0be4242
2020-02-12 16:58:36 -08:00
Roshan Pius
1a188ab4f5 Revert "NetworkRequest: Embed requestor uid & packageName"
This reverts commit 3e63df535a.

Reason for revert: b/149425896
Bug: b/149425896

Change-Id: I9fe31509c040cc421ccb00ea60f15e6f199e8bc6
2020-02-12 23:33:43 +00:00
Roshan Pius
3e63df535a NetworkRequest: Embed requestor uid & packageName
Add the requestorUid & requestorPackageName fields to
NetworkCapabilities. This is populated by CS when
a new network request is received.
These 2 requestor fields are also optionally used for network
matching. All of the regular app initiated requests will have the
requestor uid and package name set by connectivity service. Network
agents can optionally set the requestorUid and requestorPackageName
to restrict the network created only to the app that requested the network.

This will help removing the necessity for the various specifiers to embed
the uid & package name info in the specifier for network matching.

Note: NetworkSpecifier.assertValidFromUid() is deprecated & removed in
favor of setting the uid/package name on the agent to restrict the
network to a certain app (useful for wifi peer to peer API & wifi aware).

Bug: 144102365
Test: Verified that wifi network request related CTS verifier tests
pass.
Test: Device boots up and connects to wifi networks
Change-Id: I207c446108afdac7ee2c25e6bbcbc37c4e3f6529
Merged-In: I207c446108afdac7ee2c25e6bbcbc37c4e3f6529
2020-02-12 04:42:58 +00:00
Roshan Pius
0625fde194 Merge changes from topic "network_specifier_uid_packageName"
* changes:
  Wifi/WifiAware NetworkSpecifier: Stop storing uid/packageName
  NetworkRequest: Embed requestor uid & packageName
2020-02-06 19:08:51 +00:00
Automerger Merge Worker
bd604eb9ff Merge "Use waitForIdle() to wait for Threaded processing." am: cd768aecd8 am: 04dab910d6 am: 8262f117a9
Change-Id: I0d7cbe58f55e25e552f6ae17ffd19cb79f86fe45
2020-02-06 16:38:11 +00:00
Roshan Pius
e38acab53e NetworkRequest: Embed requestor uid & packageName
Add the requestorUid & requestorPackageName fields to
NetworkCapabilities. This is populated by CS when
a new network request is received.
These 2 requestor fields are also optionally used for network
matching. All of the regular app initiated requests will have the
requestor uid and package name set by connectivity service. Network
agents can optionally set the requestorUid and requestorPackageName
to restrict the network created only to the app that requested the network.

This will help removing the necessity for the various specifiers to embed
the uid & package name info in the specifier for network matching.

Note: NetworkSpecifier.assertValidFromUid() is deprecated & removed in
favor of setting the uid/package name on the agent to restrict the
network to a certain app (useful for wifi peer to peer API & wifi aware).

Bug: 144102365
Test: Verified that wifi network request related CTS verifier tests
pass.
Test: Device boots up and connects to wifi networks
Change-Id: I207c446108afdac7ee2c25e6bbcbc37c4e3f6529
2020-02-06 07:36:29 -08:00
Cody Kesting
e330fcd070 Use waitForIdle() to wait for Threaded processing.
Unit testing for ConnectivityDiagnostics API in ConnectivityServiceTest
is updated to use HandlerUtilsKt#waitForIdle. In the general case, this
takes the same time to run as verify-with-timeout (used previously).
However, test failures due to messages not being enqueued on the handler
(backed by the ConnectivityService Thread) won't incur the timeout
delay, as the thread will be idle sooner. This shortens the delay in the
event of a programming error.

Bug: 143187964
Test: atest FrameworksNetTests
Change-Id: Iae66309501bb83449ca735dfa5e972a9852cbcd0
2020-02-05 15:05:29 -08:00
Cody Kesting
f3626446e7 Fire ConnectivityDiagnostics callbacks on Connectivity reported.
When ConnectivityService#reportNetworkTested is called, the platform
needs to fire ConnectivityDiagnostics callbacks for registered callbacks
that are permissioned for the network being reported on. This adds a new
event to ConnectivityDiagnosticsHandler for invoking these callbacks.

Bug: 143187964
Test: compiles
Test: atest CtsNetTestCases ConnectivityServiceTest
Change-Id: Icc6bcf7a2411133d8ecd7477bc351dad9333f24f
Merged-In: Icc6bcf7a2411133d8ecd7477bc351dad9333f24f
2020-02-05 15:05:29 -08:00
Cody Kesting
7d4c82788a Implement INetworkMonitorCallbacks#notifyDataStallSuspected.
INetworkMonitorCallbacks defines notifyDataStallSuspected() for
notifying ConnectivityService of networks encountering a potential data
stall. A new event is introduced for ConnectivityDiagnosticsHandler to
process the notification and invoke the relevant
ConnectivityDiagnosticsCallbacks.

Bug: 143187964
Test: compiles
Test: atest CtsNetTestCases FrameworksNetTests
Change-Id: I70320bdda9855dced31e08e6a0b25329fb5cb535
Merged-In: I70320bdda9855dced31e08e6a0b25329fb5cb535
2020-02-05 15:05:28 -08:00
Cody Kesting
113ea83450 Merge "Implement INetworkMonitorCallbacks#notifyNetworkTestedWithExtras." 2020-02-05 19:55:05 +00:00
Cody Kesting
d198ed0a80 Implement INetworkMonitorCallbacks#notifyNetworkTestedWithExtras.
INetworkMonitorCallbacks defines notifyNetworkTestedWithExtras() for
notifying ConnectivityService of networks being tested along with a
PersistableBundle of extras. A new event is introduced for
NetworkStateTrackerHandler to notify the ConnectivityDiagnosticsHandler
before continuing with the normal processing for "network tested"
notifications. The event is also used in the
ConnectivityDiagnosticsHandler.

Bug: 143187964
Bug: 147391402
Test: compiles.
Test: atest CtsNetTestCases FrameworksNetTests
Change-Id: Iab29da790c0f5faae68227770bc3a84bbc94f124
Merged-In: Iab29da790c0f5faae68227770bc3a84bbc94f124
2020-02-05 18:48:12 +00:00
Cody Kesting
1e5ab9bb5b Fire ConnectivityDiagnostics callbacks on Connectivity reported.
When ConnectivityService#reportNetworkTested is called, the platform
needs to fire ConnectivityDiagnostics callbacks for registered callbacks
that are permissioned for the network being reported on. This adds a new
event to ConnectivityDiagnosticsHandler for invoking these callbacks.

Bug: 143187964
Test: compiles
Test: atest CtsNetTestCases ConnectivityServiceTest
Change-Id: Icc6bcf7a2411133d8ecd7477bc351dad9333f24f
(cherry picked from commit 3d57b0f4ff5b56780c79df6062dfaf2b9fa5ae3c)
2020-02-05 07:10:47 -08:00
Cody Kesting
4f49f140c5 Implement INetworkMonitorCallbacks#notifyDataStallSuspected.
INetworkMonitorCallbacks defines notifyDataStallSuspected() for
notifying ConnectivityService of networks encountering a potential data
stall. A new event is introduced for ConnectivityDiagnosticsHandler to
process the notification and invoke the relevant
ConnectivityDiagnosticsCallbacks.

Bug: 143187964
Test: compiles
Test: atest CtsNetTestCases FrameworksNetTests
Change-Id: I70320bdda9855dced31e08e6a0b25329fb5cb535
(cherry picked from commit 6c51dc9de39d7963a6bc6d03eacadf2ba2131e20)
2020-02-05 07:10:47 -08:00
Cody Kesting
bb83c298e0 Merge "Implement INetworkMonitorCallbacks#notifyNetworkTestedWithExtras." 2020-02-05 15:01:55 +00:00
Automerger Merge Worker
ef4dc78c46 Merge changes Ic1a5d032,I271e7f4d,I7af37281 am: bd34fd3c83 am: 22785b5231 am: 0eb6025602
Change-Id: Ic56ae1463dc4229e01f60d2c9afcbb7f6337a97d
2020-02-05 01:14:50 +00:00
Cody Kesting
a75e26be99 Implement INetworkMonitorCallbacks#notifyNetworkTestedWithExtras.
INetworkMonitorCallbacks defines notifyNetworkTestedWithExtras() for
notifying ConnectivityService of networks being tested along with a
PersistableBundle of extras. A new event is introduced for
NetworkStateTrackerHandler to notify the ConnectivityDiagnosticsHandler
before continuing with the normal processing for "network tested"
notifications. The event is also used in the
ConnectivityDiagnosticsHandler.

Bug: 143187964
Bug: 147391402
Test: compiles.
Test: atest CtsNetTestCases FrameworksNetTests
Change-Id: Iab29da790c0f5faae68227770bc3a84bbc94f124
(cherry picked from commit c5326407d592490783259a48a8ca653c4ff13122)
2020-02-04 13:55:08 -08:00
Automerger Merge Worker
64fdcebb5f Merge changes Icb062ffb,I66c4e8f5,I85247411,Id47c19b7,Ib713c4ae, ... am: 0b32981970 am: 5f603929da am: 699cea6988
Change-Id: I213d2cdca4187ed30293dc433cfee9e8af782b6e
2020-02-04 13:48:46 +00:00
Chalard Jean
143124ba0d [NS A36] Add a test for lost trusted capability
This bug will be drive-by fixed by the next refactoring, so
set up a test to see the difference.

Bug: 113554781
Test: this
Change-Id: Icb062ffbae904d1836a4a16fc5395687c3eda7b6
2020-02-04 16:49:54 +09:00
Chalard Jean
25be037bf7 [NS A37] Don't reassign requests multiple times
This is an optimization that skips doing intermediate assignments
of networks to requests that will undergo multiple changes during
the recomputation.
It happens to fix a bug where some of these intermediate states
used to have a visible, transient side effect.

Bug: 113554781
Test: ConnectivityServiceTest
Change-Id: I7af3728152a1cf7571de67f394088a5970ee3c1e
2020-02-04 16:49:54 +09:00