Commit graph android_packages_modules_Co.../services/core/java
Message SHA1
Disable always-on VPN in factoryReset
When network setting reset is started while always-on VPN is enabled,
application crash occurs with IllegalStateException in prepareVpn().

Therefore, it's necessary to also disable always-on VPN in factoryReset
before prepareVpn() when turning off VPN.

Bug: 29030858
Change-Id: I08c5406717dd7937d197c2e934a56d037477aafc

Koichi, Sugimoto   authored and   Robin Lee   commited 2017-01-18 10:02:58 +00:00
d1a32ad120
Merge \"Fix unsafe concurrent access in LegacyTypeTracker\"
am: a575de0de8

Change-Id: I928b2c6ef8e20e197425c214242287185a9daa06

Hugo Benichi   authored and   android-build-merger   commited 2016-07-12 13:15:41 +00:00
40efcef1c6
Fix unsafe concurrent access in LegacyTypeTracker
This patch adds synchronization inside LegacyTypeTracker so that
getNetworkForType() can safely run concurrently with remove().

Without synchronization if remove() removes the last network for a
given type while getNetworkForType() runs for the same type, it is
possible that getNetworkForType tries to access the head of an empty
list, resulting in a runtime exception.

This issue was found by zoran.jovanovic@sonymobile.com who proposed a
fix in AOSP (Change-Id: Ia963662edb9d643790e8d9439e4dbdcac4c2187b).

This patch differs from the fix proposed by the bug reporter and tries
instead to do the minimum amount of locking to make getNetworkForType
safe.

Bug: 29030387

(cherry picked from commit 9c807fdcd4)

Change-Id: I915aac527fc8828b32bf35fee870add2dfb11d8d

Hugo Benichi   authored and   Lorenzo Colitti   commited 2016-07-12 21:56:40 +09:00
4e99811dc2
Merge \"Ignore system apps on enforceMeteredApnPolicy().\" into nyc-dev
am: fa2715e03b

Change-Id: I98440b2ae3371661ed8b1b2f29b0ba18e1b6e6c3

Felipe Leme   authored and   android-build-merger   commited 2016-06-21 19:59:53 +00:00
c65d475906
Ignore system apps on enforceMeteredApnPolicy().
BUG: 29514913
Fixes: 29448383
Change-Id: I19eb004c937e1c872bbf82caa7a919e43d48a259

Felipe Leme   commited 2016-06-20 17:15:46 -07:00
ff76014fe8
Merge \"Move \'is already always-on\' check into Vpn.java\" into nyc-dev
am: 6a58c98cef

Change-Id: Id363cef8369d63ce4739089d94139e34ed25f665

Robin Lee   authored and   android-build-merger   commited 2016-06-16 10:10:23 +00:00
b4f3bf969d
Merge "Move 'is already always-on' check into Vpn.java" into nyc-dev
Robin Lee   authored and   Android (Google) Code Review   commited 2016-06-16 10:06:11 +00:00
6a58c98cef
Move 'is already always-on' check into Vpn.java
It's with the rest of the logic now and allows checking whether the
lockdown state matches, too, which led to a lot of misunderstandings.

Fix: 29199431
Change-Id: I94a2c38c4837f9c33b5b9c2becb52eeb7e2a2534

Robin Lee   commited 2016-06-14 13:24:17 +00:00
a4325d282c
Merge \"Show sign-in to network notification to all users, not just owner.\" into nyc-dev
am: 634bd0eb4e

Change-Id: Ic8f99cb7c7fa7ed1f40c73342840f82c56f9f90f

Paul Jensen   authored and   android-build-merger   commited 2016-06-14 11:16:15 +00:00
601f877903
Merge "Show sign-in to network notification to all users, not just owner." into nyc-dev
Paul Jensen   authored and   Android (Google) Code Review   commited 2016-06-14 11:05:32 +00:00
634bd0eb4e
Show sign-in to network notification to all users, not just owner.
All users should be made aware a captive portal is in place and be
given the opportunity to sign into the network.  Without this fix
other users are not notified and given a chance to sign-in.

Change-Id: I1bf823d5f6a36f391dca4be5f6a584e8562a72a7
Fixes: 23079964

Paul Jensen   commited 2016-06-13 09:39:28 -04:00
efffb79661
Merge \"Package changed/removed listeners for always-on VPN\" into nyc-dev
am: ee5e4cc836

Change-Id: Idd2e019feb73bd580aa7d8baba03c27083e26b02

Robin Lee   authored and   android-build-merger   commited 2016-06-08 10:50:43 +00:00
f187518b18
Package changed/removed listeners for always-on VPN
Fix 2 problems of always-on vpn after always-on package is removed
1. Prevent network being locked down (blocking all network traffic)
   Otherwise, user has no way to download the vpn app from Play Store,
   and never be able to gain control of the network again.
2. Allow user to connect other vpn app.

Implementation
1. Switch off always-on mode if the package gets removed.
2. Restart always-on mode if the package gets replaced/upgraded.

Bug: 29050764
Change-Id: Id3e389ae0b11c6002a5167919292d9634c2014cb

Robin Lee   commited 2016-06-06 15:42:50 +00:00
2073a5c734
Merge "Include network name in validation logs for dumpsys" into nyc-dev
am: daef5224d1

* commit 'daef5224d1':
  Include network name in validation logs for dumpsys

Change-Id: I157481d338e65d7e89e4f97382f84ab2a3110e20

Paul Jensen   authored and   android-build-merger   commited 2016-06-06 11:23:57 +00:00
1980eacf27
Merge "Include network name in validation logs for dumpsys" into nyc-dev
Paul Jensen   authored and   Android (Google) Code Review   commited 2016-06-06 11:08:45 +00:00
daef5224d1
Merge "Fix that fail to setup any vpn after Network Settings reset and always-on vpn is on" into nyc-dev
am: 265f4113ee

* commit '265f4113ee42e89f324b087a81044a9f1dab457e':
  Fix that fail to setup any vpn after Network Settings reset and always-on vpn is on

Change-Id: Iba3df72496f067c5e0291449be3bfbd9ce2031ff

Victor Chang   authored and   android-build-merger   commited 2016-06-06 10:33:00 +00:00
2360356d70
Include network name in validation logs for dumpsys
Previously this was included in the log messages from NetworkMonitor
but that has been removed (ag/944107), making it frequently impossible
to know what network the logs apply to as there may be no way to
correlate NetIDs to WiFi SSIDs or Cellular networks if the log has wrapped.

Bug: 26075613
Change-Id: I2e3cd41fffb616ab9f855cb16790360bd3414793

Paul Jensen   commited 2016-06-03 13:51:21 -04:00
72b24b1b5b
Fix that fail to setup any vpn after Network Settings reset and always-on vpn is on
Cause: It revoked the user consent of the vpn app without reseting always-on vpn.
In addition, prepareVpn sets legacy vpn as the current package, the state in
Vpn.class is broken, as it thought the current always-on package is legacy vpn,
(mAlwaysOn is only for app vpn, not for legacy vpn). As a result, prepareVpn rejects
all VpnService.prepare.

Bug: 29031820
Change-Id: Id6bf1d6f38cf134a872811806301b8a602fb5725

Victor Chang   commited 2016-06-03 17:14:32 +01:00
4754f8d47f
Merge "Return legacy VPN info regardless of lockdown mode" into nyc-dev
am: ca9615bb20

* commit 'ca9615bb20':
  Return legacy VPN info regardless of lockdown mode

Change-Id: I89c0784d5edae3c7ef9f8ec1c6ee4f823dbbae02

Robin Lee   authored and   android-build-merger   commited 2016-05-25 21:20:43 +00:00
b8a5f360e3
Merge "Return legacy VPN info regardless of lockdown mode" into nyc-dev
Robin Lee   authored and   Android (Google) Code Review   commited 2016-05-25 21:05:55 +00:00
ca9615bb20
Merge "Fix default network transition event recording" into nyc-dev
am: 3cd6a8b85d

* commit '3cd6a8b85d':
  Fix default network transition event recording

Change-Id: Ic6ae9cd2620b1793f53667eb7d84c0b6f56d716e

Hugo Benichi   authored and   android-build-merger   commited 2016-05-25 03:31:34 +00:00
86d587563a
Merge "Fix default network transition event recording" into nyc-dev
Hugo Benichi   authored and   Android (Google) Code Review   commited 2016-05-25 03:22:32 +00:00
3cd6a8b85d
Fix default network transition event recording
When disconnecting from a default network X and falling back on another
connected network Y as the new default, ConnectivityService was
attempting to record this event as a X -> Y "atomic" transition.

In practice the default network connectivity is actually lost and
recovering default network takes some non-zero time.

This patch changes the event recording to always record disconnection as
X -> 0 events. At the same time, if there is a fallback network that is
elected as the new default ConnectivityService will also record a 0 -> Y
event.

This patch also improves pretty-printing of DefaultNetworkEvent.

Extract from $ adb shell dumpsys connectivity_metrics_logger --events
17:51:00.086: DefaultNetworkEvent(0 -> 100:CELLULAR)
17:51:25.232: DefaultNetworkEvent(100:IPv4 -> 101:WIFI) # wifi goes on
17:51:44.064: DefaultNetworkEvent(101:DUAL -> 0)        # wifi goes off
17:51:44.187: DefaultNetworkEvent(0 -> 100:CELLULAR)

Bug: 28204408
Change-Id: I63252633235bf6ba833b9ac431a80dda75a93e67

Hugo Benichi   commited 2016-05-25 10:03:38 +09:00
3f34b66e47
Merge "Fixed enforceMeteredApnPolicy when Data Saver is on." into nyc-dev
am: efd3a1749f

* commit 'efd3a1749f2737199643cc29bea6132a9786223b':
  Fixed enforceMeteredApnPolicy when Data Saver is on.

Change-Id: I87b596346c058c7ac8efbebb67b43664f1be0fed

Felipe Leme   authored and   android-build-merger   commited 2016-05-24 18:13:16 +00:00
1411952a68
Fixed enforceMeteredApnPolicy when Data Saver is on.
When enforceMeteredApnPolicy() is called when Data Saver mode is on and
the caller's UID is not whitelisted, it should add a
NET_CAPABILITY_NOT_METERED to the capabilities.

Change-Id: Ieed4f4a7634ee023ec58c91859263655e0ba62d4
Fixes: 28608499 (and https://code.google.com/p/android/issues/detail?id=208478)

Felipe Leme   commited 2016-05-23 09:43:53 -07:00
35631e00c9
Merge "Lock down networking when waiting for always-on" into nyc-dev
am: 1540a79a8b

* commit '1540a79a8b':
  Lock down networking when waiting for always-on

Change-Id: I7be0a85597936421750d1da0fde3d55d7d4fabc5

Robin Lee   authored and   android-build-merger   commited 2016-05-18 23:42:43 +00:00
198d6cf688
Merge "Lock down networking when waiting for always-on" into nyc-dev
Robin Lee   authored and   Android (Google) Code Review   commited 2016-05-18 23:37:24 +00:00
1540a79a8b
Lock down networking when waiting for always-on
Fix: 26694104
Fix: 27042309
Fix: 28335277
Change-Id: I47a4c9d2b98235195b1356af3dabf7235870e4fa

Robin Lee   commited 2016-05-19 00:26:53 +01:00
48bf4ec223
Merge "Added a onRestrictBackgroundBlacklistChanged() callback." into nyc-dev
am: 54bc88cdbc

* commit '54bc88cdbc':
  Added a onRestrictBackgroundBlacklistChanged() callback.

Change-Id: I4e19dd2828b8b67fc7b2d2173d77a82d67d53d19

Felipe Leme   authored and   android-build-merger   commited 2016-05-17 18:43:43 +00:00
b6b7b81ae0
Return legacy VPN info regardless of lockdown mode
This stops Settings from telling the user detailed information, and
doesn't really protect anything secret -- privileged apps can already
tell that there's an active VPN by looking at network info.

Change-Id: I9c2a3cab6dff1b62e94a9e0735dccde226fd26a3
Fix: 28624328

Robin Lee   commited 2016-05-17 14:31:52 +01:00
08b036aebd
Added a onRestrictBackgroundBlacklistChanged() callback.
When an UID is added / removed to the Data Saver blacklist, it's
necessary to notify internal components such as the Settings UI (which
was erroneously listening to UID rules changes instead).

BUG: 28743623
BUG: 28791717

Change-Id: I11c85e141dfe074ad390fd324309d2412bfbbd45

Felipe Leme   commited 2016-05-16 13:30:57 -07:00
81fb728ce4
Merge "Fixed connectivity state in some power saving scenarios." into nyc-dev
am: 942ee1159f

* commit '942ee1159f':
  Fixed connectivity state in some power saving scenarios.

Change-Id: I7ebe3864657d2147034ffae400312e94deb5ef35

Felipe Leme   authored and   android-build-merger   commited 2016-05-13 17:23:24 +00:00
6f582ae1d4
Fixed connectivity state in some power saving scenarios.
NetworkPolicyManagerService (NPMS) manages 4 type of network restriction
when apps are running on background:

- Data Saver Mode (data usage restriction on metered-networks)
- Battery Saver Mode (power restriction on all networks)
- Doze Mode (power restriction on all networks)
- App Idle (power restriction on all networks)

These restrictions affects 2 parts of the system:

- Internal framework state on NPMS which is propagated to other internal
  classes.
- External firewall rules (managed by netd).

Although each of the power-related restrictions have their own external firewall
rules, internally apps are whitelisted to them through the same
whitelist, and the current code is only updating the internal state (and
notifying the internal listeners) when Battery Saver Mode is on.

As a consequence of this problem, there are scenarios where an app
correctly does not have internet access (because the firewall rules are
properly set), but the NetworkInfo state returns the wrong state (like
CONNECTED / CONNECTED).

This CL fixes this problem by splitting the power-related logic from
updateRulesForRestrictBackgroundLocked() into its own
method (updateRulesForPowerRestrictionsLocked()), and making sure such
method is called whenever the firewall rules are updated.

Externally to this change, the CTS tests were also improved to verify
the apps get the proper connection state; it can be verified by running:

cts-tradefed run commandAndExit cts -m CtsHostsideNetworkTests \
    -t com.android.cts.net.HostsideRestrictBackgroundNetworkTests

BUG: 28521946
Change-Id: Id5187eb7a59c549ef30e2b17627ae2d734afa789

Felipe Leme   commited 2016-05-12 12:33:23 -07:00
35bfb4616b
Merge "Fixed connectivity state in some restricted network scenarios." into nyc-dev
am: 638a6e8140

* commit '638a6e8140a22a0ddb5d5dacb02173795073bd1a':
  Fixed connectivity state in some restricted network scenarios.

Change-Id: I0fd66b16c83680940f294ea8e117443ffd8a50cd

Felipe Leme   authored and   android-build-merger   commited 2016-05-06 23:38:59 +00:00
f39d22efcf
Fixed connectivity state in some restricted network scenarios.
NetworkPolicyManagerService (NMPS) keeps an internal list of uid
rules (mUidRules) for network restrictions, and when these rules
changes it needs to notify external listeners (such as
ConnectivityService / CS).

Prior to Android N, both Data Saver mode (the feature previously known
as "Restrict Baground Data") and Battery Save mode used the same set of
firewall rules to implement their restrictions: when Battery Saver mode
NPMS would mark all networks as metered and set the proper firewall
rules externally.

Recently, these 2 modes were split in 2 distinct firewall rules and
NMPS.updateRuleForRestrictBackgroundLocked() was changed to update
the mUidRules logic based on the Data Saver firewall (since the Battery
Saver firewall changes are handled externally, on
updateRuleForRestrictPowerLocked()). As such, CS was not notified when
the power-related changes were made, which would cause apps to get a
state of CONNECTED / CONNECTED when querying its active connection.

Another scenario that is not properly handled is when a UID whitelisted
for Data Saver is brought back to foreground: although the proper
firewall rules are set, CS is not notified, and the apps state would be
DISCONNECTED / BLOCKED.

This CL introduces many changes that fix this issue:

- Fixed updateRuleForRestrictBackgroundLocked() to invoke
  onUidRulesChanged() when the Battery Saver status changed.
- Fixed updateRuleForRestrictBackgroundLocked() to invoke
  onUidRulesChanged() when an app whitelisted for Data Saver is brought
  back to the foreground.
- Added a new API (onRestrictPowerChanged() and getRestrictPower())
  to notify external services about Battery Saver mode changes.
- Fixed CS logic to properly handle the Battery Saver changes.

Externally to this change, the CTS tests were also improved to verify
the apps get the proper connection state; they can be verified running:

cts-tradefed run commandAndExit cts -m CtsHostsideNetworkTests \
    -t com.android.cts.net.HostsideRestrictBackgroundNetworkTests

BUG: 28521946

Change-Id: I8eaccd39968eb4b8c6b34f462fbc541e5daf55f1

Felipe Leme   commited 2016-05-06 14:53:50 -07:00
b414e6f2a3
Merge "Refactored NetworkPolicyManagerService mUidRules." into nyc-dev
am: de66540fd3

* commit 'de66540fd3f73937c3cfbe1d50e575aa69acc474':
  Refactored NetworkPolicyManagerService mUidRules.

Change-Id: I25d2520eafcf8c45b80b94908a3b5bfa04315f76

Felipe Leme   authored and   android-build-merger   commited 2016-05-06 21:53:39 +00:00
de4c468267
Refactored NetworkPolicyManagerService mUidRules.
NetworkPolicyManagerService (NMPS) keeps an internal list of uid
rules (mUidRules) for network restrictions, and when these rules
changes it needs to notify external listeners (such as
ConnectivityService / CS).

Prior to Android N, both Data Saver mode (the feature previously known
as "Restrict Baground Data") and Battery Save mode used the same set of
firewall rules to implement their restrictions: when Battery Saver mode
NPMS would mark all networks as metered and set the proper firewall
rules externally.

Recently, these 2 modes were split in 2 distinct firewall rules and
NMPS.updateRuleForRestrictBackgroundLocked() was changed to update
the mUidRules logic based on the Data Saver firewall (since the Battery
Saver firewall changes are handled externally, on
updateRuleForRestrictPowerLocked()). As such, CS was not notified when
the power-related changes were made, which would cause apps to get a
state of CONNECTED / CONNECTED when querying its active connection.

This change refactores the mUidRules to use bitmasks, in preparation for
another change that will fix the issue.

It also fixes a minor bug that was preventing removed packages to be
removed from the whitelist.

BUG: 28521946
Change-Id: I9f0e1509a6192cad403f740c1cd76a6b7dab7d26

Felipe Leme   commited 2016-05-06 17:58:40 +00:00
b30ef31381
Merge "Add lockdownEnabled parameter to always-on VPN API" into nyc-dev
am: 4c2242b254

* commit '4c2242b254':
  Add lockdownEnabled parameter to always-on VPN API

Change-Id: Ibc69bb988ba0d1e641ee48fb5a844dc414f58e07

Robin Lee   authored and   android-build-merger   commited 2016-05-04 18:55:54 +00:00
7f13b648df
Merge changes I31d5260d,Ied92f558 into nyc-dev
am: 9677633814

* commit '9677633814':
  Start VPN as early as possible during startup
  Split network agent created state from connected state

Change-Id: I55167ad8f3cde11407a2d35b0f859c263c0fbbec

Robin Lee   authored and   android-build-merger   commited 2016-05-04 18:55:11 +00:00
adab05fdfc
Merge "Add lockdownEnabled parameter to always-on VPN API" into nyc-dev
Robin Lee   authored and   Android (Google) Code Review   commited 2016-05-04 18:38:30 +00:00
4c2242b254
Merge changes I31d5260d,Ied92f558 into nyc-dev
* changes:
  Start VPN as early as possible during startup
  Split network agent created state from connected state

Robin Lee   authored and   Android (Google) Code Review   commited 2016-05-04 18:35:19 +00:00
9677633814
Start VPN as early as possible during startup
- Switch from USER_STARTING to USER_STARTED which is the foreground
  version of the broadcast

- Set the new VPN network as CONNECTING initially to avoid spamming
  apps with useless notifications ahead of the network being fully
  available

Bug: 26694104
Fix: 28335277
Change-Id: I31d5260dda62ff440c31c44eb0aa5c891e2717e5

Robin Lee   commited 2016-05-04 17:46:10 +01:00
3cc9ba48ef
Split network agent created state from connected state
Network creation setup sometimes involves extra steps after actually
calling into netd to create the underlying network, rules & routes &
to begin allowing sockets bound to it.

For example, VPN networks can set a UID whitelist or blacklist. This
should happen:

  - AFTER there is a netID & network created in netd as
    network-specific rules will need to be tied to / point at it. Those
    rules are tied to the lifecycle of netd's network which is tracked
    by `NetworkAgentInfo.created` on the frameworks side.

  - BEFORE the CONNECTED broadcast and network callbacks have been sent
    out so that we don't create a race condition between clients that
    want to use the network and the server actually having the network
    ready

The race condition existed prior to this change and required any client
making use of network callbacks to sleep for a short amount of time after
receiving to actually be able to use the network.

Among other things, that race condition is now fixed.

Bug: 26694104
Change-Id: Ied92f5588a98c3e97f456bc98b676bf201ab5472

Robin Lee   commited 2016-05-04 16:24:46 +00:00
bc024e5d66
Add lockdownEnabled parameter to always-on VPN API
Allows callers to opt-out of blockading network traffic during boot and
on VPN app failure.

Bug: 26694104
Change-Id: Ibfbd43ad09a25f2e38053fcd6306df3711f8bde2

Robin Lee   commited 2016-05-03 13:24:42 +01:00
ab2788acbc
Merge changes I86257bc8,I5c2221c5 into nyc-dev
am: 8925ef3257

* commit '8925ef3257':
  Use Netd's binder interface to set resolver configuration.
  Add Gservices settings for resolver configuration.

Change-Id: I80fdc381bd3ff33a8efa6624d7115c346789ca17

Pierre Imai   authored and   android-build-merger   commited 2016-05-02 13:00:13 +00:00
d35f90b205
Merge changes I86257bc8,I5c2221c5 into nyc-dev
* changes:
  Use Netd's binder interface to set resolver configuration.
  Add Gservices settings for resolver configuration.

Lorenzo Colitti   authored and   Android (Google) Code Review   commited 2016-05-02 12:49:19 +00:00
8925ef3257
Use Netd's binder interface to set resolver configuration.
BUG: 25731675
Change-Id: I86257bc84371832466161e5357ae173c305a7d18

Pierre Imai   commited 2016-05-02 08:29:21 +00:00
5b5fe390dd
Merge "Flag to mark foreground jobs, fix data saver." into nyc-dev
am: 9a977b7d45

* commit '9a977b7d45df0d3d59c5eec7f9534c3bd5fcd91d':
  Flag to mark foreground jobs, fix data saver.

Change-Id: I908d725a84e9590d0da38a586b066a63473d4f28

Jeff Sharkey   authored and   android-build-merger   commited 2016-04-29 22:59:31 +00:00
cb8bc7c3f9
Flag to mark foreground jobs, fix data saver.
When a job will eventually run in the foreground, the internal
scheduling needs to ignore any background network restrictions when
satisfying constraints.  This also means the job should ignore the
current device doze state, since the requesting app could get the
same behavior by starting their own foreground service.

Always dispatch network policy changes to ConnectivityService first
to ensure that it has up-to-date information.  Fix bugs around data
saver that were causing networks to not be marked as BLOCKED for
background apps; before this fix apps would have been spinning in
internal connectivity loops, thinking that the network was actually
connected when the kernel was actually blocking their traffic.

Offer new ConnectivityService method overloads to ignore the blocked
state for a specific UID.

Print unsatisfied job constraints to aid debugging.

Bug: 26571724
Change-Id: Iaaa17933e6dc1bf6d3dff26d0bfc12222e51e241

Jeff Sharkey   commited 2016-04-29 13:44:07 -06:00
833c35b354
Merge "Stop user faster and clear stale broadcasts" into nyc-dev
am: ec6faca007

* commit 'ec6faca0078263dfbf2b41d11cdb14586e40fd75':
  Stop user faster and clear stale broadcasts

Change-Id: I36eeb177791730a26077542606559e3e4428b87e

Amith Yamasani   authored and   android-build-merger   commited 2016-04-29 00:56:43 +00:00
390636bf45