Commit Graph

2646 Commits

Author SHA1 Message Date
Mark Lu
c4fe74f7f2 docs: changes to broadcast documentation am: e1682a08b7
am: 538a5cf796

Change-Id: I7dcb1bc57fb62f2b177c7ad15a9236da98fb749f
2016-12-16 05:06:37 +00:00
Mark Lu
538a5cf796 docs: changes to broadcast documentation
am: e1682a08b7

Change-Id: I673efc100756ee6d6ef0d2afa99d48d471ce0987
2016-12-16 04:59:08 +00:00
Erik Kline
4adb18679e Have IpManager track L2-L4 signaling traffic required for IP connectivity.
Test: as follows
    - built and flashed
    - observed logcat
    - observed "dumpsys wifi ipmanager"
    - runtest BlockingSocketReaderTest passes
    - runtest ConnectivityPacketSummaryTest passes
Bug: 21859053
Bug: 26101306
Bug: 31742572
Bug: 31707128
Bug: 33531488

Change-Id: Ibecaf809dcc1813924b25749e8ba8eb2d4bdf114
2016-12-15 17:16:48 +09:00
TreeHugger Robot
ae8bdd4525 Merge "More correct startup and shutdown procedures." into nyc-mr2-dev 2016-12-14 11:33:38 +00:00
Erik Kline
af209807ce More correct startup and shutdown procedures.
During IpManager startup, anything sending messages to the state machine
must not begin doing so until after the state machine has been started.
Reorder the constructor accordingly.

During shutdown, AvoidBadWifiTracker needs to unregister the registered
BroadcastReceiver and might as well also unregister the ContentObserver.

Bug: 33388922
Change-Id: I58e07f7ccddaab160c153bcfb69fd45f50bb8710
2016-12-14 18:53:26 +09:00
Mark Lu
e1682a08b7 docs: changes to broadcast documentation
- move BroadcastReceiver info to developer guide. see cl/140402421
- add usage note to CONNECTIVITY_ACTION broadcast

bug:32533262
bug:33106411

Change-Id: Ic2aa517831d29418e0c42aa6fc1e7f9aeb50f802
2016-12-13 18:28:32 -08:00
Michal Karpinski
7260c83c0d DO NOT MERGE [DPM] DO can start network logging and listen for events
This CL adds:
1) Setter and getter in DPM to manipulate logging switch (retrieval
method to come in a subsequent CL(s)).
2) A way for DPM to register to listen for events.
3) Skeleton of NetworkLogger class (more to come in subsequent CL(s)).

Bug: 29748723
Change-Id: I5c04662ccc6febd2ba294b0eaca1ed1da9c16e47
2016-12-13 17:15:38 +00:00
Hugo Benichi
8c584ea6d6 Merge "DO NOT MERGE IpConnectivityMetrics: rate limit ApfProgramEvents" into nyc-mr2-dev 2016-12-13 03:55:32 +00:00
Hugo Benichi
0acf1bcab5 Merge "DO NOT MERGE IpConnectivityMetrics reads buffer size in settings" into nyc-mr2-dev 2016-12-13 03:54:24 +00:00
Hugo Benichi
9f5013b6c0 DO NOT MERGE IpConnectivityMetrics: rate limit ApfProgramEvents
This patch uses the previously introduced TokenBucket to rate limit
ApfProgramEvents, still allowing for burst of ApfProgramEvents when a
new interface is set up (due to ipv4 provisioning, multicast lock, ipv6 RAs
triggering new APF program events in short amounts of time).

Test: new test in IpConnectivityMetricsTest
Bug: 1550402

(cherry picked from commit 811c4cec75)

Change-Id: Ibe41e9a76db36ea502697a5f19fc0d91c40a3087
2016-12-13 10:20:03 +09:00
Hugo Benichi
96a0e1f8c4 DO NOT MERGE IpConnectivityMetrics reads buffer size in settings
Test: IpConnectivityMetricsTest passes. Also manually changed the new
setting and verified the buffer size is as expected after flushing the
buffer.
Bug: 32198637

(cherry pick from commit d5f78a08b4)

Change-Id: Ie7ca1638533479601c5983bb6e54705003561b6c
2016-12-13 10:20:03 +09:00
Hugo Benichi
d5dbca9b15 DO NOT MERGE IpConnectivity metrics: add version number
This patch adds a version field to ipconnectivity.proto and populates it
to 2, which is the logical version number for NYC-MR2.

Test: IpConnectivity{EventBuilder,Metrics}Test pass
Bug: 32127906

(cherry picked from commit 79a739cbf3)

Change-Id: I5f37633afd9ec82f5402c5b6670fe2febae82a14
2016-12-13 10:19:13 +09:00
Hugo Benichi
35ee7fd62e DO NOT MERGE Captive portal systel log improvements
This patch improves system logging around captive portal detection to
make inspection of bug reports sligthly easier:

- NetworkMonitor now logs by default CMD_CAPTIVE_PORTAL_RECHECK and
  CMD_CAPTIVE_PORTAL_APP_FINISHED. Other system logs are kept off with
  a new VDBG boolean contant,
- NetworkNotificationManager now prints the notification id at
  notification time. This allows to easily correlate show and clear.
- errors in NetworkNotificationManager are logged as Throwable instead
  of through their implicit toString() method.

Test: $ runtest frameworks-net
Bug: 32198726

(cherry picked from commit 6fe7d3cdb3)

Change-Id: I7780c389a94c4b9fa226f53b02fe5960d1c08618
2016-12-09 16:14:32 +09:00
Michal Karpinski
ba9dbc0a6d DO NOT MERGE Extending DNS event reporting
This adds hostname, array of addresses, total count of IP addresses
and uid to the existing pipeline.
Currently ignores the new data it receives, further work will be
done in the subsequent CLs.

Test: for now just the benchmarking, in the future unit and CTS

Bug: 29748723

(cherry picked from commit 33fa018898)

Change-Id: I3941b8d6fc1dd578e2af6ed4d3c3d0a722c39918
2016-12-02 17:21:28 +00:00
Michal Karpinski
3899d9257b DO NOT MERGE Rename the DnsEventListenerService to NetdEventListenerService
The service will be extended to include listening for connect events as well.

Test: this is just a renaming change

Bug: 29748723
Change-Id: I073187e354fc987222ec0108d7f0d3a422397d5e
2016-11-24 17:05:02 +00:00
Hugo Benichi
d7e4af9ed6 DO NOT MERGE ANYWHERE Add CONNECTIVITY_USE_RESTRICTED_NETWORKS permission am: 4f299984a2 -s ours am: 37f3c58a0c -s ours am: 5a58c696f6 -s ours am: 5fec21d5e0 -s ours
am: 70cd6f9877  -s ours

Change-Id: I5bb53669285c0878905f8a2a70ff2dbe06c09ab2
2016-11-10 18:42:57 +00:00
Hugo Benichi
70cd6f9877 DO NOT MERGE ANYWHERE Add CONNECTIVITY_USE_RESTRICTED_NETWORKS permission am: 4f299984a2 -s ours am: 37f3c58a0c -s ours am: 5a58c696f6 -s ours
am: 5fec21d5e0  -s ours

Change-Id: I42aabc35fa30e242125015eac1b7d32790cc4528
2016-11-10 18:36:30 +00:00
Hugo Benichi
5fec21d5e0 DO NOT MERGE ANYWHERE Add CONNECTIVITY_USE_RESTRICTED_NETWORKS permission am: 4f299984a2 -s ours am: 37f3c58a0c -s ours
am: 5a58c696f6  -s ours

Change-Id: Ibe074076d22a736394a01d27aa9e1c7ed73458b2
2016-11-10 18:23:58 +00:00
Hugo Benichi
5a58c696f6 DO NOT MERGE ANYWHERE Add CONNECTIVITY_USE_RESTRICTED_NETWORKS permission am: 4f299984a2 -s ours
am: 37f3c58a0c  -s ours

Change-Id: If1903ace2a31d8ccf3c66916211a07ac342fc360
2016-11-10 18:11:02 +00:00
Hugo Benichi
37f3c58a0c DO NOT MERGE ANYWHERE Add CONNECTIVITY_USE_RESTRICTED_NETWORKS permission
am: 4f299984a2  -s ours

Change-Id: I2ba3b591df623298f41e92e6f0d067a6fcf30533
2016-11-10 18:04:26 +00:00
Hugo Benichi
4f299984a2 DO NOT MERGE ANYWHERE Add CONNECTIVITY_USE_RESTRICTED_NETWORKS permission
This patch creates a new permission used by ConnectivityService to give
access to restricted networks without the NET_CAPABILITY_NOT_RESTRICTED
capability bit on.

Bug: 24497316
Change-Id: I5b6c8a9ef14395b2f1ab26cb17b24d7876ec79f1
2016-11-09 19:08:30 -08:00
Jeremy Joslin
47c9d37d53 VPN network stat accounting changes.
am: 38bf381574

Change-Id: I1c65db583cdd1d5b519830e521c633cb8dee449f
2016-10-21 23:37:57 +00:00
Jeremy Joslin
38bf381574 VPN network stat accounting changes.
Properly account for VPN apps that make heavy use of the tun
interface. Prior to this change a VPN app could be incorrectly charged
for more data than it actually used if it sent more traffic through
the tun interface than the underlying interface.

This change excludes VPN app traffic on the tun interface from the
adjustment pool and doesn't redistribute traffic to the VPN app.
Instead all of the redistributed traffic is deducted from the VPN app
which effectively represents any overhead incurred by the VPN app.

BUG: 30557871
Change-Id: I62a75a0c0c0111e052b7903baa9f5d6d94ef57fd
2016-10-21 18:47:57 +09:00
Calvin On
1bf7fdd625 Add option to skip and avoid captive portals.
Test: ConnectivityServiceTest updated with test cases.
Test: Manually tested against att-wifi in B42.
Bug: 30222699
Change-Id: Ibe63942da04748ab0406e24e0f44be31d47710a0
(cherry picked from commit 3fd101e574)
2016-10-20 18:50:46 +00:00
Erik Kline
fdb7b562cf Refactor "avoid bad wifi" logic into a utility class am: fc52be9643
am: f0582faceb

Change-Id: Id670d13b99ab6935b67335e19d2389e5b4f61111
2016-10-06 20:16:57 +00:00
Christopher Wiley
cb89907d0c Notify NetworkPolicyManagerService on tethering changes
am: 0c252807c8

Change-Id: I43b25305c730966da83acdaccb127c27be0e2332
2016-10-06 19:57:15 +00:00
Erik Kline
f0582faceb Refactor "avoid bad wifi" logic into a utility class
am: fc52be9643

Change-Id: I4a6ad3791ac551b0d64b37dd4e2afef1e8e8ee10
2016-10-04 07:47:52 +00:00
Erik Kline
fc52be9643 Refactor "avoid bad wifi" logic into a utility class
Additionally, add this utility class to IpManager for compatibility
verification.  A follow-on CL will make use of IpManager's local
AvoidBadWifiTracker.

Bug: 31827713
Change-Id: If8c56c3f8076d6a5157ea180e361bbdadc2bc1dd
2016-10-04 15:07:42 +09:00
Christopher Wiley
0c252807c8 Notify NetworkPolicyManagerService on tethering changes
(cherry-pick of d73faf07606d40d3915d22a72fa14f7ba956d459)

No longer do this in ConnectivityService#tether/untether.
Instead, have Tethering do it when an interface is actually
tethered.

Bug: 31405407
Test: Toggling hotspot now disables data saver

Change-Id: I9910a2e488c30c92d45f817c8f5df0fac5510de6
2016-09-30 10:33:19 -07:00
Hugo Benichi
b196a8e231 New Settings symbols for captive portal detection
am: 728a769ee1

Change-Id: Id8c19f16c50b22034278c00b55c5431d892f8a95
2016-09-29 01:15:17 +00:00
Hugo Benichi
a40c84eae0 Captive portal detection uses 3rd fallback probe
am: a3d1962ab3

Change-Id: I15607fbfae9dc127b72b6f299b69d6b648117338
2016-09-29 01:13:59 +00:00
Hugo Benichi
728a769ee1 New Settings symbols for captive portal detection
This patch defines new Settings symbols for
  - setting the probe urls for captive portal detection.
  - setting which User-Agent to use for captive portal detection.

The existing default values for these settings are not changed, i.e:
  - HTTP and HTTPS probes urls are unchanged.
  - the fallback probe is not used.
  - User-Agent is empty by default.

Bug: 29367974
Change-Id: I6e4b3b172e56b8b67fffa4b51f776d68d5851f25
2016-09-28 23:13:25 +09:00
Hugo Benichi
a3d1962ab3 Captive portal detection uses 3rd fallback probe
This patch adds the possitibility to send a 3rd fallback validation
probe in sendParallelHttpProbes when neither the 1st http probe nor the
https probe came back with a conclusive answer.

This 3rd probe is only used for trying again captive portal detection
and does not return success, so that network validation always fails if
the https probe fails.

In addition, the url reveals a captive portal is now sent to the
CaptivePortalLoginActivity so that all three probes can use different
urls.

Bug: 29367974

Change-Id: I7385fde1aa1316d94aac350af0e956cb193aa4ee
2016-09-28 23:12:31 +09:00
Hugo Benichi
d5680ac912 Merge "IpConnectivityLog uses new metrics service" into nyc-mr1-dev
am: 4996bc8105

Change-Id: I7fae7760d5ec872a0a989ca3964419d3839694ad
2016-09-23 04:48:51 +00:00
Hugo Benichi
8e9d612218 IpConnectivityLog uses new metrics service
am: 9eec53dbe4

Change-Id: I1e3b611eeec448e333e83cb8d630f0e9906b7f14
2016-09-23 04:48:49 +00:00
Hugo Benichi
4996bc8105 Merge "IpConnectivityLog uses new metrics service" into nyc-mr1-dev 2016-09-23 04:43:23 +00:00
Lorenzo Colitti
fe2d469de0 Merge "Restrict access to background networks to CHANGE_NETWORK_STATE." into nyc-mr1-dev
am: d1532107e1

Change-Id: I8fa53ac5143bd5df0177a11e5961acef63072007
2016-09-23 03:57:34 +00:00
Lorenzo Colitti
783c3e763d Restrict access to background networks to CHANGE_NETWORK_STATE.
am: 1034b7c1ff

Change-Id: Iaf4ccd24298f680cab39bf9b87604eb16bc53aa5
2016-09-23 03:57:32 +00:00
TreeHugger Robot
d1532107e1 Merge "Restrict access to background networks to CHANGE_NETWORK_STATE." into nyc-mr1-dev 2016-09-23 03:51:15 +00:00
Lorenzo Colitti
1034b7c1ff Restrict access to background networks to CHANGE_NETWORK_STATE.
When a network goes into the background, tell netd to set the
network's permission to NETWORK. Also, close all TCP sockets on
that network, to prevent long-lived TCP connections from staying
on it and possibly continuing to use metered data.

Bug: 23113288
Change-Id: Ie89c1940b6739160e25c6e9022b8b977afb3e16e
2016-09-23 11:27:13 +09:00
Hugo Benichi
9eec53dbe4 IpConnectivityLog uses new metrics service
This patch connects existing IpConnectivityLog to the new
IpConnectivityMetrics service:
  - IpConnectivityLog is now an independent class that pushes events
    directly to the new IpConnectivityMetrics service.
  - DnsEventListenerService is moved from MetricsLoggerService to
    IpConnectivityMetrics.
  - this patch also features end to end tests from IpConnectivityLog to
    IpConnectivityMetrics dumpsys output.

Bug: 31254800
Change-Id: I4fe4a209eedde2814d5f13c574a1a0d854bd05c9
2016-09-22 23:08:37 +09:00
Hugo Benichi
ad509bd205 Add ipconnectivity.proto to services jar
This patch moves ipconnectivity.proto and companion serialization
classes from /vendor/google/app/ConnectivityMetrics into the framework
services jar.

This will allow to implement a dumpsys interface for IpConnectivity
metrics events defined in android.net.metrics that output metrics as
a serialized proto.

Bug: 31254800
Change-Id: Ia4449103fd7222c9d899352fea2dce47a790a49c
2016-09-22 22:21:41 +09:00
Lorenzo Colitti
1f6b9ebaf3 Rematch wifi networks when the avoid bad wifi setting changes.
am: 320b446d11

Change-Id: I589cfdb8792997fe94d22c551c8a53e48e45db1a
2016-09-21 09:47:28 +00:00
Lorenzo Colitti
320b446d11 Rematch wifi networks when the avoid bad wifi setting changes.
Currently, when the avoid bad wifi setting changes, we rematch
all networks and requests, but do not update any NetworkFactories
with new scores. This means that if a wifi network's score goes
down as a result of enabling bad wifi avoidance, we will not look
for another network (e.g., cell data) to satisfy its requests.

This makes it so that when the user enables avoiding bad wifi,
we will attempt to bring up cell data will if it is not already
connected.

Bug: 31075769
Change-Id: Ie5b685be8676999adea8c9ecbbc1abb92f81a74f
2016-09-21 15:10:14 +09:00
Lorenzo Colitti
f0718d3ba4 Add debug output for bad wifi avoidance restrictions.
am: 7dabed84b5

Change-Id: I17e42fb80763a9d48049db9d0785b54bd5005797
2016-09-20 17:15:50 +00:00
Lorenzo Colitti
b3b2b23d17 Support "don't ask again" in the avoid bad wifi dialog.
am: e98557f85a

Change-Id: Ic6a1917a83e2d847bd673790e2c36f7316ca7acd
2016-09-20 17:14:50 +00:00
Lorenzo Colitti
7dabed84b5 Add debug output for bad wifi avoidance restrictions.
Bug: 31075769
Change-Id: Ibd97f40917c946aa164c13c7e06c4696d21dc203
2016-09-20 22:01:39 +09:00
Lorenzo Colitti
e98557f85a Support "don't ask again" in the avoid bad wifi dialog.
This contains the following changes:

1. Make NETWORK_AVOID_BAD_WIFI a tristate: 0 means never avoid
   bad wifi, unset means prompt the user, 1 means always avoid.
2. Look at NETWORK_AVOID_BAD_WIFI only if the carrier restricts
   avoiding bad wifi (previously, we relied on the setting being
   null and defaulting to the value of the config variable).
3. Add an avoidUnvalidated bit to NetworkAgentInfo to track
   whether the user has requested switching away from this
   unvalidated network even though avoiding bad wifi is generally
   disabled. This is set to true when the user selects "switch"
   in the dialog without setting the "Don't ask again" checkbox.
4. Add a hidden setAvoidUnvalidated API to ConnectivityManager to
   set the avoidUnvalidated bit.
5. Additional unit test coverage.

Bug: 31075769
Change-Id: I1be60c3016c8095df3c4752330149ce638bd0ce1
2016-09-20 16:03:53 +09:00
Lorenzo Colitti
4aba7d2b78 Update the avoid bad wifi settings on the handler thread.
am: 49d32fe109

Change-Id: I595949881353f5779ed2bb55ff05f27b513cd6de
2016-09-16 17:32:09 +00:00
Lorenzo Colitti
49d32fe109 Update the avoid bad wifi settings on the handler thread.
Currently, every call to avoidBadWifi fetches the current value
of the config variable and setting whenever it is called. This
means that the score of an unvalidated wifi network can
unpredictably change at any time, creating a data race.

Instead, persist the value and only update it when something
changes.

Bug: 31075769
Change-Id: I0f4e0e742c91ef77fabc95d3ebb494338396aca5
2016-09-17 00:57:38 +09:00