android_packages_modules_Co.../Tethering
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Maciej Żenczykowski 8e69ec111f bpf offload - make sure bpf code can access packet headers
If a tc ebpf program writes into a packet using direct packet access
then the packet will automatically be uncloned and pulled by
additional prologue inserted by the kernel itself.  See
tc_cls_act_prologue() & bpf_unclone_prologue() in kernel sources
(this is how the clat ebpf program works, which does DPA writes).

However in the forwarding programs we only *read* from the packets
using direct packet access, but never write.  All writes happen via
kernel bpf helpers (this is mostly an implementation detail: since
we need to use helpers for checksum updates, I decided to also use
checksums for the writes themselves).  As such the insert 'automatic
unclone/pull' logic doesn't trigger.

It is thus possible (it depends on the skb layout delivered by the
nic driver) for 0 bytes of the packet to be accessible for read
using direct packet access.  We thus need to explicitly try to pull
in the header of the packet so that we can inspect it.

In most cases (on most drivers for most packet types) this will
end up being a no-op (because the headers will already be in
the linear portion of the skb).  But on some drivers for some
packet types it ends up mattering.

Test: TreeHugger, makes icmpv6 tether forwarding work on bramble
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I4b07e57728ce544ffb908527ea11ecc315e5acec
2021-04-06 21:50:17 +00:00
..
apex Add ServiceConnectivityResources to in-process APEX 2021-03-14 12:33:30 +09:00
apishim [NFCT.TETHER.15] Attach BPF program in the mainline module 2021-03-11 17:49:42 +08:00
bpf_progs bpf offload - make sure bpf code can access packet headers 2021-04-06 21:50:17 +00:00
common/TetheringLib Add dependency on system API in connectivity 2021-02-26 19:36:06 +09:00
jni [NFCT.TETHER.15] Attach BPF program in the mainline module 2021-03-11 17:49:42 +08:00
res wifi: Add bridged pre-fix for tethering interface 2021-01-18 01:21:32 +00:00
src Merge "implement insertOrReplace()" 2021-04-06 08:17:42 +00:00
tests Merge "implement insertOrReplace()" 2021-04-06 08:17:42 +00:00
Android.bp Update sources of Tethering module since it is renamed 2021-03-11 07:36:55 +00:00
AndroidManifest.xml Update language to comply with Android's inclusive language guidance 2020-07-29 12:05:04 +08:00
AndroidManifest_InProcess.xml Change tethering file structure to respect its package name 2020-04-14 14:33:45 +08:00
AndroidManifestBase.xml Add usesCleartextTraffic to Tethering 2020-08-18 09:00:58 +00:00
jarjar-rules.txt Update sources of Tethering module since it is renamed 2021-03-11 07:36:55 +00:00
OWNERS Revert "Add OWNERS block to prevent the tree from mooving during migration." 2020-10-31 04:50:11 +00:00
proguard.flags Provide a easy way to access bpf maps from java 2021-01-11 17:43:27 +08:00
TEST_MAPPING Move TetheringTests to presubmit 2020-06-10 02:33:37 +00:00