Commit Graph

724 Commits

Author SHA1 Message Date
junyulai
f2b6d74356 [SP20] Check signature permission when accessing network stats provider
Currently, registerNetworkStatsProvider requires the
UPDATE_DEVICE_STATS permission. This is a privileged permission
so it can be granted to preinstalled apps. Thus, apps like
GmsCore, or preinstalled apps will be able to update network stats.

This change checks for a new permission that would only allow
signature apps to declare that. Also check
MAINLINE_NETWORK_STACK permission to allow NetworkStack process
to use it.

Test: adb shell dumpsys netstats
Test: atest FrameworksNetTests
Bug: 149652079
Change-Id: Idfebd0a1988c3dcfd812d87e30f6a2034d6fbf6b
2020-02-24 20:22:48 +08:00
junyulai
df2aef7c1d Add permission check functions to NetworkStatsService
This is shameless copied from ConnectivityService and plan to be
used in follow-up change. For long term perspective we should
have a permission util that contains those util in one place.

Test: m -j
Change-Id: I837545b54f36c8f21c878cbb1fd028ff23be6cb8
2020-02-24 20:22:38 +08:00
Automerger Merge Worker
662cc3d540 Merge "[SP12] Remove the usage of getVtDataUsage" am: afeed9dee4 am: 7fe2313922 am: ac4706dc7a
Change-Id: I28c84ee96a3a209868769aad16a2d2e596a0c342
2020-02-19 23:02:38 +00:00
Junyu Lai
afeed9dee4 Merge "[SP12] Remove the usage of getVtDataUsage" 2020-02-19 00:13:02 +00:00
Junyu Lai
50e1c228d0 Merge "[SP16] Address comments on aosp/1172143" am: f4eaaa2415 am: d58bf88378 am: 59a0c28cf3
Change-Id: I4cff4d096f375210585ceae5eb27002b97a35226
2020-02-17 14:18:32 +00:00
Junyu Lai
ad9585467c Merge "[SP17] Wait for stats providers to report stats update" am: 1e47a3e71d am: 48433d6735 am: 91c2f32f05
Change-Id: I719a1b2c75123f6fa6c765eeced055720c052c9b
2020-02-17 14:18:06 +00:00
Junyu Lai
f4eaaa2415 Merge "[SP16] Address comments on aosp/1172143" 2020-02-15 02:21:30 +00:00
junyulai
304de51561 [SP17] Wait for stats providers to report stats update
From current design, the traffic accounted by stats providers
will be updated asynchronously when force polling. When upper
layer make two subsequently queries. They will get stale
stats upon the first query, and may get newest/stale stats
base on the result of race.

Thus, wait for a bit of time to allow asynchronous stats update
complete to reduce the chance of race. In pratice, it would
be finished in ~2ms when testing.

Test: systrace.py network
Test: atest FrameworksNetTests
Bug: 147460444
Change-Id: I22a00fc4049cddf77fd578e25769ae1979f2cc6d
2020-02-14 17:03:35 +08:00
junyulai
4fe16c5214 [SP16] Address comments on aosp/1172143
Test: atest FrameworksNetTests
Test: atest NetworkPolicyManagerServiceTest
Test: m doc-comment-check-docs
Bug: 130855321
Change-Id: Iccaab09f5b9668ec4a7249737c64a69cecb08d15
2020-02-14 16:53:40 +08:00
junyulai
12ddc700c8 [SP12] Remove the usage of getVtDataUsage
Currently NetworkStatsService holding a lock when invoking
getVtDataUsage, which causes a lot of deadlock problems since
Phone will also have binder calls to system_server.

Thus, this change uses a new set of API to break such situation,
that allows VT to report stats asynchronously.

Test: atest FrameworksNetTests FrameworksTelephonyTests
Bug: 130855321
Fix: 143923500

Change-Id: Ifdb8599c3bade09208b4730710fc99da1afad71d
2020-02-14 15:37:16 +08:00
Benedict Wong
e334a83e46 Merge "Implement Ikev2VpnRunner" 2020-02-13 21:15:24 +00:00
Benedict Wong
c85b7b0114 Implement Ikev2VpnRunner
This change adds the implementation for IKEv2/IPsec VPNs.

Bug: 144246767
Test: Manually tested
Change-Id: I5ccec756cec49ccf57ccc4d5ad800eeb5d595a76
Merged-In: I5ccec756cec49ccf57ccc4d5ad800eeb5d595a76
2020-02-13 18:37:06 +00:00
Benedict Wong
9ee6603153 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
1934036da7 Merge "[SP11] add dumpsys support to dump stats inside providers" am: 2b4a6517bf am: e49c7caae3 am: 6c2c1baecf
Change-Id: I03ea04d5851ae4f911f9c64dbdb235aedf4cea3c
2020-02-12 03:28:19 +00:00
Automerger Merge Worker
40e53af6db Merge "NetworkStatsFactory.cpp: IWYU" am: 79e97166a8 am: 1e13dec72f am: e058f2fd66
Change-Id: I75378b3435eb63599758b60c687abbce20b8b65d
2020-01-17 21:47:19 +00:00
junyulai
e4437529ca [SP11] add dumpsys support to dump stats inside providers
Sample output is like below:
  Stats Providers:
    OffloadController Xt:
      NetworkStats: ...
    OffloadController Uid:
      NetworkStats: ...
    ImsPhoneCallTracker Xt:
      NetworkStats: ...

Test: adb shell dumpsys netstats (--uid)
Bug: 130855321

Change-Id: I968006de83e13e66bb3359135f0237daf7252bd2
2020-01-17 17:32:36 +08:00
Steven Moreland
79e97166a8 Merge "NetworkStatsFactory.cpp: IWYU" 2020-01-16 21:22:46 +00:00
Aaron Huang
2c2e849960 Merge "Move DnsSdTxtRecord to net common static library" 2020-01-16 03:15:55 +00:00
Steven Moreland
7b2c9ab255 NetworkStatsFactory.cpp: IWYU
Bug: 140330870
Test: N/A
Change-Id: Id6107c8a83b22ac56f4da61a5d5757d29ecb07ac
2020-01-14 09:25:32 -08:00
Aaron Huang
1970749b57 Move DnsSdTxtRecord to net common static library
DnsSdTxtRecord is moved to frameworks/libs/net for mainline
support. Also change the import path using this class.

Bug: 139268426
Bug: 135998869
Test: atest FrameworksNetTests
      ./frameworks/opt/net/wifi/tests/wifitests/runtests.sh

Change-Id: I6118b313ce668707d598aa2eab9baee2f7622dbc
2020-01-14 17:50:11 +08:00
Automerger Merge Worker
7155a16463 Merge "minor change to keep it building" am: f369b2f771 am: c728c5e185 am: 1db0e41455
Change-Id: I5fc3686a1457001fe1c9662dd550d0289d4c3435
2020-01-14 09:35:11 +00:00
Maciej Żenczykowski
f369b2f771 Merge "minor change to keep it building" 2020-01-14 09:03:11 +00:00
Automerger Merge Worker
8ac081233a [SP04] add unit test for NetworkStatsProvider am: a97b5c3bb3 am: a51ef24361 am: 1677f601f7
Change-Id: Ic48609b113a7174204eaa2207901c8110d76f65f
2020-01-13 14:48:10 +00:00
Automerger Merge Worker
a6f36f4246 [SP03] support registerNetworkStatsProvider API am: 258eb3b9e5 am: 573e809597 am: 910f2d53bd
Change-Id: Iaedbf1f8bbe8128ca2631efff24048b97ce9d909
2020-01-13 14:48:01 +00:00
junyulai
a97b5c3bb3 [SP04] add unit test for NetworkStatsProvider
Test: atest NetworkStatsServiceTest
Bug: 130855321
Change-Id: I0c19d8bedcb9398da3f464efe01e775fde9f8a78
2020-01-13 14:43:06 +08:00
junyulai
258eb3b9e5 [SP03] support registerNetworkStatsProvider API
This change provides an API that allow external modules to
register a custom provider of NetworkStats to merge the
network statistics that cannot be seen by the kernel to system.

Test: atest FrameworksNetTests CtsUsageStatsTestCases
Test: atest NetworkPolicyManagerServiceTest
Test: m doc-comment-check-docs
Bug: 130855321

Change-Id: I265bc637c40666cde505fde5056d2d9bfc5fb204
2020-01-13 14:43:03 +08:00
Automerger Merge Worker
6c530816c0 Merge "[SP01] Add NetworkStats to system API" am: a113464439 am: b340068a3e am: cc0ae82905
Change-Id: I1bb272727cbaec0102669b3f3b8141994f8e1f9a
2020-01-09 09:37:50 +00:00
junyulai
55041a4ad2 [SP01] Add NetworkStats to system API
In order to let external module report their network stats,
expose necessary APIs to construct NetworkStats object.

Test: atest FrameworksNetTests CtsUsageStatsTestCases
Test: m doc-comment-check-docs
Bug: 130855321
Change-Id: Id3ec8aaff3df67948c25eac2319a74cf33a27979
2020-01-09 03:11:22 +00:00
Maciej Żenczykowski
ed3ee3702b minor change to keep it building
This is part of 3 commits in 3 diff git repos, the main one is:
  https://android-review.googlesource.com/c/platform/system/netd/+/1200479
  "share eBPF struct definitions between ebpf and C++ netd"

as a side effect of which 'android::bpf::Stats' becomes simply '::Stats'

Test: builds
Bug: 146787904
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I8548b27d1d8a7938f96c9fd9a185dae882e406f6
2020-01-06 23:25:49 +00:00
Automerger Merge Worker
6b709bab9b Merge "convert 'Stats stats; memset(&stats, 0, sizeof(Stats));' to 'Stats stats = {};'" am: 30bf98b239 am: d872904d2c am: 166e658c00
Change-Id: I270c321969d85ff5ae97627a6ecdb9c70d668247
2020-01-06 15:33:26 +00:00
Automerger Merge Worker
380559e9b8 Merge "remove spurious 'struct' on Stats" am: fa88e27173 am: 39b66243ee am: 16605fc29d
Change-Id: I7d6cb9ec24cb3012f445a46c746c5f8009bacc35
2020-01-06 15:32:32 +00:00
Treehugger Robot
30bf98b239 Merge "convert 'Stats stats; memset(&stats, 0, sizeof(Stats));' to 'Stats stats = {};'" 2020-01-06 14:12:26 +00:00
Treehugger Robot
fa88e27173 Merge "remove spurious 'struct' on Stats" 2020-01-06 14:12:21 +00:00
Tobias Thierer
190a471c2c Merge "Replace com.android.internal.util.Preconditions.checkNotNull with java.util.Objects.requireNonNull" 2020-01-03 17:53:55 +00:00
Daulet Zhanguzin
c120601182 Replace com.android.internal.util.Preconditions.checkNotNull with
java.util.Objects.requireNonNull

Bug: 126528330

Test: Treehugger
Exempt-From-Owner-Approval: Global refactoring.
Change-Id: Idb1b6ba41af3b52f3376b1157259af3c30328c4e
2020-01-03 17:53:30 +00:00
Automerger Merge Worker
c67821916c Merge "Replace com.android.internal.util.Preconditions.checkNotNull with java.util.Objects.requireNonNull" am: 2ee360b058 am: 5727033c3a am: af83fe4801
Change-Id: I54b4c3268878a10583dc6a4cf07f07588f0ca6cf
2020-01-03 16:31:22 +00:00
Daulet Zhanguzin
4461754bd5 Replace com.android.internal.util.Preconditions.checkNotNull with
java.util.Objects.requireNonNull

Bug: 126528330

Test: Treehugger
Change-Id: I978d5d0959f7800e859bfb384458ba52adc0c2b0
2020-01-03 14:42:32 +00:00
Maciej Żenczykowski
4421b2b9c2 convert 'Stats stats; memset(&stats, 0, sizeof(Stats));' to 'Stats stats = {};'
Not only is it more concise, but it's also just a tad more correct:
since it really should have been 'sizeof(stats)' not 'sizeof(Stats)'.

Test: builds, atest
Bug: 146787904
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I6cf0295878c7b34cedfe3ae44ff7410ef419f8b9
2019-12-30 20:49:36 +00:00
Maciej Żenczykowski
3a4cc11de3 remove spurious 'struct' on Stats
Test: builds, atest
Bug: 146787904
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I824daf0ebdddbac1b11cabfcb248ee4134586768
2019-12-30 20:49:27 +00:00
Automerger Merge Worker
a8ebc95eb4 Merge "Update interface quota limit when network stats updated" am: 2dcf4c0227 am: a992b3aa83 am: 661741804d
Change-Id: I118f05adf0d5fc4aa665d45b3896d898dfeb3924
2019-12-19 10:37:39 +00:00
junyulai
d7efd7ba07 Update interface quota limit when network stats updated
In previous design, interface quota limit does not changed
when network stats are updated. However, this is incorrect
today since there are some offloaded traffic that cannot
be seen by kernel. If the limit is not updated, the offloaded
traffic might still be able to use whole quota as if there is
no embedded traffic.

This change also removes the re-arm global alert after
advising persist threshold if not changed, given that it will
cause an additional alert while updating interface quota limit.

Bug: 145792619
Test: 1. atest NetworkStatsServiceTest
      2. atest NetworkPolicyManagerServiceTest
      3. manual test: run speedtest, check dumpsys netd

Change-Id: I8d2203e713730d536430a234b1aa8b2468badee3
2019-12-18 10:57:29 +08:00
Jeffrey Huang
f9f6d87ced Rename writeToProto to be dumpDebug
We want to eventually migrate some of these APIs to be @SystemApi for mainline modules.
The #dumpDebug name is more appropriate than #writeToProto.

Bug: 142279786
Test: Manual
Change-Id: I60793e91cedf6b720d4ecef6a8484f4fed4ff30f
2019-12-05 11:28:11 -08:00
paulhu
a262cc1154 Replace the permission of internal connectivity checks
A number of connectivity checks that protect system-only methods
check for CONNECTIVITY_INTERNAL, but CONNECTIVITY_INTERNAL is a
signature|privileged permission. We should audit the permission
checks, and convert checks that protect code that should not be
called outside the system to a signature permission. So replace
all CONNECTIVITY_INTERNAL to other proper permissions.

Bug: 32963470
Test: atest FrameworksNetTests NetworkPolicyManagerServiceTest
Change-Id: I8f2dd1cd0609056494eaf612d39820e273ae093f
2019-12-04 11:45:51 +08:00
paulhu
6569cef6a6 Replace the permission of internal connectivity checks
A number of connectivity checks that protect system-only methods
check for CONNECTIVITY_INTERNAL, but CONNECTIVITY_INTERNAL is a
signature|privileged permission. We should audit the permission
checks, and convert checks that protect code that should not be
called outside the system to a signature permission. So replace
all CONNECTIVITY_INTERNAL to other proper permissions.

Bug: 32963470
Test: atest FrameworksNetTests NetworkPolicyManagerServiceTest
Change-Id: I8f2dd1cd0609056494eaf612d39820e273ae093f
Merged-In: I8f2dd1cd0609056494eaf612d39820e273ae093f
2019-12-04 11:44:45 +08:00
markchien
4686dd8958 [Tether07] Migrate Tethering into module
Now tethering would be run in dedicated service.
TetheringManager is the interface used to communicate with
TetheringService. The new call flow would be: ConnectivityManager
-> ConnectivityService -> TetheringManager -> TetheringService.
Note: the return value of #tether(), #untether() and #setUsbTethering()
APIs would always be no error. Client can use #getLastTetherError()
or #getTetheredIfaces or listen tether state change to check
status of corresponding interface.

Bug: 136040414
Bug: 144742179
Test: -build, flash, boot
      -atest TetheringTests
      -atest FrameworksNetTests

Change-Id: I7e78c0e0a3e70f940a749ba2a39ece7c7ec5b9b3
Merged-In: I7e78c0e0a3e70f940a749ba2a39ece7c7ec5b9b3
2019-11-30 10:03:08 +00:00
markchien
87f0b94f3b [Tether07] Migrate Tethering into module
Now tethering would be run in dedicated service.
TetheringManager is the interface used to communicate with
TetheringService. The new call flow would be: ConnectivityManager
-> ConnectivityService -> TetheringManager -> TetheringService.
Note: the return value of #tether(), #untether() and #setUsbTethering()
APIs would always be no error. Client can use #getLastTetherError()
or #getTetheredIfaces or listen tether state change to check
status of corresponding interface.

Bug: 136040414
Bug: 144742179
Test: -build, flash, boot
      -atest TetheringTests
      -atest FrameworksNetTests

Change-Id: I7e78c0e0a3e70f940a749ba2a39ece7c7ec5b9b3
2019-11-29 07:05:21 +00:00
Jayachandran C
270197bc8d Remove usage of Telephonymanager getDefault() and from() hidden APIs
This CL replaces with getSystemService(TelephonyManager.class)

Bug: 140768340
Test: atest frameworks/base/tests/net
Change-Id: I0f14cc5440fa85c81ab90f3199e9e91c1b00f5e1
2019-11-15 19:26:33 -08:00
Benedict Wong
ec2e2e2174 Use TransformRecord to get SPI instead of SpiRecord
IpSecService.applyTunnelModeTransform() currently does not take an
SpiRecord instance, yet implicitly requires that the SpiRecord instance
is still alive based on the stored SpiRecord resourceId in
the TransformRecord's IpSecConfig.

This check is unnecessary, as the SpiRecord has been subsumed into the
TransformRecord, and the kernel resources are kept alive whether or
not the SpiRecord is still held by the user.

This allows users of the IpSecManager API to allocate short-lived SPIs
during the creation of an IpSecTransform, without having to keep track
of both of them (even though the SPI is no longer usable).

The TransformRecord.getSpiRecord() call is already used in
multiple other places in the same method.

Bug: 142072071
Test: New tests added, passing.
Change-Id: I1959f3080946267243564459ff4207647922566e
2019-10-18 21:04:59 +00:00
Remi NGUYEN VAN
b374d3953c Merge "Extract test utilities for ConnectivityService"
am: b7d270a73e

Change-Id: I0ac2a480f961bb6fd1d83dedad6a7942ee03858f
2019-08-06 14:58:43 -07:00
Remi NGUYEN VAN
a18a355536 Extract test utilities for ConnectivityService
The utilities help using ConnectivityService in tests, and will be used
to write integration tests for ConnectivityService.

Test: atest FrameworksNetTests
Change-Id: Ie895ad05139cd5768d3d8a9bd5589d72571f47e6
2019-08-01 16:32:30 +09:00