From c5b9f5ee99fbd771053540f34c47333bdf474daf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20=C5=BBenczykowski?= Date: Tue, 6 May 2025 02:35:27 -0700 Subject: [PATCH] bpf: Add new SDK versions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add 25Q3, 25Q4, 26Q1 and 26Q2 SDKs to the bpfloader helpers. The Q3 and beyond versions are not finalized, so they are not being populated in BpfUtils.h yet, but at least the logic is in place. Test: TreeHugger Flag: EXEMPT test code Signed-off-by: Maciej Żenczykowski Change-Id: I6ea12e347462be2c8258a4fe5bc994b35d4065a5 --- bpf/headers/include/bpf/BpfUtils.h | 6 +++++- bpf/headers/include/bpf_helpers.h | 14 +++++++++++++- bpf/loader/NetBpfLoad.cpp | 4 ++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/bpf/headers/include/bpf/BpfUtils.h b/bpf/headers/include/bpf/BpfUtils.h index ed08e1afe0..85502ecbd5 100644 --- a/bpf/headers/include/bpf/BpfUtils.h +++ b/bpf/headers/include/bpf/BpfUtils.h @@ -42,7 +42,11 @@ const bool isAtLeastS = (api_level >= 31); const bool isAtLeastT = (api_level >= 33); const bool isAtLeastU = (api_level >= 34); const bool isAtLeastV = (api_level >= 35); -const bool isAtLeast25Q2 = (api_level >= 36); +const bool isAtLeast25Q2 = (api_level >= 36); // 36.0 +const bool isAtLeast25Q3 = (api_level > 36); // 36.0+ (TODO: fix this!) +const bool isAtLeast25Q4 = false; // 36.1 +const bool isAtLeast26Q1 = false; // 36.1+ +const bool isAtLeast26Q2 = false; // 37.0 // See kernel's net/core/sock_diag.c __sock_gen_cookie() // the implementation of which guarantees 0 will never be returned, diff --git a/bpf/headers/include/bpf_helpers.h b/bpf/headers/include/bpf_helpers.h index e0c524fdff..fe64538e60 100644 --- a/bpf/headers/include/bpf_helpers.h +++ b/bpf/headers/include/bpf_helpers.h @@ -62,9 +62,21 @@ // Android Mainline BpfLoader when running on Android V (sdk=35) #define BPFLOADER_MAINLINE_V_VERSION (BPFLOADER_MAINLINE_U_QPR3_VERSION + 1u) -// Android Mainline BpfLoader when running on Android 25Q2 (sdk=36) +// Android Mainline BpfLoader when running on Android 25Q2 (sdk=36 aka 36.0) #define BPFLOADER_MAINLINE_25Q2_VERSION (BPFLOADER_MAINLINE_V_VERSION + 1u) +// Android Mainline BpfLoader when running on Android 25Q3 (sdk 36.0+) +#define BPFLOADER_MAINLINE_25Q3_VERSION (BPFLOADER_MAINLINE_25Q2_VERSION + 1u) + +// Android Mainline BpfLoader when running on Android 25Q4 (sdk 36.1) +#define BPFLOADER_MAINLINE_25Q4_VERSION (BPFLOADER_MAINLINE_25Q3_VERSION + 1u) + +// Android Mainline BpfLoader when running on Android 26Q1 (sdk 36.1+) +#define BPFLOADER_MAINLINE_26Q1_VERSION (BPFLOADER_MAINLINE_25Q4_VERSION + 1u) + +// Android Mainline BpfLoader when running on Android 26Q2 (sdk 37.0) +#define BPFLOADER_MAINLINE_26Q2_VERSION (BPFLOADER_MAINLINE_26Q1_VERSION + 1u) + /* For mainline module use, you can #define BPFLOADER_{MIN/MAX}_VER * before #include "bpf_helpers.h" to change which bpfloaders will * process the resulting .o file. diff --git a/bpf/loader/NetBpfLoad.cpp b/bpf/loader/NetBpfLoad.cpp index 4a79a0fc1a..9e2aea6edd 100644 --- a/bpf/loader/NetBpfLoad.cpp +++ b/bpf/loader/NetBpfLoad.cpp @@ -1674,6 +1674,10 @@ static int doLoad(char** argv, char * const envp[]) { if (runningAsRoot) ++bpfloader_ver; // [45] BPFLOADER_MAINLINE_U_QPR3_VERSION if (isAtLeastV) ++bpfloader_ver; // [46] BPFLOADER_MAINLINE_V_VERSION if (isAtLeast25Q2) ++bpfloader_ver; // [47] BPFLOADER_MAINLINE_25Q2_VERSION + if (isAtLeast25Q3) ++bpfloader_ver; // [48] BPFLOADER_MAINLINE_25Q3_VERSION + if (isAtLeast25Q4) ++bpfloader_ver; // [49] BPFLOADER_MAINLINE_25Q4_VERSION + if (isAtLeast26Q1) ++bpfloader_ver; // [50] BPFLOADER_MAINLINE_26Q1_VERSION + if (isAtLeast26Q2) ++bpfloader_ver; // [51] BPFLOADER_MAINLINE_26Q2_VERSION ALOGI("NetBpfLoad v0.%u (%s) api:%d/%d kver:%07x (%s) libbpf: v%u.%u " "uid:%d rc:%d%d",