Commit Graph

250 Commits

Author SHA1 Message Date
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
Jeff Sharkey
c54f4ec856 am 5b41696c: am a8fb5803: Merge "Offer to "merge" subscribers for data usage." into lmp-mr1-dev
* commit '5b41696c56c124124d48168227a83b63bd55aea7':
  Offer to "merge" subscribers for data usage.
2014-12-08 19:44:27 +00:00
Jeff Sharkey
ae5a8a5ec8 Offer to "merge" subscribers for data usage.
There are some cases where multiple subscriber identities (IMSI)
should be treated as "merged together" from a data usage
perspective.  This is done by extending the template used for
matching purposes to support multiple subscribers.

Then, when we query historical usage or set network policies, we
normalize the matching template to merge to any other identities
that should be included.  When normalizing, the "lowest" identity
is always used for equality and storage purposes, which allows
identities to come and go over time.

This change also fixes data usage recording for multi-SIM devices
by passing along the concrete subscriber identity for each network
interface.  Also correctly create default policies for multi-SIM
devices.  This change also drops setPolicyDataEnable() until it can
be wired up to the right underlying NetworkAgent.  (This means we
still bring up the network, and then rely on iptables rules to block
traffic when over the limit, instead of proactively disabling the
connection.)

Bug: 18012787
Change-Id: If6acf32009fdfea2b836f5aff8e2f3e5e0248b4a
2014-12-08 08:42:59 -08:00
Jeff Sharkey
0d84fe11a1 am 54c11274: am c0491a2e: Merge "Lightweight checkin output for network stats." into lmp-mr1-dev
* commit '54c11274b5e7ce9f774f7c846d7165563279b96a':
  Lightweight checkin output for network stats.
2014-11-21 22:09:28 +00:00
Andreas Gampe
4c35627d7d resolved conflicts for merge of 3fc5e3ca to lmp-mr1-dev-plus-aosp
Change-Id: Id8286e5a4381315a6060251a8055b0f1d1a96019
2014-11-21 10:36:14 -08:00
Andreas Gampe
b9fd0471a6 Frameworks/base: Consistency in core/jni
Make consistent use of core_jni_helpers for registration.

Translate some #ifdefs into const bools.

Change-Id: I37639aa053dd50f003a552cbd8550dddecc811c5
2014-11-21 10:15:08 -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
Jaewan Kim
710c6e775b am 18ab5c21: Merge "Add an API to check availability of Ethernet interface." into lmp-mr1-dev
automerge: 52dcc7f

* commit '52dcc7fb0a17a77c41eddd1517821134946120b1':
  Add an API to check availability of Ethernet interface.
2014-11-21 02:52:28 +00:00
Jaewan Kim
32b3f2ca36 Add an API to check availability of Ethernet interface.
Bug: 18045481
Change-Id: I95358241b431cfe4435ce70c23c9a639b9dc4d58
2014-11-20 11:12:17 +09:00
Andreas Gampe
76d0e9f03e Frameworks/base: Wall Werror in core/jni
Turn on -Wall -Werror in core/jni. Fix warnings.

Clang TODO: For GCC we need to turn off Wunused-but-set-variable in
the GL bindings. However, Clang doesn't have that warning and thus
complains about an unknown pragma. It is necessary to make the
pragma #ifdef-ed on the compiler being GCC.

Change-Id: I14cab48d45c2771eef0432082356c47ed44a3d7f
2014-11-13 15:20:37 -08:00
Jeff Sharkey
8e9afdf05f NetworkStats always needs arrays.
Internal logic relies on Arrays.copyOf(), so always give ourselves
valid arrays, using shared empty objects to save overhead.

Bug: 17502649
Change-Id: I5dbb00545bdfe45bbd48144ab505ea08cc92cbcd
2014-09-17 09:26:31 -07:00
Jeff Sharkey
14966ee4ae Use sscanf() for parsing tag values.
Neither strtoll() nor strtoull() can parse the %llx formatted tag
values coming from the kernel.  We know the lowest 32 bits will never
be set, so fast-path the 3-character case as 0x0.

Bug: 17365163
Change-Id: I238bbd2830c9335e7ab7a53362d6e12b46e0bcb3
2014-09-09 12:29:41 -07: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
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
Christopher Tate
5a1878d6ca Make TrafficStats uid attribution @SystemApi
Anything that runs as a singleton may need to attribute traffic to
various client apps; in particular, backup transports need to do this.
Apropos of which, introduce a @SystemApi method specifically for that
purpose, setThreadStatsTagBackup().

Bug 16661321

Change-Id: Id5d22e28bdc68edb53f2a1fdba80b144fcbc61d2
2014-08-07 19:43:20 +00:00
Paul Jensen
b0bdb33876 Convert Vpn from NetworkStateTracker to NetworkAgent.
This eliminates the need for the ConnectivityService.VpnCallback class.
This requires shifting VPNs to the new "network" netd API.
VpnService.protect() is modified to no longer go through ConnectivityService.
NetworkCapabilities is extended to add a transport type for VPNs and a
capability requiring a non-VPN (so the default NetworkRequest isn't satisfied
by a VPN).

bug:15409918
Change-Id: Ic4498f1961582208add6f375ad16ce376ee9eb95
2014-07-10 20:39:33 +00:00
Joe LaPenna
0a998b84bc CW on Master: Disable CaptivePortalTracker, EthernetService
BUG: 15143878

Change-Id: I6c534a28c1fcd475982ae70e7f3af69f3a219e24
2014-07-08 22:52:02 +00:00
Lorenzo Colitti
56e4e58eae Fix Ethernet documentation.
1. Remove incorrect @return tag for void function.
2. Fix build breakage by removing the reference to
   #ETHERNET_SERVICE, which is hidden.

Change-Id: Ia893464bafc8257e48e0bd710d27954b535fcece
2014-05-22 11:51:27 -07:00
Lorenzo Colitti
2edad7a160 Add an EthernetManager.
The implementation will live in frameworks/opt/net/ethernet.

Bug: 7606609
Bug: 8687763
Bug: 14993642
Bug: 14981801
Change-Id: Ic771e268b0c78f0fc32f46af6fe0dd7c634a426e
2014-05-21 16:41:24 -07:00
Mark Salyzyn
7837dd43a3 am a5403454: am 936e87e1: am d75a6909: Merge "frameworks: 64 bit compile issues"
* commit 'a54034547dfae92afcde7420d0a492586d3b21b8':
  frameworks: 64 bit compile issues
2014-04-16 19:58:26 +00:00
Mark Salyzyn
a54034547d am 936e87e1: am d75a6909: Merge "frameworks: 64 bit compile issues"
* commit '936e87e12dd1335c6f773705fd0a7edb32bc4385':
  frameworks: 64 bit compile issues
2014-04-16 19:51:10 +00:00
Mark Salyzyn
af9766d226 frameworks: 64 bit compile issues
ToDo: core/jni/com_android_internal_net_NetworkStatsFactory.cpp (merge issues)

Change-Id: I5cf0bbb868e6c18e86c97c6491b6ee983a8ee1a2
2014-04-16 10:43:48 -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
4cba56df4e Document and enforce "one request per Listener" rule
The API and implementation of NsdManager imply that a separate
Listener is to be used for each active registration or discovery
request.  This isn't formally documented or properly enforced, and
weird and unpredictable things happen if an application uses a
Listener for more than one request at a time.

Update documentation to make this an explicit requirement.

Enforce the restriction when a new request is submitted for
processing; if the Listener is already being used to track an active
request, throw an exception.

Document the fact that apps should unregister services and cancel
service discoveries when the app is stopped (in KitKat and prior
releases, they'll leak if this isn't done.)

Re-order "release the Listener" operation to occur before the Listener
callback, so that the Listener can be reused by the application once
the callback has been entered - this eliminates a race condition.
Document this.

Pass 2: typos, added documentation about API level, changed to using
an explicitly defined return value for "busy listener".

Bug: 13512512
Change-Id: Ic164110759204b27d8a14376777b593ebe1865fa
2014-03-31 13:43:45 -07:00
Dave Platt
21a9e3d022 am 17e7c407: am 98a027a5: Merge "Harden NsdManager against null-dereference crashes" into klp-dev
* commit '17e7c4076b8f1617ed397dae570e9d5240cd9c1b':
  Harden NsdManager against null-dereference crashes
2014-03-19 00:59:47 +00:00
Dave Platt
febcdae1ba Harden NsdManager against null-dereference crashes
Due to race conditions or programming errors, the NsdManager
can attempt to process an asynchronous status message (and issue
a callback to the listener) after the listener has already been
removed from the NsdManager state.  This causes dereferencing of
null objects, and a crash.

Split out the three async-queue message cases:  these are ones
in which message.arg2 does not hold an NsdManager array index
and the code should not interpret this field as if it were.

Add an explicit check for "null listener" (the array index in the
message has already been released), log a warning, and exit early.

Safeguard accesses to the "NSD service type" string from a possibly
null) NsdServiceInfo object... return a constant "?" string rather
than crashing.

Bug: 9016259

Manual cherrypick of commit b1fbb14122a99c62363a949dd634294f5e887ef,
change-ID I7a6ff6842cf035cefbafe2a023ae1fd43734081e in master.

Change-Id: I8d9b7a1763d47d061a0f46b3cb453de4bdb8c2ed
2014-03-13 17:27:03 -07:00
Dave Platt
1ce9dccb13 am bf588bda: am b4a78de4: am 7d8262cb: am 6948cb40: Merge "Harden NsdManager against null-dereference crashes"
* commit 'bf588bda2c4dc98919439946e905e98ad4d352dd':
  Harden NsdManager against null-dereference crashes
2014-03-04 23:51:51 +00:00
Dave Platt
a6dc93df7b Harden NsdManager against null-dereference crashes
Due to race conditions or programming errors, the NsdManager
can attempt to process an asynchronous status message (and issue
a callback to the listener) after the listener has already been
removed from the NsdManager state.  This causes dereferencing of
null objects, and a crash.

Split out the three async-queue message cases:  these are ones
in which message.arg2 does not hold an NsdManager array index
and the code should not interpret this field as if it were.

Add an explicit check for "null listener" (the array index in the
message has already been released), log a warning, and exit early.

Safeguard accesses to the "NSD service type" string from a (possibly
null) NsdServiceInfo object... return a constant "?" string rather
than crashing.

Bug: 9016259

Change-Id: I40aabdfc65d86fdd0eaac7a1e7e56e6ff69796cf
2014-03-04 13:25:02 -08:00
Dianne Hackborn
4cba7916fa Collect per-uid mobile radio usage.
We now compute radio active time per application, by distributing
the active time across all applications each time the radio goes
down, weighting it by the number of packets transferred.

Per-app radio power use is now computed using this radio active
time.

This also gives us a new metric "ms per packet", which give an
idea of how effectively an application is using the radio.  This
is collected and reported as a new set of stats in the human-
readable checkin.  (It can be computed from the raw checkin data).

Also improve sync reporting to include the sync source as used
in wake locks, not just the component name.

Change-Id: I0b0185fadd1e47ae749090ed36728ab78ac24c5e
2014-02-26 15:53:44 -08:00
Dianne Hackborn
fe6e53b48c Improve how battery stats collects network stats.
This optimizes the path for battery stats to collect
per-uid network usage.  It now collects wifi and mobile
usage separately, with a path that allows it to recycle
all data structures and filter out stats it isn't
interested in before they come back to java.

This is setting us up for the actual goal, to collect
mobile stats independently each time the mobile radio
goes down, allowing us to distribute mobile radio usage
across uids based on the number of packets they transferred
during a session.

Change-Id: I21a0f517cf087ea5aa8b8dd535e20b46e361a52b
2014-02-24 11:35:20 -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
Kristian Monsen
57dfa66b95 resolved conflicts for merge of 800d4d72 to master
Change-Id: Ib1defc447745e5406d64c0d99c962832c79d15ef
2013-12-12 23:59:37 -08:00
Kristian Monsen
fb4d3e7a4a Fix one and hide the other warnings from core/jni
Most of the warnings are unused parameter from skia functions.

Change-Id: I9df57718d117c26b96163f751ccb056ca86ac072
2013-12-11 21:58:53 -08:00
John Spurlock
84ae0f4bc6 Remove unused imports from frameworks/base.
Change-Id: Ia1f99bd2c1105b0b0f70aa614f1f4a67b2840906
2013-11-20 11:31:47 -05:00
Colin Cross
c5697c326e replace cutils/logger.h with log/logger.h
and remove it from files that don't use it.

Change-Id: Ieb44a3f1f75c2d2b277f0d01ca926a92211e3fe6
2013-07-24 23:44:45 +00:00
Jeff Sharkey
f20d6b326f Recover from corrupt network stats.
When encountering corrupt stats, throw as IOException to allow
recovery at a higher level.

Bug: 9794832
Change-Id: I38d000b3bd8a4c99389c40a87ee0699efb6e9049
2013-07-11 11:18:53 -07:00
Robert Greenwalt
7aa7bb4dfb Fix sync problem in NsdManager
The NsdManager init was thinking it was done before the AsyncChannel
was fully setup and if the setup were slow and the app fast, the app
could make calls to the NsdManager that it wasn't ready for.

bug:8545006
Change-Id: I2cb2a7c0a1c7f3d2b81ac0f66d37346e6d2d720d
2013-05-02 15:45:32 -07:00
Jeff Sharkey
39fb9cd9c2 Update TrafficStats docs to reflect behavior.
Bug: 8399623
Change-Id: If9ccd305e8a077f318a09ac1bb160b8efbf903aa
2013-03-26 13:46:09 -07:00
JP Abgrall
7de8125565 jni: net.TrafficStats: fix getIfaceStat, have it use the iface.
Missing iface8 in call to parseIfaceStats().

Bug: 8304054
Change-Id: Ibb01d86a0f7241cdd8f23401973840673f847efb
2013-03-04 18:53:07 +00:00
Dianne Hackborn
e9d7207f86 Add version code constant for JB MR2.
Change-Id: I60fc76bbeb3c5e85d716179e9e3ea5758bafaf69
2013-02-25 15:55:37 -08:00
Jeff Sharkey
6d9c71ab65 Remove sscanf() warnings when parsing stats.
Change-Id: I15b7ba93d7ec121f9a7e19926f7436f2117b3b1a
2013-02-13 18:13:01 -08:00
Jeff Sharkey
51c819c4ea Parse network stats using native code.
Switch to parsing detailed network stats with native code, which
is 71% faster than ProcFileReader.

Change-Id: I2525aaee74d227ce187ba3a74dd08a2b06514deb
2013-02-13 17:40:49 -08:00
Jeff Sharkey
805bdac0a0 Use safe buffer sizes when parsing network stats.
Change-Id: I1733c1ddc48f9410136aee7af7889fdc7be8cc10
2013-02-07 15:02:55 -08:00
Jeff Sharkey
5fee2c9ee2 Improve TrafficStats UID APIs.
Deprecate transport layer statistics, leaving only the summarized
network layer statistics.

Improve documentation to be clear about layers where measurements
occur, and their behavior since boot.  Under the hood, move to using
xt_qtaguid UID statistics.

Bug: 6818637, 7013662
Change-Id: I9f26992e5fcdebd88c671e5765bd91229e7b0016
2013-02-07 13:59:26 -08:00
Jeff Sharkey
9e766ac165 Offer parsed TCP interface statistics.
Also switch to newer iface_stat_fmt numbers, which are measured at
XT level instead of dev.

Bug: 7903145, 6569689
Change-Id: Ibeb742966b8c89916ea31a49388a5dbe25a5f67f
2013-02-06 16:23:12 -08:00
Jeff Sharkey
86230aca66 Fix metered SSID matching regression.
WifiInfo changed to return SSIDs with quotes included, so relax our
identity matching to accept matches regardless of quotedness.

Bug: 7695807
Change-Id: Ib5d06666035e06b2d4b2f7cb498767d63b1b1828
2012-12-18 17:07:01 -08:00
Jeff Sharkey
526438dbe6 Useful annotations for code documentation.
Bug: 6537978
Change-Id: I806c3c09e3255f8789455f13bf37c1dde2a93f1f
2012-11-12 12:42:17 -08:00
Jeff Sharkey
3a8abe7eec Sanity check network stats coming from disk.
Throw early when structure is unstable, which allows the normal
recoverFromWtf() path to recover automatically.

Bug: 7440485
Change-Id: Ic150d17daac4de7c9ff3489025403a9b485b4620
2012-11-02 15:38:15 -07:00