diff --git a/bpf/loader/NetBpfLoad.cpp b/bpf/loader/NetBpfLoad.cpp index a7ff9c2f5e..348733004c 100644 --- a/bpf/loader/NetBpfLoad.cpp +++ b/bpf/loader/NetBpfLoad.cpp @@ -66,10 +66,6 @@ #include "bpf/BpfUtils.h" #include "bpf_map_def.h" -// The following matches bpf_helpers.h, which is only for inclusion in bpf code -#define BPFLOADER_MAINLINE_S_VERSION 42u -#define BPFLOADER_MAINLINE_25Q2_VERSION 47u - using android::base::borrowed_fd; using android::base::EndsWith; using android::base::GetIntProperty; @@ -1598,16 +1594,16 @@ static int doLoad(char** argv, char * const envp[]) { const bool has_platform_netbpfload_rc = exists("/system/etc/init/netbpfload.rc"); // Version of Network BpfLoader depends on the Android OS version - unsigned int bpfloader_ver = BPFLOADER_MAINLINE_S_VERSION; // [42u] - if (isAtLeastT) ++bpfloader_ver; // [43] BPFLOADER_MAINLINE_T_VERSION - if (isAtLeastU) ++bpfloader_ver; // [44] BPFLOADER_MAINLINE_U_VERSION - 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 + unsigned int bpfloader_ver = BPFLOADER_MAINLINE_S_VERSION; + if (isAtLeastT) bpfloader_ver = BPFLOADER_MAINLINE_T_VERSION; + if (isAtLeastU) bpfloader_ver = BPFLOADER_MAINLINE_U_VERSION; + if (runningAsRoot) bpfloader_ver = BPFLOADER_MAINLINE_U_QPR3_VERSION; + if (isAtLeastV) bpfloader_ver = BPFLOADER_MAINLINE_V_VERSION; + if (isAtLeast25Q2) bpfloader_ver = BPFLOADER_MAINLINE_25Q2_VERSION; + if (isAtLeast25Q3) bpfloader_ver = BPFLOADER_MAINLINE_25Q3_VERSION; + if (isAtLeast25Q4) bpfloader_ver = BPFLOADER_MAINLINE_25Q4_VERSION; + if (isAtLeast26Q1) bpfloader_ver = BPFLOADER_MAINLINE_26Q1_VERSION; + if (isAtLeast26Q2) bpfloader_ver = BPFLOADER_MAINLINE_26Q2_VERSION; ALOGI("NetBpfLoad v0.%u (%s) api:%d/%d kver:%07x (%s) libbpf: v%u.%u " "uid:%d rc:%d%d", diff --git a/bpf/progs/include/bpf_helpers.h b/bpf/progs/include/bpf_helpers.h index a08b0c08b4..9a7dbd701f 100644 --- a/bpf/progs/include/bpf_helpers.h +++ b/bpf/progs/include/bpf_helpers.h @@ -6,37 +6,6 @@ #include "bpf_map_def.h" -// Android Mainline BpfLoader when running on Android S (sdk=31) -// Note: this value (and the following +1u's) are hardcoded in NetBpfLoad.cpp -#define BPFLOADER_MAINLINE_S_VERSION 42u - -// Android Mainline BpfLoader when running on Android T (sdk=33) -#define BPFLOADER_MAINLINE_T_VERSION (BPFLOADER_MAINLINE_S_VERSION + 1u) - -// Android Mainline BpfLoader when running on Android U (sdk=34) -#define BPFLOADER_MAINLINE_U_VERSION (BPFLOADER_MAINLINE_T_VERSION + 1u) - -// Android Mainline BpfLoader when running on Android U QPR3 -#define BPFLOADER_MAINLINE_U_QPR3_VERSION (BPFLOADER_MAINLINE_U_VERSION + 1u) - -// 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 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) - /* You should #define BPFLOADER_{MIN/MAX}_VER before #include "bpf_helpers.h" * to change which bpfloaders will process the resulting .o file. */ diff --git a/bpf/progs/include/bpf_map_def.h b/bpf/progs/include/bpf_map_def.h index e4ab6917b3..1fd2c1e436 100644 --- a/bpf/progs/include/bpf_map_def.h +++ b/bpf/progs/include/bpf_map_def.h @@ -203,3 +203,15 @@ static_assert(std::is_standard_layout_v); _Static_assert(sizeof(struct bpf_prog_def) == 40 + 2 * BPF_DEF_CHAR_ARRAY_SIZE, "wrong sizeof struct bpf_prog_def"); _Static_assert(__alignof__(struct bpf_prog_def) == 4, "__alignof__ struct bpf_prog_def != 4"); _Static_assert(_Alignof(struct bpf_prog_def) == 4, "_Alignof struct bpf_prog_def != 4"); + +// Android Mainline BpfLoader version when running on: +#define BPFLOADER_MAINLINE_S_VERSION 3100u // Android S (31) +#define BPFLOADER_MAINLINE_T_VERSION 3300u // Android T (33) +#define BPFLOADER_MAINLINE_U_VERSION 3400u // Android U (34) +#define BPFLOADER_MAINLINE_U_QPR3_VERSION 3403u // Android U QPR3 +#define BPFLOADER_MAINLINE_V_VERSION 3500u // Android V (35) +#define BPFLOADER_MAINLINE_25Q2_VERSION 3600u // Android 25Q2 (36.0) +#define BPFLOADER_MAINLINE_25Q3_VERSION 3601u // Android 25Q3 (36.0+) +#define BPFLOADER_MAINLINE_25Q4_VERSION 3610u // Android 25Q4 (36.1) +#define BPFLOADER_MAINLINE_26Q1_VERSION 3611u // Android 26Q1 (36.1+) +#define BPFLOADER_MAINLINE_26Q2_VERSION 3700u // Android 26Q2 (37.0)