Commit Graph

2336 Commits

Author SHA1 Message Date
Benedict Wong
e3f39c01ba Revert "Take all VPN underlying networks into account when migrating traffic for"
am: 4c94d3051d

Change-Id: Ie9e830962e702c5e66faa7239e6c5037ed3d791d
2019-06-07 02:33:33 -07:00
Benedict Wong
ec59f5f187 Revert "Addressing comments for http://ag/7700679."
am: a293c0644b

Change-Id: I56e7736ced431a5dcd78a6a258abfad09745d25e
2019-06-07 02:33:26 -07:00
Benedict Wong
4c94d3051d Revert "Take all VPN underlying networks into account when migrating traffic for"
This reverts commit 97482de1fd.

Reason for revert: This change has been implicated in 4-way deadlocks as seen in b/134244752.

Bug: 134244752
Change-Id: Ibdaad3a4cbf0d8ef1ed53cfab1e454b9b878bae9
2019-06-07 09:18:01 +00:00
Benedict Wong
a293c0644b Revert "Addressing comments for http://ag/7700679."
This reverts commit 78d5ac4f8f.

Reason for revert: This change has been implicated in 4-way deadlocks as seen in b/134244752.

Bug: 134244752
Change-Id: I5fbb3443a39a21fc9d96442726cd10d20e8d61cd
2019-06-07 09:17:31 +00:00
Lorenzo Colitti
3d54a3180b Merge "Don't use a high-priority notification on auto-join." into qt-dev
am: 831831c76c

Change-Id: Ie18c89162fd9db72a9f77db3737cb9054a5316b7
2019-06-06 04:15:44 -07:00
Lorenzo Colitti
2cce2e74d7 Don't use a high-priority notification on auto-join.
If the device connects to a network automatically and not through
user action, a high-priority notification is intrusive and is
inconsistent with other networking notifications, which are
usually only high priority if the network is manually selected.

Bug: 130766237
Test: see next CL in patch series
Change-Id: I8824f2d1a0efeb6cb75e430ef5159ebce0018779
2019-06-06 18:21:34 +09:00
Lorenzo Colitti
e0b5ac2a74 Merge "Always prompt for limited connectivity." into qt-dev
am: 4a5a129fb2

Change-Id: I41177562415409ec69b9116caa8f3f2cad03b38e
2019-06-05 12:55:31 -07:00
Lorenzo Colitti
a870366aa2 Always prompt for limited connectivity.
Bug: 130766237
Test: See subsequent CL in same patch series.
Change-Id: I45b4a7ba2e21c0be868939d8c7bb78891d69c48b
2019-06-06 00:32:57 +09:00
Lorenzo Colitti
b643b2ba9c Merge "Allow passing in acceptUnvalidated without explicitlySelected" into qt-dev
am: 56b7edcae2

Change-Id: Ifd9dbc9c83e426e66417247cbf1fa594193e000f
2019-06-04 18:29:51 -07:00
TreeHugger Robot
56b7edcae2 Merge "Allow passing in acceptUnvalidated without explicitlySelected" into qt-dev 2019-06-04 18:00:31 +00:00
junyulai
2f233cc104 Merge "Fix cannot create Nat-T keepalive on mobile data" into qt-dev
am: eabafd5ceb

Change-Id: I580b4dd2e493430e8420ca0907f9cf7d1d5a8773
2019-06-04 08:48:21 -07:00
Lorenzo Colitti
e01696a4c4 Allow passing in acceptUnvalidated without explicitlySelected
This will allow wifi to tell ConnectivityService that partial
connectivity is acceptable even if the network is not explicitly
selected.

This is needed when the user selects a partial connectivity
network and tells the system to connect to the network, and never
to ask again. In such cases, the system must switch to the
network even if it is not explicitly selected.

Bug: 130766237
Test: atest FrameworksNetTests
Test: unit tests in an upcoming CL
Change-Id: I13465090b7b1c0bf5dc83362387a5428d77b7e1d
2019-06-04 14:35:22 +00:00
junyulai
97e3775df4 Fix cannot create Nat-T keepalive on mobile data
Currently phone process fail to unparcel NattKeepalivePacketData
since it is not in framework. Moves NattKeepalivePacketData to
framework to make it can be utilized by telephony.

This change also removes the error feedback triggered by calling
add keepalive packet filter to an unsupported network agent. This
is misinterpreted by KeepaliveTracker that start keepalive is
failing.

Bug: 134048171
Test: 1. atest android.net.cts.ConnectivityManagerTest#testSocketKeepaliveLimitTelephony
      2. atest android.net.cts.ConnectivityManagerTest
      3. atest FrameworksNetTests
      4. atest FrameworksTelephonyTests

Merged-In: If630d5b339aa722717258c721daa8ead8c431e2d
Change-Id: Ic0f168be6f5a6263a5e0565b6381dcb5c645660f
(cherry picked from commit 9ede677bb2c081ccdc41c8c3c19c949114bcc138)
2019-06-04 20:44:29 +08:00
Lorenzo Colitti
7c74b37a97 Merge "Don't auto-connect to networks that have no/limited connectivity." into qt-dev
am: 4afb7f9b03

Change-Id: Ic988e284f12b8b54c760d17cd6c6aa93e84f1721
2019-06-03 17:12:14 -07:00
TreeHugger Robot
4afb7f9b03 Merge "Don't auto-connect to networks that have no/limited connectivity." into qt-dev 2019-06-03 23:58:17 +00:00
Lorenzo Colitti
28325f2722 Re-notify if the network goes to PARTIAL.
If NetworkMonitor detects partial connectivity before
EVENT_PROMPT_UNVALIDATED arrives, show the partial
connectivity notification immediately. Re-notify
partial connectivity silently if no internet
notification already there.

Bug: 130683832
Bug: 130766237
Test: atest com.android.server.ConnectivityServiceTest
Change-Id: I7d4eddc643ec795c3961097dc1bdd314d168f6c7
Merged-In: I1b79d3faf96ffe792738935088e4ebbdfcc0d878
(cherry picked from commit 58d4e7304cfce68e338ab34022a0b29d45f42c38)
2019-06-03 13:19:22 +00:00
Lorenzo Colitti
df84643d9b Merge "Re-notify if the network goes to PARTIAL." am: 94851761a8
am: 58d4e7304c

Change-Id: I1b79d3faf96ffe792738935088e4ebbdfcc0d878
2019-06-03 06:10:10 -07:00
Chiachang Wang
61e494012d Re-notify if the network goes to PARTIAL.
If NetworkMonitor detects partial connectivity before
EVENT_PROMPT_UNVALIDATED arrives, show the partial
connectivity notification immediately. Re-notify
partial connectivity silently if no internet
notification already there.

Bug: 130683832
Bug: 130766237
Test: atest com.android.server.ConnectivityServiceTest
Change-Id: I7d4eddc643ec795c3961097dc1bdd314d168f6c7
2019-06-03 12:49:53 +00:00
Lorenzo Colitti
fc289313db Merge "Don't crash ConnectivityService if the network stack crashes." am: 55d1b0500a
am: ac29a97d10

Change-Id: Idae97f7dc29fd95ede722fe34dc20b941002a41c
2019-05-31 07:22:43 -07:00
Lorenzo Colitti
7577c856bc Don't crash ConnectivityService if the network stack crashes.
When the network stack crashes, the system will rebind to it.
Existing references are no longer useful (they just throw
RemoteException) but if the system is still up, then the user
can at least recover the situation by taking actions such as
going into airplane mode, toggling wifi, etc.

This CL stops ConnectivityService from crashing the system when
it cannot talk to NetworkMonitor. This is arguably better than
crashing the system, because crashing the system is disruptive
and carries the serious risk of a bootloop from which it is not
possible to recover.

NetworkStackClient already contains code to crash the system
when the network stack crashes. This change help ensure that
if a crash occurs, it is the result of an explicit decision by
that code instead of an unchecked exception in one of the callers
of the network stack.

Bug: 133725814
Test: builds, boots
Test: atest FrameworksNetTests NetworkStackTests
Change-Id: Ib9a15fececd8579fc5b139fe0341275a45512e0f
Merged-In: Ib9a15fececd8579fc5b139fe0341275a45512e0f
(cherry picked from commit ac29a97d10fe8ea0720763f4ca4657cac85732a1)
2019-05-31 14:19:36 +00:00
Lorenzo Colitti
6edf86cd9c Don't crash ConnectivityService if the network stack crashes.
When the network stack crashes, the system will rebind to it.
Existing references are no longer useful (they just throw
RemoteException) but if the system is still up, then the user
can at least recover the situation by taking actions such as
going into airplane mode, toggling wifi, etc.

This CL stops ConnectivityService from crashing the system when
it cannot talk to NetworkMonitor. This is arguably better than
crashing the system, because crashing the system is disruptive
and carries the serious risk of a bootloop from which it is not
possible to recover.

NetworkStackClient already contains code to crash the system
when the network stack crashes. This change help ensure that
if a crash occurs, it is the result of an explicit decision by
that code instead of an unchecked exception in one of the callers
of the network stack.

Bug: 133725814
Test: builds, boots
Test: atest FrameworksNetTests NetworkStackTests
Change-Id: Ib9a15fececd8579fc5b139fe0341275a45512e0f
2019-05-31 19:30:36 +09:00
Varun Anand
4d83f3e073 Addressing comments for http://ag/7700679.
(cherry picked from commit 78d5ac4f8f)

Note, that its in a separate CL so we could cherry-pick this CL to aosp.
http://ag/7700679 is already in aosp (http://aosp/865073).

Bug: 113122541
Bug: 120145746
Test: atest FrameworksNetTests

Change-Id: Ic1767bc8bf1460e4223f86465fc72344428e6055
Merged-In: I7cfda226b4ed11b67002b83b38fba0f5caf96718
2019-05-30 15:59:07 +00:00
Chalard Jean
ef64770162 Prevent a 4-way binder interlock leading to a leak.
System server             |        NetworkStack
                              |
NetworkMonitorCallbacks  ←----|--- NetworkMonitorCallbacks$Stub$Proxy
         ↓                    |           ↑
  NetworkAgentInfo            |      NetworkMonitor
         ↓                    |           ↑
NetworkMonitor$Stub$Proxy ----|---→ NetworkMonitorImpl

Bug: b/133174607
Test: Manual. The simplest artifact is observed by watching the output of
adb shell dumpsys meminfo -d com.android.networkstack | grep 'Proxy Binders'
while connecting and disconnecting multiple times to any network.
This will display the number of binder proxies. Before this, the binder
proxy count increases by 1 with each connection and never goes down (there
is some noise, as proxy objects are sometimes created for other reasons,
and get GC'd eventually). After this, the binder proxy count is always
eventually stable at 27 + connected network count.

See the bug for the complete analysis.

Merged-In: Ide2428dab3fcd6d7cd00aa2a9fd99d6c99b815a4
Change-Id: I6b74cf12bdbc72c0593d2a4d6f39c895d1ef3534
(cherry picked from commit eb43884fee35102a7fc886750d6a7e891a82ce33)
2019-05-30 14:46:45 +00:00
Chiachang Wang
551043d3e4 Replace limited connectivity notification after detecting it
No internet notification may be prompted before partial
connectivity being detected. Partial connectivity status will
be set into NAI and prompted in the Setting. Behavior is not
aligned between Setting and notification. Thus, update
notification again if partial connectivity is detected.
Also, sliently show the updated notification if no internet
notification has already been shown to user to prevent alerting
user in short time.

Bug: 130683832
Test: Verified with simulated partial connectivity
Test: atest FrameworksNetTests
Change-Id: Ie16a8ce6e0fa437048e8c1eea240314ca30e9520
Merged-In: I004e78a33689e2208918d4316bcf9a8f50a0bac3
Merged-In: I14385a39d99a45c4a6a50a665f456f589c2f4da3
(cherry picked from commit a5c68348d89f256cb5f42283d983d05834c7e36c)
2019-05-30 11:46:21 +00:00
Chiachang Wang
66cc78d6ab Merge "Replace limited connectivity notification after detecting it" am: d5895ce4cf
am: 7cfc1d4ec6

Change-Id: I004e78a33689e2208918d4316bcf9a8f50a0bac3
2019-05-30 04:10:30 -07:00
Chiachang Wang
d5895ce4cf Merge "Replace limited connectivity notification after detecting it" 2019-05-30 10:56:08 +00:00
Chalard Jean
dfbdf219ee Merge "Prevent a 4-way binder interlock leading to a leak." am: baaef39c9b
am: 88cf9c532e

Change-Id: Idb8659a22b9d18f1d0bc566b476f4c536c00da90
2019-05-30 03:40:37 -07:00
Chiachang Wang
af13b9f275 Replace limited connectivity notification after detecting it
No internet notification may be prompted before partial
connectivity being detected. Partial connectivity status will
be set into NAI and prompted in the Setting. Behavior is not
aligned between Setting and notification. Thus, update
notification again if partial connectivity is detected.
Also, sliently show the updated notification if no internet
notification has already been shown to user to prevent alerting
user in short time.

Bug: 130683832
Test: Verified with simulated partial connectivity
Test: atest FrameworksNetTests
Change-Id: Ie16a8ce6e0fa437048e8c1eea240314ca30e9520
2019-05-30 16:19:47 +08:00
Chalard Jean
7284daa96e Prevent a 4-way binder interlock leading to a leak.
System server             |        NetworkStack
                              |
NetworkMonitorCallbacks  ←----|--- NetworkMonitorCallbacks$Stub$Proxy
         ↓                    |           ↑
  NetworkAgentInfo            |      NetworkMonitor
         ↓                    |           ↑
NetworkMonitor$Stub$Proxy ----|---→ NetworkMonitorImpl

Bug: b/133174607
Test: Manual. The simplest artifact is observed by watching the output of
adb shell dumpsys meminfo -d com.android.networkstack | grep 'Proxy Binders'
while connecting and disconnecting multiple times to any network.
This will display the number of binder proxies. Before this, the binder
proxy count increases by 1 with each connection and never goes down (there
is some noise, as proxy objects are sometimes created for other reasons,
and get GC'd eventually). After this, the binder proxy count is always
eventually stable at 27 + connected network count.

See the bug for the complete analysis.

Change-Id: Ide2428dab3fcd6d7cd00aa2a9fd99d6c99b815a4
2019-05-30 17:12:46 +09:00
Lorenzo Colitti
336e846779 Don't auto-connect to networks that have no/limited connectivity.
Auto-reconnecting to a network with no or limited Internet
connectivity is not useful. This is because such networks cannot
be used unless the user taps the notification and interacts with
the resulting dialog. But the notification is only shown if the
user manually connects to the network, not if the system
auto-connects to it.

Bug: 130683832
Bug: 130766237
Test: atest FrameworksNetTests
Change-Id: I5413393529c4bad3a707df229307542486bcff33
2019-05-30 16:33:42 +09:00
Varun Anand
141246d873 Merge changes from topic "vpn_data_accounting" into qt-dev
am: 071c178990

Change-Id: I234eb2b20f47bde94b4aba89867e9d1c7e9ee7d5
2019-05-29 09:44:04 -07:00
Varun Anand
071c178990 Merge changes from topic "vpn_data_accounting" into qt-dev
* changes:
  Add one more test for VPN usage stats.
  Addressing comments for http://ag/7700679.
  NetworkStatsService: Fix getDetailedUidStats to take VPNs into account.
  Take all VPN underlying networks into account when migrating traffic for VPN uid.
2019-05-29 16:34:14 +00:00
Varun Anand
78d5ac4f8f Addressing comments for http://ag/7700679.
Note, that its in a separate CL so we could cherry-pick this CL to aosp.
http://ag/7700679 is already in aosp.

Bug: 113122541
Bug: 120145746
Test: atest FrameworksNetTests

Change-Id: I7cfda226b4ed11b67002b83b38fba0f5caf96718
2019-05-29 18:15:34 +09:00
Varun Anand
97482de1fd Take all VPN underlying networks into account when migrating traffic for
VPN uid.

(cherry picked from commit 612520f544)

Bug: 113122541
Bug: 120145746
Test: atest FrameworksNetTests
Test: Manually verified on device that stats from VPN UID are moved
      appropriately based on its declared underlying network set.
Test: vogar --mode app_process --benchmark NetworkStatsBenchmark.java

Change-Id: I7f368c5970b2dcb969fe0daf5ef44edb1f51d09d
2019-05-29 18:15:17 +09:00
Xiao Ma
fbb2a4935c Wipe the data in IpMemoryStore database upon network factory reset.
Bug:128499160
Test: manual
Test: atest FrameworksNetTests NetworkStackTests
Merged-In: I13ad04454e638905b74dd42a1c83266c7c37652f
Merged-In: Ia13ff10a57c2043f6676976f23ecfb2d2a9a6ef0
(cherry picked from commit ef6ef68c48b869aa9960edd81c73f3d31391ae26)

Change-Id: I42507451d55a620c0e2d271c895ad158f348c1a5
2019-05-28 08:46:44 +00:00
Xiao Ma
71950d27d8 Merge "Wipe the data in IpMemoryStore database upon network factory reset." am: 5ad000a641
am: 0b9f498f86

Change-Id: I13ad04454e638905b74dd42a1c83266c7c37652f
2019-05-27 18:12:49 -07:00
Xiao Ma
555e408928 Wipe the data in IpMemoryStore database upon network factory reset.
Bug:128499160
Test: manual
Test: atest FrameworksNetTests NetworkStackTests
Change-Id: Ib563463a861a5d27b1e9b5fbb92342249b573802
2019-05-27 15:05:09 +09:00
Chiachang Wang
dc07f26256 Update multiple validation result to ConnectivityService
Once a network is determined to have partial connectivity, it
cannot go back to full connectivity without a disconnect. This
is because NetworkMonitor can only communicate either
PARTIAL_CONNECTIVITY or VALID, but not both. Thus, multiple
validation results allow ConnectivityService to know the real
network status.

Bug: 129662877
Bug: 130683832
Test: atest FrameworksNetTests
Test: atest NetworkStackTests
Test: atest --generate-new-metrics 50
NetworkStackTests:com.android.server.connectivity.NetworkMonitorTest
Test: Simulate partial connectvitiy
Change-Id: I406c9368617c03a2dd3ab15fb1f6dbf539d7c714
Merged-In: I243db4c406cca826e803c8035268bc0c6e6e01e2
(cherry picked from commit 4532abd4d2af9ad118873a63cafc6028ed87c52e)
2019-05-24 06:15:25 +00:00
Chiachang Wang
2c593ec776 Merge "Update multiple validation result to ConnectivityService" am: 5af07137d7
am: a0e9af113c

Change-Id: I243db4c406cca826e803c8035268bc0c6e6e01e2
2019-05-23 22:57:18 -07:00
Chiachang Wang
5af07137d7 Merge "Update multiple validation result to ConnectivityService" 2019-05-24 02:50:54 +00:00
Chenbo Feng
d053460495 Merge "Fix the internet permission for native services" am: dcc6ebb96f
am: 5d4822bcd2

Change-Id: I795bc87ad6cba7c40974136ca3b122540679c684
2019-05-23 13:51:43 -07:00
Chenbo Feng
158ac5a39e Fix the internet permission for native services
The native services should specify their permissions in platform.xml if
they need internet permission, otherwise the eBPF program will block the
socket creation request. Fixing the known services that are in group
AID_INET but didn't specify their permission in the xml file.

Bug: 132217906
Test: CtsJdwpTestCases dumpsys netd trafficcontroller
Change-Id: I84cde7d3757953bc0bf761727d64a715bcdd68bb
Merged-In: I84cde7d3757953bc0bf761727d64a715bcdd68bb
(cherry picked from commit e5d6f0fa6c3fd77572f5b29f416acbf304abf9da)
2019-05-23 11:54:49 -07:00
Chiachang Wang
eff1897661 Update multiple validation result to ConnectivityService
Once a network is determined to have partial connectivity, it
cannot go back to full connectivity without a disconnect. This
is because NetworkMonitor can only communicate either
PARTIAL_CONNECTIVITY or VALID, but not both. Thus, multiple
validation results allow ConnectivityService to know the real
network status.

Bug: 129662877
Bug: 130683832
Test: atest FrameworksNetTests
Test: atest NetworkStackTests
Test: atest --generate-new-metrics 50
NetworkStackTests:com.android.server.connectivity.NetworkMonitorTest
Test: Simulate partial connectvitiy
Change-Id: I406c9368617c03a2dd3ab15fb1f6dbf539d7c714
2019-05-23 16:29:30 +08:00
Chenbo Feng
99869f413a Fix the internet permission for native services
The native services should specify their permissions in platform.xml if
they need internet permission, otherwise the eBPF program will block the
socket creation request. Fixing the known services that are in group
AID_INET but didn't specify their permission in the xml file.

Bug: 132217906
Test: CtsJdwpTestCases dumpsys netd trafficcontroller
Change-Id: I84cde7d3757953bc0bf761727d64a715bcdd68bb
2019-05-22 17:59:29 -07:00
Lorenzo Colitti
c67e20d59c Merge "Change the icon for the LOGGED_IN notification." am: 2c3f94e392
am: fce3635550

Change-Id: I9013d2d147979ffc03bc0da6b9a503f8ce623b70
2019-05-17 00:41:51 -07:00
Lorenzo Colitti
ee5282105c Change the icon for the LOGGED_IN notification.
This notification is shown when the user has already logged in to
the network, so it should not have a question mark on it.

Fix: 130526201
Test: atest FrameworksNetTests
Test: manually signed in to portal
Change-Id: I8250236bc4ba251492a6cb9bf23e67666ef860d3
Merged-In: I8250236bc4ba251492a6cb9bf23e67666ef860d3
(cherry picked from commit fce363555029b92b1532058555797d6ef1afb09c)
2019-05-17 06:25:09 +00:00
Lorenzo Colitti
2c3f94e392 Merge "Change the icon for the LOGGED_IN notification." 2019-05-17 04:15:51 +00:00
Lorenzo Colitti
b45f7ad98b Change the icon for the LOGGED_IN notification.
This notification is shown when the user has already logged in to
the network, so it should not have a question mark on it.

Bug: 130526201
Test: atest FrameworksNetTests
Test: manually signed in to portal
Change-Id: I8250236bc4ba251492a6cb9bf23e67666ef860d3
2019-05-17 09:00:53 +09:00
Lorenzo Colitti
4f47f2c827 Merge "Clean up the permission control code in framework" into qt-dev 2019-05-15 06:26:52 +00:00
Paul Hu
49ea93861d Fix captive portal app can be launched w/o MAINLINE_NETWORK_STACK permission
Caller should get SecurityException if called
ConnectivityManager#startCaptivePortalApp() w/o
MAINLINE_NETWORK_STACK permission. But now it will not get any
exception and can launch captive portal app successfully.

Bug: 132662433
Test: atest android.net.cts.ConnectivityManagerTest#testStartCaptivePortalApp
      w and w/o MAINLINE_NETWORK_STACK permission
Test: atest FrameworksNetTests NetworkStackTests

Change-Id: Ib70fe6fad107f3e9dce9ce673188c5ce5dc1ad7b
Merged-In: I1025da29beb53259f57bd9ca5648b32f2847ed4a
Merged-In: Ib70fe6fad107f3e9dce9ce673188c5ce5dc1ad7b
(cherry picked from commit 72b3ab18ca302a3117f424a0f0ef6c08897c310e)
2019-05-15 02:09:52 +00:00