Commit graph android_packages_modules_Co.../bpf/loader/NetBpfLoad.cpp
Message SHA1
NetBpfLoad: support bpf.o without program section
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I7320cf60a8994a6c8da99293f068265f54a9ddc6

Maciej Żenczykowski   commited 2024-09-05 09:32:39 -07:00
1e487177f1
dscpPolicy: lock down bpf cache map
(since this map relies on percpu access semantics,
 and we don't even have userspace helpers to access PERCPU_ maps)

This will also be used by the upcoming satellite egress limiting logic.
See aosp/3235142

With this change we see:
  $ adbz shell ls -lZ /sys/fs/bpf/net_shared/*_dscpPolicy_*
  -rw-rw---- 1 root system u:object_r:fs_bpf_net_shared:s0  0 2024-09-04 17:01 /sys/fs/bpf/net_shared/map_dscpPolicy_ipv4_dscp_policies_map
  -rw-rw---- 1 root system u:object_r:fs_bpf_net_shared:s0  0 2024-09-04 17:01 /sys/fs/bpf/net_shared/map_dscpPolicy_ipv6_dscp_policies_map
  ---------- 1 root root   u:object_r:fs_bpf_loader:s0      0 2024-09-04 17:01 /sys/fs/bpf/net_shared/map_dscpPolicy_socket_policy_cache_map
  -r--r----- 1 root system u:object_r:fs_bpf_net_shared:s0  0 2024-09-04 17:01 /sys/fs/bpf/net_shared/prog_dscpPolicy_schedcls_set_dscp_ether

Test: TreeHugger, atest CtsNetTestCases:android.net.cts.DscpPolicyTest
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I50a12ca4cd5587342f8aaf9df8cb28917f555252

Maciej Żenczykowski   commited 2024-09-04 17:41:47 -07:00
1ec8d7df58
NetBpfLoad: add more using statements
To shorten lines.

Now:
  egrep 'base:' NetBpfLoad.cpp
only finds the 'using' statements.

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I8b125c420c106e4b9c2af0a4fa2e4892a08bb152

Maciej Żenczykowski   commited 2024-09-04 11:43:31 -07:00
8a7672822d
NetBpfLoad: allow Arm 32-bit userspace with 6.6 kernel uprev
Bug: 329269188
Test: Treehugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Iba87f62743f76f532e51f4dbb156054e50d6dd5d

Maciej Żenczykowski   commited 2024-09-03 23:43:24 +00:00
1c2187ace9
NetBpfLoad: require 64-bit kernel 6.7+
Note that this is a no-op for everything before sdk=36+,
since V/sdk=35 only supports up to 6.6 LTS anyway.

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I701045074dfb7b0c586536634e210318b5af364b

Maciej Żenczykowski   commited 2024-09-03 16:09:59 -07:00
9b6a994984
NetBpfLoad: require 64-bit userspace on 6.7+ (sdk=36+)
This duplicates the previous check, but without the exceptions.

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Id83695689268baacd1112821fa3fd212c3aa0bb6

Maciej Żenczykowski   commited 2024-09-03 16:04:11 -07:00
21b4a05c73
bpf: add minimal support for sdk=36
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ib94ed340712b662072eee50d8f1deb9f6fe20b55

Maciej Żenczykowski   commited 2024-09-03 16:04:11 -07:00
de7374d850
NetBpfLoad: noop - move comment out of if statement
(prep work to make next diff easier on the eyes)

Test: N/A
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I2a6a10cbdeace7e7b43d64bc1e0743216e4321e1

Maciej Żenczykowski   commited 2024-09-03 15:43:33 -07:00
726b58fd19
NetBpfLoad: reliably log message on map creation failure
(ALOGD can get entirely stripped out of the logs)

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I513d10acb9f1cc330b9cd5a4245f3af7e790a4d6

Maciej Żenczykowski   commited 2024-08-29 21:18:22 +00:00
8597e3ac16
NetBpfLoad: don't log the program failure buffer if it is empty
BPF_PROG_LOAD can fail with various permission related
errors, and then it doesn't provide any extra debug details.

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I9f6f0bf30158828fe31045a11a1f4c015feeb61e

Maciej Żenczykowski   commited 2024-08-29 21:18:00 +00:00
9f8b17ee5b
NetBpfLoad: better log message on program load failure
We're reduced logging enough that it is no longer clear
which program failed to load.

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I8919a055f82d0c0e6e6818799463c606e853f70b

Maciej Żenczykowski   commited 2024-08-29 21:17:12 +00:00
bfc0b6187c
Merge "NetBpfLoad: do not log bpfGetFdMapId() failures on 4.9" into main
Maciej Żenczykowski   authored and   Gerrit Code Review   commited 2024-08-29 21:15:29 +00:00
461b408129
NetBpfLoad: do not log bpfGetFdMapId() failures on 4.9
This is entirely expected due to lack of implementation in <4.14.

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ifebe6843dc77b1b9a506c61239dcebe7262d0869

Maciej Żenczykowski   commited 2024-08-29 12:19:56 -07:00
508c8f7857
NetBpfLoad: hacky way to make LPM_TRIE bpf maps work.
Longer term we should fix the bpf_map_def.h to
actually set map_flags correctly.

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I4e7954ccd0afad4ca8d9cec179ad6efa20592609

Maciej Żenczykowski   commited 2024-08-29 18:10:28 +00:00
dcb2e7496c
NetBpfLoad: introduce APEXROOT/BPFROOT defines
This allows changing the location of bpf programs easily
when building for the host to run on UML as a test.

Bug: 205608149
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I24816b6660581e74f277df39495a43027b77d2cf

Maciej Żenczykowski   commited 2024-08-26 17:29:52 -07:00
78fa86107b
NetBpfLoad: sort BPF_PROG_LOAD bpf_attr req field order
Some compilers warn/error and fail to build if it is not in proper order.
(specifically: triggers during build for host)

Bug: 205608149
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I84ddec9a2443939616fd78f522e8620680e1289e

Maciej Żenczykowski   commited 2024-08-26 17:29:47 -07:00
52be6a822d
NetBpfLoad: remove spurious header includes
(particularly problematic on host builds where host headers are ancient...)

Bug: 205608149
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Iae64b900464e7584ad657f18d8101993fd8c8e33

Maciej Żenczykowski   commited 2024-08-26 17:29:41 -07:00
020eaf4dd5
NetBpfLoad: reduce log level for some messages
These messages are quite spammy.

Since this is now all mainline code built/shipped together, they're basically all deterministic.

We print the map/program ids for all maps & programs we load which means it's pretty obvious what was skipped anyway.

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Id46d9be8f77bef0b4c86e3a76503570c43e43af4

Maciej Żenczykowski   commited 2024-08-22 23:43:27 +00:00
dbdd90fb31
bpf: move bpf_headers into /bpf subdirectory
Generated via:
  git mv staticlibs/native/bpf_headers bpf/headers
  cd bpf/headers/include
  git mv bpf/bpf_helpers.h .
  git mv bpf/bpf_map_def.h .
manually fix up bpf/bpf_map_def.h include path

bpf_helpers.h is only used by bpf programs so the 'bpf/'
prefix is spurious.

bpf_map_def.h is only used by bpf programs and the two
bpfloaders, which effectively means the 'bpf/' prefix isn't
useful.

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ic3fc4e354a15821c27c23b7dbc019daad9f6ad85

Maciej Żenczykowski   commited 2024-08-21 13:18:59 -07:00
d602835b4f
bpf: git mv netbpfload bpf/loader
Step 2 of moving bpf related stuff into a common directory,
will ease development.

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I95cab49ae03eb275982f43d2246085b06e66dc6d

Maciej Żenczykowski   commited 2024-08-20 19:51:41 -07:00
a207ac743c
Renamed from netbpfload/NetBpfLoad.cpp (Browse further)