Commit graph android_packages_modules_Co.../bpf/loader
Message SHA1
NetBpfLoad: doc updates...
Test: N/A
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I1284a9aeee616da30573d8f57e9aab46116acb2a

Maciej Żenczykowski   commited 2024-10-02 22:48:44 +00:00
4e9230dee8
Update bpfloader related rc documentation.
Test: N/A
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Id475ba38f2fe396c6a3ddf15ddff052cc32ff5cb

Maciej Żenczykowski   commited 2024-10-02 19:47:14 +00:00
469363749e
NetBpfLoad: don't allow prog-less bpf .o's targetting platform bpfloader
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I0360c8bb7486b3ed125c0fd0d40b4b8d97bfb3e3

Maciej Żenczykowski   commited 2024-09-25 22:17:34 +00:00
2d52f8c139
Remove load_bpf_programs trigger (moving to system/core)
Note: this is a no-op for mainline as this file is built into platform,
and not into the tethering apex mainline module.

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

Maciej Żenczykowski   commited 2024-09-23 21:27:37 +00:00
3664aa8b0c
NetBpfLoad: noop - all programs are critical
All 6 .c files under bpf/progs are flagged CRITICAL(),
and as such we can simplify this logic.

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

Maciej Żenczykowski   commited 2024-09-18 23:46:16 +00:00
3a085154c5
BPF: rename bpf_defaults to bpf_cc_defaults
With the addition of defaults to the bpf soong module (see aosp/3249485
), the name `bpf_defaults` will be used to define defaults for bpf
program compilation. While there are separate soong namespaces for
module types and module names, rename the existing bpf_defaults
cc_defaults to bpf_cc_defaults for clarity.

While we're at it, add -Wextra, and cleanup unnecessary cflags in
clauses which use bpf_cc_defaults. Add -Wno-sign-compare to resolve
build issues in external test code.

Test: TH
Change-Id: Id0407f86ad50033a77a8679d465dc9412991d764
Signed-off-by: Neill Kapron <nkapron@google.com>

Neill Kapron   commited 2024-09-13 18:41:24 +00:00
661ae85eb2
NetBpfLoad: fix empty log_buf detection logic
log_buf.size() was always BPF_LOAD_LOG_SZ and thus != 0

After changing ALOGD to ALOGI you now see (for example):
  NetBpfLoad: BPF_PROG_LOAD call for /apex/com.android.tethering/etc/bpf/net_shared/block.o (bind4_block_port) returned 'processed 55 insns (limit 1000000) max_states_per_insn 0 total_states 4 peak_states 4 mark_read 1' fd: 6 (ok)

(ALOGV/ALOGD's are effectively silently dropped by the KernelLogger we use)

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

Maciej Żenczykowski   commited 2024-09-05 22:00:33 +00:00
ea1d8f6376
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 - update init rc docs for U QPR3 and V
Generated via:
  grab() { ( cd /android/packages/modules/Connectivity && git cat-file -p remotes/goog/$1:netbpfload/netbpfload.rc | egrep -v '^ *#'; ); }
  grab 24Q1-release > bpfloader-sdk34-14-U-QPR2.rc
  grab 24Q2-release > bpfloader-sdk34-14-U-QPR3.rc
  grab 24Q3-release > bpfloader-sdk35-15-V.rc

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

Maciej Żenczykowski   commited 2024-08-29 18:15:42 -07:00
79e404b2a3
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