Commit Graph

278 Commits

Author SHA1 Message Date
Lorenzo Colitti
349667d173 Merge "Trivial change to test expectations." into oc-mr1-dev am: 9487f80cc5
am: 06e3e912b2

Change-Id: I335fdb5f3053569036608300f8a324a840517cde
2017-08-24 11:17:28 +00:00
Lorenzo Colitti
0fee732ca5 Trivial change to test expectations.
Bug: 32163131
Test: runtest frameworks-net
Change-Id: Iea41c2b50502797f559afd09ded8cedf50dd7c05
2017-08-24 12:43:38 +09:00
Erik Kline
7c5c7cc570 Merge "Send add/removeDownstream info to offload HAL" into oc-mr1-dev am: 568cd41216
am: 7559e2d2b2

Change-Id: I7abcdcc2d7d967179c47081a6db2b417164891f3
2017-08-24 01:44:31 +00:00
Erik Kline
ed962a8412 Send add/removeDownstream info to offload HAL
Test: as follows
    - built
    - flashed
    - booted
    - "runtest frameworks-net" passed
Bug: 29337859
Bug: 32163131

Change-Id: I6c59aa7cb80b54f376f294b24c1409710c553d74
2017-08-23 15:18:37 -07:00
Lorenzo Colitti
c7a8394ab1 Merge "Don't completely stop offload if setting data limit fails." into oc-mr1-dev am: 9b601f2066
am: 331f8a98df

Change-Id: I464dd2a6d1996b1cfb8bbf82b6ee453fd0747569
2017-08-23 06:05:09 +00:00
Lorenzo Colitti
9b601f2066 Merge "Don't completely stop offload if setting data limit fails." into oc-mr1-dev 2017-08-23 05:46:34 +00:00
Lorenzo Colitti
96ae2a0694 Merge "Tethering offload stats updates are eventually consistent" into oc-mr1-dev am: 45fb339d83
am: e3aeae68f3

Change-Id: I999d1d1bf72e7ab02c5d17f37aad00bc711d3fc5
2017-08-22 22:38:06 +00:00
Hugo Benichi
eb5e465edd Tethering offload stats updates are eventually consistent
This patch removes the call to runWithScissors() in
OffloadController#getTetherStats() that was causing a deadlock when
NetworkStatsService would be polled for stats in certain threading
contexts.

Instead of trying to query the tethering offload HAL synchronously all
the time, this patch:
 - changes getTetherStats() to only call into the offload HAL when it
   detects that it is called on the same thread as the Tethering handler
   thread.
 - changes the map of interface to accumulated tethering forwarded stats
   to be concurrent.

This makes stats reading from getTetherStats() eventually consistent.
From the point of view of getTetherStats(), it preserves the guarantees
that tethering stats are monotonically increasing, and also guarantees
no tearing between rx bytes and tx bytes.

Bug: 29337859
Bug: 32163131
Bug: 64771555
Test: runtest frameworks-net
Change-Id: Ibcd351ad0225ef146b00a807833f76d2a886f6c1
2017-08-22 19:31:31 +09:00
Lorenzo Colitti
d743601a00 Don't completely stop offload if setting data limit fails.
Currently, if setting a data limit fails, we completely stop
offload in order to avoid data overages. However, the next thing
we do is try to fetch the stats and crash, because once offload
is stopped all our local state is cleared.

Fix this by fetching stats before we stop offload.

Bug: 29337859
Bug: 32163131
Bug: 64867836
Test: OffloadControllerTest passes
Test: no crash when disabling wifi tethering with BT tethering active
Change-Id: I260f5450f8b67f055983af68fb23a5f3cfc0bc69
2017-08-22 18:09:02 +09:00
Lorenzo Colitti
203c935d74 Merge "Add tether offload traffic to interface stats as well." into oc-mr1-dev am: 21bc3a39a4
am: 1af850fdfe

Change-Id: I2b586b84c44126e1d3b9097950a41decaa5216cc
2017-08-19 01:12:35 +00:00
Lorenzo Colitti
5356a35c3b Add tether offload traffic to interface stats as well.
Currently, we only count add tethering traffic to per-UID
stats, but not to total data usage (i.e., dev and XT stats). This
is correct for software tethering, because all software forwarded
packets are already included in interface counters, but it is
incorrect for hardware offload, because such packets do not
increment interface counters.

To fix this:
1. Add an argument to ITetheringStatsProvider#getTetherStats to
   indicate whether per-UID stats are requested. For clarity,
   define integer constants STATS_PER_IFACE and STATS_PER_UID
   to represent these operations.
2. Make NetdTetheringStatsProvider return stats only if per-UID
   stats are requested. (Otherwise tethering traffic would be
   double-counted).
3. Make OffloadController's stats provider return the same
   stats regardless of whether per-UID stats were requested or
   not.
4. Make NetworkStatsService add non-per-UID tethering stats to
   the dev and XT snapshots. The per-UID snapshots were already
   correctly adding in per-UID stats.

Bug: 29337859
Bug: 32163131
Test: runtest frameworks-net
Test: runtest frameworks-telephony
Change-Id: I7a4d04ab47694d754874136179f8edad71099638
2017-08-19 00:21:56 +09:00
Lorenzo Colitti
8a977784bb Merge "Tell the system when tethering offload hits a limit." into oc-mr1-dev am: c3e7f875b4
am: 9515b36ffa

Change-Id: I2b5027ed54d0847da00dbb749adfb446cb7d784d
2017-08-17 09:29:43 +00:00
TreeHugger Robot
c3e7f875b4 Merge "Tell the system when tethering offload hits a limit." into oc-mr1-dev 2017-08-17 09:06:57 +00:00
Charles He
478b2b7cbf Merge "Opt-out for always-on VPN: rename API." into oc-mr1-dev am: 8b2513e439
am: 337ee0771e

Change-Id: Ib4eca8d5ea79e5ac65496bee8390e5ce4cd8fb64
2017-08-17 08:12:56 +00:00
Charles He
8b2513e439 Merge "Opt-out for always-on VPN: rename API." into oc-mr1-dev 2017-08-17 07:54:05 +00:00
Lorenzo Colitti
d66cf56ba6 Tell the system when tethering offload hits a limit.
Add a new tetherLimitReached method to INetworkManagementService,
and call it when the HAL notifies OffloadController because the
limit has been reached.

Bug: 29337859
Bug: 32163131
Test: builds
Test: OffloadControllerTest passes
Change-Id: I0304e555544ee18c83244672766c767cbad650a1
2017-08-17 15:33:18 +09:00
Charles He
1af40a942b Merge "Unbreak VPN unit tests." 2017-08-16 19:05:49 +00:00
Charles He
3da6a1fc82 Unbreak VPN unit tests.
VpnTest was broken earlier due to a change to always-on VPN
notifications. This CL adds the corresponding mocks to the unit test to
fix it.

Bug: 36650087
Test: runtest frameworks-net
Change-Id: Icff57c7e927c135d75a7d70ff347a579c5d45134
2017-08-16 13:14:13 +01:00
Charles He
c57a01c166 Opt-out for always-on VPN: rename API.
Rename the opt-out flag in AndroidManifest to
SERVICE_META_DATA_SUPPORTS_ALWAYS_ON
as directed by the API Council.

Bug: 64331776
Bug: 36650087
Test: runtest --path java/com/android/server/connectivity/VpnTest.java
Change-Id: I24326fad7a89083a2409134640bda81ee0359d08
2017-08-15 15:52:39 +01:00
Lorenzo Colitti
62801ec2b7 Pass data usage limits to tethering offload code.
(cherry picked from commit 50b60fc34d)

Bug: 29337859
Bug: 32163131
Test: builds
Test: OffloadControllerTest passes
Change-Id: Ifbd1e8d9057aa12b956e3b4501c32aa6bcf420bd
2017-08-15 12:12:04 +09:00
Lorenzo Colitti
8c0d16cfa6 Merge changes I82d3bee0,I9c9413d7 am: deb4eb5d05 am: 51c3d6a8bf am: 0cf31d4d6d am: 20fa45e3a9
am: d14c177136

Change-Id: I100ba259bcebf0ed0b9192ed32a038457d2a2283
2017-08-15 02:52:22 +00:00
Lorenzo Colitti
d14c177136 Merge changes I82d3bee0,I9c9413d7 am: deb4eb5d05 am: 51c3d6a8bf am: 0cf31d4d6d
am: 20fa45e3a9

Change-Id: I5d700c9818a89ba3eaab8a34bb799ae7145dbd28
2017-08-15 02:34:30 +00:00
Lorenzo Colitti
20fa45e3a9 Merge changes I82d3bee0,I9c9413d7 am: deb4eb5d05 am: 51c3d6a8bf
am: 0cf31d4d6d

Change-Id: I759ed9a79b6ebfa2ae6143167c0dd7d0ad84c67f
2017-08-15 02:25:36 +00:00
Lorenzo Colitti
0cf31d4d6d Merge changes I82d3bee0,I9c9413d7 am: deb4eb5d05
am: 51c3d6a8bf

Change-Id: Ie7e8806faecdad96b4033404709fb3aebc4bdd0f
2017-08-15 02:16:18 +00:00
Lorenzo Colitti
51c3d6a8bf Merge changes I82d3bee0,I9c9413d7
am: deb4eb5d05

Change-Id: Iaa6aecf3ec3a91dc04f4533c0ea5b649bdfeb83d
2017-08-15 02:07:36 +00:00
Lorenzo Colitti
deb4eb5d05 Merge changes I82d3bee0,I9c9413d7
* changes:
  Pass data usage limits to tethering offload code.
  Don't time out when fetching tether offload stats.
2017-08-15 01:57:28 +00:00
Lorenzo Colitti
50b60fc34d Pass data usage limits to tethering offload code.
Bug: 29337859
Bug: 32163131
Test: builds
Test: OffloadControllerTest passes
Change-Id: I82d3bee030bafa8fe85855885b5fc3893e699181
2017-08-15 00:09:23 +09:00
Alexandru-Andrei Rotaru
5469504e6b Notify the user and turn off tethering when the service is disallowed.
Added UserRestrinctionListener for turning the service off one the
DISALLOW_CONFIG_TETHERING is on into Tethering.  Added notification
about
tethering being turned off. Also added Unit Tests to test the
functionality
of the UserRestrictionListener added.

Bug: 27936525
Test: Turn the tehering service on (either wifi, usb or bluetooth).
Automatically the system should send a notification about the service
being active.Close settings from recents. From TestDPC User Restrictions
switch on DISALLOW_CONFIG_TETHERING. The tethering should be turned off
and a notification should appear informing that the service is inactive.

Merged-In: Ib7ea8885cedc2a842ebd4487c8b366a6666996bc
Change-Id: Ib7ea8885cedc2a842ebd4487c8b366a6666996bc
(cherry picked from commit fa6d5c5ca0)
2017-08-03 13:51:36 +00:00
Treehugger Robot
5027dd1026 Merge "Notify the user and turn off tethering when the service is disallowed." 2017-08-03 10:29:55 +00:00
TreeHugger Robot
be09d8d39b Merge "Notify the user and turn off tethering when the service is disallowed." 2017-08-02 09:13:31 +00:00
Hugo Benichi
b704e7aa75 Merge "NetworkNotificationManager: correctly handle existing notifications" into oc-dr1-dev
am: a03bf7acd1

Change-Id: I4ca3dcc293be5408a6f207e1ac1a7229a915723a
2017-07-28 04:39:14 +00:00
Hugo Benichi
3cff783a05 NetworkNotificationManager: correctly handle existing notifications
This patch corrects a regression added by commit fb2609d3ee that did
not take into account the case of multiple notifications shown for a
single network id. Given how network notifications are triggered, it can
happen that NO_INTERNET and SIGN_IN notifications are both triggered for
the same network when captive portal detection is slow.

Contrary to the situation before commit fb2609d3ee, a notification
priority order is introduced so that SIGN_IN always overrides
NO_INTERNET, and NO_INTERNET is ignored if SIGN_IN is already present.

Bug: 63676954
Bug: 62503737
Test: runtest frameworks-net, added new unit tests
Merged-In: Ib8658601e8d4dc6c41b335ab7dd8caa0cccd9531
Merged-In: I4432f66067ea1ab02e1d2dfe42530bcdafa52df6
Merged-In: I74631b0bfd14daf18a1641ed7f2ec323d636ebbf
Merged-In: I73cc879e910d503946facdba498b300337f349fd
Merged-In: Ieed9e3e7755e0c5f89dc41ef66f47d4dbf4c66a9
Merged-In: I0aa590170f1bd4c37175c7e35e54d52f1fb21347

(cherry picked from commit 5fcd050e0e)

Change-Id: I41675768ab59e9b23ca4275edf297b82595e5730
2017-07-28 09:17:20 +09:00
Hugo Benichi
2b3e495224 Merge "NetworkNotificationManager: correctly handle existing notifications" am: 3451fb6156 am: ef7d6d93c3 am: 5cbf7e2dc8
am: 1609fe7fe3

Change-Id: Ieed9e3e7755e0c5f89dc41ef66f47d4dbf4c66a9
2017-07-27 15:08:19 +00:00
Hugo Benichi
1609fe7fe3 Merge "NetworkNotificationManager: correctly handle existing notifications" am: 3451fb6156 am: ef7d6d93c3
am: 5cbf7e2dc8

Change-Id: I73cc879e910d503946facdba498b300337f349fd
2017-07-27 14:58:32 +00:00
Hugo Benichi
5cbf7e2dc8 Merge "NetworkNotificationManager: correctly handle existing notifications" am: 3451fb6156
am: ef7d6d93c3

Change-Id: I74631b0bfd14daf18a1641ed7f2ec323d636ebbf
2017-07-27 14:50:14 +00:00
Hugo Benichi
ef7d6d93c3 Merge "NetworkNotificationManager: correctly handle existing notifications"
am: 3451fb6156

Change-Id: I4432f66067ea1ab02e1d2dfe42530bcdafa52df6
2017-07-27 14:43:48 +00:00
Hugo Benichi
5fcd050e0e NetworkNotificationManager: correctly handle existing notifications
This patch corrects a regression added by commit fb2609d3ee that did
not take into account the case of multiple notifications shown for a
single network id. Given how network notifications are triggered, it can
happen that NO_INTERNET and SIGN_IN notifications are both triggered for
the same network when captive portal detection is slow.

Contrary to the situation before commit fb2609d3ee, a notification
priority order is introduced so that SIGN_IN always overrides
NO_INTERNET, and NO_INTERNET is ignored if SIGN_IN is already present.

Bug: 63676954
Bug: 62503737
Test: runtest frameworks-net, added new unit tests
Change-Id: Ib8658601e8d4dc6c41b335ab7dd8caa0cccd9531
2017-07-27 21:20:20 +09:00
Lorenzo Colitti
6a5fe34edf resolve merge conflicts of a1d67fb38e to stage-aosp-master
am: 8228eb3446

Change-Id: Ic9ba31da8e5281c9dbc8fa7ff56a63956a495b72
2017-07-18 23:37:57 +00:00
Lorenzo Colitti
8228eb3446 resolve merge conflicts of a1d67fb38e to stage-aosp-master
Test: make -j64 services
Change-Id: I3955b01189993f3051c608bc5d07a87e4e3b5f0b
Merged-In: Ic1e799c17b4bb0272cf85e03d5ad14981a55defa
2017-07-19 07:35:31 +09:00
Charles He
fa9c0be357 Merge "Opt-out for always-on VPN" 2017-07-18 18:47:45 +00:00
Alexandru-Andrei Rotaru
f8f3fbbd01 Notify the user and turn off tethering when the service is disallowed.
Added UserRestrinctionListener for turning the service off one the
DISALLOW_CONFIG_TETHERING is on into Tethering.  Added notification about
tethering being turned off. Also added Unit Tests to test the functionality
of the UserRestrictionListener added.

Bug: 27936525
Merged-In: Ib7ea8885cedc2a842ebd4487c8b366a6666996bc
Test: Turn the tehering service on (either wifi, usb or bluetooth).
Automatically the system should send a notification about the service
being active.Close settings from recents. From TestDPC User Restrictions
switch on DISALLOW_CONFIG_TETHERING. The tethering should be turned off
and a notification should appear informing that the service is inactive.

Change-Id: Ib7ea8885cedc2a842ebd4487c8b366a6666996bc
2017-07-18 16:33:05 +00:00
Lorenzo Colitti
4ca0ba8f86 Fetch tethering offload stats.
Make tethering offload register an ITetheringStatsProvider and
fetch tethering stats from the hardware.

Currently we fetch stats in the following cases:

1. Just after changing upstreams, we fetch stats from the
   previous upstream.
2. When we are polled by NetworkStatsService.

(cherry-picked from commit 5a7dea1a8e)

Bug: 29337859
Bug: 32163131
Test: builds, boots
Test: stats appear in tethering logs
Change-Id: If744f2e06cb6a3095a40199936b9afb76eff7b56
Merged-In: If744f2e06cb6a3095a40199936b9afb76eff7b56
2017-07-19 00:55:37 +09:00
Alexandru-Andrei Rotaru
fa6d5c5ca0 Notify the user and turn off tethering when the service is disallowed.
Added UserRestrinctionListener for turning the service off one the
DISALLOW_CONFIG_TETHERING is on into Tethering.  Added notification
about
tethering being turned off. Also added Unit Tests to test the
functionality
of the UserRestrictionListener added.

Bug: 27936525
Test: Turn the tehering service on (either wifi, usb or bluetooth).
Automatically the system should send a notification about the service
being active.Close settings from recents. From TestDPC User Restrictions
switch on DISALLOW_CONFIG_TETHERING. The tethering should be turned off
and a notification should appear informing that the service is inactive.

Change-Id: Ib7ea8885cedc2a842ebd4487c8b366a6666996bc
2017-07-18 16:49:31 +01:00
Hugo Benichi
822c5bf778 IP connectivity metrics: fix tests after proto update
Update to ipconnectivity.proto in commit
6d2f506bfd broke the associated unit
tests (Change-Id: I4cf5b95956df721aecd63fddfb026a7266c190b9)

Bug: 34901696
Test: runtest frameworks-net
Change-Id: I57a6bad8a9836b1c45690c4589b416786ce1dfa0
2017-07-18 14:33:12 +09:00
Charles He
3673863f3b 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
2017-07-18 00:55:38 +01:00
Lorenzo Colitti
5a7dea1a8e Fetch tethering offload stats.
Make tethering offload register an ITetheringStatsProvider and
fetch tethering stats from the hardware.

Currently we fetch stats in the following cases:

1. Just after changing upstreams, we fetch stats from the
   previous upstream.
2. When we are polled by NetworkStatsService.

Bug: 29337859
Bug: 32163131
Test: builds, boots
Test: stats appear in tethering logs
Change-Id: If744f2e06cb6a3095a40199936b9afb76eff7b56
2017-07-13 23:54:51 +09:00
Erik Kline
17a62281e4 Merge "Program offload-exempt local prefixes into the HAL" am: de837a97aa
am: ae21b89414

Change-Id: If96a33f26fed64a84219868d28765b7581ad453d
2017-07-13 09:07:01 +00:00
Erik Kline
ae21b89414 Merge "Program offload-exempt local prefixes into the HAL"
am: de837a97aa

Change-Id: I741b6e31fb3adc922f47df824188786ff35e3aa9
2017-07-13 09:00:56 +00:00
Erik Kline
5acb4e3b62 Program offload-exempt local prefixes into the HAL
Test: as follows
    - built
    - flashed
    - booted
    - "runtest frameworks-net" passes
    - observed calls to the HAL setLocalPrefixes in tethering log
Bug: 29337859
Bug: 32163131
Merged-In: I3c3bd4ee83ffe86ddbe6a16fbbfa0756bf5064d4
Merged-In: Iaf80e584df458010741401fc1a19e7f6e21923c1
Merged-In: Ifaf23c6179ead9de6ccfcf41e0c203025153167b
(cherry picked from commit 32179ff815)

Change-Id: I65ea833ac6fe7a75ebe546cfa358c4cffdf2de05
2017-07-13 16:43:34 +09:00
Erik Kline
32179ff815 Program offload-exempt local prefixes into the HAL
Additionally:
    - move mOffloadController into MasterTetherSM

Test: as follows
    - built
    - flashed
    - booted
    - "runtest frameworks-net" passes
    - observed calls to the HAL setLocalPrefixes in tethering log
Bug: 29337859
Bug: 32163131
Change-Id: Ifaf23c6179ead9de6ccfcf41e0c203025153167b
2017-07-13 13:45:49 +09:00