NetBpfLoad: disable mainline on < U QPR3
We stop calling 'service mdnsd_netbpfload' from libnetd_updatable.so.
To make this work we need to change all bpf .o minimum bpfloader versions
from mainline BPFLOADER_MAINLINE_X_VERSION to non-mainline
BPFLOADER_X_VERSION equivalents (at least for X < U QPR3).
The {offload,test}@mainline.o files are now misnamed, but we leave this be:
- 'mainline' now means 'U+ BTF enabled version',
- S and (official) T use the baseline non-BTF version.
However, there are *some* oem/vendor T's with @ supporting bpfloade,
so they will use the @mainline.o files instead... (this is harmless)
Bug: 335124875
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ibe285aefc315e6cb224450d1487980df3cba0eff
This commit is contained in:
parent
7b95d99077
commit
4b28336a7a
7 changed files with 17 additions and 17 deletions
|
|
@ -20,7 +20,7 @@
|
|||
#include <stdint.h>
|
||||
|
||||
// The resulting .o needs to load on Android T+
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_T_VERSION
|
||||
|
||||
#include "bpf_helpers.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
#include <linux/udp.h>
|
||||
|
||||
// The resulting .o needs to load on Android T+
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_T_VERSION
|
||||
|
||||
#include "bpf_helpers.h"
|
||||
#include "bpf_net_helpers.h"
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
#include <string.h>
|
||||
|
||||
// The resulting .o needs to load on Android T+
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_T_VERSION
|
||||
|
||||
#include "bpf_helpers.h"
|
||||
#include "dscpPolicy.h"
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
|
||||
// The resulting .o needs to load on Android T+
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_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_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, LOAD_ON_ENG,
|
||||
BPFLOADER_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_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, LOAD_ON_ENG,
|
||||
BPFLOADER_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,
|
||||
|
|
@ -519,7 +519,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_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, OPTIONAL,
|
||||
BPFLOADER_U_VERSION, BPFLOADER_MAX_VER, OPTIONAL,
|
||||
"fs_bpf_netd_readonly", "",
|
||||
IGNORE_ON_ENG, LOAD_ON_USER, IGNORE_ON_USERDEBUG)
|
||||
(struct __sk_buff* skb) {
|
||||
|
|
@ -529,7 +529,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_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, MANDATORY,
|
||||
BPFLOADER_U_VERSION, BPFLOADER_MAX_VER, MANDATORY,
|
||||
"fs_bpf_netd_readonly", "",
|
||||
LOAD_ON_ENG, IGNORE_ON_USER, LOAD_ON_USERDEBUG)
|
||||
(struct __sk_buff* skb) {
|
||||
|
|
@ -551,7 +551,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_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, OPTIONAL,
|
||||
BPFLOADER_U_VERSION, BPFLOADER_MAX_VER, OPTIONAL,
|
||||
"fs_bpf_netd_readonly", "",
|
||||
IGNORE_ON_ENG, LOAD_ON_USER, IGNORE_ON_USERDEBUG)
|
||||
(struct __sk_buff* skb) {
|
||||
|
|
@ -561,7 +561,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_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, MANDATORY,
|
||||
BPFLOADER_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_MAINLINE_T_VERSION
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_OBJ_AT_VER_VERSION
|
||||
#else /* MAINLINE */
|
||||
// The resulting .o needs to load on the Android S bpfloader
|
||||
// The resulting .o needs to load on the Android S & T bpfloaders
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_S_VERSION
|
||||
#define BPFLOADER_MAX_VER BPFLOADER_T_VERSION
|
||||
#define BPFLOADER_MAX_VER BPFLOADER_OBJ_AT_VER_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_MAINLINE_T_VERSION
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_OBJ_AT_VER_VERSION
|
||||
#else /* MAINLINE */
|
||||
// The resulting .o needs to load on the Android S bpfloader
|
||||
// The resulting .o needs to load on the Android S & T bpfloaders
|
||||
#define BPFLOADER_MIN_VER BPFLOADER_S_VERSION
|
||||
#define BPFLOADER_MAX_VER BPFLOADER_T_VERSION
|
||||
#define BPFLOADER_MAX_VER BPFLOADER_OBJ_AT_VER_VERSION
|
||||
#endif /* MAINLINE */
|
||||
|
||||
// Warning: values other than AID_ROOT don't work for map uid on BpfLoader < v0.21
|
||||
|
|
|
|||
|
|
@ -170,7 +170,7 @@ Status BpfHandler::init(const char* cg2_path) {
|
|||
android::bpf::waitForProgsLoaded();
|
||||
}
|
||||
|
||||
if (!mainlineNetBpfLoadDone()) {
|
||||
if (false && !mainlineNetBpfLoadDone()) {
|
||||
// we're on < U QPR3 & it's the first time netd is starting up (unless crashlooping)
|
||||
if (!base::SetProperty("ctl.start", "mdnsd_netbpfload")) {
|
||||
ALOGE("Failed to set property ctl.start=mdnsd_netbpfload, see dmesg for reason.");
|
||||
|
|
|
|||
Loading…
Reference in a new issue