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