Commit graph android_packages_modules_Co.../bpf/loader/NetBpfLoad.cpp
Message SHA1
NetBpfLoad: use libbpf based on mainline beta flag, part 2
Disable shared version of libtetheringflags
  - since the flags are readonly there is no real content to this,
    and it should be statically linked for compile/link time optimization
    (which should basically optimize the entire library out)

Use C++ magic to compile time verify the macro and flag are in sync.

The way this works:

constexpr auto useLibBpf = COM_ANDROID_TETHERING_READONLY_FLAGS_USE_LIBBPF;

^ this basically requires the macro to resolve to true/false, so that 'auto' resolves to 'const bool'

static_assert(std::is_same<decltype(useLibBpf), const bool>::value, "useLibBpf must be a boolean.");

^ which we check here

static_assert(useLibBpf == com::android::tethering::readonly:🎏:use_libbpf(), "useLibBpf flag mismatch");

^ and this then requires the macro and flag to be identical *and* compile time known

Test: TreeHugger
Flag: EXEMPT PURE_REFACTOR
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Id5cd8c7d91b424765d6f469806434b3e9587f074

Maciej Żenczykowski   commited 2025-09-12 04:04:39 -07:00
1c59188cf0
NetBpfLoad: eliminate 'bpfCmdFixupIsNeeded'
It turns out this doesn't work anyway:

Both our Java and C++ higher level map opening logic on 4.14+
kernels will check key/value sizes match, which will fail due to
the kernel uapi mismatch.

(Note: that the fixup was only ever applied/enabled inside of
the NetBpfLoad process itself, not in any later .so/Java/JNI)

This removes the fixup and simply chooses to not even attempt to
load bpf.  This will result in the mainline bpf provided
maps and programs simply not existing.  This would/will cause
a failure of 'bpf_existence_test' - but who cares, so long
as things keep on booting.

We need to transition to libbpf, and clearly making this work
isn't worth the considerable effort it would be, since S ebpf
functionality (ie. tethering offload) hasn't worked on the
affected devices in years.

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ic93a5a9d5b3ba8078500e20dfdf00ef68256874c

Maciej Żenczykowski   commited 2025-09-11 13:01:01 -07:00
db324dfbca
NetBpfLoad: move dir creation ahead of kernel uapi check
Test: TreeHugger
Flag: EXEMPT mainline/refactor
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I395d6f9abe0c0cbd8af662b1c94be16eeac4060b

Maciej Żenczykowski   commited 2025-09-11 12:04:56 -07:00
9611f93131
NetBpfLoad: reduce log spam
by joining two log lines into one with effectively the same info

(the kernel version is already printed during startup)

Test: TreeHugger
Flag: EXEMPT mainline / logging
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ide066edf2d54ffd6a61fdcb115a249bff80cdff9

Maciej Żenczykowski   commited 2025-09-11 11:34:49 -07:00
ff505eaaea
NetBpfLoad: Fail boot if BTF load fails on 4.19+
libbpf ignores BTF load error but this causes boot failure only when BTF
is required for some reasons (e.g. SK_STORAGE).
This CL makes boot fails regardless of the necessity of BTF on 4.19+
kernel

Test: boot kernel on 4.14, 4.19, 5.10, 6.1
Flag: EXEMPT mainline
Change-Id: I0af1e7eedcbea803c22c064ff157700a01307691

Motomu Utsumi   commited 2025-09-04 04:59:00 -07:00
8f3cfccf27
NetBpfLoad: use macro for mainline beta flag
Flag: com.android.tethering.readonly.flags.use_libbpf
Bug: 428792764
Test: Enable/Disable flag, boot, adb shell logcat
Change-Id: I40e6124f6c96cf09ce50f38d786f15847ec6f69d

Motomu Utsumi   commited 2025-08-25 20:54:37 +09:00
aa8717db44
NetBpfLoad: use libbpf based on mainline beta flag
This CL did not change the binary and library size

Before this CL
"""
$adb shell ls -l /apex/com.android.tethering/bin/netbpfload
-rwxr-x--- 1 root root 102744 1970-01-01 09:00 /apex/com.android.tethering/bin/netbpfload
$adb shell ls -1 /apex/com.android.tethering/lib64 | wc -l
21
"""

After this CL
"""
$adb shell ls -l /apex/com.android.tethering/bin/netbpfload
-rwxr-x--- 1 root root 102744 1970-01-01 09:00 /apex/com.android.tethering/bin/netbpfload
$adb shell ls -1 /apex/com.android.tethering/lib64 | wc -l
21
"""

Flag: com.android.tethering.readonly.flags.use_libbpf
Bug: 428792764
Test: Enable/Disable flag, boot, adb shell logcat
Change-Id: Ie8d94ab00d8b32f5062265c6b9696feb77a0f0b1

Motomu Utsumi   commited 2025-08-22 22:46:24 +09:00
5a3103ba1e
Merge "NetBpfLoad: expose kernel bug BPF map to NetworkStack" into main
Maciej Żenczykowski   authored and   Android (Google) Code Review   commited 2025-08-20 01:32:12 -07:00
cf94760d68
NetBpfLoad: expose kernel bug BPF map to NetworkStack
This change grants the NetworkStack process read access to the existing
'map_kernel_bugs' BPF map. This map, created by NetBpfLoad,
allows the kernel to signal known bugs to userspace.

The primary modification is applying the correct permissions
('chown'/'chmod') so the NetworkStack can query the map.

The map is pinned to `/sys/fs/bpf/tethering/map_kernel_bugs` and its
permissions are set (root:network_stack, 0640) for access by network_stack
```
$ adb shell ls -lZ /sys/fs/bpf/tethering/
total 0
-r--r----- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 map_kernel_bugs
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 map_offload_tether_dev_map
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 map_offload_tether_downstream4_map
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 map_offload_tether_downstream64_map
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 map_offload_tether_downstream6_map
-r--r----- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 map_offload_tether_error_map
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 map_offload_tether_limit_map
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 map_offload_tether_stats_map
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 map_offload_tether_upstream4_map
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 map_offload_tether_upstream6_map
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 map_test_bitmap
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 map_test_tether2_downstream6_map
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 map_test_tether3_downstream6_map
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 map_test_tether_downstream6_map
-r--r----- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 prog_offload_schedcls_tether_downstream4_ether
-r--r----- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 prog_offload_schedcls_tether_downstream4_rawip
-r--r----- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 prog_offload_schedcls_tether_downstream6_ether
-r--r----- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 prog_offload_schedcls_tether_downstream6_rawip
-r--r----- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 prog_offload_schedcls_tether_upstream4_ether
-r--r----- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 prog_offload_schedcls_tether_upstream4_rawip
-r--r----- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 prog_offload_schedcls_tether_upstream6_ether
-r--r----- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-08-18 04:04 prog_offload_schedcls_tether_upstream6_rawip
```

Flag: EXEMPT mainline
Bug: 430428550
Test: Manually check `dumpsys tethering bpf` after using bpftool on the map
Change-Id: Ie0fdaeea85cc9de45a42fd15a714a49ec9f3049d

Jimi Chen   commited 2025-08-19 22:44:49 -07:00
579e85b8d1
NetBpfLoad: disable BTF when BPF command fixup is needed.
Should fix observed failure on a Xiaomi S device with 4.19 kernel:
  I NetBpfLoad: NetBpfLoad v0.42 (/apex/com.android.tethering/bin/netbpfload) api:31/31 kver:413009d (64-on-aarch64) libbpf: v1.4 uid:1000 rc:10
  I NetBpfLoad: Tethering APEX version 360911260
  E NetBpfLoad: bpfGetNextMapId(final 15) returned 0 errno 2
  W NetBpfLoad: Enabling bpfCmdFixupIsNeeded.
  ...
  W NetBpfLoad: libbpf: BTF loading error: -2
  E NetBpfLoad: btf__load_into_kernel failed, errno: 2
  E NetBpfLoad: Failed to create maps: (ret=-2) in /apex/com.android.tethering/etc/bpf/mainline/offload.o
  E NetBpfLoad: Failed to load object: /apex/com.android.tethering/etc/bpf/mainline/offload.o, ret: No such file or directory
  E NetBpfLoad: === CRITICAL FAILURE LOADING BPF PROGRAMS ===

(errno 2 is ENOENT)

Bug: 438099891
Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I07eea956fe6b862c68d3679dbd9eac81bec05e71

Maciej Żenczykowski   commited 2025-08-18 12:56:44 -07:00
6f3b412e9b
NetBpfLoad: Update build constraints & comments.
Corrected the comment in Android.bp regarding the target SDK version. In NetBpfLoad.cpp, added specific handling for RiscV builds to account for its undefined minimum API level. Added an error to ensure NetBpfLoad is always compiled within an APEX. Clarified that `minSupportedKernelVer` must be 0 for APEX builds to enable runtime kernel version enforcement.

Bug: 438908493
Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ie3affbfd702ff1f6d5f2887b6f56ade0ed7fb5dd

Maciej Żenczykowski   commited 2025-08-15 14:58:10 -07:00
95e4958769
Disable API level and kernel version static asserts for RISC-V.
(riscv isn't released, and thus is 10000)

Should fix:
  Broken build 13940537 on git_main-without-vendor on aosp_cf_riscv64_phone-aosp_current-userdebug

FAILED: ...
packages/modules/Connectivity/bpf/loader/NetBpfLoad.cpp:91:15: error: static assertion failed due to requirement '10000 == 30': NetBpfLoad must be compiled for 30/R
   91 | static_assert(__ANDROID_API__ == 30, "NetBpfLoad must be compiled for 30/R");
      |               ^~~~~~~~~~~~~~~~~~~~~
<built-in>:500:25: note: expanded from macro '__ANDROID_API__'
  500 | #define __ANDROID_API__ __ANDROID_MIN_SDK_VERSION__
      |                         ^
<built-in>:499:37: note: expanded from macro '__ANDROID_MIN_SDK_VERSION__'
  499 | #define __ANDROID_MIN_SDK_VERSION__ 10000
      |                                     ^
1 error generated.

Bug: 438908493
Test: TreeHugger
Flag: EXEMPT mainline & compile fix for unreleased RiscV
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I50ba1c3159c277fb8becb68220ba0885cf30e996

Maciej Żenczykowski   commited 2025-08-15 05:30:23 -07:00
8c3023ad3b
KernelUtils: automatically assume 5.10 kernel on platform
We're adding a lot of 'isAtLeastKernelVersion(x,y,z)' checks,
that would ideally compile time optimize out whenever possible.

Note: we should be able to bump the '__ANDROID_API__ == 30' assert
in NetBpfLoad to 31/S any day now, since technically tip-of-tree
only goes into M-2025-11 which requires S.  But none of the
prep work for that is ready yet.

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I4d9a7916833f086cd36011e094005999fe770583

Maciej Żenczykowski   commited 2025-08-14 20:10:43 -07:00
66d7b632b0
KernelUtils: early init kernel version
(unfortunately need to keep kernelVersion() around for some uses outside of p/m/C)

The goal of this is to make isAtLeastKernelVersion() checks
cheaper.  Currently they all have to check that we've already
parsed uname...

We use that all over the place, even at runtime in BpfMap.h.

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Iaf53fc1e36eb9f88df20c39643cbd53f420ded4e

Maciej Żenczykowski   commited 2025-08-11 15:12:52 -07:00
1ede04f16c
bpf: support for mmapable bpf map array (5.10+)
automatically fall back for older kernels

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ice377331442f71fa69f086a3be8a8c10cbc6575f

Maciej Żenczykowski   commited 2025-08-07 15:53:42 -07:00
ede2d5fe39
bpf: put canonicalized section name in bpf_prog_def
Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I8bc5c888f982dc872ac68840ae6c136a798384d9

Maciej Żenczykowski   commited 2025-08-05 12:14:24 -07:00
adb0f9e2a4
NetBpfLoad: remove spurious explicit pin location from pinProg()
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I17432e1495e776afd33df63037c092dc544e36e2

Maciej Żenczykowski   commited 2025-08-04 18:06:05 -07:00
283689d321
bpf: switch progs from using 'pin_prefix' to 'pin_location'
Note: I discovered that C considers:
  char s[4] = "abcd";
a valid initialization without a terminating NULL, resulting
in an invalid string.

(Specifically pinned programs had a '\1' as their last char
due to little endian encoding of the next field in the array
of prog def structs)

The simplest workaround appears to be to explicitly add a "\0"

That results in a string/array that ends with 2 NULLs,
and the compiler will at most *strip* the final one.

ie.
  char s[4] = "abcd\0";
fails to compile.

Obviously:
  char s[100] = "abcd\0";
also does the right thing, since it 0-pads with or without the extra null.

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Iaeb8db2cd4750f8521a971382b9f9f9f216195b2

Maciej Żenczykowski   commited 2025-08-04 18:02:51 -07:00
0be5b17e61
NetBpfLoad: remove parsing of "foo/" prefixes
in favour of just using the info from the prog definition
which was calculated at compilation time.

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I7542726b4c671177b30f79e90361b2dffdb38ac2

Maciej Żenczykowski   commited 2025-08-04 15:09:29 -07:00
371079226d
bpf: rename 'progs' section to '.android_progs'
(this matches what we did for maps)

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I2d75fb519f00471a6f1e6b0ffded9f327ecae7b4

Maciej Żenczykowski   commited 2025-08-04 15:07:05 -07:00
eb55711799
NetBpfLoad: remove spurious BPF_FS_PATH
Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ia2b748bd7b4712505af0e6a33822517b5cceb06f

Maciej Żenczykowski   commited 2025-08-04 15:07:05 -07:00
94f38014ff
NetBpfLoad: loadAllObjects - introduce libbpf bool
(for ease of testing non-libbpf code path)

Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I98927b328753914359136ae3f4a723f42256d0a0

Maciej Żenczykowski   commited 2025-08-04 14:08:56 -07:00
9c0cd85f66
NetBpfLoad: make loadObject() return bool
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ie996de3fba55f8ddfdc46d20161a87ad9194bf73

Maciej Żenczykowski   commited 2025-08-04 14:08:56 -07:00
0e53637637
NetBpfLoad: remove comments in loadAllObjects()
This is already documented at:
  //packages/modules/Connectivity/bpf/progs/include/bpf_helpers.h
which is the more logical location, since we're trying
to merge all the .o's into 1 per kernel version.

Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ibda074ccbbf6efdf36dffd481d953ef38b421637

Maciej Żenczykowski   commited 2025-08-04 14:08:46 -07:00
575c67e61e
NetBpfLoad: make loadAllObjects() return a bool
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I7c89482e9a567f5f6587508b77f398d6e9873d27

Maciej Żenczykowski   commited 2025-08-04 14:08:30 -07:00
e4a5161d63
NetBpfLoad: make loadObject take a fully specified .o path
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I718e6eaa2527d246edcc3265420bbfaf72191df1

Maciej Żenczykowski   commited 2025-08-04 14:08:30 -07:00
c4f8517a7f
bpf_prog_def: populate program type and attach_type automatically
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I27461c7930b744202a9c23f8aba6bd47c00a8d06

Maciej Żenczykowski   commited 2025-08-04 13:02:06 -07:00
498c983f35
NetBpfLoad: make 2 slashes abort
This cannot happen (it's a .c misconfig if it does)

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I5d82c7bb8c0214f5ffcc0ce391daddb9fe6a3295

Maciej Żenczykowski   commited 2025-08-04 13:02:06 -07:00
806087d4a1
NetBpfLoad: introduce ElfObject struct (class)
(prep work for improving loader performance)

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: If62b1de1020b89a28e06cad45153281e2ffcd6e0

Maciej Żenczykowski   commited 2025-08-01 14:53:31 -07:00
6e910b728d
NetBpfLoad: move getSymNameByIdx() & getSymOffsetByName() up
so that elf object related functions are next to each other

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I159e4e7ad96e3764206546f9f8c69ff156bcf790

Maciej Żenczykowski   commited 2025-08-01 14:53:27 -07:00
ce6cb1dacf
NetBpfLoad: make writeFile() return bool
Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I8a86efdca9140d6f50ebd7ed507897fda20e952c

Maciej Żenczykowski   commited 2025-08-01 14:53:22 -07:00
f1ac608fb0
NetBpfLoad: simplify createDir()
We go to a lot of trouble to return error codes, but
we never actually care about anything besides pass/fail.

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I8c0552246f1050813cca372a280b2302c701d617

Maciej Żenczykowski   commited 2025-08-01 14:53:18 -07:00
164488de05
NetBpfLoad: make doLoad() and thus main() return diff error codes
Sometimes *all* we see is the return code of the binary printed
out by init when we terminate with failure.  Unique codes will
make debugging easier.

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Icc93813674af2855b2d9f378a1accac48b403aa3

Maciej Żenczykowski   commited 2025-08-01 14:53:06 -07:00
49a6fbbe60
NetBpfLoad: inline getSectionType - avoids double loop
Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I66d9d786e27d382b14b8744a9ceafb6a791adfd4

Maciej Żenczykowski   commited 2025-07-31 18:17:40 -07:00
c22a0990a6
NetBpfLoad: remove unused readSectionUint()
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I88de4f7d17f3eb28c320a3883638633a2a80f93c

Maciej Żenczykowski   commited 2025-07-31 17:52:57 -07:00
a0baa2ea27
NetBpfLoad: pass md to applyMapRelo() - no longer need readMapNames() function
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I13315fce03b8287a32456ffa7b5a102fd41fd28d

Maciej Żenczykowski   commited 2025-07-31 17:47:45 -07:00
2493cf4eb6
NetBpfLoad: loadProgByLibbpf() does not need to readMapNames()
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I08d5ed71147e756c0d1455ce3fece92d29f2eae5

Maciej Żenczykowski   commited 2025-07-31 17:20:15 -07:00
d4de391686
NetBpfLoad: make createMaps() take md map array instead of reading it
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I08105db30bf237a98126b4a5cb506298173738bf

Maciej Żenczykowski   commited 2025-07-31 17:20:07 -07:00
e9d0e250cf
NetBpfLoad: prepareLoadMaps() doesn't need mapNames
Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I0a8f73fc8104dbe1af44395993b634c18fc3b595

Maciej Żenczykowski   commited 2025-07-31 17:19:59 -07:00
3f44c16a15
NetBpfLoad: pinMaps() doesn't need mapNames
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I87414ecd4acbf83af5b20ddb8c0e540e00ee1f59

Maciej Żenczykowski   commited 2025-07-31 17:19:50 -07:00
cc15e7a903
NetBpfLoad: createMaps() no longer needs to call readMapNames()
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ib2895173722006605547bf9b8aebc368b9540184

Maciej Żenczykowski   commited 2025-07-31 17:19:42 -07:00
0021923e6d
NetBpfLoad: mapMatchesExpectations() doesn't need map name any more
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I5a0f11432dad9f92e123c444cb3b4b5d5b1b0e4a

Maciej Żenczykowski   commited 2025-07-31 17:19:31 -07:00
7ff1b8ee54
NetBpfLoad: replace mapNames[i].c_str() with md[i].name()
Since these are equivalent, search and replace...

Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I358220f5db70fcde671ce2560086fc7a220f49c7

Maciej Żenczykowski   commited 2025-07-31 17:19:10 -07:00
dfda509e77
bpf_map_def: introduce map name 'field'
The field is actually just a compile time calculate index into pin_location.
We add a C++ only helper to return the ASCIIZ string at this offset.

Temporary abort() added to show this is equivalent.

Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: If57390b99f348ab03b277e8f68e7f38636c751fc

Maciej Żenczykowski   commited 2025-07-31 17:17:41 -07:00
b3dba5438d
bpf: switch map 'pin_prefix' to 'pin_location'
easy to do for maps now, but harder for programs

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I0aedef7a8f28d8cc60ca4912f2666f920b9dbeb5

Maciej Żenczykowski   commited 2025-07-31 12:31:56 -07:00
47e2ba05ed
NetBpfLoad: remove spurious pathToObjName()
Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I7fb1ea3fcaed51c4702be18b0af636acfd315d9c

Maciej Żenczykowski   commited 2025-07-31 11:53:04 -07:00
3330faf62f
bpf: switch prog 'pin_subdir' to 'pin_prefix'
which simplifies NetBpfLoad logic

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I610aa8374fe3c56262f76fe52edf8386c1a3ee12

Maciej Żenczykowski   commited 2025-07-31 11:42:10 -07:00
ae1a9ff2fa
bpf: switch map 'pin_subdir' to 'pin_prefix'
which simplifies NetBpfLoad logic

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I3600cf45ae14a20801b5beca0aa9e79bb3052c57

Maciej Żenczykowski   commited 2025-07-31 11:39:38 -07:00
667dfa97e6
bpf: embed 'create_location' instead of 'selinux_context' in .o files
Basically we can verify and precalculate this at build time.

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ie4e336c6dc82a0e93a3e62c88c313a32cb245861

Maciej Żenczykowski   commited 2025-07-30 15:27:49 -07:00
0864153ddd
NetBpfLoad: remove validatePinDir()
No longer required now that we have compile time verification.

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I5b18727e8ebf820a06ba647bb7349ba755d5d798

Maciej Żenczykowski   commited 2025-07-30 15:02:07 -07:00
ed945905de