Commit Graph

11485 Commits

Author SHA1 Message Date
Hai Shalom
492febbfa2 Support for Venue URL and friendly name from Network agent
Extend CaptivePortalData with a member to hold the venue friendly
name. If CaptivePortalData is initialized by both the network
agent and Capport, merge the two objects to include the venue
friendly name and prioritize the venue URL from the network
agent.

Bug: 162783305
Test: atest ConnectivityServiceTest
Test: atest CtsNetTestCasesLatestSdk:CaptivePortalDataTest
Test: End-to-end test
Change-Id: I4fdf356be42237c5b6c0ae5bacfd3cec4726861b
2021-01-11 18:45:34 -08:00
Chalard Jean
e294449129 Merge "Move module utils to the module package." 2020-12-21 05:35:09 +00:00
Chiachang Wang
5cb10d24d0 Merge "[IT03] Add replacement methods for network activity" 2020-12-21 03:50:05 +00:00
Chiachang Wang
b4bba7179b [IT03] Add replacement methods for network activity
Reference for NMS in ConnectivityManager should be removed for
incoming CS mainline. The API for listening network activity
should not go into NMS. As an alternative, the registry requests
should be sent to CS and handled by CS. Add necessary alternative
in IConnectivityManger first. The detail implementation will be
added in the follow up commits.

Bug: 170598012
Test: m
Change-Id: If4d24b937feb88a61f22073af2f671cf20298364
2020-12-21 03:48:54 +00:00
Lucas Lin
0ac2ae14b3 Merge "Use [clear|restore]CallingIdentity instead of withCleanCallingIdentity" 2020-12-21 03:09:20 +00:00
James Mattis
ebe2e05464 Merge changes I177ec607,I68f364b4,Ib3b9f52c,If040d61e
* changes:
  nits removing extra space, change method name, etc
  maybeLogBlockedStatusChanged multilayer requests
  Update getSignalStrengthThresholds for multilayer
  Update to unneeded for multilayered requests
2020-12-20 18:31:36 +00:00
Sarah Chin
9d7a954112 Merge "Move phone ID to extra for action provision" 2020-12-17 06:06:41 +00:00
lucaslin
86086774a9 Use [clear|restore]CallingIdentity instead of withCleanCallingIdentity
ConnectivityService is going to be a part of mainline module, to
prevent using @hide method - withCleanCallingIdentity(), use
clearCallingIdentity() & restoreCallingIdentity() instead.

Bug: 170598012
Test: FrameworksNetTests & CtsNetTestCasesLatestSdk
      & TetheringIntegrationTests
Change-Id: I20f45af4a4044844a171b09269981451a9d7cdb4
2020-12-17 01:28:39 +00:00
Chalard Jean
fa159c1755 Move module utils to the module package.
Test: FrameworksWifiTest FrameworksNetTest
Change-Id: If5d1e4a58fb2d6d9544e6d01995dabe445cf1f25
Merged-In: I067eeecd458c34b7f2fbfa439072682661ac750c
2020-12-16 11:44:22 +09:00
Sarah Chin
cf44f2fe10 Move phone ID to extra for action provision
Previously, the phone ID was appended to the broadcast in DCT and sent
to ConnectivityManager. Instead of sending both as an action, send the
phone ID as an extra instead to make the action a protected broadcast.

Test: manually verify a SecurityException when action provision is sent
Test: atest DcTrackerTest
Bug: 172459128
Change-Id: Ic4129def86949d7191d15056852718dadbd72fba
Merged-In: Ic4129def86949d7191d15056852718dadbd72fba
2020-12-15 10:55:22 -08:00
Lorenzo Colitti
eb862ae1d7 Allow ConnectivityServiceTest to change the calling UID.
Allow ConnectivityServiceTest to change the UID by replacing
static calls to Binder.getCallingUid() with a method that can
be mocked.

Add registerNetworkCallbackAsUid as an initial way to exercise
this, and add some test coverage to the always-on lockdown test
to confirm that things are working as expected.

Bug: 173331190
Test: new unit tests
Change-Id: Ie0b32460e20e5906a0f479191e11a062f21cc608
2020-12-15 21:10:36 +09:00
Lorenzo Colitti
6fb90abce1 Add a test for getDefaultNetworkCapabilitiesForUser.
Bug: 173331190
Test: test-only change
Test: new test passes 100 times in a row
Change-Id: I210284578e38cd25b8b95235d3390d5bd66a5a70
2020-12-15 21:08:21 +09:00
Lorenzo Colitti
bb6b62a41e Add tests for always-on VPN lockdown mode.
This requires mocking lots of new things that weren't mocked
before but is otherwise fairly straightforward.

A few changes to MockVpn are needed as well:

1. Set the VPN's NetworkInfo to CONNECTED, so methods such as
   isBlockingUid will work. While I'm at it, set the interface on
   the LinkProperties as well to make things a bit more
   realistic.

2. Constructs the VpnConfig when registering the agent, not when
   the MockVpn is created. This is needed because starting and
   stopping lockdown VPN calls prepare, which nulls out mConfig.
   But constructing the VpnConfig when registering the agent is
   more realistic anyway. The production code does that in
   establish, but we can't do that in ConnectivityServiceTest
   because some of the test cases don't call establish and call
   registerAgent directly.

Bug: 173331190
Test: atest FrameworksNetTests
Change-Id: I827543751dbf5e626a24ec02cd6f50b423f5f761
2020-12-15 21:08:20 +09:00
Remi NGUYEN VAN
3a86e4690e Merge changes from topic "tcp_keepalive_fix"
* changes:
  Use API TcpKeepalivePacketData in ClientModeImpl
  Add TcpKeepalivePacketData to SystemApi
2020-12-15 09:02:55 +00:00
Chiachang Wang
6443bf4c41 Merge "Remove hidden deprecated getActiveNetworkQuotaInfo" 2020-12-15 07:02:54 +00:00
Chiachang Wang
7fe67c1961 Remove hidden deprecated getActiveNetworkQuotaInfo
getActiveNetworkQuotaInfo has never been in API surface since it
was introduced. It became essentially functionless since android O,
so there should be no usage dependency upon the hidden method,
In order to support ConnectivityService mainline, remove the
useless function to prevent necessary dependency.

Bug: 172183305
Test: atest FrameworksNetTests
Change-Id: Ia685b3260256d465ef614b2f577d13344074c787
2020-12-15 06:45:50 +00:00
Treehugger Robot
3efe49a31f Merge "Add OWNERS for packages/Connectivity" 2020-12-14 14:12:36 +00:00
Remi NGUYEN VAN
993306ed6b Use API TcpKeepalivePacketData in ClientModeImpl
Instead of statically linking against and jarjaring
TcpKeepalivePacketData, use the new android.net.TcpKeepalivePacketData
API for S. On R, build the KeepalivePacketDataParcelable from the base
KeepalivePacketData class.

The current ClientModeImpl code that uses a statically linked
TcpKeepalivePacketData is actually broken, as since R the system_server
has been sending a @hide android.net.TcpKeepalivePacketData, and
ClientModeImpl was testing it against com.android.wifi.x.android.net.*.
To fix this on R, this change rebuilds a
TcpKeepalivePacketDataParcelable class from the packet data included in
the base KeepalivePacketData class.

Bug: 172789687
Test: atest ConnectivityManagerTest#testCreateTcpKeepalive
      See associated test change
Change-Id: Ia32b4444dbf90306b2cfd37ec13d4ba4e90cd1e8
2020-12-14 18:43:53 +09:00
Remi NGUYEN VAN
11511b31f6 Add TcpKeepalivePacketData to SystemApi
This is consistent with NattKeepalivePacketData, which is also a
subclass of KeepalivePacketData.

TcpKeepalivePacketData is already used by the wifi module, but
statically linked.

Bug: 172789687
Test: m
Change-Id: I6aee1ae205987521bea4a3838bbece279ffa0e37
2020-12-14 18:43:44 +09:00
Remi NGUYEN VAN
afebd5c3fe Add OWNERS for packages/Connectivity
In preparation of future modularization of connectivity classes, a large
part of frameworks/base/services/net is planned to be moved to
packages/modules/Connectivity. However moving each class "manually"
to that git project would lose their commit history, and require many
cross-repository topics.

To facilitate the work, create frameworks/base/packages/Connectivity,
which will be used to move the classes at first, before they can all be
moved together with their history to packages/modules/Connectivity. This
mirrors the procedure used for NetworkStack, Tethering,
CaptivePortalLogin, etc. previously.

The added OWNERS file just imports owners from the previous file
location.

Bug: 171540887
Test: m
Change-Id: Ic1c0dbbe8c1f07582c04757ced0ead2fc5b10ca7
2020-12-14 18:34:39 +09:00
Lorenzo Colitti
ca830d9239 Merge "Generalize support for underlying networks." 2020-12-14 05:19:49 +00:00
Treehugger Robot
26d146ff7f Merge "Fix a crash in eng builds" 2020-12-14 05:17:15 +00:00
Chiachang Wang
c5be33af21 Merge "Resolve UidRange dependency between NMS and CS module" 2020-12-14 02:55:41 +00:00
Chalard Jean
8fb84150bf Fix a crash in eng builds
CAPTIVE_PORTAL is a CS-managed capability, and causes CS to log a wtf.
When this test is run on an eng build, this sends SIGSEGV to the test,
which is pretty difficult to debug.

Test: FrameworksNetTests NetworkStackTests
Change-Id: I72fc46a6daa4e886425b4dc967318cca9f1a5302
2020-12-13 23:02:08 +09:00
Lorenzo Colitti
01d3763c5e Generalize support for underlying networks.
Currently, ConnectivityService assumes that only VPNs can have
underlying networks. Make the code decide this based only on the
return value of NetworkAgentInfo#supportsUnderlyingNetworks.
This allows non-VPN network types to support underlying networks
in the future.

This requires storing the original agent's capabilities in
NetworkAgentInfo so that applyUnderlyingCapabilities can mix in
the underlying network capabilities without overwriting the
capabilities of the network itself. Currently, the only
information that applyUnderlyingCapabilities takes from the
original agent's capabilities are the metered bit (stored in
NetworkAgentInfo#declaredMetered) and the transports (assumed to
be exactly {TRANSPORT_VPN}. Store the full capabilities instead.
This is more state than needed but it ensures that we do not need
to make any changes if in the future we want to propagate new
types of information from the underlying networks.

This should have no impact on current use cases (i.e., VPNs).

There is a change in ordering: in disconnectAndDestroyNetwork,
the new code propagates underlying network capabilities before
removing the network from LegacyTypeTracker, instead of after.

This is done to simplify the new code. When the new code
propagates underlying network capabilities in response to a
change for a particular network (e.g., connect, disconnect,
capabilities change), it only considers networks that have the
changed network as underlying. Because determining the
underlying networks requires knowing the default network,
the new code runs before the default network is changed and
LegacyTypeTracker is updated.

This shouldn't have app implications because the connectivity
broadcasts sent by LegacyTypeTracker and the callbacks cannot be
ordered, since they run on separate threads with unpredictable
delays. The capability change callbacks resulting from
propagation of underlying network capabilities were already
sent before the rematch, so the callbacks themselves are not
reordered in any way.

Bug: 173331190
Test: atest FrameworksNetTests \
            CtsNetTestCases:NetworkAgentTest \
	    CtsNetTestCases:Ikev2VpnTest \
	    CtsNetTestCases:VpnServiceTest \
	    CtsNetTestCases:android.net.cts.ConnectivityDiagnosticsManagerTest \
	    HostsideVpnTests com.android.server.connectivity.VpnTest
Change-Id: Ic5353a928a3a3541dcf953c35f47277c5e295db8
2020-12-13 00:10:56 +09:00
Paul Hu
dddbd4f495 Merge "Replace PackageManager @hide APIs" 2020-12-11 09:50:28 +00:00
Paul Hu
ec942a8e70 Merge "Expose TcpRepairWindow as module-lib API" 2020-12-11 05:37:10 +00:00
Chalard Jean
71ab824707 Merge changes from topic "remove_legacy_NA"
* changes:
  Remove support for legacy network agents
  Remove deprecated constructors for NetworkAgent
  Migrate NetworkAgentWrapper to the new NA API
  Cleanup TestNetworkService
2020-12-11 02:32:57 +00:00
Lucas Lin
df93f1c06c Merge "Use getUserHandles() instead of getUsers() to get user id" 2020-12-11 02:02:37 +00:00
James Mattis
c449dde8b4 nits removing extra space, change method name, etc
Minor cleanup as per nit comments on approved CLs in the relation chain.

Namely:
- removing an extranous space
- changing requestsSortedById() to be package private
- changing releaseNetworkRequest() name to releaseNetworkRequests()
- adding final in a couple spots
- added some test requests in testDumpDoesNotCrash()

Bug: 173145245
Bug: 173292541
Bug: 173146509
Bug: 171991028
Test: atest FrameworksNetTests
Change-Id: I177ec6072a44acd247022b65b56e90cc231094b9
2020-12-10 10:01:52 -08:00
James Mattis
ba0ad1be31 maybeLogBlockedStatusChanged multilayer requests
Updating maybeLogBlockedStatusChanged logging so that it outputs the
currently active request's information as part of the multilayared
requests updates.

Bug: 173145245
Bug: 171991028
Test: atest FrameworksNetTests
Change-Id: I68f364b457e0e5ac8f47df4a4356e4bc25360bca
2020-12-10 10:01:47 -08:00
James Mattis
9301a9ae2d Update getSignalStrengthThresholds for multilayer
Update ConnectivityService.getSignalStrengthThresholds so that
thresholds are created for multilayer requests.

Bug: 173650494
Bug: 171991028
Test: atest FrameworksNetTests
atest FrameworksNetIntegrationTests
atest CtsNetTestCasesLatestSdk

Change-Id: Ib3b9f52cf371efd1c7d9b176565c7ea8c46375f1
2020-12-10 10:00:02 -08:00
James Mattis
e4e72bb324 Update to unneeded for multilayered requests
Update to ConnectivityService.unneeded in order to support multilayered
requests.

Bug: 173432311
Bug: 171991028
Test: atest FrameworksNetTests
atest FrameworksNetIntegrationTests
atest CtsNetTestCasesLatestSdk

Change-Id: If040d61e33d86a9f9bbc7d50ead596d210a4f82c
2020-12-10 10:00:02 -08:00
Treehugger Robot
e5046ca23b Merge "Add a mutability flag to the PendingIntent" 2020-12-10 16:27:58 +00:00
Paul Hu
6e253df579 Merge "Address leftover comments" 2020-12-10 15:47:27 +00:00
paulhu
667972157f Replace PackageManager @hide APIs
ConnectivityService is using
PackageManager#getApplicationInfoAsUser() to get application
info but this API is not able to call after CS becomes a
mainline module. Thus, replace it with formal API.

Bug: 170593746
Test: atest FrameworksNetTests
Test: atest CtsNetTestCasesLegacyApi22
Change-Id: Idd1269aa50e234801583097bb6f40b099bab8fba
2020-12-10 23:32:32 +08:00
Chiachang Wang
1f50ae5c28 Resolve UidRange dependency between NMS and CS module
ConnectivityService is going to become a mainline module which
cannot access hidden APIs. Thus, replace the VPN uid range
controlling APIs from NMS to INetd directly.

Bug: 170598012
Test: atest FrameworksNetTests
Test: atest HostsideVpnTests
Test: manually test to connect to VPN and check the uid range
Change-Id: Ie6656ef36f54c2f14d5a2899e763a29b70a30f5d
2020-12-10 22:24:47 +08:00
paulhu
58333ae5bf Add a mutability flag to the PendingIntent
From S, it's required to specify explicitly either FLAG_MUTABLE
or FLAG_IMMUTABLE when creating a PendingIntent. Thus, add a
mutability flag to the PendingIntent in ConnectivityServiceTest
that doesn't specify it before.

Bug: 173157160
Test: atest FrameworksNetTests
Change-Id: I755c53b90d709dfbac576dc076722476c3edee35
2020-12-10 12:28:14 +00:00
Lucas Lin
984653607c Merge "Reimplement DumpUtils#checkDumpPermission() in ConnectivityService" 2020-12-10 10:57:58 +00:00
Treehugger Robot
cd20ac9243 Merge "[Mainline] Network netId to getNetId() migration" 2020-12-10 08:47:27 +00:00
Lorenzo Colitti
0da448710c Merge changes I6eb6d92b,I638e29fd,I2348b7a3
* changes:
  Add a convenience method to update a network's capabilities.
  Disallow NetworkAgents from changing the owner UID.
  Observe mOwnerUID in NetworkCapabilities#equals.
2020-12-10 08:11:52 +00:00
lucaslin
9d4b864916 Reimplement DumpUtils#checkDumpPermission() in ConnectivityService
ConnectivityService is going to be a part of mainline module, to
prevent using @hide method in ConnectivityService, reimplement
DumpUtils#checkDumpPermission() in ConnectivityService.

Bug: 175177794
Test: atest FrameworksNetTests
Test: adb shell dumpsys connectivity
Change-Id: I1e4bc023b39b40a717a3a0fd8cd60aa2f25e9bdb
2020-12-10 07:12:05 +00:00
lucaslin
907cb16762 Use getUserHandles() instead of getUsers() to get user id
UserManager#getUsers() is a hidden API, use getUserHandles() to
get user id instead in PermissionMonitor.

Bug: 171529940
Test: atest FrameworksNetTests
Change-Id: Ic304627688de8e49505a95ebc99628b2e0eafab9
2020-12-10 13:58:39 +08:00
Xin Li
0ee91db1db Merge "DO NOT MERGE - Merge Android R QPR1" 2020-12-10 02:18:27 +00:00
Xin Li
033b5e8ba3 DO NOT MERGE - Merge Android R QPR1
Bug: 172690556
Merged-In: Ib81ba3288a986546bc570c3759c55d026add591a
Change-Id: I2acfeb6cfc83a80056a685355cc367a5514da069
2020-12-09 17:55:44 -08:00
Serik Beketayev
59f81edbdb Merge "[Mainline Migration] Migrate NetworkUtils" am: 8339b3ded3
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1498168

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Icc0a49e76f87a741f4410b53e9a40012e37fde36
2020-12-10 00:08:03 +00:00
Serik Beketayev
8339b3ded3 Merge "[Mainline Migration] Migrate NetworkUtils" 2020-12-09 23:47:05 +00:00
Lorenzo Colitti
00e0f5af3e Add a convenience method to update a network's capabilities.
Almost all calls to ConnectivityService#updateCapabilities use
all the current data in the network, and thus call the method
like this:

    updateCapabilities(nai.getCurrentScore(), nai, nai.networkCapabilities);

Introduce a convenience method to simplify this frequent use case.

Bug: 173331190
Test: passes existing ConnectivityService tests
Change-Id: I6eb6d92bd159f2575d10a929bd59f6dd1b7a4b4e
2020-12-10 00:41:06 +09:00
Lorenzo Colitti
39b4c5b2da Disallow NetworkAgents from changing the owner UID.
The current behaviour with regards to changing the owner UID is
bizarre and arguably incorrect. A NetworkAgent can change the
owner to whatever other app it wants, regardless of signatures,
at any time. This includes, for example, transferring ownership
to another UID and then recovering it.

Fortunately no existing NetworkAgent appears to do this:
- ClientModeImpl sets it to the UID of the app that created the
  configuration. It doesn't look like it can change while the
  network is connected.
- Vpn sets it to the UID of the VPN owner. That also can't change.
- Telephony does not appear to set it at all, it only sets the
  administrator UIDs (and updates them whenever it gets
  EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED).

Disallow this now before code is written that depends on it.

Bug: 175188445
Test: modified tests in ConnectivityServiceTest
Change-Id: I638e29fda2481ec3bf4fff562ea66a73322881df
2020-12-09 19:47:17 +09:00
Lorenzo Colitti
cb9bbf2c80 Observe mOwnerUID in NetworkCapabilities#equals.
Currently, NetworkCapabilities's equals and hashCode methods
ignore mOwnerUID. This is confusing because it is inconsistent
with pretty much every other member of this class.

Bug: 175188445
Test: atest CtsNetTestCases:NetworkAgentTest \
            CtsNetTestCases:Ikev2VpnTest \
	    CtsNetTestCases:VpnServiceTest HostsideVpnTests \
	    CtsNetTestCases:android.net.cts.ConnectivityDiagnosticsManagerTest \
	    ConnectivityServiceTest com.android.server.connectivity.VpnTest
Change-Id: I2348b7a35f32a931687f2d3c2fa57620a12fe06f
2020-12-09 19:33:32 +09:00