Commit Graph

3580 Commits

Author SHA1 Message Date
Lorenzo Colitti
cf2fd880a6 resolve merge conflicts of edb6946bd119 to oc-dev-plus-aosp
Test: make -j64 framework services
Change-Id: Ia87be346703637ebcb88bcf39d7e8c3c71db44ab
2017-04-10 16:13:56 +09:00
Hugo Benichi
96135ee591 Merge "DO NOT MERGE IP connectivity metrics: fix tests." am: b2adaad26b -s ours am: f294973f6c -s ours
am: dde60ac16d  -s ours

Change-Id: Ib31248616d75fdb30f2230d8fed0ee577a71d116
2017-04-10 06:01:57 +00:00
Treehugger Robot
fb3f834fe4 Merge "Add an API hint for metered multipath traffic." 2017-04-10 05:40:10 +00:00
Hugo Benichi
d317e27d06 DO NOT MERGE IP connectivity metrics: fix tests.
This patch fixes mismatch between current proto compiler and what is
expected in several IP connectivity metrics unit tests.

Test: built, flashed, $ runtest frameworks-net
Bug: 37126521
Change-Id: I1476c923d61f748ecac1146423127f54ba117502
2017-04-10 13:19:23 +09:00
Hugo Benichi
b70e45b0bb Merge "ConnectivityService: safer locking" am: cc1f0815ef am: b960ee662c
am: f0928412b0

Change-Id: If83fae5f70cb2e253a4107591f43d9ce2d648006
2017-04-07 02:37:44 +00:00
Hugo Benichi
cc1f0815ef Merge "ConnectivityService: safer locking" 2017-04-07 02:10:45 +00:00
Sudheer Shanka
89fb28dc5d Merge "ConnectivityService: safer locking" into oc-dev
am: 6120db5990

Change-Id: I1c22edc7a247d83d860e7016fe7edab1537c5bb7
2017-04-06 20:07:00 +00:00
Hugo Benichi
e9a35d868a ConnectivityService: safer locking
This path changes a dangerous lock path in reportNetworkConnectivity().
This methods is called outside of the main ConnectivityService handler
and takes a lock on a specific NetworkAgentInfo whose connectivity
status is being reported.

While this lock is held, reportNetworkConnectivity() goes on and query
the network policy state for that network, which may ends into
NetworkPolicyManagerService.

Instead, the lock on NetworkAgentInfo is only held long enough to make a
copy of LinkProperties, which is then passed to
NetworkPolicyManagerService without that lock.

Bug: 36902662
Test: could not repro b/36902662, reportNetworkConnectivity() works.
      $ runtest frameworks-net

Change-Id: Iac4b75bcecbdddb0ac695c8b1a87ae755f62f47f
2017-04-06 11:50:09 -07:00
Hugo Benichi
ccdfe89c2f ConnectivityService: safer locking
This path changes a dangerous lock path in reportNetworkConnectivity().
This methods is called outside of the main ConnectivityService handler
and takes a lock on a specific NetworkAgentInfo whose connectivity
status is being reported.

While this lock is held, reportNetworkConnectivity() goes on and query
the network policy state for that network, which may ends into
NetworkPolicyManagerService.

Instead, the lock on NetworkAgentInfo is only held long enough to make a
copy of LinkProperties, which is then passed to
NetworkPolicyManagerService without that lock.

Bug: 36902662
Test: could not repro b/36902662, reportNetworkConnectivity() works.
      $ runtest frameworks-net

Change-Id: Iac4b75bcecbdddb0ac695c8b1a87ae755f62f47f
2017-04-06 17:23:28 +09:00
Lorenzo Colitti
d03b80891d Add an API hint for metered multipath traffic.
This allows an application that knows how to provide seamless
network connectivity (e.g., using QUIC multipath) to find out if
doing so is desired.

(cherry picked from commit 231efb08b7)

Test: builds, boots, runtest frameworks-net passes.
Bug: 34630278
Change-Id: Ic7fd0b9e1cd879fdfaf84009d7125391895e9087
2017-04-06 16:50:06 +09:00
Hugo Benichi
32a25bae8f Merge "Move back networking policy logic into NetworkPolicyManagerService" into oc-dev
am: 18c5fab9c8

Change-Id: I7d7b66cc1dc6888ea28e2b4d83d570fa440c29f2
2017-04-04 00:58:02 +00:00
Hugo Benichi
18c5fab9c8 Merge "Move back networking policy logic into NetworkPolicyManagerService" into oc-dev 2017-04-04 00:50:24 +00:00
Lorenzo Colitti
b255aa1bb3 Merge "Add test coverage for NetworkSpecifiers." am: dfc4442b38 am: 7e3a5daee4
am: 8ee38521bc

Change-Id: Ia7d36096f0e3f0b203d1d838043c03fcd1cea829
2017-04-03 10:59:17 +00:00
Lorenzo Colitti
7e3a5daee4 Merge "Add test coverage for NetworkSpecifiers."
am: dfc4442b38

Change-Id: Ia328b945af4c4f55ef560b33b00fa861b8f81b0d
2017-04-03 10:45:22 +00:00
Treehugger Robot
dfc4442b38 Merge "Add test coverage for NetworkSpecifiers." 2017-04-03 10:37:01 +00:00
Hugo Benichi
21f3caf409 Merge "ConnectivityService: simplify WakeLock management" am: 82d6ba7331 am: 36113ed38c
am: 56ca1705d6

Change-Id: Iacc2e977c1eec2ebc9deb9395e1f77a62b57f070
2017-04-03 09:17:18 +00:00
Hugo Benichi
36113ed38c Merge "ConnectivityService: simplify WakeLock management"
am: 82d6ba7331

Change-Id: I1e0ae930cd7a329febf21ff3fc83ad2d0a3be69b
2017-04-03 09:03:13 +00:00
Hugo Benichi
82d6ba7331 Merge "ConnectivityService: simplify WakeLock management" 2017-04-03 08:56:24 +00:00
Lorenzo Colitti
5b72d6d850 Add test coverage for NetworkSpecifiers.
Tests various combinations of empty / non-empty NetworkSpecifiers
and changing specifiers on the fly.

Test: ConnectivityServiceTest passes
Bug: 27533960
Change-Id: Ibd6b4efc861dc51689e46f3882ba859223411bf0
2017-04-03 17:46:35 +09:00
Jeff Sharkey
ed1dff0016 Consistent dump() permission checking.
am: 5815e5b538

Change-Id: I300f8bc07e1266b9e78f56d085cd458862176a85
2017-04-03 06:19:02 +00:00
Jeff Sharkey
5815e5b538 Consistent dump() permission checking.
This change introduces new methods on DumpUtils that can check if the
caller has DUMP and/or PACKAGE_USAGE_STATS access.  It then moves all
existing dump() methods to use these checks so that we emit
consistent error messages.

Test: cts-tradefed run commandAndExit cts-dev -m CtsSecurityTestCases -t android.security.cts.ServicePermissionsTest
Bug: 32806790
Change-Id: Iaff6b9506818ee082b1e169c89ebe1001b3bfeca
2017-04-02 22:29:07 -06:00
Hugo Benichi
27e6058e54 Merge "ConnectivityService: log wakelock activity in dumps" am: 2dbfd3fe41 am: 7b0e9d0263
am: bf1b181c63

Change-Id: Id4c980a2a1ef7f51b6a06c7c8636160437e99b84
2017-04-03 00:00:19 +00:00
Hugo Benichi
58aab55bdf ConnectivityService: simplify WakeLock management
This patch simplifies wakelock management by acknowledging that only one
acquisition at most is in flight at any time. This allows to remove the
serial number associated with wakelock acquisition and to avoid double
release when regaining a default network.

Example of $ adb shell dumpsys connectivity logs:
  NetTransition WakeLock activity (most recent first):
    03-31 00:15:13.816 - RELEASE (EVENT_CLEAR_NET_TRANSITION_WAKELOCK)
    03-31 00:14:59.216 - ACQUIRE for NetworkAgentInfo [WIFI () - 101]
    03-31 00:09:05.799 - RELEASE (EVENT_EXPIRE_NET_TRANSITION_WAKELOCK)
    03-31 00:08:05.738 - ACQUIRE for NetworkAgentInfo [WIFI () - 100]

Test: watched wakelock section $ adb shell dumpsys connectivity while
      turning on and off Wifi (with no other network).
Bug: 36703718
Change-Id: I899b0816c0e41b3991d9540e9b9a604914ff673a
2017-04-03 08:54:54 +09:00
Hugo Benichi
7b0e9d0263 Merge "ConnectivityService: log wakelock activity in dumps"
am: 2dbfd3fe41

Change-Id: If08e0088ab25f1494aaf3a339a38e7a8e343d910
2017-04-02 23:47:15 +00:00
Hugo Benichi
2dbfd3fe41 Merge "ConnectivityService: log wakelock activity in dumps" 2017-04-02 23:40:27 +00:00
Chris Wren
24b85a07e9 Merge "move network notification IDs to central registry" into oc-dev
am: fb54aee325

Change-Id: I0abcea4b9fe43e5c08885413e0f9a419b87b7206
2017-04-01 16:23:25 +00:00
Chris Wren
b56dc53847 move network notification IDs to central registry
Bug: 36808999
Test: make
Change-Id: I34bafa9ce69fc6913a6b4a5935cafd8979d0193b
2017-03-31 14:02:23 -04:00
Hugo Benichi
0a28d30e93 Move back networking policy logic into NetworkPolicyManagerService
This patch removes from ConnectivityService the logic involved in
deciding if a uid has access to networking based on networking policies.

This logic is moved into NetworkPolicyManagerService which is the source
of truth with regards to the state of networking policie, both for
existing networks and uids.

Instead ConnectivityService directly queries NetworkPolicyManagerService
in a synchronous fashion for a specific uid or a (uid, network) pair.

This eliminates the need to keep a copy of the uid policy rules inside
ConnectivityService and ensures that ConnectivityService takes
networking decisions based on the correct state of networking policies,
and therefore eliminates certain data races in ConnectivityManager API
that applications are exposed to.

Test: $ runtest frameworks-net
      $ runtest -x frameworks/base/services/tests/../NetworkPolicyManagerServiceTest.java
      $ runtest -c com.android.server.net.ConnOnActivityStartTest frameworks-services
Bug: 32069544, 30919851
Change-Id: Ic75d4f7a8853e6be20e51262c4b59805ec35093a
2017-03-31 13:28:45 +09:00
Hugo Benichi
23ec1c9338 ConnectivityService: log wakelock activity in dumps
This patch adds wakelock acquire and release activity to
ConnectivityService logs in dumpsys. All of the last 20 acquire and
release operations are logged.

This patch also:
  - does a bit of cleanup to related dumpsys logs
  - unify pretty printing of internal event ids to their names.
  - delete mInetLog which was obsolete and not used.

Example of logs:
  NetTransition WakeLock activity (most recent first):
    03-30 02:15:40.628 - RELEASE 1 by EVENT_EXPIRE_NET_TRANSITION_WAKELOCK: not released (serial number was 2)
    03-30 02:15:09.965 - ACQUIRE 2 for NetworkAgentInfo [WIFI () - 101]
    03-30 02:15:01.877 - RELEASE 1 by EVENT_CLEAR_NET_TRANSITION_WAKELOCK: released
    03-30 02:14:40.598 - ACQUIRE 1 for NetworkAgentInfo [WIFI () - 100]

Test: inspected result of $ adb shell dumpsys connectivity
Bug: 36703718
Change-Id: Ia8e2016fc512ee798ef0adc3f612d1f6c33d4870
2017-03-31 08:59:59 +09:00
Robin Lee
a2e8ad5dbb resolve merge conflicts of 943187668c44 to oc-dev-plus-aosp
Test: make -j30
Test: runtest -x tests/net/java/com/android/server/ConnectivityServiceTest.java
Test: runtest -x tests/net/java/com/android/server/connectivity/VpnTest.java
Change-Id: Ib87cdb96626cd7625e15bec5e4afab12920405e9
2017-03-30 17:39:56 +01:00
Robin Lee
017e2bf3f8 Merge "Move some VPN logic out of ConnectivityService"
am: 0ce38796bd

Change-Id: I212c2d6de1676ab65e6bbf34148d66e183d60c62
2017-03-30 16:08:50 +00:00
Robin Lee
0ce38796bd Merge "Move some VPN logic out of ConnectivityService" 2017-03-30 16:00:41 +00:00
Lorenzo Colitti
725386186f resolve merge conflicts of 6c3cd4449517 to oc-dev-plus-aosp
Test: make -j64 framework services FrameworksNetTests
Change-Id: Ib828e56b271cd983ef325e366418ca8db9774628
2017-03-28 23:49:11 +09:00
Lorenzo Colitti
73d1aa0bdd Merge changes If94102c7,I8d51e8e0
am: 22b829c049

Change-Id: I8aa529a05fc40241ec9664775ca0ebd8960098a8
2017-03-28 12:33:28 +00:00
Lorenzo Colitti
756a02232b Make ConnectivityServiceTest pass on wifi-only devices.
Test: ConnectivityServiceTest passes on ryu on internal master
Test: ConnectivityServiceTest passes on bullhead
Change-Id: If94102c7df0257ea9e69e72b07a685ae3c2c4022
2017-03-28 12:53:06 +09:00
Lorenzo Colitti
e7f4a225b4 Restore the net.dnsX system properties.
In order to avoid app breakage, we are putting back the system
properties and using selinux to disallow access from apps
targeting the O SDK or above.

This CL is cherry-picked from internal commit
aefac392ea, but with a different
commit description.

Bug: 33308258
Bug: 33807046
Bug: 34028616
Bug: 34115651
Test: system properties are readable as root and shell
Change-Id: I8d51e8e0a620d581c4251fb2f3c1d0a813b929be
2017-03-28 06:55:01 +09:00
Robin Lee
fe0bb6b248 Move some VPN logic out of ConnectivityService
This cleanup helps declutter ConnectivityService, and encapsulates the
always-on setting inside of Vpn instead of spreading it across two
classes.

In particular having the save code in one file and the load code in
another file was weird and I apologise for that.

Added a SystemServices wrapper for Settings.Secure and PendingIntent
calls to decouple some of the global state nastiness and make it
testable without forcing ConnectivityService to drive the load/save.

Test: runtest -x tests/net/java/com/android/server/ConnectivityServiceTest.java
Test: runtest -x tests/net/java/com/android/server/connectivity/VpnTest.java
Bug: 33159037
Change-Id: Ie2adb1c377adfcef0a5900dc866e6118f451b265
2017-03-27 13:40:51 +01:00
TreeHugger Robot
5da64fe275 Merge "Fix NetworkNotificationManagerTest" 2017-03-23 06:25:38 +00:00
Hugo Benichi
913556e68e Fix NetworkNotificationManagerTest
The testNotificationsShownAndCleared test was not doing anything
because the list of notification to show was always empty.

This patch fixes this issue and actually makes the test loop on
non-empty collections, and also fixes another ordering issue in
assertions themselves, hidden until now by the first issue.

Test: runtest -x frameworks/base/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java
Change-Id: I4837b1175d7c9133e9156e33acaa1e7e3341cc62
2017-03-23 12:32:27 +09:00
TreeHugger Robot
186373109a Merge "Connectivity metrics: add transports to validation probes" 2017-03-21 04:22:40 +00:00
TreeHugger Robot
6f774a42eb Merge changes I8bfabcb1,I563a6a31
* changes:
  Connectivity metrics: change how interface names are logged
  Connectivity metrics: serialize networkId, transports, ifname
2017-03-21 02:59:20 +00:00
Hugo Benichi
f5c09ce0e6 Connectivity metrics: add transports to validation probes
This patch adds transports info to ValidationProbeEvent and migrates
netId logging for this event to the topt-level netId field in
ConnectivityMetricsEvent.

Test: modified unit tests. $ runtest frameworks-net passes
Bug: 3490169
Change-Id: Ibf51049ba8901ae5ca4ea86e2f500944a4738b5c
2017-03-21 11:43:18 +09:00
Hugo Benichi
d03ff4e363 Connectivity metrics: change how interface names are logged
This patch deprecates the ifname field for specific metrics events of
types DhcpClientEvent, DhcpErrorEvent, IpReachabilityEvent and
IpManagerEvent.

Instead ifnames are logged in ConnectivityMetricsEvent, allowing for
link layer inference.

Test: updated unit tests, $ runtest frameworks-net passes
Bug: 34901696
Change-Id: I8bfabcb115bbd5289471d653c153a40bb48f28cd
2017-03-21 10:18:56 +09:00
Hugo Benichi
9ee5e7a0a0 Connectivity metrics: serialize networkId, transports, ifname
This patch adds translation from ConnectivityMetricsEvent to
IpConnectivityEvent of recently added fields:
 - top-level network id
 - top-level ifname
 - transports

Also adds inference of link layer from transports or ifname.

At the moment these new fields are not populated in
ConnectivityMetricsEvent. Follow-up patches will fill this gap for
the events of the android.net.metrics package.

Test: new unit tests, $ runtest frameworks-net passes
Bug: 34901696
Change-Id: I563a6a3183470bdfaabb7c781a1beaf6b1058bf0
2017-03-21 10:18:11 +09:00
Jeremy Klein
946349711d Merge "In isTetheringSupported, call isAdmin user from system." am: 4a8953094f am: cbb748ead3
am: 0b8756e735

Change-Id: I76d02e97382c0332e3d93383d60e8e7fc9951a08
2017-03-21 00:10:46 +00:00
Jeremy Klein
cbb748ead3 Merge "In isTetheringSupported, call isAdmin user from system."
am: 4a8953094f

Change-Id: Ibefe655ed377c55322d871e02d87c0d001327da8
2017-03-20 23:58:09 +00:00
Jeremy Klein
a380d3f60b In isTetheringSupported, call isAdmin user from system.
This avoids requiring the MANAGE_USERS permission in this function.

Bug: 32671528
Test: Manual. Also seeking unit test guidance from reviewer.
Change-Id: I841e721013b0e4b6db34d629a1e97b3cd54cd73b
2017-03-20 15:02:30 -07:00
TreeHugger Robot
f6b939b076 Merge "ConnectivityMetricsEvent: add ifname, netid, transports" 2017-03-16 02:50:23 +00:00
Hugo Benichi
4781b3c93c ConnectivityMetricsEvent: add ifname, netid, transports
This patch adds new fields to ConnectivityMetricsEvent to make it more
symmetric to IpConnectivityEvent in ipconnectivity.proto.

Follow-up patches will start populating these fields for users of
IpConnectivityLog.

Test: unit tests updated, $ runtest frameworks-net passes
Bug: 34901696
Change-Id: I396767cdfcf38cce893c0d6e1f4524f12e3fdc64
2017-03-16 09:58:02 +09:00
Hugo Benichi
8e4bbe7aca Merge "Connectivity metrics: simplify ConnectivityMetricsEvent" 2017-03-16 00:37:47 +00:00