Commit graph android_packages_modules_Co.../services/core
Message SHA1
Merge "Fix race when starting NetworkMonitor"
Remi NGUYEN VAN   authored and   Gerrit Code Review   commited 2019-04-01 03:54:03 +00:00
ef8485cc65
Fix race when starting NetworkMonitor
NetworkMonitor obtained LinkProperties and NetworkCapabilities via
synchronous calls to ConnectivityManager after receiving an asynchronous
notification, which is prone to races: the network could be gone before
the LinkProperties/NetworkCapabilities can be fetched.

Fix the race by passing LinkProperties/NetworkCapabilities directly to
NetworkMonitor in the asynchronous notifications.

Test: atest FrameworksNetTests NetworkStackTests
Test: booted, WiFi works
Bug: 129375892
Change-Id: I200ac7ca6ff79590b11c9be705f650c92fd3cb63

Remi NGUYEN VAN   commited 2019-04-01 11:33:10 +09:00
ca33d197d9
Merge "Use IDnsResolver instead of INetd for resolver related binder commands"
Luke Huang   authored and   Gerrit Code Review   commited 2019-03-29 08:45:19 +00:00
efa4301a7f
Merge changes from topic "vpn_data_accounting"
* changes:
  Move BatteryStats and StatsCompanionService to use NetworkStatsService.
  NetworkStatsService: Fix getDetailedUidStats to take VPNs into account.
  Take all VPN underlying networks into account when migrating traffic for VPN uid.

Varun Anand   authored and   Gerrit Code Review   commited 2019-03-29 00:40:53 +00:00
06b4b6f92e
Take all VPN underlying networks into account when migrating traffic for
VPN uid.

Bug: 113122541
Bug: 120145746
Test: atest FrameworksNetTests
Test: Manually verified on device that stats from VPN UID are moved
      appropriately based on its declared underlying network set.
Test: vogar --mode app_process --benchmark NetworkStatsBenchmark.java

Change-Id: I9d8d0cc58d18002c1c96f8ddff780ef8dc452d21

Varun Anand   commited 2019-03-28 10:31:49 -07:00
612520f544
Merge "support msim for captiveportal notification"
Treehugger Robot   authored and   Gerrit Code Review   commited 2019-03-28 03:28:19 +00:00
5c83418408
Merge changes I0baf582f,I4bba01ba
* changes:
  Block unpriviledged apps which create keepalives with null fd
  Fix keepalive don't get removed when lower layer error

Junyu Lai   authored and   Gerrit Code Review   commited 2019-03-28 00:53:20 +00:00
6d7c97dc5c
Block unpriviledged apps which create keepalives with null fd
Currently, socketKeepalive implementation is accepting null fd
due to backward compatibility with legacy packet keepalive API.
However, due to lack of the fd, the service cannot guarantee the
port is not reused by another app if the caller release the port
for any reason.

Thus, grant the null fd access only for priviledged apps.

This commit also address some comments from aosp/918533.

Bug: 126699232
Test: atest FrameworksNetTests
Change-Id: I0baf582ff4ca8af6082c3754e8dfbcd867f39792

junyulai   commited 2019-03-27 19:51:08 +08:00
828dad188c
Use IDnsResolver instead of INetd for resolver related binder commands
migrate resolver related commands from INetd to IDnsResolver

Bug: 126141549
Test: atest FrameworksNetTests ConnectivityServiceTest Nat464XlatTest
      atest DnsManagerTest
Change-Id: I559c0c1304d53dde408c062e1a52e742595e7cbe

Luke Huang   commited 2019-03-27 17:39:07 +08:00
8141319b4d
support msim for captiveportal notification
Bug: 123025093
Test: Manual
Change-Id: Ie04f3ae9a825ab75077a94b108ac92075b6d4753

chen xu   commited 2019-03-27 00:11:52 -07:00
5b5447e421
Fix keepalive don't get removed when lower layer error
Currently, if the lower layer, e.g. wifi, didn't successfully
start keepalive by any reason. Due to the startedState changed
to NOT_STARTED first, the logic inside stop() will skip the
removing process and cause leak.

Thus, moving the changing of startedState to proper place first
to unblock subsequent changes first.

Bug: 123988249
Bug: 129371366
Test: atest FrameworksNetTests
Change-Id: I4bba01bacc80e1dac2023ef831b5ade5501894e4

junyulai   commited 2019-03-27 11:38:58 +08:00
8b381dd91b
Get the permission information for native services
For native services such as mediaserver and audioserver, the permission
information cannot be retrieved from getInstalledPackages. Instead, the
high level permission information is avalaible in systemConfigs. With
those permission information, netd can store the complete list of uids
that have UPDATE_DEVICE_STATS permission.

Bug: 128944261
Test: dumpsys netd trafficcontroller
Change-Id: I0331d5a3a5b927a351fcfe6689ef1ba2b993db0c

Chenbo Feng   commited 2019-03-27 02:45:37 +00:00
d72e9ab720
Fix the INTERNET related permissions
Change the INTERNET permission implementation so it only block socket
creation when non of the packages under the same uid have internet
permission. Fix the UPDATE_DEVICE_STATS permission so only the uid that
own the permission can change it.

Bug: 111560570
Test: CtsNetTestCasesUpdateStatsPermission
      CtsNetTestCasesInternetPermission
Change-Id: I42385526c191d4429f486cde01293b27fcc1374b

Chenbo Feng   commited 2019-03-26 15:16:26 -07:00
0c4742527b
Merge "[TCPKeepalive] Fill correct TOS and TTL value"
Mark Chien   authored and   Gerrit Code Review   commited 2019-03-25 13:10:17 +00:00
13cc9e442e
Merge "Fix SocketKeepalive APIs which do not meet API review requirement"
Junyu Lai   authored and   Gerrit Code Review   commited 2019-03-25 10:42:37 +00:00
66bc22760a
Fix SocketKeepalive APIs which do not meet API review requirement
Per API review, change the use of FileDescriptor to
ParcelFileDescriptor.
This change also fix nullability according to API review
feedbacks.

Fix: 126698610
Fix: 126699425
Fix: 126699232
Fix: 126700278

Test: 1. m -j
      2. atest FrameworksNetTests --generate-new-metrics 50
      3. m -j doc-comment-check-docs
Change-Id: I19476c50dd1ca290bf3f41973829da2bd229796a

junyulai   commited 2019-03-25 15:56:35 +08:00
7e06ad4ce9
[TCPKeepalive] Fill correct TOS and TTL value
Fill correct TOS/TTL value by fetching them from kernel with
getsockopt.

bug: 123967966
Test: -build, flash, boot
      -atest FrameworksNetTests

Change-Id: I75b1be51040b4a381163958b4cddd27dbb22bac1

markchien   commited 2019-03-25 11:14:57 +08:00
b5a2b8076a
Merge "Separate NetworkMonitor/framework portal URL"
Remi NGUYEN VAN   authored and   Gerrit Code Review   commited 2019-03-25 02:50:37 +00:00
8ab472e77a
Merge "Fix API in CaptivePortal and ConnectivityManager"
Treehugger Robot   authored and   Gerrit Code Review   commited 2019-03-25 02:37:28 +00:00
8f4c739827
Fix API in CaptivePortal and ConnectivityManager
- Remove CaptivePortal constructor from SystemApi. This constructor was
   added in Q timeframe and ends up being unnecessary since
   CaptivePortal creation was refactored to ConnectivityService because
   of visibility issues on ICaptivePortal.
 - Rename getAvoidBadWifi to shouldAvoidBadWifi
 - Add permission annotation for shouldAvoidBadWifi

(already merged in internal as:
I09545c00af3519dbf141dd5951b28f49e37b3e80)

Test: flashed, WiFi and captive portal works
Bug: 128935314
Bug: 128935673
Merged-In: I09545c00af3519dbf141dd5951b28f49e37b3e80
Change-Id: I7395d4a4db6a64398a827692aee1956c011873e5

Remi NGUYEN VAN   commited 2019-03-25 01:43:48 +00:00
1fb7cabbfc
Separate NetworkMonitor/framework portal URL
The framework cannot return URLs used by the updatable NetworkStack,
which may use configurable URLs, changing URLs, or mechanisms not
involving URLs to detect captive portals. NetworkMonitor has already
been using random fallback URLs for a while that do not match the value
returned by ConnectivityManager#getCaptivePortalServerUrl.

With this change, the default value returned by the framework is
configured in framework resources as
config_networkDefaultCaptivePortalServerUrl. NetworkMonitor behavior may
change as it is an updatable component, but the current URL is
configured in NetworkMonitor resources as
config_captive_portal_http_url.

Test: flashed, booted, WiFi and captive portal working
Test: ConnectivityManager#getCaptivePortalServerUrl returns correct
      value.
Bug: 127908503
Change-Id: I371dedc5b22efa909d7fd58e1ebe9b8aaced9780

Remi NGUYEN VAN   commited 2019-03-22 15:11:14 +09:00
035f65367b
Enable PARTIAL_CONNECTIVITY dialog
Enable PARTIAL_CONNECTIVITY dialog to complete the function.

Bug: 113450764
Test: 1. Build pass
      2. atest FrameworksNetTests
      3. atest NetworkStackTests
      4. Change captive_portal_https_url to https://invalid.com
      to simulate partial connectivity.

Change-Id: I5c9fe7a898d30d2f7f75142c85e73fefc257a147

lucaslin   commited 2019-03-22 09:10:08 +08:00
e0118abc5b
Merge "Fix Automated API Review issues."
Paul Hu   authored and   Gerrit Code Review   commited 2019-03-21 17:19:26 +00:00
acb5eca325
Merge "Replace TcpSocketInfo with similar structure"
Mark Chien   authored and   Gerrit Code Review   commited 2019-03-21 12:02:54 +00:00
a460377cf9
Merge "Restrict scope of switch Repair Mode"
Mark Chien   authored and   Gerrit Code Review   commited 2019-03-21 07:02:14 +00:00
19b1610698
Fix Automated API Review issues.
1. Some API's argument/return value must be marked either
@NonNull or @Nullable.
2. Change some system APIs to public APIs.
3. Modify the method name

Bug: 126700123
Bug: 126702339
Bug: 126699682
Bug: 118296575
Bug: 126699216
Bug: 126699675
Bug: 126699429
Bug: 126699193
Bug: 123586045
Test: atest FrameworksNetTests
Change-Id: Iaa2832cdcf83758ed0fec81b954a0c63bc5a7bf6

paulhu   commited 2019-03-21 13:55:37 +08:00
cbbc3db924
Merge "Improve partial connectivity"
Lucas Lin   authored and   Gerrit Code Review   commited 2019-03-21 03:34:30 +00:00
8d77a4b813
Replace TcpSocketInfo with similar structure
Replace TcpSocketInfo with TcpKeepalivePacketDataParcelable
because their structures are very similar.

bug: 128882321
Test: -build, flash, boot
      -FrameworksNetTests

Change-Id: Iafb4031a64ba4775a495c156e2c997d890c6b261

markchien   commited 2019-03-20 22:29:48 +08:00
458c95b9ff
Restrict scope of switch Repair Mode
Bug: 123969339
Test: -boot, flash
      -atest FrameworksNetTests

Change-Id: Ie0fb685be5f7a2d06544065d67c605d87a19ff2f

markchien   commited 2019-03-20 22:20:56 +08:00
7f2cd7d5e7
Improve partial connectivity
Improve the design and fix some nits.

Bug: 113450764
Test: 1. Build pass
      2. atest FrameworksNetTests
      3. atest NetworkStackTests
      4. Change captive_portal_https_url to https://invalid.com
      to simulate partial connectivity.
Change-Id: Ia56645841d00d2ed8406cfeacb86a4a27fd58650

lucaslin   commited 2019-03-20 18:21:59 +08:00
f9bff5b0dc
Add uid information in PackageListObserver
The uid information of a removed package cannot be retrieved by the
packageName anymore once it is removed. So it would be useful to provide
the uid of removed package in the onPackageAdded and onPackageRemoved
method of the PackageListObserver. This modification helps simplify the
design in PermissionMonitor.

Bug: 125396053
Test: dumpsys netd trafficcontroller

Exempt-From-Owner-Approval: Already merged in internal master
Merged-In: I2bd4bdf924687960a4fa3a47235bae68d885e445
Change-Id: I2bd4bdf924687960a4fa3a47235bae68d885e445

Chenbo Feng   commited 2019-03-18 19:32:29 -07:00
ceb0eba5bd
Merge "Remove NetworkParcelable"
Remi NGUYEN VAN   authored and   Gerrit Code Review   commited 2019-03-18 01:30:25 +00:00
7b9d4803b6
Merge "Moved transport to IntDef"
Treehugger Robot   authored and   Gerrit Code Review   commited 2019-03-15 23:21:29 +00:00
122c557701
Remove NetworkParcelable
With the @JavaOnlyStableParcelable annotation, Network can now be used
as-is as a framework parcelable.

Test: atest FrameworksNetTests NetworkStackTests
Bug: 126477266
Change-Id: I5d9695a31b3ac48d10edcf08ccd0c34375353b79

Remi NGUYEN VAN   commited 2019-03-16 03:51:09 +09:00
eb42f2f9e7
Merge "Integrate testNetworkService and Manager with Connectivity stack"
Benedict Wong   authored and   Gerrit Code Review   commited 2019-03-15 17:41:02 +00:00
546bcbb218
Moved transport to IntDef
Moved out from the sub class per API review feedback.

Test: Build
Bug: 128607082
Merged-In: I1b513bcaaa0ebf47c14593d962579ed48a7c6db0
Change-Id: I1b513bcaaa0ebf47c14593d962579ed48a7c6db0

Jack Yu   commited 2019-03-14 20:32:16 -07:00
7e0f9143e6
[KA02.5] Use binder thread and executor to invoke callback
Currently, client side of keepalive event handling rely on a
newly created thread, looper, messenger and handler per object.

However, by creating oneway AIDL interface with the executor,
the callbacks can be invoked on the binder thread with user
specified context, which not only greatly simplify the design
but also reduce the cost of current thread modeling.

Bug: 114151147
Bug: 123969871
Test: 1. atest FrameworksNetTests --generate-new-metric 10
      2. atest-deflake.sh

Change-Id: I27504074cd28d5b5eb94a7ec0e97ebaaaaa1ae3d

junyulai   commited 2019-03-14 19:24:12 +08:00
070f9ff460
Integrate testNetworkService and Manager with Connectivity stack
This change adds TestAPIs for tests to retrive an instance of
ConnectivityManager, allowing it to build test TUN interfaces, as well
as test networks.

This also integrates the TestNetwork types with ConnectivityManager,
creating virtual networks if the network agent is a test agent.

Bug: 72950854
Test: Compiles, CTS tests using this passing correctly
Change-Id: Ic1a04aa66014d1c66a74e65dbace3218437403ae
Merged-In: I741ef9cdf4bd4125d9129af3a030edf32f438e4f

Benedict Wong   commited 2019-03-13 02:26:30 +00:00
493e04b932
Tell the factory it is already serving a request.
This is a cherry-pick of ag/607226 that has been rebased on
top of four years of changes and with comments addressed.

Gives each factory a serial number and propagates it to every
NetworkAgent so when a score comes back indicating a request is
being handled the factory can account for it properly.

Without this, a new request that's already handled by a network
offered by a factory will not cause an increment of the factorys
ref count. Concretely this results in issues like the RAT icon
not being displayed in spite of the network actually being up
and usable.

This will be ported to AOSP as soon as possible, but immediately
some master-only WiFi tests need to be adjusted with this change
which would not let me submit to AOSP.

Bug: 18637384
Bug: 29030667
Test: manual
Test: atest frameworks/opt/telephony/tests/telephonytests
Test: atest frameworks-net
Test: atest CtsNetTestCases CtsHostsideNetworkTests
Change-Id: I597ac588f76dd507512ff02868fd1310b7e63f7e
Merged-In: I597ac588f76dd507512ff02868fd1310b7e63f7e

Chalard Jean   commited 2019-03-12 21:47:21 +09:00
29d06db64b
Merge "[CS] Support "instant failure" from factories"
Chalard Jean   authored and   Gerrit Code Review   commited 2019-03-12 12:04:46 +00:00
dce527fbd6
Check if network has partial connectivity
In some networks, network validation may only get success
result for http probe but fail result for https probe.
For this kind of network, it may still work at some websites
or apps, but user didn't know about that. In order to fix this
issue, we will check if network has partial connectivity and
notify user to make a choice if they want to use this partial
connectivity or not.

Bug: 113450764
Test: 1. Build pass.
      2. Fake partial connectivity case for testing.
      3. atest FrameworksNetTests
      4. atest NetworkStackTests

Change-Id: I69ed00ac4850904ff708c9fef22e148879a10e92

lucaslin   authored and   Lucas Lin   commited 2019-03-12 07:37:33 +00:00
2240ef679d
Merge "Improve keepalive offload documentation and error handling"
Junyu Lai   authored and   Gerrit Code Review   commited 2019-03-12 05:11:50 +00:00
a0b880c9e8
[CS] Support "instant failure" from factories
Add a mechanism by which a factory can declare "instant failure" for
a request - which would result in it getting an OnUnavailable()
(even without a timeout).

Factories may only do this iff:
1. They know they are the only factory which may fulfill this
   request (common for transport-specific requests).
2. The know that the request can definitely not be
   fulfilled at any point in the future.

Bug: 31382922
Test: atest ConnectivityServiceTest
Merged-In: I9bce0f4d85fa8cad7f8a9998819f945b778c5ac5
Change-Id: I9bce0f4d85fa8cad7f8a9998819f945b778c5ac5

Etan Cohen   commited 2019-03-11 16:15:43 -07:00
fbfdd84e7c
Merge "Add tethering event callback API"
Chalard Jean   authored and   Gerrit Code Review   commited 2019-03-11 17:04:57 +00:00
80c8a33c95
[PT17.5] Revert to booleans for send/not send broadcast constants.
In PT17, for security of the patch these two constants have been
switched from boolean to enum values. While this is nice for making
sure a patch is correct, it's also pretty wasteful. Now that it's
certain that the values of these fields don't matter, they can be
set to logical values (as opposed to reversed as it was the case
before PT17.

Test: runtest
Change-Id: I93a0780e23c2f658687be066dc16f27529baaa86

Chalard Jean   commited 2019-03-11 15:58:31 +09:00
2a67906ec5
Add tethering event callback API
Provide OnTetheringEventCallback for system app to know
tethering's upstream.

Bug: 125583822
Test: -build, flash, boot
      -atest FrameworksNetTests

Change-Id: I7ca81b27c9b805cc01884509f5b20d9d0a24cd36
Merged-in: I7ca81b27c9b805cc01884509f5b20d9d0a24cd36

markchien   commited 2019-03-09 00:35:55 +08:00
4ef53e8819
Merge changes Ie66ba631,Ic42c09a3
* changes:
  Implement TestNetworkService
  Add shell TestNetworkManager and Service

Benedict Wong   authored and   Gerrit Code Review   commited 2019-03-07 23:32:55 +00:00
6525e97ea5
Improve keepalive offload documentation and error handling
Bug: 123987401
Test: atest FrameworksNetTests
Change-Id: Id651cfb743f02b05ca3845af3c393eaf5762bb20

junyulai   commited 2019-03-07 16:01:30 +08:00
97767bf71c
Fix TetheringEntitlementValueListener related API
Test: -build, flash, boot
      -atest FrameworksNetTests
bug: 126701557
bug: 126392011

Change-Id: I6dda10fbfe8ffaef71269617750a22563396f5ea

markchien   commited 2019-03-07 13:33:21 +08:00
bf5ab01869
Implement TestNetworkService
This change adds the relevant JNI implementations, as well as the
implementations and NetworkAgent tracking code in the TestNetworkService.

TestNetworkService (And Manager) is designed for use exclusively in
testing code, allowing for the creation of TUN and IPsec backed networks
in test code. Specifically, this allows for testing of components such
as IP, DHCP, or DNS clients, as well as kernel features such as IPsec.

Access to the TestNetworkService will be conditioned upon the
MANAGE_TEST_NETWORKS permission that will be granted only to the Shell.
CTS will use UiAutomation.adoptShellPermissionIdentity() to gain the
ability to use this service.

Bug: 72950854
Test: CTS tests passing
Change-Id: Ie66ba631a548b5f9c6b5ed0797582f86688debe5

Benedict Wong   commited 2019-03-06 15:37:52 -08:00
2ffe4b8998