Commit graph android_packages_modules_Co.../netbpfload/loader.cpp
Message SHA1
Revert "NetBpfLoad: gently enable mainline"
This reverts commit 231598bc92.

This is targetting mainline release M-2024-09.

Note: left the failure message in netbpfload/netbpfload.33rc
to mention 'netbpfload-failed' and not 'bpfloader-failed'.

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

Maciej Żenczykowski   commited 2024-06-21 15:46:42 +00:00
2afffc2d6a
bpf: attach a *bunch* more cgroup hooks
We attach trivial programs to:
  {connect,recvmsg,sendmsg}{4,6}
  inet_release
  {g,s}etsockopt

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

Maciej Żenczykowski   commited 2024-06-16 10:04:35 -07:00
22db590580
NetBpfLoad: gently enable mainline
Only the non-CRITICAL test@mainline.o is loaded from netbpfload
on T and U < QPR3, everything else is loaded by platform bpfloader

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

Maciej Żenczykowski   commited 2024-06-14 15:09:41 -07:00
231598bc92
NetBpfLoad: Fix ALOGI domain type argument
The previous code would emit these warnings:

packages/modules/Connectivity/netbpfload/loader.cpp:977:52: warning: format specifies type 'int' but the argument has type 'domain' [-Wformat]
  976 |             ALOGI("prog %s selinux_context [%-32s] -> %d -> '%s' (%s)", name.c_str(),
      |                                                       ~~
  977 |                   cs[i].prog_def->selinux_context, selinux_context,
      |                                                    ^~~~~~~~~~~~~~~
      |                                                    static_cast<int>(

packages/modules/Connectivity/netbpfload/loader.cpp:983:47: warning: format specifies type 'int' but the argument has type 'domain' [-Wformat]
  982 |             ALOGI("prog %s pin_subdir [%-32s] -> %d -> '%s'", name.c_str(),
      |                                                  ~~
  983 |                   cs[i].prog_def->pin_subdir, pin_subdir, lookupPinSubdir(pin_subdir));
      |                                               ^~~~~~~~~~
      |                                               static_cast<int>(

Change-Id: Id4856ad7835de8fea14be543ee0e198bb98f4d35

Jonathon Reinhart   commited 2024-05-23 12:18:37 +00:00
021a423641
NetBpfLoad: reduce logging
Move most spamy logs from ALOGD to ALOGV.

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

Maciej Żenczykowski   commited 2024-04-30 10:17:12 +00:00
1dc09189a2
NetBpfLoad: prog names are only valid on 4.15+
The following commit is only in 4.15:

  commit cb4d2b3f03d8eed90be3a194e5b54b734ec4bbe9
  Author: Martin KaFai Lau <kafai@fb.com>
  Date:   Wed Sep 27 14:37:52 2017 -0700

    bpf: Add name, load_time, uid and map_ids to bpf_prog_info

  $ git describe cb4d2b3f03d8eed90be3a194e5b54b734ec4bbe9
  v4.14-rc1-661-gcb4d2b3f03d8

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

Maciej Żenczykowski   commited 2024-04-23 03:16:05 +00:00
89efcc36e7
NetBpfLoad: map names are only valid on 4.15+
$ git checkout v4.14
HEAD is now at bebc6082da0a Linux 4.14

$ git grep map_name | egrep -v '^(arch|drivers|fs|include|samples|tools)/'

(nothing)

$ git checkout v4.15
HEAD is now at d8a5b80568a9 Linux 4.15

$ git co remotes/linux-$ git grep map_name | egrep -v '^(arch|drivers|fs|include|samples|tools)/'
kernel/bpf/syscall.c:381:#define BPF_MAP_CREATE_LAST_FIELD map_name
kernel/bpf/syscall.c:408:	err = bpf_obj_name_cpy(map->name, attr->map_name);

  commit ad5b177bd73f5107d97c36f56395c4281fb6f089
  Author: Martin KaFai Lau <kafai@fb.com>
  Date:   Wed Sep 27 14:37:53 2017 -0700

    bpf: Add map_name to bpf_map_info

  $ git describe ad5b177bd73f5
  v4.14-rc1-662-gad5b177bd73f

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

Maciej Żenczykowski   commited 2024-04-22 23:42:10 +00:00
d0bb172371
NetBpfLoad: consistently use logging tag of 'NetBpfLoad'
instead of using 'NetBpfLoad' from NetBpfLoad.cpp
and 'NetBpfLoader' from loader.cpp

This will make it easier to filter logcat.

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

Maciej Żenczykowski   commited 2024-04-20 00:03:19 +00:00
3d14144698
NetBpfLoad: add a few more consts for safety
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I4f59ec295b34d6942732bb5f636699385e998bba

Maciej Żenczykowski   commited 2024-03-18 22:28:25 -07:00
a2706bf76c
NetBpfLoad - change BPFLOADER_VERSION macro into an argument
(in preparation for this being run-time dynamic)

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

Maciej Żenczykowski   commited 2024-03-18 14:40:08 -07:00
221b248c6e
NetBpfLoad: more 4.9-T support
(older kernels don't support naming maps/programs)

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

Maciej Żenczykowski   commited 2024-03-15 23:32:27 +00:00
22836357ec
Eliminate spurious COMPILE_FOR_BPFLOADER_VERSION macro
and make platform bpf.o's target V's platform bpfloader.

Note that all mainline shipped bpf.o's already manually
specify BPFLOADER_MIN_VER.

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

Maciej Żenczykowski   commited 2024-03-15 18:14:16 +00:00
0de80f1a9f
netbpfload: add back support for 4.9-T kernels
This effectively reverts aosp/2268766

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

Maciej Żenczykowski   commited 2024-03-11 12:40:33 +00:00
7e5b09a37e
NetBpfLoad: remove support for 'old' formats
cannot happen as it only loads mainline code
that it was built (and tested) along side of.

ie. a failure here would cause a TH boot failure.

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

Maciej Żenczykowski   commited 2024-03-08 19:31:17 +00:00
60414671ec
NetBpfLoad: bump version to 0.42
(this may well be the last version bump ever)

To get mainline version > any existing platform version.

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

Maciej Żenczykowski   commited 2024-03-08 08:00:48 +00:00
59fb77f8bf
netbpfload: remove support for limiting selinux contexts
No need for this, as we simply only support those selinux
contexts (and directories) which are available to networking.

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

Maciej Żenczykowski   commited 2023-10-10 03:46:06 -07:00
af07d6db1f
Use libbase properties for a slight simplification.
Test: treehugger
Change-Id: If699230d0bf71ce521d7175da707e42b78ae4886

Elliott Hughes   authored and   Maciej Żenczykowski   commited 2023-10-09 23:57:48 +00:00
497e3e05a5
netbpfload: remove support for limiting program types
No need for this, as we simply only support network
program types in the first place.

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

Maciej Żenczykowski   commited 2023-10-09 00:32:36 -07:00
fcea70f840
netbpfload: remove non-network program types
We are unlikely to ever be willing to load these
program types from mainline, as it is simply too dangerous.

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

Maciej Żenczykowski   commited 2023-10-09 00:32:31 -07:00
02519f86ad
netbpfload: add Android.bp file
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I3af8e7f14de8dd5dd65c40705195332bef114b88

Maciej Żenczykowski   commited 2023-10-09 00:32:26 -07:00
40dfe53313
netbpfload: update date in copyright messages, LOG_TAGs, etc.
Test: N/A
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I8f83d04266caf930701b9725b457333ddae149f2

Maciej Żenczykowski   commited 2023-10-02 22:40:38 -07:00
283c25a07a
netbpfload: remove support for 'loader'
Test: N/A
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I3d6a6a072cc958c3cb8f49d747a6c6812b37cef5

Maciej Żenczykowski   commited 2023-10-02 22:35:38 -07:00
354ded3926
netbpfload: remove support for 'vendor'
Test: N/A
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: If088188b4832d37b084846b5ad3db06b8858d856

Maciej Żenczykowski   commited 2023-10-02 22:35:24 -07:00
d6395205bb
netbpfload: remove support for 'platform'
Test: N/A
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ia0c1f55aa78435737699e0dec0bfddbd977e7392

Maciej Żenczykowski   commited 2023-10-02 22:35:03 -07:00
0e4802df20
import bpfloader into p/m/C
These are unmodified files, without history.
Getting these to do something useful will come later.

Generated via:
  cp //system/bpf/bpfloader/bpfloader.rc netbpfload.rc
  cp //system/bpf/bpfloader/BpfLoader.cpp NetBpfLoad.cpp
  cp //system/bpf/libbpf_android/include/libbpf_android.h loader.h
  cp //system/bpf/libbpf_android/Loader.cpp loader.cpp

Change-Id: I1677b899a51e1289a7a9806d6f5c34450b9e7c47

Maciej Żenczykowski   commited 2023-10-02 14:59:10 -07:00
60c159f233