bpf: Add new SDK versions

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 <maze@google.com>
Change-Id: I6ea12e347462be2c8258a4fe5bc994b35d4065a5
This commit is contained in:
Maciej Żenczykowski 2025-05-06 02:35:27 -07:00
commit c5b9f5ee99
3 changed files with 22 additions and 2 deletions

View file

@ -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,

View file

@ -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.

View file

@ -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",