Merge "NetBpfLoad: enable mainline on T+" into main
This commit is contained in:
commit
4293ce84b5
8 changed files with 25 additions and 24 deletions
|
|
@ -19,8 +19,8 @@
|
|||
#include <netinet/in.h>
|
||||
#include <stdint.h>
|
||||
|
||||
// The resulting .o needs to load on the Android T bpfloader
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_T_VERSION
|
||||
// The resulting .o needs to load on Android T+
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION
|
||||
|
||||
#include "bpf_helpers.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -30,8 +30,8 @@
|
|||
#define __kernel_udphdr udphdr
|
||||
#include <linux/udp.h>
|
||||
|
||||
// The resulting .o needs to load on the Android T bpfloader
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_T_VERSION
|
||||
// The resulting .o needs to load on Android T+
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION
|
||||
|
||||
#include "bpf_helpers.h"
|
||||
#include "bpf_net_helpers.h"
|
||||
|
|
|
|||
|
|
@ -27,8 +27,8 @@
|
|||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
// The resulting .o needs to load on the Android T bpfloader
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_T_VERSION
|
||||
// The resulting .o needs to load on Android T+
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION
|
||||
|
||||
#include "bpf_helpers.h"
|
||||
#include "dscpPolicy.h"
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
// The resulting .o needs to load on the Android T bpfloader
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_T_VERSION
|
||||
// The resulting .o needs to load on Android T+
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION
|
||||
|
||||
#include <bpf_helpers.h>
|
||||
#include <linux/bpf.h>
|
||||
|
|
@ -103,13 +103,13 @@ DEFINE_BPF_MAP_NO_NETD(iface_index_name_map, HASH, uint32_t, IfaceValue, IFACE_I
|
|||
// A single-element configuration array, packet tracing is enabled when 'true'.
|
||||
DEFINE_BPF_MAP_EXT(packet_trace_enabled_map, ARRAY, uint32_t, bool, 1,
|
||||
AID_ROOT, AID_SYSTEM, 0060, "fs_bpf_net_shared", "", PRIVATE,
|
||||
BPFLOADER_IGNORED_ON_VERSION, BPFLOADER_MAX_VER, LOAD_ON_ENG,
|
||||
BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, LOAD_ON_ENG,
|
||||
LOAD_ON_USER, LOAD_ON_USERDEBUG)
|
||||
|
||||
// A ring buffer on which packet information is pushed.
|
||||
DEFINE_BPF_RINGBUF_EXT(packet_trace_ringbuf, PacketTrace, PACKET_TRACE_BUF_SIZE,
|
||||
AID_ROOT, AID_SYSTEM, 0060, "fs_bpf_net_shared", "", PRIVATE,
|
||||
BPFLOADER_IGNORED_ON_VERSION, BPFLOADER_MAX_VER, LOAD_ON_ENG,
|
||||
BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, LOAD_ON_ENG,
|
||||
LOAD_ON_USER, LOAD_ON_USERDEBUG);
|
||||
|
||||
DEFINE_BPF_MAP_RO_NETD(data_saver_enabled_map, ARRAY, uint32_t, bool,
|
||||
|
|
@ -516,7 +516,7 @@ static __always_inline inline int bpf_traffic_account(struct __sk_buff* skb,
|
|||
// This program is optional, and enables tracing on Android U+, 5.8+ on user builds.
|
||||
DEFINE_BPF_PROG_EXT("cgroupskb/ingress/stats$trace_user", AID_ROOT, AID_SYSTEM,
|
||||
bpf_cgroup_ingress_trace_user, KVER_5_8, KVER_INF,
|
||||
BPFLOADER_IGNORED_ON_VERSION, BPFLOADER_MAX_VER, OPTIONAL,
|
||||
BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, OPTIONAL,
|
||||
"fs_bpf_netd_readonly", "",
|
||||
IGNORE_ON_ENG, LOAD_ON_USER, IGNORE_ON_USERDEBUG)
|
||||
(struct __sk_buff* skb) {
|
||||
|
|
@ -526,7 +526,7 @@ DEFINE_BPF_PROG_EXT("cgroupskb/ingress/stats$trace_user", AID_ROOT, AID_SYSTEM,
|
|||
// This program is required, and enables tracing on Android U+, 5.8+, userdebug/eng.
|
||||
DEFINE_BPF_PROG_EXT("cgroupskb/ingress/stats$trace", AID_ROOT, AID_SYSTEM,
|
||||
bpf_cgroup_ingress_trace, KVER_5_8, KVER_INF,
|
||||
BPFLOADER_IGNORED_ON_VERSION, BPFLOADER_MAX_VER, MANDATORY,
|
||||
BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, MANDATORY,
|
||||
"fs_bpf_netd_readonly", "",
|
||||
LOAD_ON_ENG, IGNORE_ON_USER, LOAD_ON_USERDEBUG)
|
||||
(struct __sk_buff* skb) {
|
||||
|
|
@ -548,7 +548,7 @@ DEFINE_NETD_BPF_PROG_KVER_RANGE("cgroupskb/ingress/stats$4_14", AID_ROOT, AID_SY
|
|||
// This program is optional, and enables tracing on Android U+, 5.8+ on user builds.
|
||||
DEFINE_BPF_PROG_EXT("cgroupskb/egress/stats$trace_user", AID_ROOT, AID_SYSTEM,
|
||||
bpf_cgroup_egress_trace_user, KVER_5_8, KVER_INF,
|
||||
BPFLOADER_IGNORED_ON_VERSION, BPFLOADER_MAX_VER, OPTIONAL,
|
||||
BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, OPTIONAL,
|
||||
"fs_bpf_netd_readonly", "",
|
||||
IGNORE_ON_ENG, LOAD_ON_USER, IGNORE_ON_USERDEBUG)
|
||||
(struct __sk_buff* skb) {
|
||||
|
|
@ -558,7 +558,7 @@ DEFINE_BPF_PROG_EXT("cgroupskb/egress/stats$trace_user", AID_ROOT, AID_SYSTEM,
|
|||
// This program is required, and enables tracing on Android U+, 5.8+, userdebug/eng.
|
||||
DEFINE_BPF_PROG_EXT("cgroupskb/egress/stats$trace", AID_ROOT, AID_SYSTEM,
|
||||
bpf_cgroup_egress_trace, KVER_5_8, KVER_INF,
|
||||
BPFLOADER_IGNORED_ON_VERSION, BPFLOADER_MAX_VER, MANDATORY,
|
||||
BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, MANDATORY,
|
||||
"fs_bpf_netd_readonly", "",
|
||||
LOAD_ON_ENG, IGNORE_ON_USER, LOAD_ON_USERDEBUG)
|
||||
(struct __sk_buff* skb) {
|
||||
|
|
|
|||
|
|
@ -28,11 +28,11 @@
|
|||
// BTF is incompatible with bpfloaders < v0.10, hence for S (v0.2) we must
|
||||
// ship a different file than for later versions, but we need bpfloader v0.25+
|
||||
// for obj@ver.o support
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_OBJ_AT_VER_VERSION
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION
|
||||
#else /* MAINLINE */
|
||||
// The resulting .o needs to load on the Android S bpfloader
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_S_VERSION
|
||||
#define BPFLOADER_MAX_VER BPFLOADER_OBJ_AT_VER_VERSION
|
||||
#define BPFLOADER_MAX_VER BPFLOADER_T_VERSION
|
||||
#endif /* MAINLINE */
|
||||
|
||||
// Warning: values other than AID_ROOT don't work for map uid on BpfLoader < v0.21
|
||||
|
|
|
|||
|
|
@ -22,11 +22,11 @@
|
|||
// BTF is incompatible with bpfloaders < v0.10, hence for S (v0.2) we must
|
||||
// ship a different file than for later versions, but we need bpfloader v0.25+
|
||||
// for obj@ver.o support
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_OBJ_AT_VER_VERSION
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION
|
||||
#else /* MAINLINE */
|
||||
// The resulting .o needs to load on the Android S bpfloader
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_S_VERSION
|
||||
#define BPFLOADER_MAX_VER BPFLOADER_OBJ_AT_VER_VERSION
|
||||
#define BPFLOADER_MAX_VER BPFLOADER_T_VERSION
|
||||
#endif /* MAINLINE */
|
||||
|
||||
// Warning: values other than AID_ROOT don't work for map uid on BpfLoader < v0.21
|
||||
|
|
|
|||
|
|
@ -261,9 +261,10 @@ int main(int argc, char** argv, char * const envp[]) {
|
|||
// Tethering apex shipped initrc file causes us to reach here
|
||||
// but we're not ready to correctly handle anything before U QPR2
|
||||
// in which the 'bpfloader' vs 'netbpfload' split happened
|
||||
const char * args[] = { platformBpfLoader, NULL, };
|
||||
execve(args[0], (char**)args, envp);
|
||||
ALOGE("exec '%s' fail: %d[%s]", platformBpfLoader, errno, strerror(errno));
|
||||
}
|
||||
|
||||
if (!isAtLeastT) {
|
||||
ALOGE("Impossible - not reachable on Android <T.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -37,13 +37,13 @@
|
|||
#define BPFLOADER_IGNORED_ON_VERSION 33u
|
||||
|
||||
// Android U / 14 (api level 34) - various new program types added
|
||||
#define BPFLOADER_U_VERSION 37u
|
||||
#define BPFLOADER_U_VERSION 38u
|
||||
|
||||
// Android V / 15 (api level 35) - platform only
|
||||
// (note: the platform bpfloader in V isn't really versioned at all,
|
||||
// as there is no need as it can only load objects compiled at the
|
||||
// same time as itself and the rest of the platform)
|
||||
#define BPFLOADER_V_VERSION 41u
|
||||
#define BPFLOADER_PLATFORM_VERSION 41u
|
||||
|
||||
// Android Mainline - this bpfloader should eventually go back to T (or even S)
|
||||
// Note: this value (and the following +1u's) are hardcoded in NetBpfLoad.cpp
|
||||
|
|
@ -67,7 +67,7 @@
|
|||
* In which case it's just best to use the default.
|
||||
*/
|
||||
#ifndef BPFLOADER_MIN_VER
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_V_VERSION
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_PLATFORM_VERSION
|
||||
#endif
|
||||
|
||||
#ifndef BPFLOADER_MAX_VER
|
||||
|
|
|
|||
Loading…
Reference in a new issue