Commit Graph

43718 Commits

Author SHA1 Message Date
Maciej Żenczykowski
f8943ea3bc link libbase statically into libnetd_updatable - saves ~85 kB
Before (aosp_cf_x86_phone-userdebug):
  $ adbz shell ls -l /apex/com.android.tethering/lib
  -rw-r--r-- 1 system system 251404 1969-12-31 16:00 libbase.so
  -rw-r--r-- 1 system system 713636 1969-12-31 16:00 libc++.so
  -rw-r--r-- 1 system system  64560 1969-12-31 16:00 libcom_android_connectivity_com_android_net_module_util_jni.so
  -rw-r--r-- 1 system system  13596 1969-12-31 16:00 libframework-connectivity-jni.so
  -rw-r--r-- 1 system system  45776 1969-12-31 16:00 libnetd_updatable.so
  -rw-r--r-- 1 system system 948032 1969-12-31 16:00 libservice-connectivity.so

After (aosp_cf_x86_phone-userdebug):
  $ adbz shell ls -l /apex/com.android.tethering/lib
  -rw-r--r-- 1 system system 713636 1969-12-31 16:00 libc++.so
  -rw-r--r-- 1 system system  64560 1969-12-31 16:00 libcom_android_connectivity_com_android_net_module_util_jni.so
  -rw-r--r-- 1 system system  13596 1969-12-31 16:00 libframework-connectivity-jni.so
  -rw-r--r-- 1 system system 212624 1969-12-31 16:00 libnetd_updatable.so
  -rw-r--r-- 1 system system 948032 1969-12-31 16:00 libservice-connectivity.so

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I19c9d73ba3555bbc1987fbdc0be19af1f0511948
2022-01-31 19:56:33 -08:00
Maciej Żenczykowski
76709a18e9 Merge changes Ifd6be50a,I857e40c9,I1b9f4fde,Ib3b43cf2
* changes:
  Prevent native_init from starting TrafficController
  Remove libutils dependency from libservice-connectivity
  Merge libtraffic_controller_jni into libservice-connectivity
  [NETD-TC#15] Make ConnectivityService and PermissionMonitor calls BpfNetMaps on T
2022-02-01 03:02:36 +00:00
Jean Chalard
4fcb8ad292 Merge changes Id5e5b911,I8301abad,I7262811a,I658e579b,I7d43ef0e
* changes:
  Expose access UIDs.
  Send access UIDs to netd
  Add accessUids to NetworkCapabilities.
  Clean up restrictions on network agent capabilities
  Sanitize NetworkCapabilities from agent on the handler thread
2022-02-01 00:45:55 +00:00
Ken Chen
523eaffcdf Merge "[NETD-BPF#19] Mainline part of bpf code from netd" 2022-01-31 22:48:06 +00:00
Patrick Rohr
c2984fdca8 Prevent native_init from starting TrafficController
TrafficController is currently still started by netd, and this should
not happen in two places. Instead, native_init should init (open) the
maps.

Test: atest FrameworksNetTests
Change-Id: Ifd6be50aa5f62e59a5b1c5c0a97550389fd0e7e1
2022-01-31 18:18:21 +01:00
Patrick Rohr
313bc6c2d3 Remove libutils dependency from libservice-connectivity
Remove libutils dependency.

Test: m
Change-Id: I857e40c984bcce2931b5068b3b96d2c9dd69693c
2022-01-31 18:18:21 +01:00
Patrick Rohr
361b859b00 Merge libtraffic_controller_jni into libservice-connectivity
There is not really a point to separate these two as they are all used
in ConnectivityService.
As a future TODO, we might want to rename libservice-connectivity to
libcom_android_server_jni to be more inline with the jarjar'ed jni lib
versions.

Test: atest FrameworksNetTests:ConnectivityServiceTest
Change-Id: I1b9f4fde345038bda6b3ffcf8e3f47cf9262e052
2022-01-31 16:18:51 +01:00
Lorenzo Colitti
d508855bb9 Merge "Fix kernelToTag import in NetworkStatsFactoryTest." 2022-01-31 13:35:30 +00:00
Wayne Ma
2fde98c87b [NETD-TC#15] Make ConnectivityService and PermissionMonitor
calls BpfNetMaps on T

Since TrafficController moves to mainline module for T, so some netd binder
interfaces revelant to BPF are going to deprecated. Provide JNI APIs to
call TrafficController inside mainline module for T.

Bug: 209935649
Test: atest CtsHostsideNetworkTests
Change-Id: Ib3b43cf2840e02806395af9f1e019ca6fccd032e
2022-01-31 09:19:08 +01:00
Chalard Jean
41a602d2b8 Expose access UIDs.
CTS already have basic tests for this since they run the common tests,
which were using these hidden methods already.

Test: CtsNetTestCases
Change-Id: Id5e5b911f5c63bdd3b05e5ac1d3dd89c1c525ab7
2022-01-31 17:04:58 +09:00
Chalard Jean
e6c9527554 Send access UIDs to netd
Test: FrameworkNetTests CtsNetTestCases
Change-Id: I8301abaddf5850071fa23d41e8e736ab7071e299
2022-01-31 17:04:58 +09:00
Chalard Jean
9a30acf744 Add accessUids to NetworkCapabilities.
For now, all entry points reject this. Followup changes
will allow the supported use cases.

Test: new unit tests and CTS for this in this patch
Change-Id: I7262811a2e46336d3bb63c80886fc0578a36da94
2022-01-31 17:04:58 +09:00
Chalard Jean
1522857564 Clean up restrictions on network agent capabilities
This is a no-op change.

Test: FrameworkNetTests

Change-Id: I658e579bf49e1baf57a8aeaabc8d07d7d3293c56
2022-01-31 17:04:56 +09:00
Chalard Jean
366c525b15 Sanitize NetworkCapabilities from agent on the handler thread
NetworkAgents send NetworkCapabilities to ConnectivityService but
there are limits to what exactly they can send. Going forward,
some of these checks will have to happen on the handler thread,
which is already the case when an agent updates its capabilities,
but not upon registration.

This patches moves the sanitization on the handler thread, after
the network monitor is created for a network agent.

Before this patch, upon registration of a new agent, the binder
thread would copy and sanitize the capabilities, then store them
in nai.networkCapabilities. It would store the original caps from
the agent in the NAI, mix in what is known from the network info,
process the LinkProperties, and then proceed to create the
network monitor, but not yet store the NAI in the internal
structures because its registration is not finalized, so other
methods should not see it yet. After the monitor is created in
the network stack process, the NAI is stored in the internal
structures which publishes it for all methods to see. After
that is done, the NAI calls to the network monitor to warn it
that it's registered, what its capabilities are, and that it's
time to start validation if applicable.

With this patch, the validation no longer happens on the binder
thread. Instead, the binder thread stores the capabilities and
link properties as is, before sanitization, in the NAI. This is
fine because no other method can access these until the
registration completes upon notification that the monitor has
been created ; this agent is only stored in the network monitor
callbacks in a self-destructing object precisely to make sure
that's the case.
When the monitor is created and CS receives notification of the
same, it will sanitize the capabilities before adding the NAI
to the internal structures, to protect the invariant that the
un-sanitized capabilities inside the NAI can't ever be seen by
any other method. After that's done, it will call to the
monitor to start validation as usual.

Test: FrameworksNetTests CtsNetTestsCases
Change-Id: I7d43ef0e25955e0349903b4801b9dfd8c3c92586
2022-01-31 17:04:46 +09:00
Sooraj Sasindran
e9cd2084e4 Allow Carrier app to request for CBS capability
Test: unit test and CTS
Bug: 194332512
Change-Id: I29680b56d790106ad082f1a398c2bddb030f834a
2022-01-30 12:12:17 -08:00
Ken Chen
1647f60d66 [NETD-BPF#19] Mainline part of bpf code from netd
1. Add libnetd_updatable.so in com.android.tethering. The library is
loaded by netd. Currently, it mainly targets on a few functions which
access BPF maps. The functionality may extend in the future.

2. Attach gcroup progs from libnetd_updatable.so.

3. Move (privileged)TagSocket and untagSocket implementation to mainline
module. Combine privilegedTagSocket and untagSocket into a single
function.

4. Split related unit tests from netd_unit_test to
libnetd_updatable_unit_test as well.

Bug: 202086915
Test: cd system/netd; atest
Test: atest TrafficStatsTest NetworkUsageStatsTest

Change-Id: Ib556458103a4cbb643c1342d9b689ac692160de0
2022-01-30 09:51:25 +08:00
Lorenzo Colitti
f59770f769 Fix kernelToTag import in NetworkStatsFactoryTest.
NetworkManagementSocketTagger#kernelToTag is moving to
NetworkStatsFactory. Fix the import path in the test.

Test: atest FrameworksNetTest
Change-Id: I8797d9e589e68b4980ff5b38ba09d091420d30fd
2022-01-29 21:35:06 +09:00
Treehugger Robot
c5ad7cd775 Merge "Adjust NetworkStatsServiceTest to mock out the JNI." 2022-01-28 11:51:44 +00:00
Lorenzo Colitti
9fdbb7ec7d Adjust NetworkStatsServiceTest to mock out the JNI.
Test: atest NetworkStatsServiceTest
Change-Id: Icdea9f871199f1e859aef647e5ba3dec7ac02d73
2022-01-28 18:16:39 +09:00
Treehugger Robot
dd5bc74532 Merge "Increase the number of test service names" 2022-01-28 08:08:01 +00:00
Treehugger Robot
2be7b1d5fb Merge "Conditionally disable TetheringApiCurrentLib" 2022-01-28 05:21:22 +00:00
Lorenzo Colitti
2a947ceb50 Merge changes from topic "dscp_policies"
* changes:
  Don't enable DscpPolicyTracker on pre-T devices.
  Allow service JNI in FrameworksNetIntegrationTests.
  Don't manually load the JNI library in DscpPolicyTracker.
  Process DSCP QoS events for policies
  Allow using BpfMap and TcUtils in unit tests.
2022-01-27 23:25:54 +00:00
Treehugger Robot
3755d9048a Merge "[LSC] Add LOCAL_LICENSE_KINDS to packages/modules/Connectivity" 2022-01-27 23:23:33 +00:00
Bob Badour
e7ebed2849 [LSC] Add LOCAL_LICENSE_KINDS to packages/modules/Connectivity
Added SPDX-license-identifier-Apache-2.0 to:
  service/native/Android.bp

Bug: 68860345
Bug: 151177513
Bug: 151953481

Test: m all
Change-Id: Ibfaed81348fca9e5cf313a4d29fd0b72bc746e06
2022-01-27 10:45:30 -08:00
Chalard Jean
47e778e301 Use the T shims in AOSP
Test: m
Change-Id: I10bbe36ba867aa77ea6f32cc3b8fd37d5b15145e
Merged-In: I0c4e29568eadb6ef85ddadebbb37723adb9f29cd
2022-01-27 16:37:51 +00:00
Lorenzo Colitti
debd9eaffa Don't enable DscpPolicyTracker on pre-T devices.
The code cannot work before T because before T the tethering
module can only load BPF programs/maps into /sys/fs/tethering/bpf
and the system server cannot access that directory.

Additionally, this is causing unit tests to fail on pre-T devices
because on those devices the seccomp filter blocks the bpf
syscall from apps (including Java tests).

Test: revert aosp/1907693 and atest FrameworksNetTests:ConnectivityServiceTest
Change-Id: I6c398031dffb840da1d723b11ea4d0845ad6c6f2
2022-01-27 14:16:49 +00:00
Lorenzo Colitti
82ed9e6058 Allow service JNI in FrameworksNetIntegrationTests.
Add libcom_android_connectivity_com_android_net_module_util_jni
to the JNI libraries for FrameworksNetIntegrationTests. This is
needed for service code (e.g., ConnectivityService,
DscpPolicyTracker) to use JNI.

Test: atest FrameworksNetIntegrationTests
Change-Id: Iebe7ef31057c7a3b10bd7bad42ca74a25fe24473
2022-01-27 12:00:36 +00:00
Remi NGUYEN VAN
e9370c5ef4 Merge "Add var to enable/disable tethering next APEX" 2022-01-27 11:41:26 +00:00
Treehugger Robot
ce0df5a6ed Merge "Correct some errno values before throw ServiceSpecificException" 2022-01-27 11:07:42 +00:00
Patrick Rohr
fff2733066 Merge "Load tcutils in ConnectivityService" 2022-01-27 10:31:02 +00:00
Lorenzo Colitti
f84e2f8e0d Don't manually load the JNI library in DscpPolicyTracker.
This is not necessary because TcUtils already loads its library,
and unlike this code, it correctly loads it using JniUtils so
will succeed even when the code is jarjard in unit tests.

Test: atest ConnectivityServiceTest
Change-Id: I57eb46178d58777769f5497a0ea93cd037d598cb
2022-01-27 10:20:01 +00:00
Tyler Wear
723882126a Process DSCP QoS events for policies
New events to handle adding and removing of DSCP QoS policies.
Async indication sends status back to client if the policy
has been added, failed, or if the policy limit has been
reached.

Bug: 202871011
Change-Id: I7988d22ae625ad0dd415927d2943de4a749e6fb8
2022-01-27 10:19:27 +00:00
Lorenzo Colitti
0c26c9ed37 Allow using BpfMap and TcUtils in unit tests.
Create a Java library that allows the BpfMap class and the
TcUtils class to find their JNI code when they are jarjard to the
package name we use in our unit tests.

Test: atest ConnectivityServiceTest
Change-Id: I2f17b1c366b2b8164eac34b94c9659bc7c0f68e0
2022-01-27 10:18:35 +00:00
Mark Chien
dd26c5709e Merge "Test UidCounterSetMap in NetworkStatsServiceTest" 2022-01-27 10:02:35 +00:00
Chiachang Wang
e84d7d90d3 Expose local route exclusion API in NetworkAgentConfig
Bug: 184750836
Test: make update-api
Test: atest FrameworksNetTests
Change-Id: I70470ab3a945570a23607e39d18f9825d9e1d7aa
CTS-Coverage-Bug: 184750836
2022-01-27 09:53:33 +00:00
Remi NGUYEN VAN
1d4e537a2b Increase the number of test service names
Append a random number between 0 and 999999999 to the service name,
instead of 0 to 999 (and historically 0 to 9999). This reduces chances
that a collision can happen, if the test is run simultaneously on
devices on the same network.

Bug: 190249673
Test: atest NsdManagerTest
Change-Id: I14a7a60a45c41b920f50d9ccc4dd3f98fd623c42
2022-01-27 18:49:32 +09:00
Remi NGUYEN VAN
f826bce37a Conditionally disable TetheringApiCurrentLib
The "current" targets are only necessary in branches that can use
non-stable APIs, and can fail to build otherwise.

Apply ConnectivityNextEnableDefaults so they are disabled on such
branches. Also deprecate NetworkStackNextEnableDefaults, so
ConnectivityNextEnableDefaults is used everywhere.

Bug: 190249673
Test: m
Change-Id: I1b152f3cc22f1bed6444d280f0066e480980e949
2022-01-27 18:49:19 +09:00
markchien
8f3917501b Test UidCounterSetMap in NetworkStatsServiceTest
Test: atest FrameworksNetTests
Change-Id: I1ae720fcc3192712b3dcbe69619f97f7df1a1f5e
2022-01-27 17:28:19 +08:00
Junyu Lai
bfdd0f3c3c Merge "[MS59.2] Add unit test for NetworkStatsDataMigrationUtils" 2022-01-27 09:20:10 +00:00
Aaron Huang
85a2ef3dd5 Merge "Change NETWORK_TYPE_5G_NSA reference package" 2022-01-27 08:36:23 +00:00
Patrick Rohr
e258c5913d Load tcutils in ConnectivityService
Bug: 157552970
Test: TreeHugger
Change-Id: Ic2204260e822b082f58e5f01e5da8dad879ab22f
2022-01-27 09:07:36 +01:00
Jean Chalard
6c24db946d Merge "Use the network stack shims in services connectivity" 2022-01-27 07:36:53 +00:00
Sooraj Sasindran
71c9ca453d Merge "Add getEnterpriseId api to network request" 2022-01-27 05:52:54 +00:00
Rahul Sabnis
d97f3a1901 Merge "Adding bt dependency" 2022-01-27 05:42:18 +00:00
Remi NGUYEN VAN
f24553d950 Add var to enable/disable tethering next APEX
This is necessary to disable the .inprocess APEX, in branches that only
use stable APIs, as it depends on unstable stubs. override_apex does not
support defaults.

Bug: 190249673
Test: m
Change-Id: Ib4a27b65f3c5b6d4b0ac69e85cf671038efc5744
2022-01-27 13:21:25 +09:00
Wayne Ma
41c2448ff9 Correct some errno values before throw ServiceSpecificException
For those functions which return statusFromErrno() in TrafficController,
it would return positive errno so shouldn't construct with -errno.

Test: m
Change-Id: I94b9294c4e200c43e33f8280469dfad9e9fbf5ea
2022-01-27 11:55:24 +08:00
Wei Li
c7231f3e79 Merge "Set exclude_kotlinc_generated_files to false explicitly since kotlin reflection is used in some Connectivity test cases kotlin code." 2022-01-27 00:22:49 +00:00
Wei Li
8a177f694a Set exclude_kotlinc_generated_files to false explicitly since kotlin reflection is used in some Connectivity test cases kotlin code.
Property "exclude_kotlinc_generated_files" is recently added to exclude some kotlinc generated files that are not needed if kotlin reflection is not used. Currently it defaults to false since there are test failures(b/213966211) which is in FullScoreTest#testToString and FullScoreTest#testMinMaxPolicyConstants that uses kotlin reflection and fails if exclude_kotlinc_generated_files defaults to true. By setting explicitly exclude_kotlinc_generated_files to false on tests like FullScoreTest#testToString, we will be able to finally default this property to true so the kotlinc generated files can be removed for most modules that don't need them.
Bug: 204888276
Bug: 213966211
Test: atest
FrameworksNetTests: com.android.server.connectivity.FullScoreTest
Change-Id: I4ed2d27c27841cb7127f669c8db34c90b4a41b1f
2022-01-26 18:25:23 +00:00
Sooraj Sasindran
7e9b25e7f9 Add getEnterpriseId api to network request
Bug: 194332512
CTS-Coverage-Bug: 216481336
Test: build
Change-Id: I1446f8eecf43f7c6d243dc82af08d04957dd60e3
2022-01-26 17:26:50 +00:00
junyulai
a1bb3a36cd [MS59.2] Add unit test for NetworkStatsDataMigrationUtils
Test: atest NetworkStatsDataMigrationUtilsTest
Bug: 204830222
Change-Id: Ia6e8aec9a828072a2a1e63bec600c2e20d3699b3
2022-01-26 16:53:06 +00:00