Commit Graph

1375 Commits

Author SHA1 Message Date
Benedict Wong
64e8db802c Implement Ikev2VpnRunner
This change adds the implementation for IKEv2/IPsec VPNs.

Bug: 144246767
Test: Manually tested
Change-Id: I5ccec756cec49ccf57ccc4d5ad800eeb5d595a76
2020-02-13 00:33:44 -08:00
Automerger Merge Worker
fcc48dea8f Merge changes from topic "NS-A44_lingerstate" am: ea8483c0f5 am: 8f13cef9e5 am: 840b3d73ae
Change-Id: Ic9ea1c879cfcf145f569a388b52c6b7de0e8bb87
2020-02-12 16:00:34 +00:00
Chalard Jean
7a5e51f4dc [NS B09] Create NetworkRanker
Bug: 113554781
Test: FrameworksNetTests
Change-Id: Ia534247144f479fe896e1a6e05b906103cd10005
2020-02-12 20:57:45 +09: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
Chalard Jean
bd34fd3c83 Merge changes Ic1a5d032,I271e7f4d,I7af37281
* changes:
  [NS A39] Simplification
  [NS A38] Fill the initial reassignment
  [NS A37] Don't reassign requests multiple times
2020-02-05 00:53:28 +00:00
Benedict Wong
ede31cad1c Merge "Add separate user consent for Platform VPNs" 2020-02-04 23:56:16 +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
Benedict Wong
526e7dd0b6 Add separate user consent for Platform VPNs
This change adds a new VPN user consent flow (using the same text) for
granting the lesser OP_ACTIVATE_PLATFORM_VPN. A new
PlatformVpnConfirmDialog is created as a subclass to preserve all logic,
but ensure the right appop is granted for the relevant dialog.

Intent extras were considered, but are inherently unsafe, since the
caller may add any extras that they would want.

Bug: 144246835
Test: FrameworksNetTests passing
Change-Id: Ia6f36207d43c3748f938430c2780dcf29e5623f3
Merged-In: Ia6f36207d43c3748f938430c2780dcf29e5623f3
2020-02-04 21:05:36 +00:00
Benedict Wong
70ee4c46a6 Merge "Add separate user consent for Platform VPNs" 2020-02-04 21:04:01 +00: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
Benedict Wong
418017e5f9 Add separate user consent for Platform VPNs
This change adds a new VPN user consent flow (using the same text) for
granting the lesser OP_ACTIVATE_PLATFORM_VPN. A new
PlatformVpnConfirmDialog is created as a subclass to preserve all logic,
but ensure the right appop is granted for the relevant dialog.

Intent extras were considered, but are inherently unsafe, since the
caller may add any extras that they would want.

Bug: 144246835
Test: FrameworksNetTests passing
Change-Id: Ia6f36207d43c3748f938430c2780dcf29e5623f3
2020-02-03 19:05:23 -08:00
Automerger Merge Worker
f0987bd909 Merge changes I446a8595,I68d2293f am: 29044acc20 am: d7ab8fec8c am: a854c8e1de
Change-Id: I99a531ab5ed8645d3eb3d15a3cd4ed6ef30c89ab
2020-02-03 22:53:15 +00:00
Benedict Wong
29044acc20 Merge changes I446a8595,I68d2293f
* changes:
  Add VpnManager calls to ConnectivityService
  Add basic logic for profile-based VPNs
2020-02-03 22:31:37 +00:00
Automerger Merge Worker
2e1e43ca95 Merge "Add callback registration in ConnectivityService." am: e534c45250 am: 52309b9871 am: dcc5a26aa0
Change-Id: I596d4788f6d35f1adf110d8edd390f5632b4dc06
2020-02-03 15:18:18 +00:00
Cody Kesting
63e4e00371 Add callback registration in ConnectivityService.
ConnectivityDiagnosticsManager will send callbacks to
ConnectivityService for registering and unregistering them with the
system. ConnectivityService needs to do the processing for persisting
(and deleting) these callbacks on the ConnectivityService Thread, so
messages are sent to the Connectivity Diagnostics  Handler, which runs
on the ConnectivityService Thread.

Bug: 146444622
Bug: 143187964
Bug: 147848028
Test: compiles
Test: atest FrameworksNetTests
Change-Id: Ia5c8f90a60c050504e8676de9564a7607a9b03bc
2020-01-31 09:42:05 -08:00
Chalard Jean
8be2c491cc Merge "Add public fields to NetworkScore and make it @SystemApi" 2020-01-31 03:06:16 +00:00
Benedict Wong
b4b925fc18 Add basic logic for profile-based VPNs
This change adds stubs for the Platform built-in VPNs, along with
implementing some basic permissions checks.

Bug: 144246837
Test: FrameworksNetTests passing, new tests added
Change-Id: I68d2293fc1468544f0d9f64d02ea7e1c80c8d18c
2020-01-30 18:41:12 -08:00
Chalard Jean
a27e1eef14 Add public fields to NetworkScore and make it @SystemApi
Bug: 113554781
Bug: 146583853
Test: FrameworksNetTests
Change-Id: I19d965c0146196cb67b3417eb1790ccd90ce3233
2020-01-30 18:45:52 +09:00
Automerger Merge Worker
6e400d8819 Merge "Add API for apps to check if they are the network owner" am: e021269f8d am: 23f27778e3 am: 532b34a3c8
Change-Id: Ibe4cc2bd1d588dcbccd83f53ee3da9d067ae85b6
2020-01-24 18:47:28 +00:00
Qingxi Li
7cf06627df Add API for apps to check if they are the network owner
This CL extends NetworkCapabilities#mEstablishingVpnAppUid
to the network owner app UID and introduces a new public API
to get this owner app's UID.

Bug: 142072839
Test: atest FrameworksNetTests
Change-Id: Id83cdea62b89b586aff74e51e3fee60e53d37d4c
2020-01-24 17:28:23 +00:00
Automerger Merge Worker
54b1d34fc0 Merge changes from topic "add-ikev2-vpn-types" am: adb79e3b39 am: 1ebbd0bb6b am: bb3d6e2e9c
Change-Id: I4ff406efcaada5a9306afc79290cb37bdeef71f2
2020-01-24 07:59:53 +00:00
Benedict Wong
50b147d827 Add additional fields to VpnProfile for profile-based IKEv2/IPsec VPNs
This commit adds the fields required to support IKEv2/IPsec VPNs. Other
fields will be reused where possible.

Bug: 143221465
Test: Compiles, new tests written for parcel/unparcel, encode/decode
Change-Id: I4c0e8fb934e75548424a15bbfb35c2ea9a3a57bc
2020-01-22 19:23:00 -08:00
Automerger Merge Worker
44d70123be Merge "Add API for CaptivePortalData" am: 144519f45d am: f3011f77d1 am: 36337e9ae1
Change-Id: I951f2eb2a0e2550f65ac87a84b76ea68c2449423
2020-01-22 16:27:53 +00:00
Remi NGUYEN VAN
144519f45d Merge "Add API for CaptivePortalData" 2020-01-22 15:55:17 +00:00
Remi NGUYEN VAN
ead1ef41ee Add API for CaptivePortalData
CaptivePortalData will be used to hold data advertised by the network
following RFC7710bis.

To fetch the CaptivePortalData, the API URL is added to LinkProperties,
to be provided by the NetworkAgent.

Because CaptivePortalData can be used to guess user location (especially
from the URLs provided by the portal), it is only exposed to
applications that have privileged permissions.

Test: atest FrameworksNetTests
Bug: 139269711
Change-Id: I341175b5fece8ee00e19898af5e8eabe66cefbf3
2020-01-22 22:27:44 +09:00
Lorenzo Colitti
d5ad4726c5 Add a Builder to NetworkAgentConfig, and make it SystemApi.
Currently, only support the three elements in the config that are
known to be used.

Bug: 138306002
Test: builds, boots
Test: atest FrameworksTelephonyTests
Change-Id: I1d231ec2ddcff97c039bcbc815a39c1d3e26c410
Merged-In: I1d231ec2ddcff97c039bcbc815a39c1d3e26c410
2020-01-21 13:12:15 +00:00
Lorenzo Colitti
2dda9e0627 Rename NetworkMisc to NetworkAgentConfig.
NetworkMisc is not really an appropriate name for a system API.

Bug: 138306002
Test: builds, boots, wifi works, telephony works
Test: atest FrameworksNetTests FrameworksWifiTests FrameworksTelephonyTests
Change-Id: I621cfbe165996c67b201ca2dd2f95a5ab9af10ee
Merged-In: I621cfbe165996c67b201ca2dd2f95a5ab9af10ee
2020-01-21 12:57:27 +00:00
Chalard Jean
fe35bf9f93 Have registerNetworkAgent return a Network.
This is more useful.

Bug: 135998869
Test: FrameworkNetTests FrameworksWifiTests
Change-Id: I74710b396fa3cec6fbae08d3dcab5bc90dc2e669
Merged-In: I74710b396fa3cec6fbae08d3dcab5bc90dc2e669
2020-01-20 16:22:06 +08:00
Chalard Jean
29c6e0cc51 Move NetworkAgent#register to a new method.
Calling IPC in a constructor is unusual and confusing, and can be
considered bad form. There are multiple reasons for this :
• Users can't obtain an instance of the class without calling the
  constructor, but they can't always afford an IPC where they need
  this, forcing them to know about the implementation detail and
  sometimes design around it.
• On a related but generalized note, constructors should usually
  be fast for the same range of reasons.
• Having a separate method to register the agent simply gives more
  flexibility to the app.
• It's also a lot easier to test.
But also we can't fix it without an update to the API, so here it is.

Another reason for doing this is consistency with the NetworkProvider
API.

Bug: 138306002
Bug: 139268426
Test: atest FrameworksNetTests FrameworksWifiTests FrameworksTelephonyTests
Change-Id: I1ee5c7b1353d581e487c8a8a159009bebd781643
2020-01-20 12:54:52 +09:00
Automerger Merge Worker
de38d0529f Merge "Replace StringNetworkSpecifier & subId with TelephonyNetworkSpecifer" am: 7fd95f64df am: 4a76965c68 am: b8a357c250
Change-Id: I9aee20185e189e51d537b6b0895fdc31c31d0ea2
2020-01-15 18:39:33 +00:00
Rambo Wang
818cf71da8 Replace StringNetworkSpecifier & subId with TelephonyNetworkSpecifer
StringNetworkSpecifier is widely used to specify subscription id for
the NetworkRequest. The raw string field introduce ambiguity and leave
large space for bugs. With TelephonyNetworkSpecifer, we are able to
settle down the type and value of the fields (although currently only
one) and introduce validation to detect the bug in the beginning.

Bug: 145993724
Test: atest FrameworksNetTests FrameworksTelephonyTests &
      make offline-sdk-docs
Change-Id: Iefbad9b1deb3de2c0b262d9ce5ae0704a50d08a6
2020-01-14 10:51:11 -08:00
Chalard Jean
f41a9d0051 Merge "Have registerNetworkAgent return a Network." 2020-01-14 07:06:37 +00:00
Lorenzo Colitti
cae0b367e0 Merge "Add a Builder to NetworkAgentConfig, and make it SystemApi." 2020-01-14 05:01:06 +00:00
Chalard Jean
a0e2aa127a Have registerNetworkAgent return a Network.
This is more useful.

Bug: 135998869
Test: FrameworkNetTests FrameworksWifiTests
Change-Id: I74710b396fa3cec6fbae08d3dcab5bc90dc2e669
2020-01-14 13:59:55 +09:00
Lorenzo Colitti
7638966e93 Add a Builder to NetworkAgentConfig, and make it SystemApi.
Currently, only support the three elements in the config that are
known to be used.

Bug: 138306002
Test: builds, boots
Test: atest FrameworksTelephonyTests
Change-Id: I1d231ec2ddcff97c039bcbc815a39c1d3e26c410
2020-01-14 11:43:53 +09:00
Automerger Merge Worker
cd8f271923 [SP04] add unit test for NetworkStatsProvider am: 9ff7b4ed81 am: fbca4dae26 am: 66823dd6aa
Change-Id: Ic48609b113a7174204eaa2207901c8110d76f65f
2020-01-13 14:48:10 +00:00
junyulai
fbca4dae26 [SP04] add unit test for NetworkStatsProvider
am: 9ff7b4ed81

Change-Id: Icd440ff9086604cb0baaa4cb3e8e458dcda3bb97
2020-01-13 06:12:48 -08:00