Commit graph android_packages_modules_Co.../services
Message SHA1
Rework KeepalivePacketData for Compatibility with Cell
KeepalivePacketData currently mixes multiple concepts: the
list of parameters that are used to generate a keepalive
packet, the keepalive packet itself, and the parameters that
are needed to send a keepalive packet over an ethernet link.

The KeepalivePacketData is now a parcelable that can be used
generically by any NetworkAgent, regardless of how that Agent
fulfills its duty to initiate and maintain a keepalive session.

Bug: 69063212
Test: verified with SL4A, additional tests pending
Merged-In: I23dc4827ae729583356a8ff0f02e39a2ad2b81f5
Change-Id: I23dc4827ae729583356a8ff0f02e39a2ad2b81f5
(cherry picked from commit 5be3f5a2b1)

Nathan Harold   commited 2018-01-29 11:20:20 -08:00
7f8d0be10d
Relocate KeepalivePacketData to frameworks/base
Due to an issue resolving the boot classpath, the
KeepalivePacketData structure cannot be referenced
by frameworks/opt/telephony while it is in services.

-Move KeepalivePacketData to android.net
-Also, relocate IpUtils without changing the package
 name.

Bug: 38350389
Test: compilation
Merged-In: If5fc63e9ad8b9b2d4c2fee47ff4bab2ab190a05a
Change-Id: If5fc63e9ad8b9b2d4c2fee47ff4bab2ab190a05a
(cherry picked from commit f8a2bc3eee)

Nathan Harold   commited 2018-01-29 11:19:43 -08:00
583c95be3b
Add TunnelInterface API and KernelResourceRecords
This change adds one KernelResourceRecord type (TunnelInterfaceRecord),
and adds methods for the creation of TunnelInterfaces, as well as the
application of Transforms to the given TunnelInterfaces

As part of the generation of ikeys/okeys, a ReserveKeyTracker manages a
java bitset to avoid collisions and reserve/release keys.

Bug: 63588681
Test: Compiles, CTS, unit tests all pass on AOSP_marlin
Change-Id: I9e9b6455e27073acd4491eae666aa966b3b10e0f

Benedict Wong   commited 2018-01-24 07:24:27 +00:00
145b425fac
Let network requests see VPNs.
Test: runtest frameworks-net
Test: also tested with VPN app
Test: also cts passing
Change-Id: I3b16caad7787c3c1f2921ca1583815c89efbadc5

Chalard Jean   commited 2018-01-23 21:38:00 +09:00
fd3a4ae0fe
Move constants into a new file.
Also audit all constants, make some private, annotate some
with @VisibleForTesting.

Test: runtest framework && cts
Change-Id: Iaf5ea7abd36fd8d544dcc84654f6cb529196d654

Chalard Jean   commited 2018-01-23 21:38:00 +09:00
3a6b34c989
Remove UID_RANGES_ADDED and REMOVED.
Test: runtest frameworks-net
Test: also tested with VPN app
Test: also cts passing
Change-Id: I3530030996daeba05a8f2fffc5c6e21ed62e3f40

Chalard Jean   commited 2018-01-23 21:38:00 +09:00
b2a4991781
Merge changes Id8776d14,Ifa291c62,I5ea9d200
* changes:
  Track and persist in stats whether traffic is on the default network.
  Add the default network to NetworkStats and NetworkStatsCollection.
  Pass all default networks to NetworkStatsService

Treehugger Robot   authored and   Gerrit Code Review   commited 2018-01-19 14:48:52 +00:00
5087f93c36
Pass all default networks to NetworkStatsService
This will allow NetworkStatsService to treat traffic on these
networks differently from traffic where the app selects a network
that is not the default.

Bug: 35142602
Test: runtest frameworks-net
Change-Id: I5ea9d200d9fb153490c6108bb9390bf152f297da

Lorenzo Colitti   commited 2018-01-19 16:40:10 +09:00
2486188d7b
Add ability to override subscriber capabilities.
In a future set of CLs, NPMS will offer to override a handful of
capabilities on a per-subId basis.  Define a no-op version of the
interface to make it easier to add new methods in the future.

Test: bit FrameworksNetTests:android.net.,com.android.server.net.
Test: bit FrameworksTelephonyTests:com.android.internal.telephony.dataconnection.DataConnectionTest
Bug: 64133169
Change-Id: I03dfd98463861f0338c4174e8d8a88c300ea5b55

Jeff Sharkey   commited 2018-01-18 14:46:13 -07:00
0f2738ecb0
Add basic resolution of Private DNS hostname
Test: as follows
    - built
    - flashed
    - booted
Bug: 34953048
Bug: 64133961
Change-Id: I0a2289ea51a9294352c91d2ead23730d9b0333a5

Erik Kline   commited 2018-01-17 23:17:08 +09:00
31b4a9ef0c
Merge changes I0d0c0fac,Ifb9b00b6
* changes:
  Split updateCapabilities into two methods.
  More strictly check NetworkCapabilities callbacks.

Treehugger Robot   authored and   Gerrit Code Review   commited 2018-01-16 14:25:13 +00:00
3fbfac269b
Split updateCapabilities into two methods.
This makes the code a bit easier to follow.

Test: ConnectivityServiceTest continues to pass
Change-Id: I0d0c0facc1e3ba07b53542b35da40ddc096ff92e

Lorenzo Colitti   commited 2018-01-16 21:25:10 +09:00
46f96cb694
Merge "ConnectivityService: synchronize access on mLockdownEnabled"
Hugo Benichi   authored and   Gerrit Code Review   commited 2018-01-16 00:20:52 +00:00
dca465ab21
change NMS removeNetwork to netd binder variant
Also: require NETWORK_STACK instead of CONNECTIVITY_INTERNAL.

Bug: 34953048
Bug: 64133961
Test: as follows
    - built
    - flashed
    - booted
    - runtest frameworks-net
Change-Id: I26f07f51a8a2f4a8bb43a276da7c5e66c355c848

Erik Kline   commited 2018-01-15 19:51:37 +09:00
454b42eced
Extract DNS setting logic into DnsManager class
In future, managing DNS-over-TLS hostname lookup and netd programming
can be encapsulated here.

Test: as follows
    - built
    - flashed
    - booted
    - runtest frameworks-net passes
Bug: 64133961
Change-Id: I47ccfa99c30c780524c45c4af605e720ccba34a0

Erik Kline   commited 2018-01-11 18:16:50 +09:00
3212008036
ConnectivityService: synchronize access on mLockdownEnabled
The mLockdownEnabled boolean and the mLockdownTracker objects are read
and mutated in many places involving vpn logic inside of
ConnectivityService. This includes codepaths run on the
ConnectivityService handler and codepaths run on Binder calls from
IConnectivityManager.aidl, however the access to these variables are not
synchronized.

This patch adds proper synchronization to mLockdownEnabled and
mLockdownTracker by moving access to them into the mVpns lock used for
all of vpn logic.

Bug: 18331877
Test: runtest frameworks-net
Change-Id: I4abde43b1036861f4486dd2b5567782d10204bd6

Hugo Benichi   commited 2017-12-13 09:54:38 +09:00
7a480f3f67
Merge "Match network roaming state to avoid wtf()."
am: cd797a5069

Change-Id: I6796d37e4458ef4da16d16f4c0f2bdd495007515

Jeff Sharkey   authored and   android-build-merger   commited 2017-12-05 01:11:53 +00:00
5f948c9bc1
Match network roaming state to avoid wtf().
Test: sure
Bug: 70174865
Change-Id: I02faef05e3fb918c3c023fb2fdd1886d45cc8c71
Exempt-From-Owner-Approval: P0 bug

Jeff Sharkey   commited 2017-12-04 15:52:54 -07:00
58330a79bb
Merge "IP connectivity metrics: fix LINGER/UNLINGER logging"
am: 9632d1eef4

Change-Id: I6f10845788ba5558637703da6d8c5c41324935cc

Hugo Benichi   authored and   android-build-merger   commited 2017-11-15 22:42:50 +00:00
2c939b0d7a
Merge commit '98e12851336b7db16e583f9afac63ecc97465980' from
oc-mr1-dev-plus-aosp-without-vendor into stage-aosp-master.

Change-Id: Ia7b8da4a00d215160e4a4fa40f6044208d1297b7
Merged-In: I19846d2a3ee27aecbae2367a74ee49082eea154d

Xin Li   commited 2017-11-14 12:31:11 -08:00
acae66beee
IP connectivity metrics: fix LINGER/UNLINGER logging
This patch fixes a regression introduced by commit d5c11bbb65
for logging NetworkEvents when lingering and unlingering a network.

Commit d5c11bbb65 removed an overloaded constructor for the
NetworkEvent class, which caused NetworkEvents with event type of
LINGER or UNLINGER logged in ConnectivityService to have incorrect
event types (set to the network id instead) and incorrect duration
(set as the event type instead).

Bug: 34901696
Test: runtest frameworks-net
Change-Id: Iab97a58ca805413617c8e8b4553404625a820ceb

Hugo Benichi   commited 2017-11-14 22:34:38 +09:00
2efffd7c77
Merge "DefaultNetworkEvent metrics: rehaul"
Hugo Benichi   authored and   Gerrit Code Review   commited 2017-11-06 07:09:49 +00:00
addecd1491
DefaultNetworkEvent metrics: rehaul
This patch changes instrumentation of default networks and default
network events:
- stop logging events for default network transitions,
  but instead consistently log one event per continuous segment
  when one given network was the default, including logging an
  event for when there is no default network.
- keep a separate rolling buffer of DefaultNetworkEvent for
  dumpsys and bug reports.

These changes allow to simplify post aggregation of default network
event metrics by removing any need to do time series processing.
Instead, metrics and counters can be implemented withouth any ambiguity
by following the recipe:

% of x = sum(duration | x = true) / sum (all durations)

where x can be various conditions such as:
- the default network was validated
- the default network was WiFi
- the default network was IPv6
- there was no default network
- ...

Most importantly, this new logging scheme allows to measure much more
reliably:
- the % of the time that a device had Internet, in the sense that the
default network was validated.
- the time transitions between default networks, keyed by previous and
new transports/link layer, which allows to derive wakelock durations
and wakelock power costs from default network switches.

This patch also simplifies the dumpsys interface of the connmetrics
service and reduces the commands to three:
- "flush" for metrics upload.
- "proto" for printing buffered event in text proto format.
- "list" for listing all events and statistics.

Bug: 34901696
Bug: 65700460
Test: runtest frameworks-net
Change-Id: I0521f1681a60cca07ac3bfd5741d64ce44de4cdd

Hugo Benichi   commited 2017-11-06 09:04:02 +09:00
f123c85f29
Define NOT_ROAMING network capability.
The "roaming" state of a network really belongs on NetworkCapabilities
instead of being published through NetworkInfo.isRoaming().  One major
reason is to support developers creating NetworkRequests for a
non-roaming network.

Watch for any capability changes that network statistics are
interested in (either metered or roaming) and notify it to perform
an update pass; fixes bug where we previously only triggered on
roaming changes.

Fix bug in VPNs where metered/roaming capabilities of underlying
networks weren't being propagated; this was probably preventing
some jobs from running over unmetered networks, and causing other
jobs to run over roaming networks!  Also passes along link bandwidth
information from underlying networks, and propegates any changes
to underlying networks.

Fix race condition by reading prevNc inside lock.  Utility methods
correctly calculate min/max link bandwidth values.

Test: bit FrameworksNetTests:android.net.,com.android.server.net.,com.android.server.connectivity.,com.android.server.ConnectivityServiceTest
Bug: 68397798, 16207332
Change-Id: I3e1a6544c902bf3a79356b72d3616af1fd2b0f49

Jeff Sharkey   commited 2017-11-01 19:05:42 -06:00
07e19362de
Extract logging of default network events
This patch extracts the logging of DefaultNetworkEvent from inside
ConnectivityService and move it to a new DefaultNetworkMetrics class.

The DefaultNetworkMetrics is a singleton owned by the
IpConnectivityMetrics singleton implementing the metrics service for
core networking. ConnectivityService has access to this singleton via
LocalServices.

This class layout will allow to remove the Parcelable interface of
DefaultNetworkEvent and will instead let the IpConnectivityMetrics
service grab metrics from the DefaultNetworkMetrics directly.

Bug: 34901696
Test: runtest frameworks-net
Change-Id: I55694d89124272732aba114198776462372de18b

Hugo Benichi   commited 2017-10-25 12:36:29 +09:00
cd8d58c405
Merge "Delete the legacy framework code for manipulating ND offload." am: 3c0bf71eee am: fc56002707
am: bb21618a86

Change-Id: I07d9753e214af311d3dcab6f8016442f60388700

Lorenzo Colitti   authored and   android-build-merger   commited 2017-09-27 11:05:29 +00:00
f384a58f79
Merge "Delete the legacy framework code for manipulating ND offload."
Lorenzo Colitti   authored and   Gerrit Code Review   commited 2017-09-27 10:46:36 +00:00
3c0bf71eee
Merge "Adds necessary permissions to system apis"
Jean Chalard   authored and   Gerrit Code Review   commited 2017-09-27 09:50:42 +00:00
efb7b861d3
Merge "Declare support for Ethernet if the service is running." am: 21fcca6818 am: 5b906e1d11
am: a6648cc90b

Change-Id: Iafd9807ab76ce4e4ab1fd506d7b0e2b2b7017751

Lorenzo Colitti   authored and   android-build-merger   commited 2017-09-27 08:51:51 +00:00
d6cc68dab4
Delete the legacy framework code for manipulating ND offload.
This only worked on broadcom devices, and was superseded in
M by a wifi HAL call made by IpManager.

Test: bullhead builds, boots
Change-Id: I711cae7dafe171c2c8b4e84a229adbcad27f3d14

Lorenzo Colitti   commited 2017-09-27 16:47:36 +09:00
19d4cd99f5
Declare support for Ethernet if the service is running.
On some devices, support for TYPE_ETHERNET is not specified in
the networkAttributes config resource, even though the device is
capable of supporting Ethernet (e.g., via USB host adapters).
This leads to Ethernet working but various connectivity APIs
behaving as if it was not - for example, no CONNECTIVITY_ACTION
broadcasts will be issues when it connects or disconnects.

Ensure that ConnectivityService always treats Ethernet as
available if the service is running. Currently the service is
started if the device supports FEATURE_ETHERNET or
FEATURE_USB_HOST.

Bug: 37359230
Test: bullhead builds, boots
Test: ConnectivityServiceTest passes
Test: Ethernet is available even if removed from networkAttributes resource
Test: ConnectivityManagerTest CTS test passes
Change-Id: I58801bf4f0bbdc3ff6345ec6bfdc911ce045c8ab

Lorenzo Colitti   commited 2017-09-27 13:03:10 +09:00
23e9afc702
Adds necessary permissions to system apis
adds privileged permission for getCaptivePortalServerUrl
adds tether privileged permission for
startTethering,isTetheringSupported

bug:62348162

Test: make and manual testing
Change-Id: I8eb8e3c9dcd7201abe9ea303ee57fe99073d67eb

Udam Saini   authored and   Chalard Jean   commited 2017-09-27 12:14:37 +09:00
b4f31a2f56
Merge "Implement ConnectivityService TODO and fix many race conditions" am: 864746862b am: a25440dfc8
am: 287c334379

Change-Id: Ia59d45f4e95a536d7982f61ac9c9a1bfc5e8ebb8

Hugo Benichi   authored and   android-build-merger   commited 2017-09-21 12:21:04 +00:00
bff2599c5c
Merge "Also support 464xlat on SUSPENDED networks" am: 995a28d334 am: 698b2ee406
am: 1347ac8109

Change-Id: I83ae39a2e36bc036dce419c80dd476d2358b4537

Erik Kline   authored and   android-build-merger   commited 2017-09-21 12:06:05 +00:00
0bbe489393
Merge "Implement ConnectivityService TODO and fix many race conditions"
Hugo Benichi   authored and   Gerrit Code Review   commited 2017-09-21 12:00:48 +00:00
864746862b
Implement ConnectivityService TODO and fix many race conditions
This patch implements an outstanding TODO in ConnectivityService to add
synchronization over the map of network request ids to network agent
info objects.

This structure is accessed from multiple threads:
 - Binder thread on public aidl methods, most notably via
   getDefaultNetwork().
 - Internal handler.

This leads to many race conditions that can crash the system server and
reboot the phone if getDefaultNetwork() is called on a Binder thread to
service a public ConnectivityManager api while the default network state
is being updated on the internal handler after losing the default
network.

Bug: 65911184
Test: runtest frameworks-net
Change-Id: I86c830ebd559e31d4576a7606705a056afb064ac

Hugo Benichi   commited 2017-09-21 18:50:27 +09:00
53e6fd54e6
Also support 464xlat on SUSPENDED networks
Test: as follows
    - built
    - flashed
    - booted
    - runtest frameworks-net passes
Bug: 65684232

Change-Id: I1b10aab01554b1f926ec7157dba78645fdaff90f

Erik Kline   commited 2017-09-21 18:06:29 +09:00
0b01b0f191
Merge changes from topic "always-on-vpn"
* changes:
  Opt-out for always-on VPN: rename API.
  Opt-out for always-on VPN

Charles He   authored and   Gerrit Code Review   commited 2017-09-19 07:50:13 +00:00
65e8bd2e04
Merge changes I4719b4dc,I0308cdf4,I38db1bb7 am: e5090f2547 am: 1cbdfb6460
am: b025492a6b

Change-Id: I5385a3747e039a42e86034f7632edd0f855b2eb1

Hugo Benichi   authored and   android-build-merger   commited 2017-09-14 18:11:06 +00:00
46510068bc
Merge changes I4719b4dc,I0308cdf4,I38db1bb7
* changes:
  IpManagerTest: fix flaky test
  Fix flaky NsdManagerTest
  Boostrap test for NetworkMonitor

Hugo Benichi   authored and   Gerrit Code Review   commited 2017-09-14 11:59:58 +00:00
e5090f2547
Merge "Refactor CompareResult<> class and its call sites" am: 414e97272f am: 027607ce4d
am: c345562746

Change-Id: I850f2ceab5949c2fceba5d25eda639a319efa7b3

Rubin Xu   authored and   android-build-merger   commited 2017-09-14 10:13:40 +00:00
3c737b4acc
Merge "Refactor CompareResult<> class and its call sites"
Rubin Xu   authored and   Gerrit Code Review   commited 2017-09-13 09:35:04 +00:00
414e97272f
Boostrap test for NetworkMonitor
This will finally allow to write captive portal detection unit tests.

Bug: 32561414
Bug: 62918393
Test: runtest frameworks-net
Change-Id: I38db1bb79ae80a82b4199dc9cb1b56257e0cf222

Hugo Benichi   commited 2017-09-13 16:21:50 +09:00
454d55d822
Merge "Patch incoming LinkProperties before it's visible to the outside" am: 7b625191e2 am: 2f36b7afbb
am: 2cf8f74180

Change-Id: Ic82526773116db3b80449cb0241a1f80934b3d55

Rubin Xu   authored and   android-build-merger   commited 2017-09-12 11:34:55 +00:00
74af26095c
Patch incoming LinkProperties before it's visible to the outside
Otherwise we risk a race condition when we are fixing the LinkProperties
routes, other parts of ConnectivityService is reading the field at the
same time.

Test: runtest frameworks-net -c com.android.server.ConnectivityServiceTest
Test: runtest frameworks-core -c android.net.LinkPropertiesTest
Bug: 65529483
Bug: 35995111
Change-Id: I539578703570a901e0a5dff0155422ca78c52401

Rubin Xu   commited 2017-09-12 10:18:58 +01:00
efc3c4a547
Refactor CompareResult<> class and its call sites
Move all corner case logic from call sites to CompareResult's implementation,
add a constructor to directly do the comparison.

Test: runtest frameworks-core -c android.net.LinkPropertiesTest
Change-Id: I95bba82ec38d295b18c49c025dffab5f17271cbd

Rubin Xu   commited 2017-09-08 13:27:58 +01:00
2fa7d9e5cc
Opt-out for always-on VPN
Always-on VPN is a feature introduced in N. Since then, all VPN apps
targeting N+ are assumed to support the feature, and the user or the DPC
can turn on / off always-on for any such VPN app. However, a few VPN
apps are not designed to support the always-on feature. Enabling
always-on for these apps will result in undefined behavior and confusing
"Always-on VPN disconnected" notification.

This feature provides a new manifest meta-data field through which a VPN
app can opt out of the always-on feature explicitly. This will stop the
always-on feature from being enabled for the app, both by the user and
by the DPC, and will clear its existing always-on state.

A @hide API is provided to check whether an app supports always-on VPN.
Documentation is updated to reflect the behavior change.

Bug: 36650087
Test: runtest --path java/com/android/server/connectivity/VpnTest.java
Test: cts-tradefed run cts --module CtsDevicePolicyManagerTestCases --test 'com.android.cts.devicepolicy.MixedDeviceOwnerTest#testAlwaysOnVpnUnsupportedPackage'
Test: cts-tradefed run cts --module CtsDevicePolicyManagerTestCases --test 'com.android.cts.devicepolicy.MixedDeviceOwnerTest#testAlwaysOnVpnUnsupportedPackageReplaced'
Test: cts-tradefed run cts --module CtsDevicePolicyManagerTestCases --test 'com.android.cts.devicepolicy.MixedProfileOwnerTest#testAlwaysOnVpnUnsupportedPackage'
Test: cts-tradefed run cts --module CtsDevicePolicyManagerTestCases --test 'com.android.cts.devicepolicy.MixedProfileOwnerTest#testAlwaysOnVpnUnsupportedPackageReplaced'
Test: cts-tradefed run cts --module CtsDevicePolicyManagerTestCases --test 'com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testAlwaysOnVpnUnsupportedPackage'
Test: cts-tradefed run cts --module CtsDevicePolicyManagerTestCases --test 'com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testAlwaysOnVpnUnsupportedPackageReplaced'

Change-Id: I477897a29175e3994d4ecf8ec546e26043c90f13
Merged-In: I477897a29175e3994d4ecf8ec546e26043c90f13
(cherry picked from commit 9369e61e2d)

Charles He   commited 2017-09-08 10:18:36 +01:00
738a0a48ab
Merge "Always add local subnet routes to the interface's routing table" am: 609dd56140 am: 4bb100dcd0
am: e3469a426e

Change-Id: I21f4231c968b37cdcf1565279eedfb990dbc583b

Rubin Xu   authored and   android-build-merger   commited 2017-09-07 12:55:58 +00:00
af3207c188
Merge "Always add local subnet routes to the interface's routing table"
Rubin Xu   authored and   Gerrit Code Review   commited 2017-09-07 12:12:09 +00:00
609dd56140
Always add local subnet routes to the interface's routing table
For some networks such as mobile data connections, its LinkProperties
does not contain routes for the local subnet so no such route is added
to the interface's routing table. This can be problematic especially
if the device is in VPN lockdown mode where there exists high-priority
PROHIBIT routing rule which in turn blocks the network's default gateway
route from being added (next hop address hitting the prohibit rule).

We fix this by patching LinkProperties to always include direct connected routes
when they are received by ConnectivityService. This has the added advantage that
when apps get LinkProperties, they see the directly connected routes as well.

Bug: 63662962
Test: runtest frameworks-core -c android.net.LinkPropertiesTest
Test: runtest frameworks-services -c com.android.server.ConnectivityServiceTest
Test: Start with device with mobile data, set up ics-OpenVPN in always-on
      lockdown mode. Turn off mobile data then turn it back on, observe
      mobile data connectivity is restored and VPN successfully reconnects.
Change-Id: I35b614eebccfd22c4a5270f40256f9be1e25abfb

Rubin Xu   commited 2017-09-07 10:50:20 +01:00
ffd77d8f29