Commit Graph

2925 Commits

Author SHA1 Message Date
Hugo Benichi
98177f01f7 Merge "Wakeup packet events: addressing a few comments" am: 67d16ec1ab am: a35bbadeba
am: 19625788a1

Change-Id: I8ca2a01a95acaaca2599563efd6a21e4372d1f95
2017-09-19 07:36:12 +00:00
Hugo Benichi
a35bbadeba Merge "Wakeup packet events: addressing a few comments"
am: 67d16ec1ab

Change-Id: I67b2e54d45a39005e2091a46e8b90d8cc75fe079
2017-09-19 07:21:12 +00:00
Hugo Benichi
175b574e27 Wakeup packet events: addressing a few comments
This patch addresses a few post-submit comment for
commits f562ac34a51dc and 60c9f63b66921.

Bug: 34901696
Bug: 62179647
Test: runtest frameworks-net
Change-Id: I4abec57e0c6bc869dc57b5eb54582dd977b64c30
2017-09-19 14:07:47 +09:00
Hugo Benichi
6bc5c97e96 Merge changes Ie2676b20,Ie8db6f85 am: 61901ddedd am: 4188432a7b
am: 7d16886c7e

Change-Id: Ifd0ace409909d258db3738e58126bbf1c48af5dc
2017-09-14 18:02:14 +00:00
Hugo Benichi
4188432a7b Merge changes Ie2676b20,Ie8db6f85
am: 61901ddedd

Change-Id: Ib4fab32418da8274bd6b5cb9fef85e0db79d866a
2017-09-14 12:01:19 +00:00
Hugo Benichi
61901ddedd Merge changes Ie2676b20,Ie8db6f85
* changes:
  Connectivity metrics: add WakeupStats events
  Connectivity metrics: collect NFLOG wakeup events
2017-09-14 11:53:02 +00:00
Rubin Xu
bc92d94088 Merge "Refactor CompareResult<> class and its call sites" am: 60eae6e621 am: 89deab16f3
am: c345562746

Change-Id: I850f2ceab5949c2fceba5d25eda639a319efa7b3
2017-09-14 10:13:40 +00:00
Hugo Benichi
60c9f63b66 Connectivity metrics: add WakeupStats events
This patch defines a new WakeupStats event in ipconnectivity.proto and
populates these events from the NFLOG wakeup events stored in
NetdEventListenerService.

There is one WakeupStats object per known interface on which ingress
packets arrive and may wake the system up.

Example from $ adb shell dumpsys connmetrics list:

UPDATEME
...
WakeupStats(wlan0, total: 58, root: 0, system: 3, apps: 38, non-apps: 0, unrouted: 17, 6111s)
WakeupEvent(13:36:31.686, iface wlan0, uid -1)
WakeupEvent(13:38:50.846, iface wlan0, uid -1)
WakeupEvent(13:39:16.676, iface wlan0, uid 10065)
WakeupEvent(13:40:32.144, iface wlan0, uid 1000)
WakeupEvent(13:40:35.827, iface wlan0, uid 1000)
WakeupEvent(13:40:47.913, iface wlan0, uid 10004)
WakeupEvent(13:40:52.622, iface wlan0, uid 10014)
WakeupEvent(13:41:06.036, iface wlan0, uid 10004)
...

Bug: 34901696
Bug: 62179647
Test: runtest frameworks-net
Change-Id: Ie2676b20bfb411a1902f4942643df0c20e268d99
2017-09-14 13:29:56 +09:00
Rubin Xu
89deab16f3 Merge "Refactor CompareResult<> class and its call sites"
am: 60eae6e621

Change-Id: I3d463e29d8ba806d69596bee64234a28d0c6f34d
2017-09-13 21:59:11 +00:00
Hugo Benichi
f562ac34a5 Connectivity metrics: collect NFLOG wakeup events
This patch stores NFLOG packet wakeup events sent by Netd to the system
server into a ring buffer inside NetdEventListenerService. The content
of this buffer is accessible by $ dumpsys connmetrics or $ dumpsys
connmetrics list, and is added to bug reports.

The wakeup event buffer stores currently uid and timestamps.

Bug: 34901696
Bug: 62179647
Test: runtest frameworks-net, new unit tests
Change-Id: Ie8db6f8572b1a929a20398d8dc03e189bc488382
2017-09-12 10:02:13 +09:00
Rubin Xu
2fc72f72e5 Refactor CompareResult<> class and its call sites
Move all corner case logic from call sites to CompareResult's implementation,
add a constructor to directly do the comparison.

Test: runtest frameworks-core -c android.net.LinkPropertiesTest
Change-Id: I95bba82ec38d295b18c49c025dffab5f17271cbd
2017-09-08 13:27:58 +01:00
Hugo Benichi
faf8348ad3 NetworkStats: more robust subtraction for deltas
This patch ensures that subtract() between two NetworkStats object will
return a delta with no negative entries in all cases.

When the stats delta contains some negative values, there are clamped to
0. Some logging is added when this happens.

This is what's expected by NetworkStatsHistory#recordData().

Bug: 64365917
Bug: 65439160
Test: runtest frameworks-net
Merged-In: I16e97e73f600225f80e0ce517e80c07c6f399196
Merged-In: I2ac0bc3914cb65ae8ee27921856d698dc59624b2
Merged-In: I67d5dc4b52b254748ff17fe1e16c2eeb1d03c30d
Merged-In: Ib488fb034f72c92f19916490981342a3ef2eb33b

(cherry picked from commit ad5e2827ea)

Change-Id: Ic86b65a65a2517c871221f8784088ec1de18f534
2017-09-08 13:39:44 +09:00
Rubin Xu
90f104931a Merge "Always add local subnet routes to the interface's routing table" am: 981228be38 am: 5fb26a1270
am: e3469a426e

Change-Id: I21f4231c968b37cdcf1565279eedfb990dbc583b
2017-09-07 12:55:58 +00:00
Rubin Xu
5fb26a1270 Merge "Always add local subnet routes to the interface's routing table"
am: 981228be38

Change-Id: I0b1728fae18c891d91fafdfbb1905c05e0fea47f
2017-09-07 12:25:05 +00:00
Rubin Xu
1bb5c0818f Always add local subnet routes to the interface's routing table
For some networks such as mobile data connections, its LinkProperties
does not contain routes for the local subnet so no such route is added
to the interface's routing table. This can be problematic especially
if the device is in VPN lockdown mode where there exists high-priority
PROHIBIT routing rule which in turn blocks the network's default gateway
route from being added (next hop address hitting the prohibit rule).

We fix this by patching LinkProperties to always include direct connected routes
when they are received by ConnectivityService. This has the added advantage that
when apps get LinkProperties, they see the directly connected routes as well.

Bug: 63662962
Test: runtest frameworks-core -c android.net.LinkPropertiesTest
Test: runtest frameworks-services -c com.android.server.ConnectivityServiceTest
Test: Start with device with mobile data, set up ics-OpenVPN in always-on
      lockdown mode. Turn off mobile data then turn it back on, observe
      mobile data connectivity is restored and VPN successfully reconnects.
Change-Id: I35b614eebccfd22c4a5270f40256f9be1e25abfb
2017-09-07 10:50:20 +01:00
Hugo Benichi
84b253b0c5 Merge "Network Service Discovery test: properly release resources" am: c9d24d203d am: 80e0daa870
am: f467db29f9

Change-Id: Id9be284a16112f999d752751a7972fd735573cda
2017-09-04 12:42:56 +00:00
Hugo Benichi
80e0daa870 Merge "Network Service Discovery test: properly release resources"
am: c9d24d203d

Change-Id: If34b3770a5c0fef65d124201e0ca1374cc6b1eca
2017-09-04 12:14:11 +00:00
Hugo Benichi
e062ae07f9 Network Service Discovery test: properly release resources
Bug: 32561414
Bug: 62918393
Bug: 62044295
Test: runtest frameworks-net
Change-Id: If23993b5e391947ecbdc01677f0a643144794b2b
2017-09-02 14:54:29 +09:00
Jeff Sharkey
8ab5f7f324 Merge "Augment network stats based on SubscriptionPlan." into oc-mr1-dev
am: f31cf45e82

Change-Id: Ia6c6d5893d841f21d181363dc01f77efa6579a8f
2017-08-30 19:14:21 +00:00
Jeff Sharkey
f4de294297 Augment network stats based on SubscriptionPlan.
When a carrier provides an "anchor" of data usage at a specific
moment in time, augment the network statistics used by warning/limit
thresholds and Settings UI.  For example, if the OS measured 500MB
of usage, but the carrier says only 400MB has been used, we "squish"
down the OS measured usage to match that anchor.

Callers using the hidden API will have their data augmented by
default, and the public API offers a way to opt-into augmentation.

Thorough testing to verify behavior.

Test: bit FrameworksNetTests:android.net.,com.android.server.net.
Test: cts-tradefed run commandAndExit cts-dev -m CtsUsageStatsTestCases -t android.app.usage.cts.NetworkUsageStatsTest
Bug: 64534190
Change-Id: Id3d4d7625bbf04f57643e51dbf376e3fa0ea8eca
2017-08-30 10:01:10 -06:00
Etan Cohen
58d610c5c2 Merge "[CS] Allow network factory implementations to re-evaluate requests" into oc-mr1-dev
am: 19f12028b7

Change-Id: I2a99242470c37ca423221ff31e2fdd72ea53d4f1
2017-08-24 19:54:06 +00:00
Etan Cohen
896c574bde [CS] Allow network factory implementations to re-evaluate requests
Change the evalRequests() API to protected to allow network factory
implementations to call the API.

A use-case of the API change is for factories temporarily reject a
request since they cannot fullfill it immediately but retry it at a
later time if/when conditions change.

Bug: 63866251
Test: integration tests
Change-Id: Idc50ce0799c67634b7b2fdbad78a26e443caf2e4
2017-08-24 06:47:55 -07:00
Tobias Thierer
45ade15a7c Merge "Network: Use HttpURLConnectionFactory rather than OkHttp APIs" am: be87c9ca58 am: 70b000e6e2 am: 0aa55f7b2c
am: 6376859a98

Change-Id: I1ed6962088be8a0999b81a19d84f5c1c7203dddb
2017-08-22 15:40:30 +00:00
Tobias Thierer
6376859a98 Merge "Network: Use HttpURLConnectionFactory rather than OkHttp APIs" am: be87c9ca58 am: 70b000e6e2
am: 0aa55f7b2c

Change-Id: I048a7695ec98711163494e3dedab785e1400d1da
2017-08-22 15:28:07 +00:00
Tobias Thierer
0aa55f7b2c Merge "Network: Use HttpURLConnectionFactory rather than OkHttp APIs" am: be87c9ca58
am: 70b000e6e2

Change-Id: I0e15e22f4e1561102012b012cdea74db63ac2163
2017-08-22 15:16:31 +00:00
Tobias Thierer
70b000e6e2 Merge "Network: Use HttpURLConnectionFactory rather than OkHttp APIs"
am: be87c9ca58

Change-Id: I79db2f0dc0870f71ec21397545e2e6abb5c7142b
2017-08-22 15:00:24 +00:00
Tobias Thierer
be87c9ca58 Merge "Network: Use HttpURLConnectionFactory rather than OkHttp APIs" 2017-08-22 14:07:16 +00:00
Lorenzo Colitti
b9fc12d1d2 Merge changes I325b13d5,I89719fe7 am: 23868e9c09 am: 9335d2d0b1
am: 4fa0187015

Change-Id: Ib980879b0e50ffe1c8209339df22da4a50d5b74e
2017-08-19 03:38:10 +00:00
Lorenzo Colitti
4fa0187015 Merge changes I325b13d5,I89719fe7 am: 23868e9c09
am: 9335d2d0b1

Change-Id: Iac0d1a08c45816f32b0f8ab81a079883a9965e21
2017-08-19 03:25:21 +00:00
Lorenzo Colitti
9335d2d0b1 Merge changes I325b13d5,I89719fe7
am: 23868e9c09

Change-Id: Iaced543ab17ea87c8f701975764d957bc1b17fc7
2017-08-19 03:15:08 +00:00
Treehugger Robot
23868e9c09 Merge changes I325b13d5,I89719fe7
* changes:
  Add tether offload traffic to interface stats as well.
  Tell the system when tethering offload hits a limit.
2017-08-19 03:05:14 +00:00
Lorenzo Colitti
f1912ca49a Add tether offload traffic to interface stats as well.
Currently, we only count add tethering traffic to per-UID
stats, but not to total data usage (i.e., dev and XT stats). This
is correct for software tethering, because all software forwarded
packets are already included in interface counters, but it is
incorrect for hardware offload, because such packets do not
increment interface counters.

To fix this:
1. Add an argument to ITetheringStatsProvider#getTetherStats to
   indicate whether per-UID stats are requested. For clarity,
   define integer constants STATS_PER_IFACE and STATS_PER_UID
   to represent these operations.
2. Make NetdTetheringStatsProvider return stats only if per-UID
   stats are requested. (Otherwise tethering traffic would be
   double-counted).
3. Make OffloadController's stats provider return the same
   stats regardless of whether per-UID stats were requested or
   not.
4. Make NetworkStatsService add non-per-UID tethering stats to
   the dev and XT snapshots. The per-UID snapshots were already
   correctly adding in per-UID stats.

(cherry picked from commit 5356a35c3b)

Bug: 29337859
Bug: 32163131
Test: runtest frameworks-net
Test: runtest frameworks-telephony
Change-Id: I325b13d50e88841dfb0db4c35e7e27f163ee72fe
Merged-In: I4e8e923d68dce1a4a68608dbd6c75a91165aa4ee
2017-08-19 10:12:05 +09:00
Lorenzo Colitti
1af850fdfe Merge "Add tether offload traffic to interface stats as well." into oc-mr1-dev
am: 21bc3a39a4

Change-Id: I4e8e923d68dce1a4a68608dbd6c75a91165aa4ee
2017-08-19 01:02:33 +00:00
Lorenzo Colitti
21bc3a39a4 Merge "Add tether offload traffic to interface stats as well." into oc-mr1-dev 2017-08-19 00:54:59 +00:00
Lorenzo Colitti
5356a35c3b Add tether offload traffic to interface stats as well.
Currently, we only count add tethering traffic to per-UID
stats, but not to total data usage (i.e., dev and XT stats). This
is correct for software tethering, because all software forwarded
packets are already included in interface counters, but it is
incorrect for hardware offload, because such packets do not
increment interface counters.

To fix this:
1. Add an argument to ITetheringStatsProvider#getTetherStats to
   indicate whether per-UID stats are requested. For clarity,
   define integer constants STATS_PER_IFACE and STATS_PER_UID
   to represent these operations.
2. Make NetdTetheringStatsProvider return stats only if per-UID
   stats are requested. (Otherwise tethering traffic would be
   double-counted).
3. Make OffloadController's stats provider return the same
   stats regardless of whether per-UID stats were requested or
   not.
4. Make NetworkStatsService add non-per-UID tethering stats to
   the dev and XT snapshots. The per-UID snapshots were already
   correctly adding in per-UID stats.

Bug: 29337859
Bug: 32163131
Test: runtest frameworks-net
Test: runtest frameworks-telephony
Change-Id: I7a4d04ab47694d754874136179f8edad71099638
2017-08-19 00:21:56 +09:00
Hugo Benichi
fde112a2eb Merge "Allow NetworkAgent "immutable updates" to NetworkCapabilities" into oc-mr1-dev 2017-08-18 11:46:22 +00:00
Hugo Benichi
322df2899b Merge "Add convenience methods to IpPrefix and LinkAddress" into oc-mr1-dev 2017-08-17 22:31:59 +00:00
Charles He
337ee0771e Merge "Opt-out for always-on VPN: rename API." into oc-mr1-dev
am: 8b2513e439

Change-Id: Ie511c6f1034b75b4e797dbc0ca31c7c5c30f336e
2017-08-17 08:01:53 +00:00
Charles He
8b2513e439 Merge "Opt-out for always-on VPN: rename API." into oc-mr1-dev 2017-08-17 07:54:05 +00:00
Hugo Benichi
6e833f27aa Add convenience methods to IpPrefix and LinkAddress
Also moving relevant test files into tests/net as part of runtest
framworks-net.

Also removes testHashCode in LinkAddress() because this test relies on
the assumption that hashCode() is stable across releases or jdk
versions, which is absolutely not true.

This creates maintenance work for little benefit since hashCode is
already tested as part of the equality test.

For instance this test is now broken because hashing for InetAddress
changed.

Bug: 62988545
Bug: 62918393
Test: runtest frameworks-net, added coverage in tests
Merged-In: I695bc3f0e801bf13bc4fc0706565758f12b775b4
Merged-In: I6d3f3c50eaec44e3a0787e849ab28e89f6f4a72d
Merged-In: Iddfec82a08f845e728adadfa6ec58a60a078d6af
Merged-In: I8d6dd5efd226a8b1c4b05d1e1102362b58e094a1
Merged-In: Ied0cc53ac34c7c5f5539507b1979cbf9c215262e
Merged-In: I3b2b7dcb1a9a194fc08643b27bbb5a0e84e01412

(cherry picked from commit 1dfb6b6755)

Change-Id: I9a17094bfdc54b9dec671306618e132a4beb59fc
2017-08-17 11:03:24 +09:00
Hugo Benichi
86fc53aa7a Allow NetworkAgent "immutable updates" to NetworkCapabilities
This patch loosens the validation checks when a NetworkAgent updates it
NetworkCapabilities: instead of checking that capabilities labeled as
"immutable" stay identical across updates, it is now accepted to change
immutable capabilities in a way that the new NetworkCapabilities
satisfies the old NetworkCapabilities.

This allows a NetworkAgent to update itself in order to match more
requests, but will still catch NetworkAgents that sends degradation
updates causing potentially requests to not match anymore.

Bug: 64125969
Test: runtest frameworks-net
Merged-In: I2a1b3f9c0be6415e40edc989d0c1b03b5631f7b1
Merged-In: I0ab76de59e87c46a6961229399ff7200bce49838
Merged-In: Ied592bf6112574399a1e808da337004e1c35f244
Merged-In: I01e287b4df82a53a522566d33b3166f7801badca
Merged-In: I7ee60daa9c4266e9b9179032815dd7267e06377f
Merged-In: I31ef741eb83d64c476e5930d5762514b5d4cb16f

(cherry picked from commit bae105a5cc)

Change-Id: I9d630d63336f4db69f3eb52faa8483f1b1e35d16
2017-08-17 10:48:41 +09:00
Hugo Benichi
202cc407c2 Merge "Add convenience methods to IpPrefix and LinkAddress" am: 2ad60c88f1 am: ea2defe62b am: 4d7787a310
am: e9291de0c4

Change-Id: Ied0cc53ac34c7c5f5539507b1979cbf9c215262e
2017-08-16 15:20:59 +00:00
Hugo Benichi
e9291de0c4 Merge "Add convenience methods to IpPrefix and LinkAddress" am: 2ad60c88f1 am: ea2defe62b
am: 4d7787a310

Change-Id: I8d6dd5efd226a8b1c4b05d1e1102362b58e094a1
2017-08-16 15:09:12 +00:00
Hugo Benichi
4d7787a310 Merge "Add convenience methods to IpPrefix and LinkAddress" am: 2ad60c88f1
am: ea2defe62b

Change-Id: Iddfec82a08f845e728adadfa6ec58a60a078d6af
2017-08-16 14:56:51 +00:00
Hugo Benichi
ea2defe62b Merge "Add convenience methods to IpPrefix and LinkAddress"
am: 2ad60c88f1

Change-Id: I6d3f3c50eaec44e3a0787e849ab28e89f6f4a72d
2017-08-16 14:49:27 +00:00
Treehugger Robot
2ad60c88f1 Merge "Add convenience methods to IpPrefix and LinkAddress" 2017-08-16 14:38:29 +00:00
Hugo Benichi
1dfb6b6755 Add convenience methods to IpPrefix and LinkAddress
Also moving relevant test files into tests/net as part of runtest
framworks-net.

Also removes testHashCode in LinkAddress() because this test relies on
the assumption that hashCode() is stable across releases or jdk
versions, which is absolutely not true.

This creates maintenance work for little benefit since hashCode is
already tested as part of the equality test.

For instance this test is now broken because hashing for InetAddress
changed.

Bug: 62988545
Bug: 62918393
Test: runtest frameworks-net, added coverage in tests
Change-Id: I695bc3f0e801bf13bc4fc0706565758f12b775b4
2017-08-16 21:42:21 +09:00
Hugo Benichi
d1e7fc23ae Merge "Allow NetworkAgent "immutable updates" to NetworkCapabilities" am: b35719a057 am: 2f9fd9df23 am: f2ac860b7c
am: cd7393c641

Change-Id: I7ee60daa9c4266e9b9179032815dd7267e06377f
2017-08-16 12:23:25 +00:00
Hugo Benichi
cd7393c641 Merge "Allow NetworkAgent "immutable updates" to NetworkCapabilities" am: b35719a057 am: 2f9fd9df23
am: f2ac860b7c

Change-Id: I01e287b4df82a53a522566d33b3166f7801badca
2017-08-16 12:14:09 +00:00
Hugo Benichi
f2ac860b7c Merge "Allow NetworkAgent "immutable updates" to NetworkCapabilities" am: b35719a057
am: 2f9fd9df23

Change-Id: Ied592bf6112574399a1e808da337004e1c35f244
2017-08-16 12:04:38 +00:00