Commit Graph

206 Commits

Author SHA1 Message Date
Zoltan Szatmary-Ban
fec3d1ff1c Data usage API: any uid is accessible to system apps running in any user
This CL mostly affects Settings app as it can run in a user different
than UserHandle.OWNER. Since it is a system app it should have access
to all uid's data usage, regardless of which user it is currently running
in.

Bug: 19967498
Change-Id: I4a7787134d998457f7e2a1029183d44d9584083e
2015-03-31 18:09:20 +01:00
Jeff Sharkey
6f2ba5ec43 Progress towards dynamic storage support.
Storage devices are no longer hard-coded, and instead bubble up from
whatever Disk and VolumeBase that vold uncovered, turning into
sibling Java objects in MountService.  We now treat vold events as
the source-of-truth for state, and synchronize our state by asking
vold to "reset" whenever we reconnect.

We've now moved to a model where all storage devices are mounted in
the root mount namespace (user boundaries protected with GIDs), so
we no longer need app-to-vold path translation.  This also means that
zygote only needs to bind mount the user-specific /mnt/user/n/ path
onto /storage/self/ to make legacy paths like /sdcard work.  This
grealy simplifies a lot of system code.

Many parts of the platform depend on a primary storage device always
being present, so we hack together a stub StorageVolume when vold
doesn't have a volume ready yet.

StorageVolume isn't really a volume anymore; it's the user-specific
view onto a volume, so MountService now filters and builds them
based on the calling user.  StorageVolume is now immutable, making
it easier to reason about.

Environment now builds all of its paths dynamically based on active
volumes.  Adds utility methods to turn int types and flags into
user-readable strings for debugging purposes.

Remove UMS sharing support for now, since no current devices support
it; MTP is the recommended solution going forward because it offers
better multi-user support.

Simplify unmount logic, since vold will now gladly trigger EJECTING
broadcast and kill stubborn processes.

Bug: 19993667
Change-Id: I9842280e61974c91bae15d764e386969aedcd338
2015-03-30 19:46:23 -07:00
Wenchao Tong
efd57ecab8 Keep debug information in NetworkStats files
Create two special SETs.

SET_DBG_VPN_IN is used by individual applications to know
how much traffic of the NetworkIdentity was actually moved
from a VPN app.
SET_DBG_VPN_OUT is used by the VPN app to know how much
traffic of the NetworkIdentity was deducted.

A debug application can restore the raw stats by these
entries.
  raw_traffic = recorded_entry (TAG_NONE, SET_ALL)
              + recorded_entry (TAG_NONE, SET_DBF_VPN_OUT)
              - recorded_entry (TAG_NONE, SET_DBF_VPN_IN)

The two debug SETs are not returned by
NetworkStatsService.openSession(). These debug entries are
retrieved by NetworkStatsCollection.dump().

Bug: 19536273
Change-Id: I03ef9f7667f5f2f48cbe3f6b11447fe7ead8ad3b
2015-03-27 13:49:13 -07:00
Zoltan Szatmary-Ban
b293e46f2c Data Usage public API
Added new API consisting of android.app.usage.NetworkUsageManager and
android.app.usage.NetworkUsageStats. Through them data usage on a
network interface can be programmatically queried. Both summary and
details are available.

Bug: 19208876
Change-Id: I0e0c4b37ae23ad1e589d4b0c955b93f28ba4333e
2015-03-25 15:53:38 +00:00
Wenchao Tong
fccef1da81 NetworkStatsService to adjust VPN stats before recording.
* Creates a new Parcelable class VpnInfo to hold required
  parameters for VPN stats adjustments.
* ConnectivityService to collect infomation and provide
  a list of VpnInfo, one for each user.
* NetworkStatsService passes the VpnInfo array to
  NetworkStatsRecorder.
* NetworkStatsRecorder calls NetworkStats.migrateTun()
  to do the math.
* Poll NetworkStats when the vpn application calls
  setUnderlyingNetworks().

Bug: 19536273
Change-Id: I7a4c7726b8243fead10416f7ec6eb5cf95f20183
2015-03-12 17:43:41 -07:00
John Spurlock
ad5bfa5be8 Remove unused imports in frameworks/base.
Change-Id: I031443de83f93eb57a98863001826671b18f3b17
2015-02-28 14:47:49 -05:00
Jeff Sharkey
5fb4f650df Direct notification of network interface changes.
Connectivity broadcasts recently changed and are no longer sent for
certain types of network changes.  For example, when stacked network
interfaces change for a mobile network.  To ensure that we pick up
all these details, directly wire the two services together.

Also remove some unused code for split network types.

Bug: 18666753
Change-Id: I0467bd5b330c0e0cb51af2306d821b41ad16337a
2014-12-08 14:50:14 -08:00
Paul Lawrence
19a1c3f7d9 Add mechanism for securely returning parameters though NativeDaemonConnector
If the first word in the response is {{sensitive}}, don't log the body of the
response.

Bug: 18260068
Change-Id: Ibfb5c6abab1d04b4321cdbcf6c7cf6f18f903146
2014-11-24 10:41:37 -08:00
Paul Lawrence
1e803d5ed0 Revert "DO NOT MERGE: Don't log passwords returned from vdc"
This reverts commit 201c2f73b6.

The original change disabled all logging of RCVed messages in NativeDaemonConnector.
For MR1 we want a much more surgical disabling of sensitive messages. First,
though, we have to defeat the automerger.

Change-Id: I712919aee2db63f7fc0b2c6d6a2a658325dce596
2014-11-24 10:40:15 -08:00
Jeff Sharkey
583d956886 Lightweight checkin output for network stats.
Define and print a compact version of network statistics when dump
is requested with the "--checkin" flag.  Defaults to last 24 hours,
but included data can be tweaked with various flags.

Groups together detailed network identities into larger umbrella
terms like "mobile" and "wifi."

Bug: 18415963
Change-Id: I70cf9c828ea5c6e5bb6884837d3608f66fbad2e6
2014-11-21 10:11:10 -08:00
Geoffrey Borggaard
29c0c3beaa am c3f5d718: Merge "Fix null handling in proxies." into lmp-dev
automerge: 90ed95f

* commit '90ed95faeddf7ebe71320e3e0e80eb17d374e49c':
  Fix null handling in proxies.
2014-11-21 10:17:39 +00:00
Geoffrey Borggaard
394a29333e Fix null handling in proxies.
ProxyInfo.getPacFileUrl() can not be null.  It will be equal to
Uri.EMPTY.  Checking for null was causing global proxies to never be
disabled.  Or more accurately, global proxies would be disabled, but
would reappear after a reboot.

ProxyInfo.getExclusionListByString() can be null.  If no
exclusion list was specified, the proxy settings would not be
successfully saved, they would disappear after reboot.

Bug: 18453223
Change-Id: I1c27e5dca5b9664bb7468ea909bff489fa110a07
2014-11-20 19:48:20 +00:00
Paul Lawrence
c5ec9fed69 am 3bde026a: am afb6b50e: Merge "DO NOT MERGE: Don\'t log passwords returned from vdc" into lmp-dev
* commit '3bde026aebffdaea8ab1315977b05e53e4a75185':
  DO NOT MERGE: Don't log passwords returned from vdc
2014-11-06 20:34:49 +00:00
Paul Lawrence
201c2f73b6 DO NOT MERGE: Don't log passwords returned from vdc
Turns off logging of responses from native daemon connector altogether.
Proper solution to follow in LMP MR1

Bug: 18260068
Change-Id: I25bc9cb61049a3efdd9a9cd11195864a04ef05fd
2014-11-05 19:07:57 -08:00
Jeff Sharkey
90c441a71c Drop DEV network stats to save RAM.
We migrated to pure XT stats a long time ago, so we no longer need
to keep the DEV stats cached in RAM.  This saves ~250KB on a typical
device.

Bug: 18118003
Change-Id: I3d84ba47073fa3500454784afc956c8e53404492
2014-10-24 13:15:15 -07:00
Christopher Lane
45cc2ce6ed Handle null values in registerService
Bug: 17491971
Change-Id: I0443a9accd86ab70510d16456a03912845718ca9
2014-09-13 11:18:33 -07:00
Vinit Deshpande
a2a966b884 Don't require CONNECTIVITY_INTERNAL check for protected broadcasts
This change removes requirement that sender has this permission for
protected broadcasts (since they can only come from framework)

Bug: 17409667

Change-Id: I3431c20a4ed28b3ba2bfc3cf53772e63a3424a2c
2014-09-10 18:12:41 -07:00
Sreeram Ramachandran
a53dd7f9ef Unescape strings properly in NsdService.
NativeDaemonEvent.unescapeArgs() was improperly skipping the terminating
quote in cases like "\\", where the char preceding the quote is a
backslash, but the backslash itself is escaped, so the quote is indeed
an unescaped terminator.

unescapeArgs() doesn't unescape "\xxx" decimal escapes used by mDNS, so
fix NsdService to do that sort of unescaping explicitly (which is only
applicable when it receives a "fullname", in SERVICE_RESOLVED).

Bug: 16983542
Bug: 16986203

Change-Id: Idfa79749336c68424d961bc414f984c525b7e5e6
2014-09-05 20:31:46 +00:00
Lorenzo Colitti
eff82e8099 Stop using LinkProperties for static configuration.
LinkProperties can represent way more complicated configurations
than what we can actually apply to interfaces. This makes it
error-prone to use it to represent static configuration, both
when trying to apply configuration coming from LinkProperties
and when trying to save configuration from current
LinkProperties.

Instead, move static configuration (IPv4 only, since we don't
support static IPv6 configuration) into a separate
StaticIpConfiguration class.

Bug: 16114392
Bug: 16893413
Change-Id: Ib33f35c004e30b6067bb20235ffa43c247d174df
2014-08-19 11:59:43 -07:00
Jeff Sharkey
5d6a2cd7ca Some networks may have null ifaces, I guess?
Seems like a bug further upstream, but guard ourselves against it
for now.

Bug: 17033841
Change-Id: Id0e5895c3389b63d4e34b1fb064efef8b72cd609
2014-08-14 22:42:27 +00:00
Jeff Sharkey
3b43a279e3 Hack and ship: NetworkStats edition.
Some devices use clatd for catching raw IPv4 traffic when running on
a pure-IPv6 carrier network.  In those situations, the per-UID
stats are accounted against the clat iface, so framework users need
to combine both the "base" and "stacked" iface usage together.

This also means that policy rules (like restricting background data
or battery saver) need to apply to the stacked ifaces.

Finally, we need to massage stats data slightly:

-- Currently xt_qtaguid double-counts the clatd traffic *leaving*
the device; both against the original UID on the clat iface, and
against UID 0 on the final egress interface.

-- All clatd traffic *arriving* at the device is missing the extra
IPv6 packet header overhead when accounted against the final UID.

Bug: 12249687, 15459248, 16296564
Change-Id: I0ee59d96831f52782de7a980e4cce9b061902fff
2014-08-11 18:40:23 -07:00
Sreeram Ramachandran
fba15596cb Cleanup: Delete dead code.
Bug: 15413389
Change-Id: I315468832ef18ffc84174e54774ab63b86d284dc
2014-07-22 15:46:34 -07:00
Lorenzo Colitti
8e33e456a1 Minor changes to the LinkAddress API docs.
1. Rename getNetworkPrefixLength to getPrefixLength. Update all
   callers in frameworks/base and add a shim method and a TODO
   for the rest.
2. @hide isSameAddressAs. It doesn't add much, and it's just
   one-liner that callers can implement if they want.
3. Fix the alignment of the initial paragraph (<ul> should have
   been </ul>).
4. Remove the documentation that talks about creating
   LinkAddresses, since there's no public API for creating them.

With these changes I think LinkAddress is fine as a public API.

Bug: 15142362
Change-Id: Iaf3b1db577745bb68a9e1dd7f96d666dd3f3ec7c
2014-06-10 14:46:39 -07:00
Sreeram Ramachandran
c447220e53 Add a new IpPrefix class and use it in RouteInfo.
This change uses IpPrefix only in the public API and continues
to use LinkAddress for everything else. It does not change the
callers to use the new APIs, with the exception of changing
all current uses of getDestination to getDestinationLinkAddress
to make room for the new getDestination method that returns an
IpPrefix.

Based on Sreeram's earlier change:
https://googleplex-android-review.git.corp.google.com/#/c/477874/
but a bit simplified and with a bit more documentation.

Bug: 15142362
Bug: 13885501
Change-Id: Ib4cd96b22cbff4ea31bb26a7853989f50da8de4e
2014-06-10 14:30:15 -07:00
Robert Greenwalt
690790088d Fix public API of LinkProperties.
bug:15142362
Change-Id: I1457111da7d3bd09998f7e010febb8bb4c45c8bc
2014-06-08 12:54:23 -07:00
Lorenzo Colitti
eeae94e9cd Fix a typo in IpConfigStore.
Change-Id: I1fc845bf4547ae9a86db02ed29b6d5ba60a01277
2014-05-21 16:38:11 -07:00
Jaewan Kim
e36bfe74f3 Move IP config from WifiConfiguration to IpConfiguration.
This is so that Ethernet can use it in the future.

Bug: 7606609
Bug: 8687763

Change-Id: I5d1189682b13f1088848809604690648d8d9ecca
2014-05-20 15:24:10 -07:00
Robert Greenwalt
61c34fd2a2 Turn down the logging.
Cut per-msg logging by 1/3 in NDC so we see that much more.

Change-Id: I406297d98f2649a88b16c7be3cf90757d009c762
2014-05-12 08:59:27 -07:00
Christopher Lane
7441122e23 Fix incorrect "listener no longer active" errors
Was incorrectly using .indexOfValue to search for Integer objects in the
client map.

Change-Id: I54e2e1725e0fff0a7d35a22376714cc8266a9eee
2014-04-25 18:57:23 -07:00
Dianne Hackborn
0cc4425b3b Start collecting mobile radio activity from the radio.
Hook in to the new radio API to find out when the radio
is active and use that to track its state in batter stats.
We also still have the data being tracked from the kernel's
emulation, and continue to use that if we don't get data from
the radio.

Currently this monitoring is turned off until some issues
in the radio can be fixed that are providing bad data.

Also add a new API to get estimated drain and charge times.

Change-Id: Ifc4900fabb8f848f9cda361dce698664ea75f175
2014-04-24 11:21:30 -07:00
Christopher Lane
b6e0448851 Fix build
Change-Id: I20168fb1c29ba6eb695f0d24c6ca512420b2b319
2014-04-14 16:31:27 -07:00
Christopher Lane
6f34914b4c resolved conflicts for merge of 468c0578 to master
Change-Id: I779c49c48980ba7737ee4e7b04a9e4c3e02fca21
2014-04-14 15:14:01 -07:00
Christopher Lane
0f2cc36572 Add support for custom TXT records in NSD
Change-Id: I8e6dc9852ad4d273c71ad6a63a7fbd28a206806d
2014-04-14 14:10:36 -07:00
Dave Platt
5da9a41811 Merge "NsdService does not clean up after exiting clients" 2014-04-08 17:35:57 -07:00
Dianne Hackborn
87522f50e1 Battery stats: wake locks, radio active, cleanup.
- Improve wake lock work source updates to also update the current
  history tag, in case the new work source gets recorded in the
  history.

- Fix bug in recording radio active time that was not distributing
  any time to apps.

- No longer hold a wake lock while dispatching data conn active call,
  since it comes with its own timestamp.

- Fix issue where the top app was not being cleared while the screen
  was off.

- Remove obsolete STATS_LAST stats type.

- Fix bug that was not clearing the total run time when resetting
  the stats.

Change-Id: Iabe17a9edf34f762374ae09fcffb8a819cf72e30
2014-03-24 13:36:46 -07:00
Dave Platt
cf4709a694 am cb1254f1: am 20caa09c: am 21384faa: am 694f219c: Merge "NsdService does not clean up after exiting clients"
* commit 'cb1254f1abc44b82e2a9da0d9a73230eb46e129e':
  NsdService does not clean up after exiting clients
2014-03-14 13:13:38 +00:00
Dave Platt
20caa09c61 am 21384faa: am 694f219c: Merge "NsdService does not clean up after exiting clients"
* commit '21384faa2b3da619a54b35f15936c00593b30694':
  NsdService does not clean up after exiting clients
2014-03-13 23:42:03 +00:00
Dave Platt
feff2af5c0 NsdService does not clean up after exiting clients
When a client of the NsdService exits, NsdService should
clean up the requests it has sent to the mDNS daemon:
cancel any pending resource-discovery and resource-resolution
queries, and remove any services registered by this client.

If this isn't done, several bad things happen. The daemon will
continue to run unnecessarily, will report service discoveries
that can't be forwarded on to the client, and will continue to
advertise service ports for an application which is no longer
running until the device is rebooted (mDNS pollution).

Bug: 9801184
Change-Id: I0aa7311480322aefcff16f902fbbf34f50985d38
2014-03-13 23:16:30 +00:00
Dianne Hackborn
9cd0fea519 Hold a wake lock while dispatching network activity events.
Also add new API for determining whether the current data network
is active, and thus better scheduling network operations.  This
API is designed to not be tied to a mobile network -- regardless
of the network, apps can use it to determine whether they should
initiate activity or wait.  On non-mobile networks, it simply always
reports as the network being active.

This changed involved reworking how the idle timers are done so
that we only register an idle timer with the current default
network.  This way, we can know whether we currently expect to
get callbacks about the network being active, or should just always
report that it is active.  (Ultimately we need to be getting this
radio active data from the radio itself.)

Change-Id: Iaf6cc91a960d7542a70b72f87a7db26d12c4ea8e
2014-02-28 15:19:39 -08:00
Amith Yamasani
4181c2f47e am 59e808f5: Move some system services to separate directories
* commit '59e808f5491ded962445be7bff490e1fb32480ab':
  Move some system services to separate directories
2013-12-19 23:30:35 +00:00
Amith Yamasani
59e808f549 Move some system services to separate directories
Refactored the directory structure so that services can be optionally
excluded. This is step 1. Will be followed by another change that makes
it possible to remove services from the build.

Change-Id: Ideacedfd34b5e213217ad3ff4ebb21c4a8e73f85
2013-12-19 15:25:37 -08:00
Kenny Root
83711c2ea9 resolved conflicts for merge of e0b14ea7 to master
Change-Id: Ie018d3e2eba1eb2d655c153880e1951b68c2bd51
2013-12-13 15:59:51 -08:00
Kenny Root
9254db342a Use java.util.Objects instead on internal API
Not needed since java.util.Objects implements all the needed
functionality.

Change-Id: Icd31d49a9801d1705427f028e9ac927d58e7d34c
2013-12-13 13:40:30 -08:00
John Spurlock
84ae0f4bc6 Remove unused imports from frameworks/base.
Change-Id: Ia1f99bd2c1105b0b0f70aa614f1f4a67b2840906
2013-11-20 11:31:47 -05:00
John Huang
84d14ab411 am c4f535bd: am 299e011e: am 54ca9066: Merge "Get rid of a race in NsdService in stopResolveService and getAddrInfo" into klp-dev
* commit 'c4f535bddac2491aa0e354a609fcbf7c49276295':
  Get rid of a race in NsdService in stopResolveService and getAddrInfo
2013-11-13 12:19:53 -08:00
Vinit Deshapnde
4429e878fb Get rid of a race in NsdService in stopResolveService and getAddrInfo
Both requests are made using same id; and there is a chance that
stopResolve() is not fully completed when getAddrInfo() is issued. That
results getAddrInfo() failure, because both are using same requestId.

This change fixes this problem by creating a new unique id to call
getAddrInfo() with.

Bug: 11597153
Change-Id: I56bd78740e8a40bd31c52705dc797486aff53a50
2013-11-12 15:36:37 -08:00
Ashish Sharma
cbfd66262e Fix the race condition for b/11458382
Change-Id: I862da57a70283a2afd5d67751aec87fb808760d2
2013-11-04 18:51:12 -08:00
Amith Yamasani
e91f98c61d Use a separate thread for services that do NTP lookup
Some services do periodic network time lookups and can wedge the other operations on
BackgroundThread and IO Thread, causing Watchdog to kill the runtime. So best to put
those handlers on separate threads.

Going forward, should convert NTP lookups to be async with callbacks.

Bug: 10646480
Change-Id: I8c7ba6052cb3539575712c2099a706b14ff60196
2013-09-19 10:57:16 -07:00
Jeff Sharkey
73c92d5077 Request all tethering interfaces, fix corruption.
netd now tracks statistics for tethered interfaces across tethering
sessions, so switch to asking for all tethering stats.  (Currently
we're double-counting all tethering data, ever since it started
tracking across sessions.)

Also catch OOME to handle corrupt stats files, which we then dump to
DropBox and then start over.

Bug: 5868832, 9796109
Change-Id: I2eb2a1bf01b993dd198597d770fe0e022466c6b9
2013-09-10 21:03:30 -07:00
Lorenzo Colitti
e79657d5fb Add a simple test for NetworkManagementService.
For now, this only tests network observers. It works by starting
NetworkManagementService with a fake netd socket, feeding it
inputs, and seeing if the appropriate observer methods are
called.

Bug: 10232006
Change-Id: I827681575642a4ee13ae48b81272521544b676bd
2013-08-23 18:30:19 +09:00