Commit graph android_packages_modules_Co.../bpf/loader/NetBpfLoad.cpp
Message SHA1
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
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