Currently, various codepaths in ConnectivityService disconnect
networks using NetworkAgentInfo#disconnect. This posts a message
to the NetworkAgent to disconnect and also posts a message to
ConnectivityService to call disconnectAndDestroyNetwork, which
performs all cleanup in ConnectivityService. These two messages
race and the order is non-deterministic.
Instead, always disconnect using disconnectAndDestroyNetwork,
and have disconnectAndDestroyNetwork post the message to the
agent to disconnect.
This fixes a bug where if wifi uses unregisterAfterReplacement
twice in quick succession, when the third agent connects it
doesn't work because the interface is still being used by the
second network.
Also remove the import of IllegalArgumentException to keep the
linter happy (java.lang.* never needs to be imported).
Bug: 286649301
Test: covered by existing tests
Change-Id: Ie01f5589d6839ac6db25f0ba98fc929fbb5b0a96
Lorenzo Colitticommited 2023-06-14 18:03:02 +09:00
One of the reasons for having locks in LegacyNetworkActivityTracker is
mNetworkActive is updated from non handler thread.
aosp/2606673 moves network activity change processing to handler thread.
All the methods that update mNetworkActive and mActiveIdleTimers should
be called from handler thread now.
Bug: 267870186
Bug: 279380356
Test: atest FrameworksNetTests
Change-Id: I5c8cd0b253a77a2740ade3a0145ef80336b3b133
IdleTimer tracking can be disabled if configured timeout is 0 or
negative value.
In this case, setupDataActivityTracking does not add idleTimer and
removeDataActivityTracking causes NPE.
This did not cause crash since the code to cause NPE is wrapped by try
catch.
This CL adds check to avoid causing NPE.
Bug: 267870186
Bug: 279380356
Test: atest FrameworksNetTests
Change-Id: Id774c5ee3d0318d9736f287c50ccf4c7c5743aef
Following CLs update LegacyNetworkActivityTracker to support multiple
network activity tracking on U+ devices.
This CL is a preparation for them.
Bug: 267870186
Bug: 279380356
Test: atest FrameworksNetTests
Change-Id: I2598feef93ef34e10bf576560f687ff7fc449ab9
aosp/2162425 added a WTF if a NetworkAgent changed state before
its native network has been created. This was intended to apply
only to the new U+ codepath, where networks are always created
immediately as soon as their agents register them. But the WTF is
logged on pre-U devices as well.
Fix this so that the WTF is only logged when the new codepath is
running.
Fix: 285999421
Test: TH
Change-Id: I28bda08a006978ab760fe8891bf5cf15b536201a
Lorenzo Colitticommited 2023-06-07 11:42:20 +09:00
Test: new test for this behavior in the preliminary change
Test: FrameworksNetTests NetworkStackTests
Fixes: 138810051
Fixes: 140610528
Change-Id: I95a979d232fb60ece2e33e972bf5d66d20357a1f
Aaron Huangauthored and Chalard Jeancommited 2023-06-05 20:24:59 +09:00
See system/netd/include/Fwmark.h which reserves the bottom 21 bits
of skb->mark for netid, etc... so out of necessity these have to be
in the top 11 bits.
In practice the only values that really make sense are either:
mark == mask == 0 (disabled)
or (mark == mask) being one of the top 11 available bits, for example:
mark == mask == 0x80000000 (enabled, using top-most bit)
(only a single bit makes sense, as this is really just a boolean signal,
and only the topmost is known to be used on any real devices)
Let's just force the use of 0x80000000 for ecosystem consistency.
Bug: 284334830
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
(cherry picked from https://android-review.googlesource.com/q/commit:767cf7f1cfc6d612bc8554fef8c354fdd660695b)
Merged-In: I199e9b00de845b3747940426ea6644426ab72e87
Change-Id: I199e9b00de845b3747940426ea6644426ab72e87
Maciej Żenczykowskicommited 2023-06-05 07:44:18 +00:00
See system/netd/include/Fwmark.h which reserves the bottom 21 bits
of skb->mark for netid, etc... so out of necessity these have to be
in the top 11 bits.
In practice the only values that really make sense are either:
mark == mask == 0 (disabled)
or (mark == mask) being one of the top 11 available bits, for example:
mark == mask == 0x80000000 (enabled, using top-most bit)
(only a single bit makes sense, as this is really just a boolean signal,
and only the topmost is known to be used on any real devices)
Let's just force the use of 0x80000000 for ecosystem consistency.
Bug: 284334830
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I199e9b00de845b3747940426ea6644426ab72e87
Maciej Żenczykowskicommited 2023-06-05 07:41:00 +00:00
aosp/2490881 updated to use InetDiagMessage.destroyLiveTcpSocket for all
devices.
But it is possible that netd socketDestory is modified in T- devices.
So this CL revert changes to keep using netd socketDestroy in T-
devices.
Test: atest FrameworksNetTests
Bug: 284253763
Change-Id: I9b61f10e975d2e38e9829a8c01d3af706e2518ef
This patch mocks the SDK level and/or change IDs to help
developing functionality that depends on these without
having to flash a new device every time.
Test: TH
Change-Id: I1011193c99e123a0e5501ed313c9cecbceebdae6
This reverts commit 73f6948915.
Reason for revert: The bug that necessitated this workaround has been addressed.
Change-Id: Idac3903df029e841bde6c57c9d453b56760d2553
Test: TH
Network state is not changed to disconnected when a networkagent
is disconnected and network state is SUSPENDED.
So the function requiresClat return true. Clat is not stoped.
Bug: 277682237
Test: atest FrameworksNetTests
(cherry picked from https://android-review.googlesource.com/q/commit:fd5d3d90e1da7411104902ddfe859ebd0e4a02fb)
Merged-In: I5edfcf64aca5d2d34325d722dd29fab41bcf2600
Change-Id: I5edfcf64aca5d2d34325d722dd29fab41bcf2600
wangshengrjxtjcbauthored and Cherrypicker Workercommited 2023-05-17 02:42:14 +00:00
Network state is not changed to disconnected when a networkagent
is disconnected and network state is SUSPENDED.
So the function requiresClat return true. Clat is not stoped.
Bug: 277682237
Test: atest FrameworksNetTests
Change-Id: I5edfcf64aca5d2d34325d722dd29fab41bcf2600
wangshengrjxtjcbauthored and Motomu Utsumicommited 2023-05-16 16:35:03 +09:00
Currently, native networks for non-VPN networks are created only
when the NetworkAgent goes into the CONNECTED state. This is not
ideal, because until the network is connected:
- Nothing routes to the network, so no IP packets can be sent on
it (except via packet sockets).
- Many network configuration changes (e.g., routes and DNS
servers) fail to apply because the network does not exist yet.
These cause ENONET errors in the logs.
Fix this starting in U by creating the native network as soon as
the agent registers. This should not impact apps because
NetworkCallbacks are not sent until networks are connected.
Bug: 143158421
Test: new coverage in NetworkAgentTest
(cherry picked from https://android-review.googlesource.com/q/commit:4f87aa3f13d8972d7525bb7231cf7ad6aaa0b7eb)
Merged-In: I26bfa8630c085422175558645c47a6c64be96ae6
Change-Id: I26bfa8630c085422175558645c47a6c64be96ae6
Lorenzo Colittiauthored and Cherrypicker Workercommited 2023-05-11 06:24:47 +00:00
To do this we register a UidFrozenStateChangedCallback with
ActivityManager. The callback then queues up work on the Handler thread
to consume the original callback args and kill appropriate sockets.
Test: atest ConnectivityServiceTests
Bug: 277100090
(cherry picked from https://android-review.googlesource.com/q/commit:7c999d8d4cc4cd092d2de52ae98037ca4861e71f)
Merged-In: I93f174811aef726145a18ea90443ddfc1456478e
Change-Id: I93f174811aef726145a18ea90443ddfc1456478e
Mark Fashehauthored and Cherrypicker Workercommited 2023-05-11 02:25:35 +00:00
To do this we register a UidFrozenStateChangedCallback with
ActivityManager. The callback then queues up work on the Handler thread
to consume the original callback args and kill appropriate sockets.
Test: atest ConnectivityServiceTests
Bug: 277100090
Change-Id: I93f174811aef726145a18ea90443ddfc1456478e
* changes:
Fix isFeatureEnabled namespace and overload usage
Add a dependency object in TetheringConfiguration
Use DeviceConfigUtils for ConnectivityResources
Move ConnectivityResources to service-connectivity
Motomu Utsumiauthored and Android (Google) Code Reviewcommited 2023-05-10 11:22:35 +00:00
Currently, native networks for non-VPN networks are created only
when the NetworkAgent goes into the CONNECTED state. This is not
ideal, because until the network is connected:
- Nothing routes to the network, so no IP packets can be sent on
it (except via packet sockets).
- Many network configuration changes (e.g., routes and DNS
servers) fail to apply because the network does not exist yet.
These cause ENONET errors in the logs.
Fix this starting in U by creating the native network as soon as
the agent registers. This should not impact apps because
NetworkCallbacks are not sent until networks are connected.
Bug: 143158421
Test: new coverage in NetworkAgentTest
Change-Id: I26bfa8630c085422175558645c47a6c64be96ae6
Lorenzo Colitticommited 2023-05-10 20:01:07 +09:00
Netd is not updatable since it's not mainlined.
To make socket destroy code updatable, the code was re-implemented in
java and moved to Connectivity.
Bug: 270298713
Test: atest FrameworksNetTests
(cherry picked from https://android-review.googlesource.com/q/commit:93a2218e41384d106f1c14c239e1bf4795af43d5)
Merged-In: I5439c0c76c42a9f738a1b25a1f62e701755cbd05
Change-Id: I5439c0c76c42a9f738a1b25a1f62e701755cbd05
Motomu Utsumiauthored and Cherrypicker Workercommited 2023-05-10 03:15:45 +00:00
From service-connectivity, NAMESPACE_TETHERING must be used, as
NAMESPACE_CONNECTIVITY is used for the NetworkStack module. Also the
isFeatureEnabled with module name must be used, otherwise the "android"
package version is queried instead of the tethering module version.
BpfNetMaps is using flag value 1 to workaround this issue.
flags in NsdService, AutomaticOnOffKeepaliveTracker, and ConnectivityFlags
were not pushed currently.
So, this change has no effect to devices.
Bug: 279108992
Test: TH
(cherry picked from https://android-review.googlesource.com/q/commit:278db58bf536551158e8082d3e7572650a908b05)
Merged-In: I2b4b6a13c048c20beef52b1f43b9e21aca0c637a
Change-Id: I2b4b6a13c048c20beef52b1f43b9e21aca0c637a
Motomu Utsumiauthored and Cherrypicker Workercommited 2023-05-10 03:11:11 +00:00