Commit Graph

6512 Commits

Author SHA1 Message Date
junyulai
c602b40237 Limit unprivileged keepalives per uid
Public APIs for creating unprivileged NATT socket keepalive
might allow users to exhaust resource if malicious apps try
to create keepalives with fd which is not created by
IpSecService through binder call. Thus, this change add
customizable limitation per uid to prevent resource exhaustion
attack.

Bug: 129371366
Bug: 132307230
Test: atest FrameworksNetTests

Clean cherry-pick of aosp/954040
Merged-In: Ibcb91105e46f7e898b8aa7c2babc3344ef2c6257
Merged-In: Ia667386c1a8949839871a6949d79552d9c8b88f0

Change-Id: I92f6d977b6dfde4e1bf74df6b60c9a0b9e8eec40
2019-05-13 15:53:02 +09:00
junyulai
ec4eb8f448 Support customization of supported keepalive count per transport
This change specifies the required minimum supported keepalives
in SDK, and allows OEMs to customize supported keepalive count
per network through resource overlay.

Bug: 129371366
Test: 1. m -j doc-comment-check-docs
      2. atest FrameworksNetTests

Clean cherry-pick of aosp/946359

Change-Id: I06840834d0ee8121358bf4829fe47ecf9964d395
Merged-In: I0218f3674628c13ead63fc9a873895ba7f113033
Merged-In: Ia667386c1a8949839871a6949d79552d9c8b88f0
2019-05-13 15:52:07 +09:00
TreeHugger Robot
1140cb3dbb Merge "Add CTS API coverage for APIs which are used by NetworkStack" into qt-dev 2019-05-13 02:41:34 +00:00
TreeHugger Robot
4506469d8e Merge "Add ApfCapabilities common test cases" into qt-dev 2019-05-13 02:28:03 +00:00
Paul Hu
9a5d592793 Add ApfCapabilities common test cases
Bug: 129199900
Test: atest FrameworksNetTests
Test: atest CtsNetTestCases: added tests pass

Change-Id: I737ab11ccd1bf6f92bae4eae21e67d4d6f86a758
Merged-In: Icfd80943212430b2a0e6a4b55f53270cbc3d1693
Merged-In: I737ab11ccd1bf6f92bae4eae21e67d4d6f86a758
(cherry picked from commit ce54fa5cb392c38bfec62b81664fcc25098eb9dc)
2019-05-13 01:19:00 +00:00
Paul Hu
cd36ebcfcd Add LinkProperties common test cases
Bug: 129198747
Test: atest FrameworksNetTests
Test: atest CtsNetTestCases: added tests pass

Change-Id: I03d162ea3c5bc2ccb8f913bbfdf85ebcd194c35a
Merged-In: I8d36177cbf4f39da602331e091a60a40f6eaea33
Merged-In: I03d162ea3c5bc2ccb8f913bbfdf85ebcd194c35a
(cherry picked from commit 385757291c2e822f1338157a2368e319d4048c89)
2019-05-13 01:17:06 +00:00
Chalard Jean
9ff61e4948 Support strict mode private DNS on VPNs that provide Internet.
Currently, strict mode private DNS does not work on VPNs because
NetworkMonitor does not validate VPNs. When a VPN connects, it
immediately transitions to ValidatedState, skipping private DNS
hostname resolution.

This change makes NetworkMonitor perform private DNS hostname
resolution and evaluation even on VPNs.

In order to ensure that the system always immediately switches to
the VPN as soon as it connects, remove the unvalidated penalty
for VPN networks. This ensures that the VPN score is always 101
and the VPN always outscores other networks as soon as it
connects. Previously, it would only outscore other networks
when no-op validation completed.

Bug: 122652057
Test: atest FrameworksNetTests NetworkStackTests
Test: manually ran a VPN with private DNS in strict mode
atest android.net.cts.ConnectivityManagerTest com.android.cts.net.HostsideVpnTests
Change-Id: Iaa78a7edcf23755c89d7b354edbc28d37d74d891
Merged-In: Iaa78a7edcf23755c89d7b354edbc28d37d74d891
(cherry picked from commit 414b8c8b1ce8ae2ad6ef95c1ffba19062077d3e6)
2019-05-10 13:09:00 +00:00
Xiao Ma
015598ea52 adopt non-blocking method to obtain the IpMemoryStore service.
Bug: 131133347
Test: atest FrameworksNetTests
Merged-In: I7de4f23370bdf9c9df5e74ed074c794080d93d95
Merged-In: If0d43f21710ca31149610d3e6a5f0d7e4acc11a2

Change-Id: If0d43f21710ca31149610d3e6a5f0d7e4acc11a2
(cherry picked from commit c4e4fd7beeda36c84548c7bb4a16312f20bdf188)
2019-05-10 00:55:14 +00:00
Lorenzo Colitti
80045d35e7 Merge "[CS] Unregister callback as part of onUnavailable dispatch" into qt-dev 2019-05-09 09:42:38 +00:00
Etan Cohen
2f9a465841 [CS] Unregister callback as part of onUnavailable dispatch
The onUnavailable semantics promise that it is equivalent to calling
the unregister callback method. But - it doesn't unregister the callback
allowing it to be reused. Fixed.

Additionally, modified the unregisterNetworkCallback method to not fail
on duplicate unregistration (since a callback could now self
unregister). Instead simply print a log.

Bug: 130651445
Test: atest ConnectivityServiceTest
Merged-In: I4c54b003a733eb0b1e4fd8674ed13081b1bef8e3
Change-Id: I4c54b003a733eb0b1e4fd8674ed13081b1bef8e3
2019-05-09 03:57:54 +00:00
Benedict Wong
d7be3aa1d2 Add IPsec checks for IPSEC_TUNNEL feature
This patch adds checks to ensure that the IPSEC_TUNNEL feature flag is
enabled.

Bug: 117183273
Test: Compiles & tests passing
Change-Id: I2699dda29e1eed139bc6fd1b70071e5ab33cad88
2019-05-08 00:11:28 +00:00
Luke Huang
53578de5d1 Correct buffer size limitation for DnsResolver API
Bug: 131055651
Test: atest DnsResolverTest
(cherry picked from commit f6726c2c5456887aaebe3f821a86a83bbed92f3d)

Change-Id: I69ad9428ddfb70437e47ef4740930a97aece69d9
2019-05-02 09:37:13 +00:00
Paul Hu
454cf032a8 Add CTS API coverage for APIs which are used by NetworkStack
Bug: 129200003
Bug: 129200292
Bug: 129199996
Bug: 129200261
Bug: 129200513
Bug: 129200316
Bug: 129200589
Bug: 129200181
Bug: 129200669
Bug: 129200504
Bug: 129200478
Test: atest FrameworksNetTests
Test: atest CtsNetTestCases: added tests pass

Change-Id: I0fed0664c1eb7b07c890efffb71ef589f65eec80
Merged-In: Id3f0d1c19a76c7987b69e449203fc50423f5e531
Merged-In: I0fed0664c1eb7b07c890efffb71ef589f65eec80
(cherry picked from commit 8c6a07de57680d7d2db75fada3e3ab04c27fa62f)
2019-05-02 08:44:46 +00:00
TreeHugger Robot
44bb6d00a7 Merge "Add tests for DhcpErrorEvent" into qt-dev 2019-04-30 11:57:59 +00:00
TreeHugger Robot
b418a13a90 Merge "Add Network, NetworkCapabilities, StaticIpConfiguration common test cases" into qt-dev 2019-04-30 11:55:29 +00:00
Mark Chien
5de4520591 Support adding NATT keepalive packet filter
Support adding NATT keepalive packet filter to APF
filter.
Generating APF program will be addressed in another CL.

Bug: 33530442
Test: - atest NetworkStackTests
      - atest FrameworksNetTests

Change-Id: I403cd14ac9aa6b001c4e580abbb33a615931a192
Merged-In: Idaa7238a5c9acdae9f6cff13095ee9436c7c92c8
(cherry picked from commit 038c11d564452c9e08f25119423049339ff93c57)
2019-04-30 11:26:26 +08:00
Paul Hu
193f1686ca Add Network, NetworkCapabilities, StaticIpConfiguration common test cases
Bug: 129200415
Bug: 129200142
Bug: 129200418
Test: atest FrameworksNetTests
Test: atest CtsNetTestCases: added tests pass

Change-Id: I688e200a83301ee62710445fa38292c33985fe1b
Merged-In: I49c35541eb21e91f8c36215456df703d2fe70d2c
Merged-In: I688e200a83301ee62710445fa38292c33985fe1b
(cherry picked from commit 847dc65677b858146b505d4879a44ddd319180e2)
2019-04-30 02:01:32 +00:00
TreeHugger Robot
65caa406e7 Merge changes from topic "natt-aidl+aidl-freeze" into qt-dev
* changes:
  Add AIDL parcelable for NattKeepalivePacketData
  Move NattKeepalivePacketData out of the framework
2019-04-29 16:26:23 +00:00
Aaron Huang
311bac9b68 Add AIDL parcelable for NattKeepalivePacketData
Bug: 33530442
Test: atest FrameworksNetTests

Change-Id: I9b9a51dc5dc06c90229fb36c34c24258991c4146
Merged-In: I9b9a51dc5dc06c90229fb36c34c24258991c4146
(cherry picked from commit 76985bd9a5577fb905e45b20513661ee10c1f44f)
2019-04-29 20:24:42 +08:00
Aaron Huang
8cf997d1c1 Move NattKeepalivePacketData out of the framework
For implementing parcelable interface for NattKeepalivePacketData.
Move this class out of framework.jar and move to services.jar

This class is used in telephony-common.jar and it also loads
service.jar.

Bug: 33530442
Test: - build pass
      - atest NetworkStackTests
      - atest ConnectivityServiceTest

Change-Id: Ie1d02bb7bccb76415cf71824147466cabf6b88b6
Merged-In: Ie1d02bb7bccb76415cf71824147466cabf6b88b6
Merged-In: Idf7c25b6b553d8c0cc4ef2ea8193438480420fb4
(cherry picked from commit 58a1f931eba8716c4a630863f658b070cda623de)
2019-04-29 20:24:24 +08:00
Paul Hu
5e05934c54 Add tests for DhcpErrorEvent
The tests are run both in unit and CTS tests.
Test: atest FrameworksNetTests NetworkStackTestCases
Bug: 129200175

Change-Id: I78d78dd421cc3ffea774ff5eaa6aa758debc9cf2
Merged-In: I9b65a2eef94567d2b79a9955619938e64906080d
Merged-In: I78d78dd421cc3ffea774ff5eaa6aa758debc9cf2
(cherry picked from commit 9e046d509a37c6f37b4757f1681846cee60cfd5c)
2019-04-29 01:49:17 +00:00
Paul Hu
511a7bf235 Merge "Move more network unit tests to common tests" into qt-dev 2019-04-29 01:36:42 +00:00
Lorenzo Colitti
d44040df36 Make DNS cache lifecycle management explicit
1. ConnectivityService calls netd binder to create/destroy network directly.
2. Call dnsresolver binder to create/destroy cache after create/destroy network.
3. Remove unused network create/destroy methods in NetworkManagementService.

Bug: 129453995
Test: atest FrameworksNetTests

Merged-In: I388e208143c38b89bcbb0589de393250024d59aa
(cherry picked from commit 204ca13e63f063f044ac4ad3b96f08b473fe59df)

Change-Id: I4d3dfd9305b60a724aa2dc38448948d8e710c932
2019-04-26 02:13:59 +00:00
Paul Hu
9ede7e9399 Move more network unit tests to common tests
This adds the moved tests to CTS as well.
The moved unit tests are appropriate for CTS as they test data holder
classes that need to function properly for apps to work.

Test: atest FrameworksNetTests
Test: atest CtsNetTestCases: added tests pass
Bug: 129199900

Change-Id: I895d2b57da658d5bed28ebe128611d5d15835742
Merged-In: I9f708a252ab606b782f5f828dce8c1690c3703bf
Merged-In: I895d2b57da658d5bed28ebe128611d5d15835742
(cherry picked from commit cc21fbd483138771dae04f4d86ab411e2e88e575)
2019-04-25 23:16:13 +08:00
Chiachang Wang
72d5c3fc4e Update exception type thrown when NetworkStack is missing
rethrowFromSystemServer is throwing DeadSystemException which
is different from the original log message. Thus, update the
way to rethrow the same RemoteException.

Bug: 130028724
Test: atest FrameworksNetTest
Test: Kill NetworkStack and check the log message
Change-Id: I60862e276dd4e2d143278b272a9ba54219acce26
Merged-In: Ic1766e839f8f06b539d5f6cfecd29547021fd1d9
Merged-In: I67005a5384888e8acaf1249af79484e2d5ed6f1f
(cherry picked from commit 7f581219e1a4706ea2b4438322a299986847b1c2)
2019-04-25 07:05:48 +00:00
Lorenzo Colitti
f3420c999f Merge changes from topic "niap-vpn" into qt-dev
* changes:
  Reinstate new VPN uid filtering unit tests
  Revert new tests and PackageManager mock
  Block incoming non-VPN packets to apps under fully-routed VPN
2019-04-25 04:23:01 +00:00
Rubin Xu
0ac2d0bd62 Reinstate new VPN uid filtering unit tests
Mock out PackageManager and returns correct information corresponding
to the test app package itself.

Test: atest --generate-new-metrics 10 com.android.server.ConnectivityServiceTest
Bug: 114231106
Bug: 130397860

Merged-In: Ic2faef44831575b2d03bc00ef2553d5c549adc95
Change-Id: Ic2faef44831575b2d03bc00ef2553d5c549adc95
(cherry picked from commit 4469b1d8a543613d91a58a88488fd2022a0696b9)
2019-04-24 14:10:21 +00:00
Wayne Ma
cce8a9da85 Merge "Backwards-incompatible resolv module API change for making setResolverConfiguration take a parcelable." into qt-dev 2019-04-24 13:05:59 +00:00
Lorenzo Colitti
a484cc95d6 Revert new tests and PackageManager mock
A mocked PackageManager caused test failures in existing tests.
Revert that for now to make tests pass again.

Bug: 114231106
Bug: 130397860
Test: atest FrameworksNetTests

Merged-In: Ib59e211d4329f885108de9ea0a74669ffb144e17
(cherry picked from commit 8574c9bf350ca60e2b21c759aa75bc3843ffde17)

Change-Id: I603a0b0dfb67a942679a668c182aa650774c80b2
2019-04-24 13:55:48 +01:00
Rubin Xu
dc587d75e1 Block incoming non-VPN packets to apps under fully-routed VPN
When a fully-routed VPN is running, we want to prevent normal apps
under the VPN from receiving packets originating from any local non-VPN
interfaces. This is achieved by using eBPF to create a per-UID input
interface whitelist and populate the whitelist such that all
non-bypassable apps under a VPN can only receive packets from the VPN's
TUN interface (and loopback implicitly)

This is the framework part of the change that build the whitelist.
The whitelist needs to be updated in the following cases:
* When a VPN is connected and disconnected
    This will cover the change to allowBypass bit, since that can't be
    changed without reconnecting.
* When a VPN's NetworkCapabilites is changed (whitelist/blacklist app changes)
* When a new app is installed
* When an existing app is removed
* When a VPN becomes fully-routed or is no longer fully-routed

New user/profile creation will automatically result in a whitelist app change
transition so it doesn't need to be handled specially here.

Due to the limitation of the kernel IPSec interacting with eBPF (sk_buf->ifindex
does not point to the virtual tunnel interface for kernel IPSec), the whitelist
will only apply to app VPNs but not legacy VPN connections, to prevent breaking
connectivity with kernel IPSec entirely.

Test: atest PermissionMonitorTest
Test: atest android.net.RouteInfoTest
Test: atest com.android.server.ConnectivityServiceTest
Test: atest HostsideVpnTests
Bug: 114231106

Merged-In: I5af81bc80dadd086261ba4b1eb706cc873bb7cfa
Change-Id: I5af81bc80dadd086261ba4b1eb706cc873bb7cfa
(cherry picked from commit 65968ea16bf49f678d4a43c220e1d67393170459)
2019-04-24 11:56:46 +01:00
Lorenzo Colitti
7266129a6c Freeze the networkstack-aidl-interfaces interface
This freezes the interface as of the latest beta build, not the tip of
tree. IIpClient#setL2KeyAndGroupHint is not in the frozen definition in
particular.

Generated with:
m networkstack-aidl-interfaces-freeze-api \
    ipmemorystore-aidl-interfaces-freeze-api

Test: flashed, booted, WiFi and captive portal working
Bug: 128803828
Change-Id: Ideabe73fc93bbefca2d624ee9ca190cf31419424
Merged-In: Ideabe73fc93bbefca2d624ee9ca190cf31419424
(cherry picked from commit 9b89cdaaf401a6b77e160807039c06e537fa600a)
2019-04-23 09:41:44 +00:00
Chalard Jean
d6222a41c4 Merge "Fix an argument to the legacy broadcast" into qt-dev 2019-04-23 07:04:26 +00:00
Chalard Jean
e6a296dca5 Fix an argument to the legacy broadcast
Test: new test for this
Fixes: 62650382
Change-Id: I918b8271d3c3c058553ca888cb54cd36a6efba66
Merged-In: I0fc408d546ae9d72b7dd9415e502252b484d4329
Merged-In: I9282930106d1eee3274d9e5c4e89de60e929a0e6
2019-04-23 02:36:32 +00:00
TreeHugger Robot
43e577b152 Merge "Add smoke test for jni library" into qt-dev 2019-04-22 20:14:31 +00:00
Chalard Jean
a55eb53346 Merge "Make LegacyTypeTracker testable" into qt-dev 2019-04-22 12:08:59 +00:00
TreeHugger Robot
3f6b2004ce Merge "Restrict access to dangerous methods to <= P" into qt-dev 2019-04-22 07:14:10 +00:00
Chalard Jean
de9b8a9d7e Make LegacyTypeTracker testable
...and add basic trivial tests for it.

Test: this, and ConnectivityServiceTest
Bug: 62650382
Change-Id: Ie7ca938e6f66f1b15feb6ed93afa0aebb20884ae
2019-04-22 15:44:23 +09:00
Wayne Ma
cd616ebc95 Backwards-incompatible resolv module API change for making setResolverConfiguration take a parcelable.
Test: built, flashed, booted
      atest FrameworksNetTests

Bug: 130788363
Change-Id: I3b4e8672f5273c3baa9378025bfaef2e6514df64
Merged-In: I6dc9029af0df0d3b391210bd315516bdf1b5e4c9
(cherry picked from commit 9e9fda7558a924feb86869fca7dc7fd7dd01a78c)
2019-04-18 11:06:51 +00:00
TreeHugger Robot
efe4ae92fc Merge "Fix DnsResolver API could not bypass private DNS correctly" into qt-dev 2019-04-17 05:38:05 +00:00
Luke Huang
830600090c Fix DnsResolver API could not bypass private DNS correctly
Bug: 130594022
Test: atest DnsResolverTest

Merged-In: Ic9e078f8acf7688850dfe31f15ed065739ad5281
(cherry picked from commit c21eb1fb31dff7b05aabbbc2f45caf587095abc3)

Change-Id: I1788157c784b0ec124bd7d78ba90278b5501d0d4
2019-04-16 12:41:02 +00:00
Chalard Jean
6fb1669b65 Restrict access to dangerous methods to <= P
Test: make
Fixes: 130143562
Change-Id: I1a6a472f83cf00a1ab174a9c5e67d3e9357a0c45
Merged-In: I95107f7b628eecb54e9f4411785186b668e9f3d8
Merged-In: I890030580fdad45c3f8589bf6adbe5798d578cfe
(cherry picked from commit 0bb53dbb64bbc937a23e1dc7641c8988a6d11d64)
2019-04-16 06:13:09 +00:00
Chenbo Feng
9b4ab05070 Add smoke test for jni library
Since the Framework net test require jni library
libnetworkstatsfactorytestjni, but the test fails to load that library
unless *all* the dependencies of that library are explicitly listed in
jni_libs, whenever any of the dependencies changes the framework net
test will start failing and it might not be catched since the change
might not related to frameworks/base. And this smoke test is aimed to
spot those native library changes and it should be stable enough to put
in global presubmit.

Bug: 124764595
Test: FrameworksNetSmokeTests
Change-Id: Id24e7f0558b5643e4ad7393e85f1f0a2bd875615
Merged-In: Id24e7f0558b5643e4ad7393e85f1f0a2bd875615
(cherry picked from commit 5f8a630da7d5b308c0824a25f6fc1dd4c7552c9f)
2019-04-15 19:02:56 -07:00
Chalard Jean
e01a8ccfd7 Move TrafficStats tags for the network stack constants
As per API council feedback, these constants should live in
a place that is private to the network stack, only with a
range defined in system API.

Bug: 129433383
Test: m
Change-Id: I84a90f84a9af6fef4667ee4d512ebd0413222086
(cherry picked from commit 79a6330650ca04bd7a08afbd63f8016a3b30bc72)
2019-04-16 00:41:54 +09:00
Luke Huang
0494f8833d API council feedbacks for DnsResolver
To address the API review feedback provided by
the API council.

Bug: 129261432
Test: atest DnsResolverTest

Merged-In: I5737cf293264bf9d492e7bd56b62bee4d49002eb
(cherry picked from commit 454fe010dcacd38211b857d2b235ed37269e3b7e)

Change-Id: I429dd93285f50314e9d757f4ec8539a3ba40e61b
2019-04-12 06:23:01 +00:00
TreeHugger Robot
0301854863 Merge changes I98573a5c,Ic7394f24 into qt-dev
* changes:
  Enable checks for MANAGE_TEST_NETWORKS in TestNetworkService
  Cleanup of Test Network service
2019-04-12 00:54:45 +00:00
Benedict Wong
8fee125db4 Enable checks for MANAGE_TEST_NETWORKS in TestNetworkService
This commit re-enables enforcement of the MANAGE_TEST_NETWORK
permission, which is only granted to the shell. CTS tests using this
permission should use UiAutomation.adoptShellPermissionIdentity() to
gain access.

Bug: 72950854
Test: IPsec CTS tests using this passing
Change-Id: I98573a5c68e45abbbaddef01f6ac74a6a18e26f9
Merged-In: I98573a5c68e45abbbaddef01f6ac74a6a18e26f9
(cherry picked from commit 3ec38dc5530db151388879a521d6d3b94679a0de)
2019-04-11 20:04:19 +00:00
Benedict Wong
a66baf749b Cleanup of Test Network service
This follow-up change performs some cleanup changes without affecting
functionality

Bug: 72950854
Test: Compiles, CTS tests using this pass
Change-Id: Ic7394f24f11d713c9374b438182e29d2a02ea236
Merged-In: Ic7394f24f11d713c9374b438182e29d2a02ea236
(cherry picked from commit 7df36ed96a807f258aef43e558ef127b27b90756)
2019-04-11 20:04:06 +00:00
Lorenzo Colitti
28a9894888 Add support for TAP interfaces in TestNetworkManager.
Bug: 72950854
Test: builds, boots
Change-Id: I88bfd7f37c0ba0228f8288fe92212618ce134e4f
Merged-In: I88bfd7f37c0ba0228f8288fe92212618ce134e4f
(cherry picked from commit ba2eb5e0621c4f2a2c86a641998b4ae1953ae4b8)
2019-04-11 12:04:23 +00:00
Junyu Lai
b4379e15a9 Merge "Fix onBlockedStatusChanged does not work on multiple networks" into qt-dev 2019-04-11 06:58:48 +00:00
Remi NGUYEN VAN
c100196133 Merge "Expose captive portal urls for configuration" into qt-dev 2019-04-11 03:44:08 +00:00