Commit graph android_packages_modules_Co.../bpf/loader/NetBpfLoad.cpp
Message SHA1
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
bpf_map_def: increase BPF_PIN_SUBDIR_CHAR_ARRAY_SIZE from 32 to 66
will allow us to store full pin location, longest we currently have is 64 + NULL:
  $ adb shell find /sys/fs/bpf | egrep net | egrep '.{64}'
  /sys/fs/bpf/netd_shared/prog_netd_cgroupsockrelease_inet_release
  $ adb shell find /sys/fs/bpf | egrep net | egrep '.{65}'
  <nothing>

Choose small value so we don't needlessly bloat the .o's.
This can be trivially increased on demand.

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

Maciej Żenczykowski   commited 2025-07-30 12:49:04 -07:00
5765db482c
NetBpfLoad: inline trivial readProgDefs()
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I677d87fd4535740ced99cdc75f9ff9810bae68e6

Maciej Żenczykowski   commited 2025-07-30 10:56:17 -07:00
ac40f52e27
NetBpfLoad: use objName/progName less location pre-rename
The genfscon rules only care about the directory, the precise
name is irrelevant and temporary since we immediately rename.

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

Maciej Żenczykowski   commited 2025-07-29 19:53:10 -07:00
f6dfae8d0e
NetBpfLoad: use objName/mapName less location pre-rename
The genfscon rules only care about the directory, the precise
name is irrelevant and temporary since we immediately rename.

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

Maciej Żenczykowski   commited 2025-07-29 19:53:10 -07:00
04747910f7
NetBpfLoad: remove foo@1.o support
No longer needed now that we have a single loader
which can support everything.

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

Maciej Żenczykowski   commited 2025-07-29 19:53:09 -07:00
08ad51519a
Merge "NetBpfLoad: Load netd.o by libbpf on 25Q3+" into main
Maciej Żenczykowski   authored and   Android (Google) Code Review   commited 2025-07-29 08:08:55 -07:00
1a2f7c35a4
Merge changes If57594b4,Iecb07123 into main
* changes:
  NetBpfLoad: Load dscpPolicy.o by libbpf on 25Q3+
  NetBpfLoad: Load clatd.o by libbpf on 25Q3+

Maciej Żenczykowski   authored and   Android (Google) Code Review   commited 2025-07-29 08:08:41 -07:00
a39fa3b3d5
Merge "NetBpfLoad: Load test.o by libbpf on 25Q3+" into main
Maciej Żenczykowski   authored and   Android (Google) Code Review   commited 2025-07-29 08:07:41 -07:00
fae303f20b
NetBpfLoad: Load netd.o by libbpf on 25Q3+
Before this change
"""
$ adb shell ls -lZ /sys/fs/bpf/netd_shared/
total 0
drwxrwxrwt 2 root root        u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:52 mainline_done
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:52 map_netd_app_uid_stats_map
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:52 map_netd_blocked_ports_map
-r--rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 map_netd_configuration_map
-rw-rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:52 map_netd_cookie_tag_map
-r--rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 map_netd_data_saver_enabled_map
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:52 map_netd_iface_index_name_map
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:52 map_netd_iface_stats_map
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:52 map_netd_ingress_discard_map
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:52 map_netd_local_net_access_map
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:52 map_netd_local_net_blocked_uid_map
-rw-rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:52 map_netd_lock_array_test_map
-rw-rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:52 map_netd_lock_hash_test_map
----rw---- 1 root system      u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:52 map_netd_packet_trace_enabled_map
----rw---- 1 root system      u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:52 map_netd_packet_trace_ringbuf
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:52 map_netd_sk_storage
-r--rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 map_netd_stats_map_A
-r--rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 map_netd_stats_map_B
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:52 map_netd_uid_counterset_map
-r--rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 map_netd_uid_owner_map
-r--rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 map_netd_uid_permission_map
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 prog_netd_bind4_inet4_bind
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 prog_netd_bind6_inet6_bind
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 prog_netd_cgroupskb_egress_stats
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 prog_netd_cgroupskb_ingress_stats
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 prog_netd_cgroupsock_inet_create
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 prog_netd_cgroupsockrelease_inet_release
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 prog_netd_connect4_inet4_connect
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 prog_netd_connect6_inet6_connect
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 prog_netd_getsockopt_prog
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 prog_netd_recvmsg4_udp4_recvmsg
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 prog_netd_recvmsg6_udp6_recvmsg
-r--r----- 1 root net_admin   u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:52 prog_netd_schedact_ingress_account
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 prog_netd_sendmsg4_udp4_sendmsg
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 prog_netd_sendmsg6_udp6_sendmsg
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:52 prog_netd_setsockopt_prog
-r--r----- 1 root net_admin   u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:52 prog_netd_skfilter_allowlist_xtbpf
-r--r----- 1 root net_admin   u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:52 prog_netd_skfilter_denylist_xtbpf
-r--r----- 1 root net_admin   u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:52 prog_netd_skfilter_egress_xtbpf
-r--r----- 1 root net_admin   u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:52 prog_netd_skfilter_ingress_xtbpf

$ adb logcat
07-29 19:52:24.598   792   792 D NetBpfLoad: Loaded object: /apex/com.android.tethering/etc/bpf/mainline/netd.o, libbpf: 0
"""

After this change
"""
$ adb shell ls -lZ /sys/fs/bpf/netd_shared/
motomuman@DESK:/disk/main$ adb shell ls -lZ /sys/fs/bpf/netd_shared/
total 0
drwxrwxrwt 2 root root        u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:56 mainline_done
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:56 map_netd_app_uid_stats_map
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:56 map_netd_blocked_ports_map
-r--rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 map_netd_configuration_map
-rw-rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:56 map_netd_cookie_tag_map
-r--rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 map_netd_data_saver_enabled_map
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:56 map_netd_iface_index_name_map
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:56 map_netd_iface_stats_map
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:56 map_netd_ingress_discard_map
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:56 map_netd_local_net_access_map
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:56 map_netd_local_net_blocked_uid_map
-rw-rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:56 map_netd_lock_array_test_map
-rw-rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:56 map_netd_lock_hash_test_map
----rw---- 1 root system      u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:56 map_netd_packet_trace_enabled_map
----rw---- 1 root system      u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:56 map_netd_packet_trace_ringbuf
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:56 map_netd_sk_storage
-r--rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 map_netd_stats_map_A
-r--rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 map_netd_stats_map_B
----rw---- 1 root net_bw_acct u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:56 map_netd_uid_counterset_map
-r--rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 map_netd_uid_owner_map
-r--rw---- 1 root net_bw_acct u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 map_netd_uid_permission_map
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 prog_netd_bind4_inet4_bind
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 prog_netd_bind6_inet6_bind
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 prog_netd_cgroupskb_egress_stats
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 prog_netd_cgroupskb_ingress_stats
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 prog_netd_cgroupsock_inet_create
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 prog_netd_cgroupsockrelease_inet_release
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 prog_netd_connect4_inet4_connect
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 prog_netd_connect6_inet6_connect
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 prog_netd_getsockopt_prog
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 prog_netd_recvmsg4_udp4_recvmsg
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 prog_netd_recvmsg6_udp6_recvmsg
-r--r----- 1 root net_admin   u:object_r:fs_bpf_net_shared:s0     0 2025-07-29 19:56 prog_netd_schedact_ingress_account
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 prog_netd_sendmsg4_udp4_sendmsg
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 prog_netd_sendmsg6_udp6_sendmsg
-r--r----- 1 root root        u:object_r:fs_bpf_netd_readonly:s0  0 2025-07-29 19:56 prog_netd_setsockopt_prog
-r--r----- 1 root net_admin   u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:56 prog_netd_skfilter_allowlist_xtbpf
-r--r----- 1 root net_admin   u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:56 prog_netd_skfilter_denylist_xtbpf
-r--r----- 1 root net_admin   u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:56 prog_netd_skfilter_egress_xtbpf
-r--r----- 1 root net_admin   u:object_r:fs_bpf_netd_shared:s0    0 2025-07-29 19:56 prog_netd_skfilter_ingress_xtbpf

$ adb logcat
07-29 19:56:31.625   788   788 D NetBpfLoad: Loaded object: /apex/com.android.tethering/etc/bpf/mainline/netd.o, libbpf: 1
"""

Bug: 428792764
Flag: EXEMPT mainline
Test: TH
Change-Id: I79b007450df134533fd780a9e94361361d862fb8

Motomu Utsumi   commited 2025-07-29 19:58:42 +09:00
15aedc9b4a
NetBpfLoad: Load dscpPolicy.o by libbpf on 25Q3+
Before this change
"""
$ adb shell ls -lZ /sys/fs/bpf/net_shared/*dscp*
-rw-rw---- 1 root system u:object_r:fs_bpf_net_shared:s0  0 2025-07-29 19:46 /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 2025-07-29 19:46 /sys/fs/bpf/net_shared/map_dscpPolicy_ipv6_dscp_policies_map
---------- 1 root root   u:object_r:fs_bpf_loader:s0      0 2025-07-29 19:46 /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 2025-07-29 19:46 /sys/fs/bpf/net_shared/prog_dscpPolicy_schedcls_set_dscp_ether

$ adb logcat
07-29 19:46:24.468   794   794 D NetBpfLoad: Loaded object: /apex/com.android.tethering/etc/bpf/mainline/dscpPolicy.o, libbpf: 0
"""

After this change
"""
$ adb shell ls -lZ /sys/fs/bpf/net_shared/*dscp*
-rw-rw---- 1 root system u:object_r:fs_bpf_net_shared:s0  0 2025-07-29 19:52 /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 2025-07-29 19:52 /sys/fs/bpf/net_shared/map_dscpPolicy_ipv6_dscp_policies_map
---------- 1 root root   u:object_r:fs_bpf_loader:s0      0 2025-07-29 19:52 /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 2025-07-29 19:52 /sys/fs/bpf/net_shared/prog_dscpPolicy_schedcls_set_dscp_ether

$ adb logcat
07-29 19:52:24.493   792   792 D NetBpfLoad: Loaded object: /apex/com.android.tethering/etc/bpf/mainline/dscpPolicy.o, libbpf: 1
"""

Bug: 428792764
Flag: EXEMPT mainline
Test: TH
Change-Id: If57594b490908eb46070812c12e611c2804fe251

Motomu Utsumi   commited 2025-07-29 19:58:33 +09:00
0062e898f0
NetBpfLoad: Load clatd.o by libbpf on 25Q3+
Before this change
"""
$ adb shell ls -lZ /sys/fs/bpf/net_shared/*clat*
-rw-rw---- 1 root system u:object_r:fs_bpf_net_shared:s0  0 2025-07-29 19:41 /sys/fs/bpf/net_shared/map_clatd_clat_egress4_map
-rw-rw---- 1 root system u:object_r:fs_bpf_net_shared:s0  0 2025-07-29 19:41 /sys/fs/bpf/net_shared/map_clatd_clat_ingress6_map
-r--r----- 1 root system u:object_r:fs_bpf_net_shared:s0  0 2025-07-29 19:41 /sys/fs/bpf/net_shared/prog_clatd_schedcls_egress4_clat_rawip
-r--r----- 1 root system u:object_r:fs_bpf_net_shared:s0  0 2025-07-29 19:41 /sys/fs/bpf/net_shared/prog_clatd_schedcls_ingress6_clat_ether
-r--r----- 1 root system u:object_r:fs_bpf_net_shared:s0  0 2025-07-29 19:41 /sys/fs/bpf/net_shared/prog_clatd_schedcls_ingress6_clat_rawip

$ adb logcat
07-29 19:41:34.556   800   800 D NetBpfLoad: Loaded object: /apex/com.android.tethering/etc/bpf/mainline/clatd.o, libbpf: 0
"""

After this change
"""
$ adb shell ls -lZ /sys/fs/bpf/net_shared/*clat*
-rw-rw---- 1 root system u:object_r:fs_bpf_net_shared:s0  0 2025-07-29 19:46 /sys/fs/bpf/net_shared/map_clatd_clat_egress4_map
-rw-rw---- 1 root system u:object_r:fs_bpf_net_shared:s0  0 2025-07-29 19:46 /sys/fs/bpf/net_shared/map_clatd_clat_ingress6_map
-r--r----- 1 root system u:object_r:fs_bpf_net_shared:s0  0 2025-07-29 19:46 /sys/fs/bpf/net_shared/prog_clatd_schedcls_egress4_clat_rawip
-r--r----- 1 root system u:object_r:fs_bpf_net_shared:s0  0 2025-07-29 19:46 /sys/fs/bpf/net_shared/prog_clatd_schedcls_ingress6_clat_ether
-r--r----- 1 root system u:object_r:fs_bpf_net_shared:s0  0 2025-07-29 19:46 /sys/fs/bpf/net_shared/prog_clatd_schedcls_ingress6_clat_rawip

$ adb logcat
07-29 19:46:24.453   794   794 D NetBpfLoad: Loaded object: /apex/com.android.tethering/etc/bpf/mainline/clatd.o, libbpf: 1
"""

Bug: 428792764
Flag: EXEMPT mainline
Test: TH
Change-Id: Iecb07123ca7bc6bfa8649202ed212731398beeae

Motomu Utsumi   commited 2025-07-29 19:58:04 +09:00
f5044b7363
NetBpfLoad: Load test.o by libbpf on 25Q3+
Before this change
"""
$ adb shell ls -lZ /sys/fs/bpf/tethering/map_test*
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-07-29 19:35 /sys/fs/bpf/tethering/map_test_bitmap
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-07-29 19:35 /sys/fs/bpf/tethering/map_test_tether2_downstream6_map
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-07-29 19:35 /sys/fs/bpf/tethering/map_test_tether3_downstream6_map
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-07-29 19:35 /sys/fs/bpf/tethering/map_test_tether_downstream6_map

$ adb logcat
07-29 19:35:18.994   790   790 D NetBpfLoad: Loaded object: /apex/com.android.tethering/etc/bpf/mainline/test.o, libbpf: 0
"""

After this change
"""
$ adb shell ls -lZ /sys/fs/bpf/tethering/map_test*
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-07-29 19:41 /sys/fs/bpf/tethering/map_test_bitmap
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-07-29 19:41 /sys/fs/bpf/tethering/map_test_tether2_downstream6_map
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-07-29 19:41 /sys/fs/bpf/tethering/map_test_tether3_downstream6_map
-rw-rw---- 1 root network_stack u:object_r:fs_bpf_tethering:s0  0 2025-07-29 19:41 /sys/fs/bpf/tethering/map_test_tether_downstream6_map

$ adb logcat
07-29 19:41:34.547   800   800 D NetBpfLoad: Loaded object: /apex/com.android.tethering/etc/bpf/mainline/test.o, libbpf: 1
"""

Bug: 428792764
Flag: EXEMPT mainline
Test: TH
Change-Id: I5525bc277960c7257724bd6a0a764653f6dfb186

Motomu Utsumi   commited 2025-07-29 19:57:53 +09:00
4efd544c41
NetBpfLoad: eliminate 'domain' concept
No longer useful in a self-contained mainline world.

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

Maciej Żenczykowski   commited 2025-07-28 18:45:12 -07:00
f297f808bb
NetBpfLoad: eliminate getDomainFromPinSubdir()
(and enforce that pindir is actually specified and not empty)

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

Maciej Żenczykowski   commited 2025-07-28 18:44:17 -07:00
1fdc303788
NetBpfLoad: remove specified(pin_subdir) checks
pin_subdir is now always specified...

Of the 4 checks, 2 are only for ALOGV low-value logging,
I've always thought we should probably just remove that.

The other 2 checks appear to actually be buggy.
They should probably be checking selinux_context rather
than pin_subdir, since pin_subdir likely (untested)
just works fine.

Verify via:
  git grep 'specified[(]pin_subdir[)]'

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

Maciej Żenczykowski   commited 2025-07-28 17:41:21 -07:00
037a1cee8c
NetBpfLoad: remove 'prefix' from lookupPinSubDir()
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ief8e0d44efc5b1bc235ba70d78875c0ef0e9ed76

Maciej Żenczykowski   commited 2025-07-28 15:37:15 -07:00
16a2448bd8
NetBpfLoad: remove 'prefix' from buildProgPinLoc()
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I05541f7b29e14ab60e7db71d8d90581def26c279

Maciej Żenczykowski   commited 2025-07-28 15:36:27 -07:00
c0136b1e4f