Commit Graph

537 Commits

Author SHA1 Message Date
Jeff Vander Stoep
cc7e09cbc2 Fix FD leak in ConnectivityManager.getConnectionOwnerUid
Add unit tests to verify that bug has been fixed.

Re-enable testGetConnectionOwnerUid() unit tests in presubmit. These
were disabled due to test flakiness caused by expected failures passing
as a result of other sockets on the system. This is fixed by checking
that failures do not have the UID of the calling process instead of
INVALID_UID since previously some Qualcomm telephony sockets were
causing lookup successes.

Test: atest InetDiagSocketTest#testGetConnectionOwnerUid
Test: ls -1 /proc/<pid of system_server>/fd | wca
Test: atest --generate-new-metrics 200 InetDiagSocketTest#testGetConnectionOwnerUid
   To verify flakes have been cleaned up.
Bug: 141603906
Bug: 141459241
Change-Id: Ib76674f10e4bd24952c557bac7b9c65fba42fdb2
Merged-In: Ib76674f10e4bd24952c557bac7b9c65fba42fdb2
(cherry picked from commit 59940afb16)
Clean cherry pick.
2019-10-17 09:22:24 +00:00
Remi NGUYEN VAN
7d018e9b56 Fix interfaceVersion in DhcpServerCallbacks
The getInterfaceVersion method was missed when freezing the AIDL
interface version.
This causes Q devices to return 0 instead of 3 on this interface.

Fixes: 139110717
Test: toggle tethering, dumpsys network_stack version
Merged-In: I782f479de2d7d4c6579f206645a580c905009d85
(cherry picked from commit c6c1c69378)

Change-Id: I16b08e77351399d937b037c700b6e454b09f6d16
2019-08-09 09:43:10 +00:00
Remi NGUYEN VAN
c0fd05cf73 Fix leak of DhcpServer on tethering stop error
Tactical, minimal fix to make sure the DhcpServer is stopped when
disabling tethering. The current code may throw if the interface is gone
when calling mNMService.setInterfaceConfig() on teardown. Make sure DHCP
is stopped regardless of what happens.

A longer term fix will be to figure out the right flow to teardown the
interface and avoid errors on setInterfaceConfig().

Bug: 124520692
Test: Manual: no more socket leaked when stopping USB tethering
Merged-In: Ie73481e8d91ce43e4939f8c31a9ce431e382c6d9
(cherry picked from commit fe1ad3d0b8)

Change-Id: Ia80761cb42dc62b14128fc60009be82ae9a008da
2019-06-25 09:08:14 +00:00
Xiao Ma
782393ffcb Fix the potential NullPointerException.
The networkAttributesParcelable retrieved from IpMemoryStore might be
null, it might cause crash with NullPointerException when attepmting
to read from the field on a null object reference.

Bug: 135174345
Test: atest FrameworksNetTests NetworkStackTests
Merged-In: I658fbba3e18c5c640ed7d445d2cd59c4221e055f
Merged-In: Ie6b5c293b4ca17622674d5f735a9d62e04410088

(cherry picked from commit 4769936f59)

Change-Id: I3be6e57f6f8c56f828b025828aae0640248d23a9
2019-06-13 13:00:47 +00:00
Remi NGUYEN VAN
3d29ae9d99 Add comments to frozen AIDL API files
Generated by re-freezing the API with the new aidl_interface code, and
replacing the previous API with the new files. This only adds comments.

Test: comments only, builds
Bug: 134452637
Merged-In: I983a59d6ecae0c0d49136da723b65a1bb8c9ff53
(cherry picked from commit 44657b8e19)

Change-Id: Ie6581f2991152b7e3a7f477097a51b8cbaf0674c
2019-06-07 03:02:39 +00:00
junyulai
931ec8efa0 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 9ede677bb2)
2019-06-04 20:44:29 +08:00
Lorenzo Colitti
f4a435aca0 Merge changes Ib9a15fec,I9f3f2588 into qt-dev
* changes:
  Don't crash ConnectivityService if the network stack crashes.
  Add a wrapper for INetworkMonitor.
2019-05-31 15:45:49 +00:00
Remi NGUYEN VAN
e7e0294294 Merge "Simplify crash conditions in NetworkStackClient" into qt-dev 2019-05-31 14:42:08 +00:00
Lorenzo Colitti
1cf53ba8e6 Add a wrapper for INetworkMonitor.
Generated using:
./wrap_aidl.sh frameworks/base/services/net/aidl/networkstack/3/android/net/INetworkMonitor.aidl > frameworks/base/services/net/java/android/net/NetworkMonitorManager.java

Bug: 133725814
Test: builds, boots
Test: atest FrameworksNetTests
Change-Id: I9f3f2588d498a05e2405129cf58bfcdd30f45e3b
Merged-In: I9f3f2588d498a05e2405129cf58bfcdd30f45e3b
(cherry picked from commit 64877b6509)
2019-05-31 13:58:59 +00:00
Remi NGUYEN VAN
0edda9f555 Simplify crash conditions in NetworkStackClient
The previous model could have impact on boot time to read/write from/to
disk, and could potentially fail in some scenarios where the device does
full reboots instead of framework restarts.

The current design most simply avoids crashing in the first 30mins after
a full reboot, and optimistically checks the wall clock to rate-limit
the crashes to every 6h.

Test: manual as below, without IS_DEBUGGABLE condition
Test: Install new NetworkStack, force crash, observe rollback
Test: Set min_uptime_before_crash to 100, force crash, observe crash
Test: min_uptime_before_crash still 100, install new NetworkStack, force
      crash: observe rollback (there was already a recent crash)
Test: Set min_crash_interval to 10, force crash: observe crash
Bug: 133725814
Change-Id: I3fd5ba7047d7ac991cb62a7cab16a40f4ee731a3
2019-05-31 20:06:11 +09:00
Remi NGUYEN VAN
6b2681521e Merge changes I2cb4200b,If1fa00be into qt-dev
* changes:
  PackageWatchdog listens for NetworkStack failures
  Proper handling of NetworkStack crash
2019-05-30 15:11:11 +00:00
Remi NGUYEN VAN
5855ce28cf Proper handling of NetworkStack crash
Instead of always crashing on userdebug builds, do the following on all
builds:
 - If the device did not observe a NetworkStack crash in the last 6h
   crash the system server. This is to handle spurious crashes of the
   NetworkStack, so that the system can recover instead of staying
   without connectivity.
 - Otherwise, the device has had a recent crash. Notify the listeners
   (watchdog listener to be added) that something is seriously wrong,
   but do not crash to avoid bootlooping the device. This allows the
   watchdog to do its job, and avoids bricking the device in
   situations where the user could need to make emergency calls.

Bug: 133725814
Test: Killed the network stack, observe reboot of framework.
Test: Kill network stack again, observe nothing.
Test: Wipe data, install new network stack, kill it twice: rollback.
      (with patch on top applied)
Change-Id: If1fa00bed769eb60ca4832609006bdf15ceddb80
2019-05-30 21:52:40 +09:00
Xiao Ma
d6e2bbb4ea 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 ef6ef68c48)

Change-Id: I42507451d55a620c0e2d271c895ad158f348c1a5
2019-05-28 08:46:44 +00:00
Lorenzo Colitti
cb29c2b2c9 Properly use versioned interfaces.
Our stable AIDL interfaces need to use versioned build targets,
otherwise getVersion will always return 0, which makes it
impossible to support different components at different versions.

List generated with:
find . -name Android.bp -exec egrep \
    -H "(netd|dnsresolver|ipmemorystore|networkstack).aidl.interface(s?)-(java|cpp)" {} \; \
    | grep -v oemnetd | grep -v tests/

Test: m
Bug: 133124190
(cherry-pick from aosp/968011)
Merged-In: Idf49e840263ef32b9ee4fafa6718d4f893ea7c87
(cherry picked from commit 433f7c4178)

Change-Id: I77e2291b52fda24ee01e1b22ddafe4fe7368959e
2019-05-23 07:43:47 +00:00
Lorenzo Colitti
42ea026ae7 Add a factoryReset method to IIpMemoryStore, and freeze api.
Currently unimplemented. Implementation will be in a future CL.

Test: m
Bug: 128499160
Change-Id: Ia11ecd33f528d01667b1baeb8671b7213a31eef5
Merged-In: Ia11ecd33f528d01667b1baeb8671b7213a31eef5
(cherry picked from commit 10ddc681cf)
2019-05-20 12:54:22 +00:00
Chalard Jean
f98611062c 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 414b8c8b1c)
2019-05-10 13:09:00 +00:00
Xiao Ma
3ce093b527 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 c4e4fd7bee)
2019-05-10 00:55:14 +00:00
Lorenzo Colitti
64c39a1890 Add a simple wrapper for IpClient.
This takes care of boilerplate tasks such as clearing calling
identity, catching RemoteExceptions, and converting to stable
parcelable objects.

Bug: 131206163
Test: builds, boots, wifi works
Test: atest FrameworksNetTests
Change-Id: I7cbe5fc105503d0983cba2bf77fb0097bd20d9ba
Merged-In: I7cbe5fc105503d0983cba2bf77fb0097bd20d9ba
(cherry picked from commit 67a6f782e2)
2019-05-09 12:07:48 +00:00
markchien
a9690c1f66 Freeze networkstack-aidl-interfaces as version 3.
IIpClient#addNattKeepalivePacketFilter is the only difference
between version 2 and 3.

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

Test: -builds, boots
      - atest NetworkStackTests
      - atest ConnectivityServiceTest
Bug: 128803828

Change-Id: I22333c3c5930415cc43d83bc8cc6f566d0acb1f2
(cherry picked from commit 36bf793ce0a113a99252c2a640338bcf99965319)
2019-04-30 15:20:45 +00:00
Mark Chien
d0f8ca8126 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 038c11d564)
2019-04-30 11:26:26 +08:00
TreeHugger Robot
9c0f0db733 Merge "Freeze {ipmemorystore,networkstack}-aidl-interfaces as version 2." into qt-dev 2019-04-29 16:26:23 +00:00
TreeHugger Robot
1447fd97e8 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
Lorenzo Colitti
6b93ec0135 Freeze {ipmemorystore,networkstack}-aidl-interfaces as version 2.
Generated with:
m networkstack-aidl-interfaces-freeze-api \
    ipmemorystore-aidl-interfaces-freeze-api

Test: builds, boots
Bug: 128803828
Change-Id: I079018679766738a97b827bc87a6903655f308dd
Merged-In: I079018679766738a97b827bc87a6903655f308dd
(cherry picked from commit 4570f8669e)
2019-04-29 14:23:32 +00:00
Aaron Huang
bc45a6df5b Add AIDL parcelable for NattKeepalivePacketData
Bug: 33530442
Test: atest FrameworksNetTests

Change-Id: I9b9a51dc5dc06c90229fb36c34c24258991c4146
Merged-In: I9b9a51dc5dc06c90229fb36c34c24258991c4146
(cherry picked from commit 76985bd9a5)
2019-04-29 20:24:42 +08:00
Aaron Huang
f360cbd9e7 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 58a1f931eb)
2019-04-29 20:24:24 +08:00
Lorenzo Colitti
4d92d76567 Additional code for server name in DHCP packets.
- Add the hostname to DhcpResultsParcelable.
- Don't store the server hostname if option overload is in use,
  as this is not valid.
- Add unit tests.

Bug: 120584519
Bug: 127423755
Test: atest NetworkStackTests
Test: atest FrameworksNetTests
Change-Id: I5e9fee5471740f5d7c001e9e98017f32be452344
Merged-In: I60071bc029d25485bf204cfd3a8cebd538ca12b6
(cherry picked from commit 681f33cc6a)
2019-04-29 10:54:42 +09:00
Lorenzo Colitti
bead5168c0 Add validation type definition to support multiple probe result
In order to allow NetworkMonitor to tell ConnectivityService
if the network is either parital, validated or both.
NetworkMonitor could update the probe result by passing the
bitmask to ConnectivityService.

Bug: 130078798
Bug: 130683832
Test: build
Change-Id: I429ccbd9b9afae3eafaf73b3c9eb835213c1f64d
Merged-In: I429ccbd9b9afae3eafaf73b3c9eb835213c1f64d
(cherry picked from commit 4932896e24)
2019-04-26 14:15:03 +00:00
Lorenzo Colitti
e8660ef639 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 9b89cdaaf4)
2019-04-23 09:41:44 +00:00
Chalard Jean
6a76b7e2e4 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
Remi NGUYEN VAN
9164fabba4 Crash the system server if network stack is lost
Crash the system server if it cannot bind to the network stack, or if
the network stack crashes. This is better than keeping the system
running in a bad state where all networking would be broken.
Before the network stack was moved to a different process, the whole
system would go down when it encountered a crash.

Test: added crash in NetworkStack, verified system_server restart
Bug: 130028724
Merged-In: I64f366fc69b52f27d65461be50d81edc199bcb62
Merged-In: I034a62ec44ba1da32fd47c842a2bdf86f6ccf542
(cherry picked from commit d44fc02248)

Change-Id: I989703c9dda62bd58df413ca8949f9a25187e062
2019-04-11 03:49:39 +00:00
Remi NGUYEN VAN
9ca4c62612 Expose captive portal urls for configuration
Carriers in Mainland China need to customize certain captive portal
urls. The main issue is that google servers are not accessible in
Mainland China.

Added the following captive portal resources to be targeted for overlay.
- config_captive_portal_http_url
- config_captive_portal_https_url
- config_captive_portal_fallback_urls (string-array)
- config_captive_portal_fallback_probe_specs (string-array)

These values can be customized for e g diffent countries

Bug: 111819230
Test: atest FrameworksNetTests NetworkStackTests
Test: Add a product RRO that targets a specific country code,
insert a SIM card that matches that country code and check the log
what URL is used.

Merged-In: I54050b28bbfb93e0b7e509dbe0e987a0b902b7d9
Merged-In: I1f734c5f864bb2f2bc8ba1a66fe33d3480554f69
(cherry picked from commit 2977a40b1e)

Change-Id: I278f2888851d38edb59157f8623541fbe94549b6
2019-04-10 02:03:27 +00:00
Chalard Jean
9d1465d0b5 Move the latest AIDL update to the bottom
Test: m
Bug: 128803828
Change-Id: I3818eb8abb5a410663a6da633d5516cef4ecad8e
(cherry picked from commit 45ff048d40)
2019-04-09 12:04:26 +00:00
TreeHugger Robot
7c0d309886 Merge "Add a mechanism to pass the L2Key and group hint to IpClient" into qt-dev 2019-04-09 10:21:39 +00:00
Chalard Jean
d3c34d4c59 Add a mechanism to pass the L2Key and group hint to IpClient
Test: IpClientTest
Bug: 128803828
Change-Id: I399b20ce29a385a74971b7a7248a48cb4d66deb6
(cherry picked from commit 3cab290648)
2019-04-09 07:55:17 +00:00
Remi NGUYEN VAN
909dfd1352 Remove SocketUtils#setSocketTimeValueOption
This API was added in Q but is not necessary anymore as
Os#setsockoptTimeval was exposed as public API.

Test: m
Fixes: 129433363
Merged-In: If4a75f23c6c0589c23cadce3b088966649062463
(cherry picked from commit 77f9d85f12)

Change-Id: I4669eb2f9fa073d765be6bcb5863a5887eaf1ab5
2019-04-08 04:38:37 +00:00
Chalard Jean
2867145522 Fix a possible crash when the listener is null
Test: manual
Bug: 129930804
Change-Id: Id598ae1d98154b19d156e52973cf379669e7060c
2019-04-04 10:56:32 +00:00
Chalard Jean
943e7405f2 Straighten AIDL interface for the memory store
Some names were still wrong somehow, and the wrappers were
missing.

Test: NetworkStack & FrameworkNetTests
Change-Id: I475bd011ad9bc714a07021a9dfd85c4876f8e9ad
2019-04-03 15:18:08 +09:00
Chalard Jean
e0ef7ce4f7 Merge "Cleanup SystemReady in the network stack" 2019-04-01 23:28:47 +00:00
Xiao Ma
17ea70c6d3 Merge "Add DHCP address lease expiry in IpMemoryStore." 2019-04-01 12:59:20 +00:00
Chalard Jean
d74219ba4a Cleanup SystemReady in the network stack
The system server (in SystemServer.java) defines the boot
sequence, during which an event called SystemReady happens.
This corresponds to a time when critical system services
that are depended upon by other components in the system
server are ready to handle requests from their dependencies.
Some system services are listening to this event to defer
initializations that depend on the critical services.

Because the network stack is only started after SystemReady,
there is no way any NetworkMonitor may be started before
SystemReady. Remove the associated mechanism.

Fix: 129376083
Test: FrameworksNetTests
Change-Id: I071eeb10d0b7c4f71af6653d322c7b442b2cc7ee
2019-04-01 13:32:25 +09:00
Remi NGUYEN VAN
78454f3c46 Merge "Fix race when starting NetworkMonitor" 2019-04-01 03:54:03 +00:00
Remi NGUYEN VAN
3962f678c3 Fix race when starting NetworkMonitor
NetworkMonitor obtained LinkProperties and NetworkCapabilities via
synchronous calls to ConnectivityManager after receiving an asynchronous
notification, which is prone to races: the network could be gone before
the LinkProperties/NetworkCapabilities can be fetched.

Fix the race by passing LinkProperties/NetworkCapabilities directly to
NetworkMonitor in the asynchronous notifications.

Test: atest FrameworksNetTests NetworkStackTests
Test: booted, WiFi works
Bug: 129375892
Change-Id: I200ac7ca6ff79590b11c9be705f650c92fd3cb63
2019-04-01 11:33:10 +09:00
Luke Huang
b9ef4dd299 Merge "Use IDnsResolver instead of INetd for resolver related binder commands" 2019-03-29 08:45:19 +00:00
Xiao Ma
385ccb05c8 Add DHCP address lease expiry in IpMemoryStore.
Bug:122710829
Test: atest FrameworksNetTests
Change-Id: I643fe1231edcd18923514ab66c64a6cf83e69443
2019-03-29 16:51:47 +09:00
Colin Cross
50fadbee32 Fix glob syntax
Globs are only intended to support ** as a directory, i.e. **/*.java
not **.java.

Bug: 129411151
Test: m nothing
Change-Id: I0f6cb7c7ce8cd1ef8c09364c0946ac7157285a4d
2019-03-27 11:26:57 -07:00
Luke Huang
6591477a5b Use IDnsResolver instead of INetd for resolver related binder commands
migrate resolver related commands from INetd to IDnsResolver

Bug: 126141549
Test: atest FrameworksNetTests ConnectivityServiceTest Nat464XlatTest
      atest DnsManagerTest
Change-Id: I559c0c1304d53dde408c062e1a52e742595e7cbe
2019-03-27 17:39:07 +08:00
Treehugger Robot
021ea66aea Merge "Use SystemApi framework parcelables directly" 2019-03-27 02:55:15 +00:00
Remi NGUYEN VAN
266868246a Use SystemApi framework parcelables directly
Remove StaticIpConfigurationParcelable and ApfCapabilitiesParcelable and
use StaticIpConfiguration and ApfCapabilities directly.
These two classes are SystemApi and defined in framework.jar, so no
stability guarantee is needed: the parceled and unparceled class will
always be the framework.jar version.

Bug: 126477266
Fixes: 126477266
Test: atest FrameworksNetTests NetworkStackTests
Test: flashed, booted, WiFi and captive portal works.
Change-Id: Iaf80ae23e003752cc6d2300700021931923b6533
2019-03-26 12:05:27 +09:00
Mark Chien
6aef2afd4e Merge "[TCPKeepalive] Fill correct TOS and TTL value" 2019-03-25 13:10:17 +00:00
markchien
1fc82b223f [TCPKeepalive] Fill correct TOS and TTL value
Fill correct TOS/TTL value by fetching them from kernel with
getsockopt.

bug: 123967966
Test: -build, flash, boot
      -atest FrameworksNetTests

Change-Id: I75b1be51040b4a381163958b4cddd27dbb22bac1
2019-03-25 11:14:57 +08:00