Merge changes Ie660ab98,If1066f10 into main
* changes:
bpf netd: introduce DEFINE_NETD_BPF_PROG_RANGES() macro
bpf netd: hardcode AID_ROOT/AID_ROOT in DEFINE_NETD_BPF_PROG{,_KVER,_KVER_RANGE}
This commit is contained in:
commit
91748dec07
1 changed files with 24 additions and 27 deletions
|
|
@ -116,16 +116,19 @@ DEFINE_BPF_MAP_RO_NETD(data_saver_enabled_map, ARRAY, uint32_t, bool,
|
|||
// programs that need to be usable by netd, but not by netutils_wrappers
|
||||
// (this is because these are currently attached by the mainline provided libnetd_updatable .so
|
||||
// which is loaded into netd and thus runs as netd uid/gid/selinux context)
|
||||
#define DEFINE_NETD_BPF_PROG_KVER_RANGE(SECTION_NAME, prog_uid, prog_gid, the_prog, minKV, maxKV) \
|
||||
DEFINE_BPF_PROG_EXT(SECTION_NAME, prog_uid, prog_gid, the_prog, \
|
||||
minKV, maxKV, BPFLOADER_MIN_VER, BPFLOADER_MAX_VER, MANDATORY, \
|
||||
#define DEFINE_NETD_BPF_PROG_RANGES(SECTION_NAME, the_prog, minKV, maxKV, min_loader, max_loader) \
|
||||
DEFINE_BPF_PROG_EXT(SECTION_NAME, AID_ROOT, AID_ROOT, the_prog, \
|
||||
minKV, maxKV, min_loader, max_loader, MANDATORY, \
|
||||
"fs_bpf_netd_readonly", "", LOAD_ON_ENG, LOAD_ON_USER, LOAD_ON_USERDEBUG)
|
||||
|
||||
#define DEFINE_NETD_BPF_PROG_KVER(SECTION_NAME, prog_uid, prog_gid, the_prog, min_kv) \
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(SECTION_NAME, prog_uid, prog_gid, the_prog, min_kv, KVER_INF)
|
||||
#define DEFINE_NETD_BPF_PROG_KVER_RANGE(SECTION_NAME, the_prog, minKV, maxKV) \
|
||||
DEFINE_NETD_BPF_PROG_RANGES(SECTION_NAME, the_prog, minKV, maxKV, BPFLOADER_MIN_VER, BPFLOADER_MAX_VER)
|
||||
|
||||
#define DEFINE_NETD_BPF_PROG(SECTION_NAME, prog_uid, prog_gid, the_prog) \
|
||||
DEFINE_NETD_BPF_PROG_KVER(SECTION_NAME, prog_uid, prog_gid, the_prog, KVER_NONE)
|
||||
#define DEFINE_NETD_BPF_PROG_KVER(SECTION_NAME, the_prog, min_kv) \
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(SECTION_NAME, the_prog, min_kv, KVER_INF)
|
||||
|
||||
#define DEFINE_NETD_BPF_PROG(SECTION_NAME, the_prog) \
|
||||
DEFINE_NETD_BPF_PROG_KVER(SECTION_NAME, the_prog, KVER_NONE)
|
||||
|
||||
#define DEFINE_NETD_V_BPF_PROG_KVER(SECTION_NAME, the_prog, minKV) \
|
||||
DEFINE_BPF_PROG_EXT(SECTION_NAME, AID_ROOT, AID_ROOT, the_prog, minKV, \
|
||||
|
|
@ -515,44 +518,40 @@ static __always_inline inline int bpf_traffic_account(struct __sk_buff* skb,
|
|||
}
|
||||
|
||||
// Tracing on Android U+ 5.10+
|
||||
DEFINE_BPF_PROG_EXT("cgroupskb/ingress/stats$trace", AID_ROOT, AID_ROOT,
|
||||
bpf_cgroup_ingress_trace, KVER_5_10, KVER_INF,
|
||||
BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, MANDATORY,
|
||||
"fs_bpf_netd_readonly", "",
|
||||
LOAD_ON_ENG, LOAD_ON_USER, LOAD_ON_USERDEBUG)
|
||||
DEFINE_NETD_BPF_PROG_RANGES("cgroupskb/ingress/stats$trace",
|
||||
bpf_cgroup_ingress_trace, KVER_5_10, KVER_INF,
|
||||
BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, INGRESS, TRACE_ON, KVER_5_10, SDK_LEVEL_U);
|
||||
}
|
||||
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE("cgroupskb/ingress/stats$4_19", AID_ROOT, AID_ROOT,
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE("cgroupskb/ingress/stats$4_19",
|
||||
bpf_cgroup_ingress_4_19, KVER_4_19, KVER_INF)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, INGRESS, TRACE_OFF, KVER_4_19, SDK_LEVEL_NONE);
|
||||
}
|
||||
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE("cgroupskb/ingress/stats$4_14", AID_ROOT, AID_ROOT,
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE("cgroupskb/ingress/stats$4_14",
|
||||
bpf_cgroup_ingress_4_14, KVER_NONE, KVER_4_19)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, INGRESS, TRACE_OFF, KVER_NONE, SDK_LEVEL_NONE);
|
||||
}
|
||||
|
||||
// Tracing on Android U+ 5.10+
|
||||
DEFINE_BPF_PROG_EXT("cgroupskb/egress/stats$trace", AID_ROOT, AID_ROOT,
|
||||
bpf_cgroup_egress_trace, KVER_5_10, KVER_INF,
|
||||
BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, MANDATORY,
|
||||
"fs_bpf_netd_readonly", "",
|
||||
LOAD_ON_ENG, LOAD_ON_USER, LOAD_ON_USERDEBUG)
|
||||
DEFINE_NETD_BPF_PROG_RANGES("cgroupskb/egress/stats$trace",
|
||||
bpf_cgroup_egress_trace, KVER_5_10, KVER_INF,
|
||||
BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, EGRESS, TRACE_ON, KVER_5_10, SDK_LEVEL_U);
|
||||
}
|
||||
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE("cgroupskb/egress/stats$4_19", AID_ROOT, AID_ROOT,
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE("cgroupskb/egress/stats$4_19",
|
||||
bpf_cgroup_egress_4_19, KVER_4_19, KVER_INF)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, EGRESS, TRACE_OFF, KVER_4_19, SDK_LEVEL_NONE);
|
||||
}
|
||||
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE("cgroupskb/egress/stats$4_14", AID_ROOT, AID_ROOT,
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE("cgroupskb/egress/stats$4_14",
|
||||
bpf_cgroup_egress_4_14, KVER_NONE, KVER_4_19)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, EGRESS, TRACE_OFF, KVER_NONE, SDK_LEVEL_NONE);
|
||||
|
|
@ -644,14 +643,12 @@ static __always_inline inline uint8_t get_app_permissions() {
|
|||
return permissions ? *permissions : BPF_PERMISSION_INTERNET;
|
||||
}
|
||||
|
||||
DEFINE_NETD_BPF_PROG_KVER("cgroupsock/inet_create", AID_ROOT, AID_ROOT, inet_socket_create,
|
||||
KVER_4_14)
|
||||
DEFINE_NETD_BPF_PROG_KVER("cgroupsock/inet_create", inet_socket_create, KVER_4_14)
|
||||
(__unused struct bpf_sock* sk) {
|
||||
return (get_app_permissions() & BPF_PERMISSION_INTERNET) ? BPF_ALLOW : BPF_DISALLOW;
|
||||
}
|
||||
|
||||
DEFINE_NETD_BPF_PROG_KVER("cgroupsockrelease/inet_release", AID_ROOT, AID_ROOT,
|
||||
inet_socket_release, KVER_5_10)
|
||||
DEFINE_NETD_BPF_PROG_KVER("cgroupsockrelease/inet_release", inet_socket_release, KVER_5_10)
|
||||
(struct bpf_sock* sk) {
|
||||
uint64_t cookie = bpf_get_sk_cookie(sk);
|
||||
if (cookie) bpf_cookie_tag_map_delete_elem(&cookie);
|
||||
|
|
@ -704,12 +701,12 @@ static inline __always_inline int block_port(struct bpf_sock_addr *ctx) {
|
|||
return BPF_ALLOW;
|
||||
}
|
||||
|
||||
DEFINE_NETD_BPF_PROG_KVER("bind4/inet4_bind", AID_ROOT, AID_ROOT, inet4_bind, KVER_4_19)
|
||||
DEFINE_NETD_BPF_PROG_KVER("bind4/inet4_bind", inet4_bind, KVER_4_19)
|
||||
(struct bpf_sock_addr *ctx) {
|
||||
return block_port(ctx);
|
||||
}
|
||||
|
||||
DEFINE_NETD_BPF_PROG_KVER("bind6/inet6_bind", AID_ROOT, AID_ROOT, inet6_bind, KVER_4_19)
|
||||
DEFINE_NETD_BPF_PROG_KVER("bind6/inet6_bind", inet6_bind, KVER_4_19)
|
||||
(struct bpf_sock_addr *ctx) {
|
||||
return block_port(ctx);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue