Commit Graph

8281 Commits

Author SHA1 Message Date
Maciej Żenczykowski
f335d68cb8 offload ebpf - introduce 4.14+ ipv4 forwarding programs am: 36867351ec
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1588019

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I79681916c7fa60d76a1721d52a08a7f2b8e22a46
2021-02-16 07:42:14 +00:00
Maciej Żenczykowski
36867351ec offload ebpf - introduce 4.14+ ipv4 forwarding programs
We've backported the necessary support to all 4.14+ ACK kernels,
but we can't actually enforce that these changes will be picked
up by all devices.  Thus we can only make the full featured
implementations optional on [4.14..5.8) kernels, with a tcp-only
version for those 4.14+ devices where the full featured version
fails to load.

Note: there's still a fair bit of implementation work left
in the do_forward4() function itself.  This is really just
the skeleton.

Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: If78123e00d55a77f2ecd7da1547581797e23f9b2
2021-02-16 05:48:55 +00:00
Maciej Żenczykowski
623479f329 Merge "offload ebpf - do_forward4() - introduce updatetime argument" am: d74918c6d2
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1588018

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I35508aa4baa1bdce95bdc2543d60f14eb784e4e4
2021-02-15 13:02:44 +00:00
Maciej Żenczykowski
d74918c6d2 Merge "offload ebpf - do_forward4() - introduce updatetime argument" 2021-02-15 12:35:16 +00:00
Maciej Żenczykowski
aefa0950b5 offload ebpf - do_forward4() - introduce updatetime argument
This will facilitate providing a tcp-only version of the programs
which due to TCP's very long timeouts will not need to use the
Linux 5.8+ bpf_ktime_get_boot_ns() helpers.

Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I1e49b6758d3754782ac6f8820e0c15aa20e4c61d
2021-02-15 12:33:01 +00:00
Remi NGUYEN VAN
e051a098ab Merge changes from topic "revert-1579872-vcn07-WIQQMUVMTJ" am: edc9b873d3
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1585571

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I099f467447b6773aca92c10699ba845438976fb7
2021-02-15 11:52:00 +00:00
Remi NGUYEN VAN
01218f193f Revert "Address comments on aosp/1550755" am: f77bed6d95
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1585570

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I4fc7b281dc3fa7be8c4a5979b1571d2652c29870
2021-02-15 11:51:59 +00:00
Maciej Żenczykowski
c456856971 tethering offload ebpf - lower requirement from 5.9 to 5.8 am: b0ac41f0cd
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1588017

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I8d8fecaab82002ff4e6eee14adff9d50ea585ea9
2021-02-15 11:51:41 +00:00
Remi NGUYEN VAN
edc9b873d3 Merge changes from topic "revert-1579872-vcn07-WIQQMUVMTJ"
* changes:
  Revert "[VCN07.1] Add test for bypassing VCN for non-internet re..."
  Revert "Address comments on aosp/1550755"
2021-02-15 11:39:25 +00:00
Maciej Żenczykowski
b0ac41f0cd tethering offload ebpf - lower requirement from 5.9 to 5.8
As this is the actual version that is required,
ie. the version that supports bpf_ktime_get_boot_ns() helper.

Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I2ea4830597a0bed53950a5d0c483a47208959f35
2021-02-14 22:24:34 -08:00
Remi NGUYEN VAN
075da46909 Revert "[VCN07.1] Add test for bypassing VCN for non-internet re..."
Revert "[VCN07] Bypass VCN for non-internet app accessible cellu..."

Revert submission 1579872-vcn07

Reason for revert: Possible culprit for b/179768816, broken ConnectivityControllerTest
Reverted Changes:
Id09b19c13:Address comments on aosp/1550755
I245bd69e0:[VCN07.1] Add test for bypassing VCN for non-inter...
I9936894b9:[VCN07] Bypass VCN for non-internet app accessible...

Change-Id: I7902a221c8597427e48d3e32fa5668b9c1a47420
2021-02-12 06:28:17 +00:00
Remi NGUYEN VAN
f77bed6d95 Revert "Address comments on aosp/1550755"
Revert "[VCN07] Bypass VCN for non-internet app accessible cellu..."

Revert submission 1579872-vcn07

Reason for revert: Possible culprit for b/179768816, broken ConnectivityControllerTest
Reverted Changes:
Id09b19c13:Address comments on aosp/1550755
I245bd69e0:[VCN07.1] Add test for bypassing VCN for non-inter...
I9936894b9:[VCN07] Bypass VCN for non-internet app accessible...

Change-Id: I3fded28691e05a3dbf25bb7361c72acaa61b29c7
2021-02-12 06:27:44 +00:00
Lorenzo Colitti
ceafffa6c0 Merge "Load JNI in all classes that have native methods." am: af97e51c01
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1581528

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ia1259c72d124f0d1310c147406026775682d2a7b
2021-02-12 05:25:23 +00:00
Treehugger Robot
31ce8ad94d Merge "fix TetheringCoverageTests" am: 6fc8229f16
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1584755

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I89847f05774cb37ec76fd57938d8bcf1e3a4f397
2021-02-12 05:24:52 +00:00
Lorenzo Colitti
c241c0f4f3 Merge changes I71a37663,Ib2010b38 am: fd710547b2
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1583023

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Iefd7946816067ed9279f26e48d86934db54056ce
2021-02-12 05:17:01 +00:00
Lorenzo Colitti
af97e51c01 Merge "Load JNI in all classes that have native methods." 2021-02-12 03:19:00 +00:00
Treehugger Robot
6fc8229f16 Merge "fix TetheringCoverageTests" 2021-02-12 03:17:51 +00:00
Lorenzo Colitti
fd710547b2 Merge changes I71a37663,Ib2010b38
* changes:
  Improve testing of registerSystemDefaultNetworkCallback.
  Remove buggy ConnectivityManagerTest#ensureWifiConnected.
2021-02-12 02:45:02 +00:00
Maciej Żenczykowski
c92e8ce636 fix TetheringCoverageTests
Test: atest TetheringCoverageTests now passes, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I0d83de14784f323400a83ce282cae1a3e7b4b396
2021-02-11 16:06:46 -08:00
Daulet Zhanguzin
c9bee74abd Merge "Run Connectivity cts tests against unbundled version of BouncyCastle" am: e1f96f3c35
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1580048

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ibbd2aad92bb7fe3fd09de99d82dbb1178daef43c
2021-02-11 15:05:16 +00:00
Daulet Zhanguzin
e1f96f3c35 Merge "Run Connectivity cts tests against unbundled version of BouncyCastle" 2021-02-11 14:44:06 +00:00
Sudheer Shanka
4fbac43be8 Update the way we change meteredness of cellular networks in tests. am: 37c10a2252
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1582844

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Id7eb095710da17da8a6e7785051029d81a64ac7d
2021-02-10 16:42:32 +00:00
Sudheer Shanka
37c10a2252 Update the way we change meteredness of cellular networks in tests.
SubscriptionManager.setSubscriptionOverrideUnmetered() has been updated
to add NET_CAPABILITY_TEMPORARILY_NOT_METERED instead of
NET_CAPABILITY_NOT_METERED. So, we can't rely on that for changing the
meteredness.

Bug: 179664982
Test: atest tests/cts/hostside/src/com/android/cts/net/HostsideRestrictBackgroundNetworkTests.java
Test: atest tests/cts/hostside/src/com/android/cts/net/HostsideNetworkCallbackTests.java
Change-Id: I4163b2f9c6f80b4e639d9977ef7e2b444ab12e81
Merged-In: I4163b2f9c6f80b4e639d9977ef7e2b444ab12e81
2021-02-10 14:05:09 +00:00
Lorenzo Colitti
baea700554 Improve testing of registerSystemDefaultNetworkCallback.
Addresses comments on aosp/1570840.

Bug: 179774433
Test: test-only change
Change-Id: I71a376631503e5b50ada3f7bb3dca6dbae9ebc27
2021-02-10 22:41:48 +09:00
Lorenzo Colitti
bf5c2979dd Remove buggy ConnectivityManagerTest#ensureWifiConnected.
This method does not behave correctly when wifi is connected but
the last CONNECTIVITY_ACTION broadcast was not for wifi. This
could happen due to another network connecting or disconnecting,
such as VPN.

Bug: 179774433
Test: test-only change
Change-Id: Ib2010b3871133c38b6d508bf508134dd9b814ce2
2021-02-10 15:58:18 +09:00
Lorenzo Colitti
2d109b3909 Merge changes from topics "vpnmove-getconnectionowneruid", "vpnmove-systemdefaultcallback", "vpnmove-vpntransportinfo" am: 43b96c711b
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1574260

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ibe397a58700e8ad1077a011a9a98f7478f0dc60e
2021-02-10 06:55:58 +00:00
Lorenzo Colitti
fc5b95502b Add CTS coverage for VpnTransportInfo. am: e9aeb3c1c5
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1570841

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I0674d6c5730ad30624d58d3fad0fa6b22c2ce7b0
2021-02-10 06:55:57 +00:00
Lorenzo Colitti
1f40096f3e Add test coverage for registerSystemDefaultNetworkCallback. am: 1e5cdd3187
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1570840

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: If5381eec59318dd01b6c19b13165dbacb6c86af2
2021-02-10 06:55:56 +00:00
Lorenzo Colitti
6800811597 Load JNI in all classes that have native methods.
The tethering module uses JNI in various classes, but only calls
System.loadLibrary in TetheringService#makeTethering. This means
that:

1. Any test that uses a class that uses JNI must load the
   library itself.
2. Any code that runs before TetheringService#makeTethering could
   potentially crash if it uses JNI. We may never have such code
   though.

Instead, make every class that has a native method load the JNI
library itself at static initialization time. This guarantees
that the class will have the JNI code available in any context
(production, test, etc.)

System.loadLibrary is documented not to do anything if called
more than once with the same library name:
https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#loadLibrary(java.lang.String)

and the implementation has a lock so it is safe to call from
multiple threads concurrently.

Test: builds, boots, tethering starts
Test: atest TetheringCoverageTests
Change-Id: I9c0147ae9a28877f416aaff387b426d304ae552d
2021-02-10 15:43:38 +09:00
Lorenzo Colitti
43b96c711b Merge changes from topics "vpnmove-getconnectionowneruid", "vpnmove-systemdefaultcallback", "vpnmove-vpntransportinfo"
* changes:
  Accept both pre-S and post-S errors in getConnectionOwnerUid.
  Add CTS coverage for VpnTransportInfo.
  Add test coverage for registerSystemDefaultNetworkCallback.
2021-02-10 06:38:41 +00:00
Lorenzo Colitti
d2956a1964 Add IPv4 counters. am: d561b7f67c
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1580287

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I4c2c1c0e7dd032a148f798030f668767bfd2a029
2021-02-10 06:30:21 +00:00
Lorenzo Colitti
98d23e7d02 Accept both pre-S and post-S errors in getConnectionOwnerUid.
On R and below, when an app that is not the active VPN app calls
getConnectionOwnerUid, a SecurityException is thrown. On S and
above, the method just returns INVALID_UID, which is what would
happen if the app was the active VPN app but was not authorized
to find that particular socket.

Accept both behaviours.

Bug: 173331190
Test: atest HostsideVpnTests#testGetConnectionOwnerUidSecurity passes on R and S
Change-Id: Ie6de2ef505b0d7bc253c55215a698aeaa210785c
2021-02-10 15:14:31 +09:00
Lorenzo Colitti
e9aeb3c1c5 Add CTS coverage for VpnTransportInfo.
Bug: 173331190
Test: FrameworksNetTests HostsideVpnTests CtsNetTestCases
Change-Id: I77d866270c63f1078a2a01941b2271d4338aa178
2021-02-10 15:14:26 +09:00
Lorenzo Colitti
e033a1e543 Dump counters in "dumpsys tethering bpf". am: 4e92da06fa
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1575051

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ic0891b0982780186054e468541259f10c2b5ccf5
2021-02-10 05:05:29 +00:00
Lorenzo Colitti
d561b7f67c Add IPv4 counters.
Test: dumpsys tethering bpf
Change-Id: Ie21fee8ad12430ecd21c3903587d25b8dd2a96c4
2021-02-10 04:44:35 +00:00
Lorenzo Colitti
4e92da06fa Dump counters in "dumpsys tethering bpf".
This CL adds the counters collected by the tethering programs to
the output of "dumpsys tethering bpf". The counter names are
fetched by JNI code at startup and then read by the debugging
code on demand.

Example from my device:

  Forwarding errors:
    TCP_CONTROL_PACKET: 67
    NON_GLOBAL_SRC: 13
    NON_GLOBAL_DST: 17
    LOCAL_SRC_DST: 7

Test: manual (debug-only code)
Change-Id: I7ec7992612556a4bca5f1b6bb52c655d6d870201
2021-02-10 04:43:03 +00:00
Lorenzo Colitti
a6c9626b5d Don't leak map fds in BpfCoordinator#dump. am: 555472a186
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1581523

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I6f674f644b3afbc762423c903a1460a215be712d
2021-02-09 22:22:55 +00:00
Lorenzo Colitti
555472a186 Don't leak map fds in BpfCoordinator#dump.
Currently, the dump methods open BpfMap objects and never close
them. This leaks filedescriptors, and if dump is called often
enough, will crash the networkstack process.

Fix this by using try-with-resources statements that
automatically close the map when exiting the try block.

Change the signature of BpfMap#close from "throws Exception" to
"throws ErrnoException" since it does not throw any other type
of checked exceptions.

Test: "lsof | grep network_st" while running "dumpsys tethering bpf" in a loop
Change-Id: I66c407454c2715bf41bf3a2e81bd582f9ea5a905
2021-02-09 23:30:25 +09:00
Daulet Zhanguzin
8b4a865266 Run Connectivity cts tests against unbundled version of BouncyCastle
Bug: 154796679
Test: Treehugger
Change-Id: I594c3ce3808735427aed2899f3805dfacb117516
2021-02-09 14:03:01 +00:00
Lorenzo Colitti
76a663683c Merge "offload - finish ipv4 tethering" am: 4431655a4d
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1562765

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ifcf60768a4c5c88657f7a3f6896e14082353735a
2021-02-09 12:33:26 +00:00
Lorenzo Colitti
1e5cdd3187 Add test coverage for registerSystemDefaultNetworkCallback.
Bug: 173331190
Test: atest CtsNetTestCases:NetworkAgentTest
Change-Id: I3ce51ca253a8bd06408137f6f9ed4056a832cb43
2021-02-09 20:10:36 +09:00
Lorenzo Colitti
4431655a4d Merge "offload - finish ipv4 tethering" 2021-02-09 11:08:06 +00:00
Lorenzo Colitti
66609d3f3e Improve BPF tethering counters. am: 72ec3ba88a
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1580284

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I43e2306bf134e2219b9f0a5bb59ad9c03f3aaa70
2021-02-09 06:27:17 +00:00
Maciej Żenczykowski
0681ae3e9a Merge changes I3fcd7eb8,I4bf2c762 am: d46b3d8ef8
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1575050

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I828f5f2200becadfd0429dce83dc9e4c0bc5d224
2021-02-09 03:43:01 +00:00
Lorenzo Colitti
72ec3ba88a Improve BPF tethering counters.
Test: m
Change-Id: I53961e1e16bf90d76f16b9416c55b65e8374373d
2021-02-09 03:36:40 +00:00
Maciej Żenczykowski
d46b3d8ef8 Merge changes I3fcd7eb8,I4bf2c762
* changes:
  Add error counters for various failures.
  Add a bpf_tethering_headers lib used by the programs and JNI.
2021-02-09 02:57:24 +00:00
Lorenzo Colitti
b81584dbe5 Add error counters for various failures.
Currently, debugging the tethering programs is not easy because
in case of any failure they simply return TC_ACT_OK. This CL adds
a number of counters that the program can increment in the case
of interesting events such as malformed packets.

At the moment the counters are stored in a global tethering error
map, which is an ARRAY map of 32-bit counters. This should not
take up much space because there are only a dozen of these.

We might not need all of these counters. In future CLs we can
reduce the number of counters, or perhaps move them to a map of
maps so as to have separate counters on a per-interface basis.

Test: manual
Change-Id: I3fcd7eb8d318700092949ff2f39987bf4ba3656c
2021-02-09 02:56:52 +00:00
Lorenzo Colitti
734b14e07d Add a bpf_tethering_headers lib used by the programs and JNI.
This provides a place to store common definitions that can be
used by both the programs and by JNI code in the tethering
module.

Over time much of the tethering-specific code in bpf_shared.h
could move here.

Test: m
Bug: 177884581
Change-Id: I4bf2c762d61cd5db003d59880e6bf7d107ff1a07
2021-02-09 01:54:52 +00:00
Treehugger Robot
81d26e80ed Merge "Temporarily disable flaky testRequestBackgroundNetwork CTS test" am: 1259762383
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1579874

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I41cb852c962e219c0e546040af29e13c535909b3
2021-02-09 01:21:39 +00:00
Treehugger Robot
1259762383 Merge "Temporarily disable flaky testRequestBackgroundNetwork CTS test" 2021-02-09 00:13:46 +00:00