Commit Graph

154 Commits

Author SHA1 Message Date
Jeff Sharkey
971cd16561 Introduce immediate CONNECTIVITY_ACTION variant.
New broadcast that is dispatched immediately after connectivity
changes have been handled by ConnectivityService, bypassing any
applicable CONNECTIVITY_CHANGE_DELAY.

Also protect CONNECTIVITY_CHANGE broadcasts, since they should only
be sent by system.

Bug: 5198167
Change-Id: I75f1fb44b21da1879f0ab960bcaa481126d70fde
2011-08-29 16:10:43 -07:00
Jeff Sharkey
3dadd0f1f6 Data usage buckets active time, parsing ISE.
When recording data usage, measure the actual active time, since
buckets can be quite long.  Offer incrementOperationCount() version
that reads thread stats tag for caller.  Rethrow any NPE as ISE
during stats parsing, which callers already handle.

Bug: 5171812, 5184508, 5180659
Change-Id: I6da80ccc0162be68bee279529e3a23b6f98ebd87
2011-08-24 16:00:39 -07:00
Jeff Sharkey
d3b657612d Register for kernel global data usage alerts.
Instead of polling every 15 minutes, register for alerts that trigger
when system-wide traffic passes a threshold.  Still mixed with polling
to persist UID stats, but relaxed to 30 minutes.  Currently watches
for every 512kB.

Make persistence decision separately for network versus UID, and use
total delta bytes when making decision.  Use light bootstrap during
systemReady() instead of heavy poll, which had been force-loading all
UID data unnecessarily.

Bug: 5023631
Change-Id: I04b723d6c4bf872fb1028071122dba66a8e1b576
2011-08-23 18:46:14 -07:00
Jeff Sharkey
805662d8fa Proactively disable data when over policy limit.
Add policy controls to NetworkStateTracker which are combined with
other user preference and internal flags to decide if data connection
should be established.  Better locking around enabled flags.

When data network would be over limit, proactively disable data on
that network.  Enable when policy is snoozed or when cycle resets.

Track and dismiss notifications from now-stale policies.

Bug: 4587023, 5178147
Change-Id: Ibfcc9f73cda7c369209af701b46eddd3d1943f2d
2011-08-23 18:45:44 -07:00
Jeff Sharkey
e612a38faa Merge "Background data notification, API clean up." 2011-08-18 15:01:10 -07:00
Jeff Sharkey
39c01ebcce Background data notification, API clean up.
When restricting background data, show ongoing notification to give
easy access to re-enable. Deprecate getBackgroundDataSetting() API
to always return true, since NetworkInfo.isConnected() is new source
of truth. Handle upgrade path by reading from existing secure value,
and kick one last broadcast when changing value. Remove background
data code from ConnectivityService.

Remove warning alerts, since they push ifaces into restricted list;
should only happen when iface has limit.

Bug: 5163559, 5129421
Change-Id: I0064d9d643656a4d32aaae51d4a58bce49fe295f
2011-08-17 14:12:42 -07:00
repo sync
7c309101fe Merge "P2p enhancements" 2011-08-16 14:50:56 -07:00
Jeff Sharkey
9c11e89fe2 Foreground/background network stats using sets.
Teach NetworkStats about "counter sets" coming from kernel, and use
them to track usage in foreground/background.  Add AID_NET_BW_ACCT to
system_server so it can control counter sets.

Move to composite key of NetworkIdentitySet, UID, set, and tag when
recording historical usage.  Persisting still clusters by identity,
since that is heaviest object.

Request async stats poll during systemReady() to bootstrap later
delta calculations. Reset kernel counters when UID removed. Update
various tests.

Bug: 5105592, 5146067
Change-Id: Idabec9e3ffcaf212879821515602ecde0a03de8c
2011-08-15 17:30:25 -07:00
repo sync
f5de557544 P2p enhancements
- ConnectivityService interaction and support for running dhcp server
and client

- State machine enhancements for connectivity interaction

Change-Id: Iba3beb8c87554ffd67a7b7e852bbb4dd8666a4f5
2011-08-10 15:53:49 -07:00
Jeff Sharkey
13d6787be8 Network stats with varint, omit parcel fields.
Persist NetworkStatsHistory using variable-length encoding; since
most buckets have small numbers, we can encode them tighter. Initial
test showed 44% space savings. Also persist packet and operation
counters.

Let NetworkStatsHistory consumers request which fields they actually
need to reduce parcel overhead.

Tests for verify varint and history field requests, also verify end-
to-end by persisting history into byte[] and restoring. Expose
bandwidth control enabled state. Extend random generation to create
packet and operation counts. Moved operation counts to long.

Fix bug that miscalculated bytes since last persist, which would
cause partial stats loss when battery pulled.

Bug: 4581977, 5023706, 5023635, 5096903
Change-Id: If61e89f681ffa11fe5711471fd9f7c238d3d37b0
2011-08-03 17:21:07 -07:00
Jeff Sharkey
66fa96870b Expose quota status for active network.
Create API to expose quota status derived from underlying network
policy.  This is designed to support applications making informed
decisions when performing network requests.

Fix bug with random stats generation, and write policy when changing
restrict background data flag.  Deprecate EXTRA_NETWORK_INFO, since
it varies based on UID.

Bug: 4517283, 5088603
Change-Id: Ic6893a8967f69937e466be226ba7bb86ef5a5d2d
2011-08-02 18:19:54 -07:00
Jeff Sharkey
7026767763 Add operation counts to network statistics.
Provide API to increment "operation counts" for a UID and tag, used
to eventually derive bytes/operation stats.  Internally is stored at
network layer, but should belong at data layer.  Switch profiling
to use data layer stats, which are emulated by summarizing network
layer details.

Read packet counts from new /proc/ columns and collect them into
NetworkStatsHistory.  Prevent double-counting by ignoring values from
first snapshot.  Watch for duplicate /proc/ entries.  Update tests
to verify packet and operation counters.

Bug: 5052136, 5097392
Change-Id: I1832f65a2b8a9188f8088f253474a667c21a2f09
2011-07-29 22:24:01 -07:00
Robert Greenwalt
2351e41ea8 am fec26c50: am f3ab069b: Make copy-constructor make deep copy.
* commit 'fec26c50974443f25715dd6dc64e81f1ea7b496c':
  Make copy-constructor make deep copy.
2011-07-29 09:24:38 -07:00
Robert Greenwalt
fec26c5097 am f3ab069b: Make copy-constructor make deep copy.
* commit 'f3ab069bec358f8138fed5ceabe64e303ac7d8f9':
  Make copy-constructor make deep copy.
2011-07-29 09:20:51 -07:00
Robert Greenwalt
f3ab069bec Make copy-constructor make deep copy.
Used to grab immutables but now will copy the data so the result
is mutable and we don't get crashes.

bug:5051667
Change-Id: I0878bf8c58069055f528121541d1911f404cbe49
2011-07-28 17:21:25 -07:00
Robert Greenwalt
9520d6af5a Merge "Use dns proxy a bit." into honeycomb-LTE 2011-07-26 13:21:09 -07:00
Robert Greenwalt
fd0597c8e4 Use dns proxy a bit.
Sets the current default interface and sets the dns per interface.
port of changes 23041 and 22098 from opensource.
bug:5060618

Change-Id: I80e7ef88727eeb8ff2b48059f69b270e5a6b5c16
2011-07-25 17:00:13 -07:00
Robert Greenwalt
fce7186be1 resolved conflicts for merge of aaf31586 to master
Change-Id: I9e8faaa94f9b251a9c003dc6b9a3e2a97c4564a9
2011-07-25 16:06:25 -07:00
Robert Greenwalt
9186900f54 Fix build.
Add NetworkUtils function missed in manual merge.

Change-Id: Ifce8f2988bb581ddc9b971b8af07a32f46c91e14
2011-07-25 14:00:42 -07:00
Mike Lockwood
865fcf3eb3 Merge "Fix USB tethering" 2011-07-23 19:36:32 -07:00
Mike Lockwood
ed4a1741b4 Fix USB tethering
The previous approach no longer works with the new USB drivers, since the usb0
interface is no longer enabled by default.
This introduced a chicken & egg problem - usb0 will not be enabled until the
user tries to start tethering, but Settings will not enable the checkbox unless
usb0 is enabled.
To fix this we add an explicit call to start USB tethering in the connectivity manager.
This will enable RNDIS if necessary and then bring up tethering once usb0 is enabled.

Change-Id: Iae1f733366aa6b0dafa66d4c97207794173ef54b
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-07-23 21:57:55 -04:00
Robert Greenwalt
da15bead3c am 6ef5bd7a: am 9810742c: Add better routes for secondary DNS
* commit '6ef5bd7a00225156661b35271d590f5a12643561':
  Add better routes for secondary DNS
2011-07-22 13:17:54 -07:00
Robert Greenwalt
9810742cd8 Add better routes for secondary DNS
We'd been doing no-gateway hostroutes for dns servers on secondary nets, but on
some devices (multi-homed stingray) this is a problem.  Add gateway-ed hostroutes
instead so the BP can do it's nonstandard "magical" demultiplexing.

bug:5011392
Change-Id: Ia48f69c8ddf2a37cfb8f014f078f96bf601d2ddb
2011-07-22 12:52:21 -07:00
Robert Greenwalt
3079c1666e resolved conflicts for merge of d57579a4 to master
Change-Id: If2881b8b7faea5139af83a37cba04ccac5904f81
2011-07-15 10:52:54 -07:00
Robert Greenwalt
e8d2a4a8a0 Apply the dns and route diff which we get a change
bug:5008973
Change-Id: Ib99e43d9d852452cc1f2aea6bef07bbd194f28cc
2011-07-14 18:12:14 -07:00
Chia-chi Yeh
9e4ff6ef91 VPN: close the socket in protectVpn() to avoid leaking descriptors.
Change-Id: Idda0c2ea1770abc490566e894711bcb08f60b354
2011-07-14 16:19:19 -07:00
Wink Saville
d622c319ae am 6b5e201d: am 6d1d16c3: Merge "Remove STOPSHIP but allow seamless Handoff when possible." into honeycomb-LTE
* commit '6b5e201d4717091d1c54fb561ea2dea9f6e9b17a':
  Remove STOPSHIP but allow seamless Handoff when possible.
2011-07-14 10:55:58 -07:00
Wink Saville
051a664b14 Remove STOPSHIP but allow seamless Handoff when possible.
If an address is removed we must reset the connection but
only for the connections associated with that address. For
now we're doing the "all" addresses for a type (IPv6 or IPv4)
in the future we only need to reset a particular addresses
connections.


Bug: 4981919
Change-Id: I97f8071a3ed6f827ed22f32216ca5011bfe6c1d9
2011-07-13 13:44:13 -07:00
Jeff Sharkey
26f35e29cd Include full network history around current time.
When requesting historical values with time ranges, always include
full values for buckets that span current time.  (It doesn't make
sense to interpolate partial data.)  Move getTotalData() to return
full Entry objects to prepare for packet counts.

Bug: 4691901
Change-Id: I717bd721be9f1d4a47c4121e46e07a56cb15bbf1
2011-07-12 20:20:56 -07:00
Jeff Sharkey
aa731e75a9 Hide NetworkStatsHistory internals.
Instead of exposing internal storage details, offer getValues()
accessor which populates values into a recycled structure.

Change-Id: I5228d7099a8f61b2018a435a813435a67dae49b4
2011-07-12 13:57:06 -07:00
Jeff Sharkey
337b986b98 Return stats from inactive ifaces, packet counts.
When an iface goes inactive, xt_qtaguid maintains historical counters
instead of discarding.  Now reading and returning those values in
NetworkManagementService summary calls.  Tests to verify stats are
returned.

Modify NetworkStats to include rxPackets and txPackets values, and
move to Entry to eventually hide internal storage details.

Bug: 4984539
Change-Id: I1ba0bb5580c62e946d9dff2cc2a6f64aff403efc
2011-07-11 14:39:56 -07:00
Wink Saville
620e1078ec resolved conflicts for merge of a3b4b5ca to master
Change-Id: I50f8fe61303efa78f5d450ddda1483e0ecb81d12
2011-07-08 12:49:14 -07:00
Wink Saville
c101c56ecc Use resetConnections with resetMask.
Bug: 4981919
Change-Id: I5dec2da0756d5083bc81494fd583672704537694
2011-07-07 16:17:06 -07:00
Chia-chi Yeh
bded3eb138 VPN: implement status report for legacy VPN.
Change-Id: I81c28dafd9588572df76cbc303b0d6a0f41f9bc6
2011-07-04 03:23:12 -07:00
Chia-chi Yeh
3e2e1da0a0 VPN: convert prepare() into a form which helps solve race conditions.
When someone tries to revoke packageA, it is possible that packageA is
already revoked by packageB. In this case packageB should not be revoked,
and the new prepare() can help solve this problem.

Change-Id: Iee056a191dd99467b8ad1b5379a17b02d404bad1
2011-07-03 17:03:27 -07:00
Chia-chi Yeh
7e026b38e9 VPN: export legacy VPN in IConnectivityManager.
Change-Id: I016fe056ceab39ffc36aa235d14b30a9f094a2e1
2011-07-02 17:15:00 -07:00
Robert Greenwalt
09d6cdf338 resolved conflicts for merge of 796539b1 to master
Change-Id: Id0a41cae36f5a3b30f2fe8a202c934153b9cd03f
2011-06-22 13:20:14 -07:00
Irfan Sheriff
9a33301da1 resolved conflicts for merge of ea8e3c23 to honeycomb-LTE
Change-Id: I616b7ba5c27d0cc4247f5cce4303effe14658e1e
2011-06-22 11:01:16 -07:00
Irfan Sheriff
a565295565 resolved conflicts for merge of 267a6181 to honeycomb-LTE
Change-Id: I95d459c937f788ed15f178e85692e1c393bdaa04
2011-06-22 07:11:42 -07:00
Irfan Sheriff
ea8e3c2322 Revert "DO NOT MERGE Revert "DO NOT MERGE Add DhcpStateMachine""
This reverts commit a3663884ca.
2011-06-21 14:26:37 -07:00
Irfan Sheriff
a3663884ca DO NOT MERGE Revert "DO NOT MERGE Add DhcpStateMachine"
This reverts commit 9cfe6197fb.

Change-Id: I3a9ae1f0d17e7a154d27d4f3f3eb1efa21a34f64
2011-06-21 11:38:23 -07:00
Robert Greenwalt
33cdcdf2fa Fix tethering upstream determination.
Used to use iface names, but on mobile ifaces are multipurpose.
Refined to use ConnectivityService types.
bug:4530116

Change-Id: Iaa632d5f540d27ffff683bd7d94f8004bf422e71
2011-06-20 11:09:23 -07:00
Jeff Sharkey
d57635406d Handle removed UIDs in network stats and policy.
When UID_REMOVED, clean up any existing UID network policy so it
doesn't linger for future apps.  Also move any NetworkStatsHistory
to special UID_REMOVED tracking bucket.

Tests for new removal code.  Also test detailed UID stats, including
network changes to verify template matching logic.

Bug: 4584212
Change-Id: I9faadf6b6f3830eb45d86c7f1980a27cdbcdb11e
2011-06-19 01:08:12 -07:00
Jeff Sharkey
de450f98eb Read "qtaguid" network stats, refactor templates.
Teach NMS to read qtaguid stats from kernel, but fall back to older
stats when kernel doesn't support.  Add "tags" to NetworkStats entries
to support qtaguid.  To work around double-reporting bug, subtract
tagged stats from TAG_NONE entry.

Flesh out stronger NetworkTemplate.  All NetworkStatsService requests
now require a template, and moved matching logic into template.

Record UID stats keyed on complete NetworkIdentitySet definition,
similar to how interface stats are stored.  Since previous UID stats
didn't have iface breakdown, discard during file format upgrade.

Change-Id: I0447b5e7d205d73d28e71c889c568e536e91b8e4
2011-06-18 22:23:11 -07:00
Chia-chi Yeh
75cacd5525 VPN: migrate from generic Bundle to our own Parcelable VpnConfig.
Note that VpnConfig is for internal use only.
Also remove hidden methods from ConnectivityManager.

Change-Id: Ic298c4dc9a2c6c452bd8f4be6fa84e7ac489c0c4
2011-06-15 17:08:58 -07:00
Jeff Sharkey
97abbe95cd Growable NetworkStats object instead of builder.
NetworkStats now grows in place with arraycopy() instead of callers
needing to know record count a priori.  Better growth calculation for
both NetworkStats and NetworkStatsHistory; 50% each time.  Better
estimates of buckets needed in calling services.

Change-Id: I3adbffa0b7407612cc6349d9135a8b4eb63cd440
2011-06-11 22:17:17 -07:00
Jeff Sharkey
ebbebc73a0 Persist network stats using AtomicFile.
Implements read/write of network stats using AtomicFile, along with
magic number and versioning.  Stores in "/data/system/netstats.bin"
for now.  Tests to verify that stats are persisted across a simulated
reboot, and to verify that TEMPLATE_WIFI is working.

Fixed bug where kernel counters rolling backwards would cause negative
stats to be recorded; now we clamp deltas at 0.

Change-Id: I53bce26fc8fd3f4ab1e34ce135d302edfa34db34
2011-06-09 10:14:13 -07:00
Chia-chi Yeh
9a4ad7d52c The service part of the user space VPN support.
The dialogs will be in another change.

Change-Id: I0cdfd2ef21ffd40ee955b3cbde5ada65dbfdb0bc
2011-06-08 14:16:42 -07:00
Robert Greenwalt
269d732e13 resolved conflicts for merge of 510d0a75 to master
Change-Id: Ic4d8aae7dd457457d9cc8ba081b273e425729f86
2011-06-08 10:01:06 -07:00
Jeff Sharkey
512b757b08 Compute range-based usage in NetworkStatsHistory.
When given a start/end range, interpolate between buckets to return
the total network usage.  Used to summarize detailed UID stats.  Method
to combine NetworkStatsHistory regardless of bucket size.  Used to
combine all histories matching a template.

Added tests for both methods.

Change-Id: Ia463910c0ecf7cf08dcf97c658ad99742bd6b882
2011-06-07 23:54:28 -07:00