Commit Graph

930 Commits

Author SHA1 Message Date
Maciej Żenczykowski
0da1b4d4f2 fix native jni method signature - these are all static methods
See packages/modules/Connectivity/framework/src/android/net/NetworkUtils.java,
11 are 'static native' and 1 is 'native static'

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ic6392452ce6f760db0f4300e0a35a33b9487c931
2022-07-28 18:08:22 +00:00
Motomu Utsumi
6bcb3c290c Merge "Use java BpfMap in BpfNetMaps#replaceUidChain" 2022-07-27 13:21:50 +00:00
Motomu Utsumi
9be2ea0080 Use java BpfMap in BpfNetMaps#replaceUidChain
Bug: 217624062
Test: atest BpfNetMapsTest
Change-Id: Ib2a2c2646834110a3eeeb786a4ea7a3f85718be8
2022-07-27 06:01:47 +00:00
Patrick Rohr
c886983669 NetworkProvider: improve documentation of unregisterNetworkOffer
Add a warning to unregisterNetworkOffer to inform users that this method
executes asynchronously.

Test: documentation only change
Change-Id: Ic4742bf570ebcd4d00b0b259c35fd46688494517
2022-07-25 13:31:14 -07:00
Patrick Rohr
4a4498c1d4 Revert "NetworkProvider: Do not propagate callbacks for unregistered offers"
This reverts commit 546c722511.

Test: TH
Change-Id: I2c8a8e7faf407a0dae17074d2d435669e16b5e79
2022-07-25 13:31:14 -07:00
Patrick Rohr
e6162aca71 Merge "TestNetworkService: add support to disable DAD on test interfaces" 2022-07-21 22:19:26 +00:00
Patrick Rohr
336bb5cf6d TestNetworkService: add support to disable DAD on test interfaces
DscpPolicyTest does not have an IpClient, so it relies on assigning the
LinkAddresses at interface creation. If DAD is enabled, the global
address cannot be used immediately, so the test packet selects the wrong
source address. There is no obvious way to fix this without disabling
DAD as the TestableNetworkCallback receives the LinkProperties update
before the address can be used.

This functionality will also be useful in ethernet tests, which
currently have to block for a long time.

Test: atest DscpPolicyTest
Bug: 235559605
Change-Id: Id7788df5e92ebd8eaf4619a23f44135ea4a2144e
2022-07-21 10:20:16 -07:00
Remi NGUYEN VAN
e55a88d30f Use jarjar rule generator for connectivity rules
(This rolls forward part of a previous change, now that jarjar was fixed
to not get very slow when the number of rules increases).

Autogenerate connectivity jarjar rules at build time, to avoid issues
with forgotten jarjar rules or hard-to-diagnose errors introduced by
incorrect rules.

This change causes all classes in framework-connectivity(-t) and
service-connectivity to be jarjared into android.net.connectivity, but
still avoids jarjaring classes in com.android.server as before, to keep
it small.
For many classes this differs from the original jarjar rule.

Notes on implementation:

 - connectivity-jarjar-rules now has a subset
   framework-connectivity-jarjar-rules containing only the rules
   necessary for framework-connectivity. This is necessary because
   framework-connectivity cannot depend on rules generated based on
   service-connectivity, as there would be a dependency cycle
   (service-connectivity depends on framework-connectivity); Soong even
   crashes with a stack overflow.

 - framework-wifi.stubs.module_lib is added to
   framework-connectivity-pre-jarjar as it is necessary to build it (it
   is already in impl_only_libs in the defaults).
   It is unclear why framework-connectivity-pre-jarjar could build
   before that (possibly because it was only used as "lib" ?)

 - Fix package-private visibility; for example NattSocketKeepalive,
   TcpSocketKeepalive are not API so should be jarjared, but are used
   by ConnectivityManager which is not jarjared, so they are not in the
   same package after the change. Package-private members in the
   former 2 need to be public to be accessible. Changes in this commit
   are all that is needed, as demonstrated by followup commits that move
   the classes to a different package without further changes, and that
   enforce that no class in an API package gets jarjared.

 - framework-connectivity-internal-test-defaults is separated from
   framework-connectivity-test-defaults, for unit tests that need to
   access internal jarjared classes. Such tests need to use the jarjar
   rules themselves too, so this is only appropriate for connectivity
   internal unit tests.

Test: atest ConnectivityCoverageTests CtsNetTestCases
Bug: 217129444
Change-Id: Ib1bd939b71c0171d945fc01b96195d2f620ff13b
2022-07-20 19:57:11 +09:00
Remi NGUYEN VAN
16e244ed0f Merge "Revert EXCLUDED_ROUTES to only keep RTN_UNICAST" 2022-07-16 01:43:04 +00:00
Remi NGUYEN VAN
48380e4132 Revert EXCLUDED_ROUTES to only keep RTN_UNICAST
Revert the previous change to filter out all non-RTN_THROW routes when
EXCLUDED_ROUTES is disabled, as that behavior is CTS tested for T, and
has been used by T for a while. The previous change already ensured that
there is no behavior change on S, so this is the safest approach.

This fixes HostsideLinkPropertiesGatingTests.

Bug: 239046959
Test: atest LinkPropertiesTest CtsHostsideNetworkTests
Change-Id: I55e078cdc06341f4957fe7bc743c0022b2c7d3da
2022-07-15 16:46:14 +09:00
Chiachang Wang
b7f81e4a6d Merge "Correct javadoc usage" 2022-07-15 07:41:33 +00:00
chiachangwang
9473c59980 Correct javadoc usage
"{@see" aren't rendered properly. Replace them with "See {@link"
or @see depending on the usage.

Bug: 238753273
Test: make doc-comment-check-docs ; Check the doc result
Change-Id: I70cb2f36e7c5fa8102b5949054df5184d755202c
2022-07-15 03:44:46 +00:00
Natasha Lee
5006349209 Merge "Let LinkProperties#getRoutes() keeps returning all routes before T" 2022-07-14 14:12:55 +00:00
Remi NGUYEN VAN
66c27c18a2 Let LinkProperties#getRoutes() keeps returning all routes before T
Starting from T, VpnService supports exclude routes, which will
make the caller to get both of include routes and exclude routes
from LinkProperties#getRoutes(), and it's not expected to get the
exclude routes before T in production code even though the code
returns all routes.

But there is a CTS - LinkPropertiesTest#testRouteAddWithSameKey()
will try to add an exclude route and check if the result of
LinkProperties#getRoutes() contains that exclude route or not.
And the test is failed now since LinkProperties#getRoutes() will
only return include route if compat feature - EXCLUDED_ROUTES is
disabled. (EXCLUDED_ROUTES is enabled starting from target SDK T)

To fix this test failure, let LinkProperties#getRoutes() keeps
returning all routes if SDK is before T. This avoids changing
behavior on S, and even though there is still a behavior change
when upgrading to T, apps are unlikely to be relying on such
behavior, especially outside of tests.

Bug: 238061814
Test: Run "atest CtsNetTestCases:LinkPropertiesTest" on S build
      with mainline module which contains this patch.
Change-Id: Iac4362c4fe347ee3f06d5b21b0325fa69a7f27b6
2022-07-14 18:54:05 +09:00
Chiachang Wang
1c7f6f89b2 Merge "Correct javadoc for ConnectivityManager#requestNetwork" 2022-07-14 08:18:44 +00:00
Remi NGUYEN VAN
fc307eab4b Merge "Revert QosCallbackException constant values" 2022-07-14 02:50:09 +00:00
Remi NGUYEN VAN
bd7a485826 Revert QosCallbackException constant values
The constants are used for the NetworkAgent.sendQosCallbackError system
API, so changing their values changes the behavior of that API. This is
observed when running S CTS against the latest version of the
connectivity module: testQosCallbackOnError fails because a
SocketNotConnectedException ends up being reported, instead of an
UnsupportedOperationException.

Revert the constants to their values before change ID:
I7102ae9ba7cb9e1cc8d06b252aad4dad75860f3e

Bug: 238061856
Test: cts-tradefed run cts -m CtsNetTestCases \
          -t android.net.cts.NetworkAgentTest
      using a CTS v12.1 package.
Change-Id: Iaa12729d9e7dc627a6654a6fa47b8248e0cd3049
2022-07-14 02:49:29 +00:00
chiachangwang
e9c44ce718 Correct javadoc for ConnectivityManager#requestNetwork
Fix: 238753273
Test: make doc-comment-check-docs ; Check the doc result
Change-Id: I41c35b9cb31dcf3a372a61ad84f19295b0bc0ceb
2022-07-14 02:43:03 +00:00
Patrick Rohr
e548be264b Merge "TestNetworkManager: add support for configuring tap link addresses" 2022-07-09 02:08:36 +00:00
Patrick Rohr
546c722511 NetworkProvider: Do not propagate callbacks for unregistered offers
Previously, after calling unregisterNetworkOffer(), onNetworkNeeded() /
onNetworkUnneeded callbacks are still being called until CS's handler
thread has finished running. While this behavior could be taken care of
in the network provider implemention (e.g. the ethernet service), it is
much simpler to deal with in NetworkProvider.java.

As NetworkProvider.java wraps the passed callback object inside a proxy
that it forwards to CS, it should be as simple as adding a boolean to
the proxy that is checked inside the executor thread before the
implementation's callback is called. Since for every call to
registerNetworkOffer() with a new callback object a new proxy object is
created, this should be safe. Even if the callback object is reused on
the user side (such as ethernet service does right now), this should be
okay, as the implementation will only receive callbacks from the active
proxy.

Test: atest NetworkProviderTest
Bug: 171872016
Change-Id: Iaf84b5801ad3ee44895e933763927151ea5824dd
2022-07-07 13:48:52 -07:00
Patrick Rohr
aecfab5f72 NetworkProvider: add missing synchronization
Adding missing lock to unregisterNetworkOffer() call.

Test: TH
Change-Id: Ia54664caaecb63e0bfa737903b48d08856fb4877
2022-07-07 13:48:52 -07:00
Paul Hu
e79157578b Merge "Reword comment for language quality" 2022-07-06 01:52:06 +00:00
Chalard Jean
2ddcf603e2 Reword comment for language quality
This addresses a leftover comment to aosp/1919251

Bug: 238139913
Test: comment-only
Change-Id: Icfd054a1f9a4b928b222fb1a74af066c36c886b0
2022-07-06 01:51:35 +00:00
Treehugger Robot
07bb1d41d8 Merge "Add @RequiresApi to LocationPermissionChecker" 2022-07-04 14:01:20 +00:00
Patrick Rohr
8af41fac2f TestNetworkManager: add support for configuring tap link addresses
Without an IpClient, there is otherwise no way to configure IPv4
addresses on a tap interface in tests.

Test: TH
Change-Id: I6a788687708b2034c464befdfec9267ce3399d70
2022-06-30 14:47:51 -07:00
Motomu Utsumi
51a03d629e Merge "Refactor BpfNetMaps and getChainEnabled" 2022-06-30 06:48:10 +00:00
Jooyung Han
c83755456f Add @RequiresApi to LocationPermissionChecker
Add the required lib to the user of net-utils-framework-common-srcs
which has LocationPermissionChecker.

Bug: 158059172
Test: m
Merged-In: Id54de2bd94e8b5821814715683b5b2520f1f026e
Change-Id: Id54de2bd94e8b5821814715683b5b2520f1f026e
(cherry picked from commit d795228affd7e7ad828adb2bf4fbcb9093c3f377)
2022-06-29 06:41:59 +09:00
Patrick Rohr
21be776580 Merge "TestNetworkManager: add note on kernel version expectation" 2022-06-27 18:45:29 +00:00
Motomu Utsumi
25cf86fc95 Refactor BpfNetMaps and getChainEnabled
Address comments from aosp/2117045 and aosp/2131752
Rename USE_NETD to PRE_T
Rename getChainEnabled to isChainEnabled
Remove unnecessary parentheses
Fix comment

Bug: 217624062
Test: atest BpfNetMapsTest
Change-Id: Iaff8c9fc5f74de3fe41a7fb010355b1742fbce90
2022-06-27 14:33:28 +00:00
Motomu Utsumi
18b287d285 Use java BpfMap in BpfNetMaps#setChildChain
Bug: 217624062
Test: atest BpfNetMapsTest android.net.cts.ConnectivityManagerTest#testFirewallBlocking

Change-Id: I13e96911eccd7d1d0545a156ddc2859bcaac09eb
2022-06-24 09:11:58 +00:00
Motomu Utsumi
be3ff1e923 Add API to get current firewall chain status
This commit adds ConnectivityManager#getFirewallChainEnabled to read the
current firewall chain status

Bug: 208371987
Test: m
Change-Id: I1eadb69f953af5d031cd8dabde3e1f098cf0f4df
2022-06-24 09:11:53 +00:00
Patrick Rohr
c924307408 TestNetworkManager: add note on kernel version expectation
Both setting the carrier up / down and creating an tun / tap interface
without carrier need TUNSETCARRIER to be present in the kernel.

Bug: 236783925
Test: documentation only change
Change-Id: Ie7f7d2c81c926adbc10b29b4b1748e47edaa4cb7
2022-06-23 09:30:25 -07:00
Remi NGUYEN VAN
49d6b5d80b Merge "Add jarjar rules generator" 2022-06-17 01:09:11 +00:00
Motomu Utsumi
5d787feef0 Merge changes Ic6ff7a3d,Iff9b9792
* changes:
  Refactor code and improve tests for VPN filtering
  Remove LOCKDOWN from FirewallChain IntDef
2022-06-16 01:32:20 +00:00
Patrick Rohr
929368eb1a Merge changes Ie1a91959,Ic189b2c0,I39d70e0a,Ibb5f1402
* changes:
  TestNetworkInterface: add support for MacAddress and MTU
  TestNetworkService: add support for creating iface without carrier
  TestNetworkService: Add support for toggling carrier on tun/tap
  TestNetworkService: Fix TestNetworkInterface parcel flags
2022-06-15 20:53:30 +00:00
Patrick Rohr
88f97f4fba TestNetworkInterface: add support for MacAddress and MTU
Both MacAddress and MTU size are often needed in tests and very painful
to get a hold of without system server permissions.

Test: TH
Change-Id: Ie1a91959916ea39277e76aa1b61f38d59a5d2a90
2022-06-15 10:25:45 -07:00
Patrick Rohr
2b726efdc0 TestNetworkService: add support for creating iface without carrier
Disabling the carrier of a tun/tap interface before the interface is
brought up is useful in testing.

Test: atest EthernetManagerTest
Change-Id: Ic189b2c0eda76e3f58c3f664e5f5d18c2d7e6e96
2022-06-15 10:25:45 -07:00
Patrick Rohr
bbd16c57a0 TestNetworkService: Add support for toggling carrier on tun/tap
Adds support for setting carrier to on/off for a tun/tap interface. It
turns out that TUNSETCARRIER is also usable by tap interfaces, and
TUNSETLINK does not work as expected.

Test: atest EthernetManagerTest
Change-Id: I39d70e0a65a34e7a4c4df70c53e4cc781a24a213
2022-06-15 10:17:42 -07:00
Benedict Wong
0815c8c66a Unfinalize additional methods in NetworkAgent
This change allows tests to mock NetworkAgent, and the methods
required for ensuring that the VPN is migrating properly.

Bug: 235853154
Test: Treehugger
Change-Id: I49333c010cc7f3d60ffd39f853777bfc52de3a89
2022-06-15 09:16:50 +00:00
Patrick Rohr
2ebff8a777 TestNetworkService: Fix TestNetworkInterface parcel flags
PARCELABLE_WRITE_RETURN_VALUE will close the fd when writeParcelable is
called. This is not always preferable (specifically, if
TestNetworkInterface is passed as an "in" parameter).
writeParcelable(FileDescriptor, ...) should therefore use the flags
passed to writeToParcel which should be correct for all cases.

Test: atest EthernetManagerTest
Change-Id: Ibb5f14028a3d686157504da3657a18ec0bc28110
2022-06-14 10:23:53 -07:00
Remi NGUYEN VAN
11f162b5f8 Add jarjar rules generator
(This rolls forward part of a previous change, now that jarjar was fixed
to not get very slow when the number of rules increases).

Jarjar rules are hard to keep in sync with code, and hard to maintain
manually as the distinction between what should and should not be
jarjared is not always clear. This results in unsafe binaries that are
manually maintained, and developer frustration when something fails due
to incorrect jarjar rules.

Add utility to autogenerate jarjar rules, which can be run at build time
time (via a genrule) instead. The generator scans pre-jarjar
intermediate artifacts, and outputs jarjar rules for every class to put
it in a package specific to the module. The only exceptions are:

 - Classes that are API (module-lib API is the largest API surface of
   the module, so module-lib API stubs would typically be used)
 - Classes that have unsupportedappusage symbols
 - Classes that are excluded manually (for example, because they have
   hardcoded external references, like for
   ConnectivityServiceInitializer in SystemServer).

Bug: 217129444
Test: atest jarjar-rules-generator-test;

Change-Id: I3493957e39a661b6c2e330944e7c3023b8f3203e
2022-06-14 09:11:27 +00:00
Benedict Wong
33acb90622 Make setUnderlyingNetwork() non-final
This change allows tests to mock NetworkAgent, and the methods
required for ensuring that the VPN is migrating properly.

Bug: 235853154
Test: Treehugger
Change-Id: If4de0935a3c8627ca12db52ff223834f9f7237e8
2022-06-14 02:07:50 +00:00
Treehugger Robot
662f414c99 Merge "Make FIREWALL_CHAIN_OEM_DENY API" 2022-06-13 02:12:30 +00:00
Motomu Utsumi
62385c884f Make FIREWALL_CHAIN_OEM_DENY API
Bug: 208371987
Test: m
Change-Id: Ie0c2ad862c02f9fd4561869cf5a1adc44f1be11b
2022-06-12 11:37:19 +00:00
Motomu Utsumi
8b42e6d431 Remove LOCKDOWN from FirewallChain IntDef
LOCKDOWN_VPN was in the FirewallChain IntDef but this was not a right
place because LOCKDOWN_VPN was not a valid value for Connectivity APIs
that take an argument annotated with @FirewallChain(setUidFirewallRule,
setFirewallChainEnabled, replaceFirewallChain).

LOCKDOWN_VPN was in the FirewallChain IntDef because
BpfNetMaps#setUidRule was used to add/remove LOCKDOWN_VPN entries.
This commit adds BpfNetMaps#updateUidLockdownRule and uses this to
add/remove LOCKDOWN_VPN entries instead of BpfNetMaps#setUidRule and
removes LOCKDOWN from FirewallChain.

Bug: 206482423
Test: atest TrafficControllerTest ConnectivityServiceTest
PermissionMonitorTest HostsideVpnTests#testBlockIncomingPacket

Change-Id: Iff9b9792fc0f208f153e10e396c6d5034b412d7c
2022-06-10 02:49:25 +00:00
Vinh Tran
6d8c1d7916 Replace gensrcs with java_library to deprecate depfile in gensrcs
The depfile concept in Soong and Ninja isn't applicable in Bazel because
Bazel requires listing the deps explicitly. This CL changes the module
type from gensrcs to java_library with proto.type set to "stream".

The end goal is to eventually deprecate depfile in gensrcs to ensure all
gensrcs modules are convertable to Bazel.

Test: CI
Bug: 179452413
Change-Id: I921324e6260b7de6329a1ff445b6326643a9c526
2022-06-08 01:26:16 -04:00
Motomu Utsumi
1d9054ba5f Add 3rd deny firewall chain for OEM
Bug: 208371987
Test: atest
CtsNetTestCases:android.net.cts.ConnectivityManagerTest#testFirewallBlocking
ConnectivityServiceTest

Change-Id: Ib521fa02f6a19270cb88a3d85321bda822516c78
2022-06-06 07:47:35 +00:00
Motomu Utsumi
d980149817 Add deny firewall chain for OEM
Bug: 207773349
Bug: 208371987
Test: atest
CtsNetTestCases:android.net.cts.ConnectivityManagerTest#testFirewallBlocking
--iterations 50 && atest ConnectivityServiceTest --iterations 10

Change-Id: I60d5540821abcced03356f366775f16ee369d7f9
2022-06-03 09:10:57 +00:00
Iván Budnik
6373153fcd Revert "NetworkRequest.Builder should create a defensive copy of capabilities"
This reverts commit f1ab80ea62.

Reason for revert: DroidMonitor: Potential culprit for Bug 233698500 - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted.

Change-Id: I7de63e0a3656194b94b29e28862c62fc300dfdfa
2022-05-24 09:24:16 +00:00
Patrick Rohr
f1ab80ea62 NetworkRequest.Builder should create a defensive copy of capabilities
This broke my tests in unexpected ways as creating a new
NetworkRequest.Builder() changed the static request object.

Test: TH && atest EthernetManagerTest
Change-Id: Ia6c39145cf92a2795f7fc2f4efbcb46d193f6b72
2022-05-20 12:00:36 -07:00