bpf: remove KVER_ prefix from k{min,max}_ver macro arguments
This is both shorter and allows us to use the stringified version of these as the automatic section suffix. Tested: TreeHugger Flag: EXEMPT mainline Signed-off-by: Maciej Żenczykowski <maze@google.com> Change-Id: Icf1b55f1a8f79c517631e121cf4aed6513948957
This commit is contained in:
parent
22d6747b28
commit
b20ada72e4
5 changed files with 77 additions and 97 deletions
|
|
@ -247,22 +247,22 @@ static inline __always_inline int nat64(struct __sk_buff* skb,
|
|||
return TC_ACT_PIPE;
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER(schedcls, ingress6_clat_ether, 4_14, AID_SYSTEM, KVER_4_14)
|
||||
DEFINE_BPF_PROG_KVER(schedcls, ingress6_clat_ether, 4_14, AID_SYSTEM, 4_14)
|
||||
(struct __sk_buff* skb) {
|
||||
return nat64(skb, ETHER, KVER_4_14);
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, ingress6_clat_ether, 4_9, AID_SYSTEM, KVER_4_9, KVER_4_14)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, ingress6_clat_ether, 4_9, AID_SYSTEM, 4_9, 4_14)
|
||||
(struct __sk_buff* skb) {
|
||||
return nat64(skb, ETHER, KVER_4_9);
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER(schedcls, ingress6_clat_rawip, 4_14, AID_SYSTEM, KVER_4_14)
|
||||
DEFINE_BPF_PROG_KVER(schedcls, ingress6_clat_rawip, 4_14, AID_SYSTEM, 4_14)
|
||||
(struct __sk_buff* skb) {
|
||||
return nat64(skb, RAWIP, KVER_4_14);
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, ingress6_clat_rawip, 4_9, AID_SYSTEM, KVER_4_9, KVER_4_14)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, ingress6_clat_rawip, 4_9, AID_SYSTEM, 4_9, 4_14)
|
||||
(struct __sk_buff* skb) {
|
||||
return nat64(skb, RAWIP, KVER_4_9);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -264,7 +264,7 @@ static inline __always_inline void match_policy(struct __sk_buff* skb, const boo
|
|||
return;
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER(schedcls, set_dscp_ether, , AID_SYSTEM, KVER_5_15)
|
||||
DEFINE_BPF_PROG_KVER(schedcls, set_dscp_ether, , AID_SYSTEM, 5_15)
|
||||
(struct __sk_buff* skb) {
|
||||
if (skb->pkt_type != PACKET_HOST) return TC_ACT_PIPE;
|
||||
|
||||
|
|
|
|||
|
|
@ -539,8 +539,8 @@ static long (*bpf_trace_printk)(const char* fmt, int fmt_size, ...) = (void*) BP
|
|||
.attach_type = BPF_PROG_ATTACH_TYPE_##TYPE, \
|
||||
.uid = (prog_uid), \
|
||||
.gid = (prog_gid), \
|
||||
.min_kver = (min_kv).kver, \
|
||||
.max_kver = (max_kv).kver, \
|
||||
.min_kver = (KVER_##min_kv).kver, \
|
||||
.max_kver = (KVER_##max_kv).kver, \
|
||||
.optional = (opt).optional, \
|
||||
.bpfloader_min_ver = (min_loader), \
|
||||
.bpfloader_max_ver = (max_loader), \
|
||||
|
|
@ -569,24 +569,18 @@ static long (*bpf_trace_printk)(const char* fmt, int fmt_size, ...) = (void*) BP
|
|||
|
||||
// programs requiring a kernel version >= min_kv && < max_kv
|
||||
#define DEFINE_BPF_PROG_KVER_RANGE(TYPE, NAME, VER, prog_gid, min_kv, max_kv) \
|
||||
DEFINE_BPF_PROG_KVER_RANGE_OPT(TYPE, NAME, VER, prog_gid, min_kv, max_kv, \
|
||||
MANDATORY)
|
||||
DEFINE_BPF_PROG_KVER_RANGE_OPT(TYPE, NAME, VER, prog_gid, min_kv, max_kv, MANDATORY)
|
||||
#define DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE(TYPE, NAME, VER, prog_gid, min_kv, max_kv) \
|
||||
DEFINE_BPF_PROG_KVER_RANGE_OPT(TYPE, NAME, VER, prog_gid, min_kv, max_kv, \
|
||||
OPTIONAL)
|
||||
DEFINE_BPF_PROG_KVER_RANGE_OPT(TYPE, NAME, VER, prog_gid, min_kv, max_kv, OPTIONAL)
|
||||
|
||||
// programs requiring a kernel version >= min_kv
|
||||
#define DEFINE_BPF_PROG_KVER(TYPE, NAME, VER, prog_gid, min_kv) \
|
||||
DEFINE_BPF_PROG_KVER_RANGE_OPT(TYPE, NAME, VER, prog_gid, min_kv, KVER_INF, \
|
||||
MANDATORY)
|
||||
DEFINE_BPF_PROG_KVER_RANGE_OPT(TYPE, NAME, VER, prog_gid, min_kv, INF, MANDATORY)
|
||||
#define DEFINE_OPTIONAL_BPF_PROG_KVER(TYPE, NAME, VER, prog_gid, min_kv) \
|
||||
DEFINE_BPF_PROG_KVER_RANGE_OPT(TYPE, NAME, VER, prog_gid, min_kv, KVER_INF, \
|
||||
OPTIONAL)
|
||||
DEFINE_BPF_PROG_KVER_RANGE_OPT(TYPE, NAME, VER, prog_gid, min_kv, INF, OPTIONAL)
|
||||
|
||||
// programs with no kernel version requirements
|
||||
#define DEFINE_BPF_PROG(TYPE, NAME, VER, prog_gid) \
|
||||
DEFINE_BPF_PROG_KVER_RANGE_OPT(TYPE, NAME, VER, prog_gid, KVER_4_9, KVER_INF, \
|
||||
MANDATORY)
|
||||
DEFINE_BPF_PROG_KVER_RANGE_OPT(TYPE, NAME, VER, prog_gid, 4_9, INF, MANDATORY)
|
||||
#define DEFINE_OPTIONAL_BPF_PROG(TYPE, NAME, VER, prog_gid) \
|
||||
DEFINE_BPF_PROG_KVER_RANGE_OPT(TYPE, NAME, VER, prog_gid, KVER_4_9, KVER_INF, \
|
||||
OPTIONAL)
|
||||
DEFINE_BPF_PROG_KVER_RANGE_OPT(TYPE, NAME, VER, prog_gid, 4_9, INF, OPTIONAL)
|
||||
|
|
|
|||
|
|
@ -128,20 +128,20 @@ DEFINE_BPF_MAP_EXT(local_net_blocked_uid_map, HASH, uint32_t, bool, -1000,
|
|||
DEFINE_NETD_BPF_PROG_RANGES(TYPE, NAME, VER, minKV, maxKV, BPFLOADER_MIN_VER, BPFLOADER_MAX_VER)
|
||||
|
||||
#define DEFINE_NETD_BPF_PROG_KVER(TYPE, NAME, VER, min_kv) \
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(TYPE, NAME, VER, min_kv, KVER_INF)
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(TYPE, NAME, VER, min_kv, INF)
|
||||
|
||||
#define DEFINE_NETD_BPF_PROG(TYPE, NAME, VER) \
|
||||
DEFINE_NETD_BPF_PROG_KVER(TYPE, NAME, VER, KVER_4_9)
|
||||
DEFINE_NETD_BPF_PROG_KVER(TYPE, NAME, VER, 4_9)
|
||||
|
||||
#define DEFINE_NETD_V_BPF_PROG_KVER(TYPE, NAME, VER, minKV) \
|
||||
DEFINE_BPF_PROG_EXT(TYPE, NAME, VER, AID_ROOT, AID_ROOT, minKV, \
|
||||
KVER_INF, BPFLOADER_MAINLINE_V_VERSION, BPFLOADER_MAX_VER, MANDATORY, \
|
||||
#define DEFINE_NETD_V_BPF_PROG_KVER(TYPE, NAME, VER, minKV) \
|
||||
DEFINE_BPF_PROG_EXT(TYPE, NAME, VER, AID_ROOT, AID_ROOT, minKV, INF, \
|
||||
BPFLOADER_MAINLINE_V_VERSION, BPFLOADER_MAX_VER, MANDATORY, \
|
||||
"netd_readonly", DEFAULT_BPF_PIN_SUBDIR)
|
||||
|
||||
// programs that only need to be usable by the system server
|
||||
#define DEFINE_SYS_BPF_PROG(TYPE, NAME, VER) \
|
||||
DEFINE_BPF_PROG_EXT(TYPE, NAME, VER, AID_ROOT, AID_NET_ADMIN, KVER_4_9, KVER_INF, \
|
||||
BPFLOADER_MIN_VER, BPFLOADER_MAX_VER, MANDATORY, \
|
||||
DEFINE_BPF_PROG_EXT(TYPE, NAME, VER, AID_ROOT, AID_NET_ADMIN, 4_9, INF, \
|
||||
BPFLOADER_MIN_VER, BPFLOADER_MAX_VER, MANDATORY, \
|
||||
"net_shared", DEFAULT_BPF_PIN_SUBDIR)
|
||||
|
||||
/*
|
||||
|
|
@ -608,40 +608,40 @@ static __always_inline inline int bpf_traffic_account(struct __sk_buff* skb,
|
|||
// ----- cgroupskb/ingress/stats -----
|
||||
|
||||
// Android 25Q2+ 5.10+ (localnet protection + tracing)
|
||||
DEFINE_NETD_BPF_PROG_RANGES(cgroupskb, ingress_stats, 5_10_25q2, KVER_5_10, KVER_INF,
|
||||
DEFINE_NETD_BPF_PROG_RANGES(cgroupskb, ingress_stats, 5_10_25q2, 5_10, INF,
|
||||
BPFLOADER_MAINLINE_25Q2_VERSION, BPFLOADER_MAX_VER)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, INGRESS, KVER_5_10, SDK_LEVEL_25Q2);
|
||||
}
|
||||
|
||||
// Android 25Q2+ 5.4 (localnet protection)
|
||||
DEFINE_NETD_BPF_PROG_RANGES(cgroupskb, ingress_stats, 5_4_25q2, KVER_5_4, KVER_5_10,
|
||||
DEFINE_NETD_BPF_PROG_RANGES(cgroupskb, ingress_stats, 5_4_25q2, 5_4, 5_10,
|
||||
BPFLOADER_MAINLINE_25Q2_VERSION, BPFLOADER_MAX_VER)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, INGRESS, KVER_5_4, SDK_LEVEL_25Q2);
|
||||
}
|
||||
|
||||
// Android U/V 5.10+ (tracing)
|
||||
DEFINE_NETD_BPF_PROG_RANGES(cgroupskb, ingress_stats, 5_10_u, KVER_5_10, KVER_INF,
|
||||
DEFINE_NETD_BPF_PROG_RANGES(cgroupskb, ingress_stats, 5_10_u, 5_10, INF,
|
||||
BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAINLINE_25Q2_VERSION)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, INGRESS, KVER_5_10, SDK_LEVEL_U);
|
||||
}
|
||||
|
||||
// Android T/U/V/25Q2 5.4 & T 5.10/5.15
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(cgroupskb, ingress_stats, 5_4, KVER_5_4, KVER_INF)
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(cgroupskb, ingress_stats, 5_4, 5_4, INF)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, INGRESS, KVER_5_4, SDK_LEVEL_T);
|
||||
}
|
||||
|
||||
// Android T/U/V 4.19
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(cgroupskb, ingress_stats, 4_19, KVER_4_19, KVER_5_4)
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(cgroupskb, ingress_stats, 4_19, 4_19, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, INGRESS, KVER_4_19, SDK_LEVEL_T);
|
||||
}
|
||||
|
||||
// Android T 4.9 & T/U 4.14
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(cgroupskb, ingress_stats, 4_9, KVER_4_9, KVER_4_19)
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(cgroupskb, ingress_stats, 4_9, 4_9, 4_19)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, INGRESS, KVER_4_9, SDK_LEVEL_T);
|
||||
}
|
||||
|
|
@ -649,40 +649,40 @@ DEFINE_NETD_BPF_PROG_KVER_RANGE(cgroupskb, ingress_stats, 4_9, KVER_4_9, KVER_4_
|
|||
// ----- cgroupskb/egress/stats -----
|
||||
|
||||
// Android 25Q2+ 5.10+ (localnet protection + tracing)
|
||||
DEFINE_NETD_BPF_PROG_RANGES(cgroupskb, egress_stats, 5_10_25q2, KVER_5_10, KVER_INF,
|
||||
DEFINE_NETD_BPF_PROG_RANGES(cgroupskb, egress_stats, 5_10_25q2, 5_10, INF,
|
||||
BPFLOADER_MAINLINE_25Q2_VERSION, BPFLOADER_MAX_VER)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, EGRESS, KVER_5_10, SDK_LEVEL_25Q2);
|
||||
}
|
||||
|
||||
// Android 25Q2+ 5.4 (localnet protection)
|
||||
DEFINE_NETD_BPF_PROG_RANGES(cgroupskb, egress_stats, 5_4_25q2, KVER_5_4, KVER_5_10,
|
||||
DEFINE_NETD_BPF_PROG_RANGES(cgroupskb, egress_stats, 5_4_25q2, 5_4, 5_10,
|
||||
BPFLOADER_MAINLINE_25Q2_VERSION, BPFLOADER_MAX_VER)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, EGRESS, KVER_5_4, SDK_LEVEL_25Q2);
|
||||
}
|
||||
|
||||
// Android U/V 5.10+ (tracing)
|
||||
DEFINE_NETD_BPF_PROG_RANGES(cgroupskb, egress_stats, 5_10_u, KVER_5_10, KVER_INF,
|
||||
DEFINE_NETD_BPF_PROG_RANGES(cgroupskb, egress_stats, 5_10_u, 5_10, INF,
|
||||
BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAINLINE_25Q2_VERSION)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, EGRESS, KVER_5_10, SDK_LEVEL_U);
|
||||
}
|
||||
|
||||
// Android T/U/V/25Q2 5.4 & T 5.10/5.15
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(cgroupskb, egress_stats, 5_4, KVER_5_4, KVER_INF)
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(cgroupskb, egress_stats, 5_4, 5_4, INF)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, EGRESS, KVER_5_4, SDK_LEVEL_T);
|
||||
}
|
||||
|
||||
// Android T/U/V 4.19
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(cgroupskb, egress_stats, 4_19, KVER_4_19, KVER_5_4)
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(cgroupskb, egress_stats, 4_19, 4_19, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, EGRESS, KVER_4_19, SDK_LEVEL_T);
|
||||
}
|
||||
|
||||
// Android T 4.9 & T/U 4.14
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(cgroupskb, egress_stats, 4_9, KVER_4_9, KVER_4_19)
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(cgroupskb, egress_stats, 4_9, 4_9, 4_19)
|
||||
(struct __sk_buff* skb) {
|
||||
return bpf_traffic_account(skb, EGRESS, KVER_4_9, SDK_LEVEL_T);
|
||||
}
|
||||
|
|
@ -783,17 +783,17 @@ static __always_inline inline int inet_socket_create(struct bpf_sock* sk,
|
|||
return (get_app_permissions() & BPF_PERMISSION_INTERNET) ? BPF_ALLOW : BPF_DISALLOW;
|
||||
}
|
||||
|
||||
DEFINE_NETD_BPF_PROG_KVER(cgroupsock, inet_create, 5_10, KVER_5_10)
|
||||
DEFINE_NETD_BPF_PROG_KVER(cgroupsock, inet_create, 5_10, 5_10)
|
||||
(struct bpf_sock* sk) {
|
||||
return inet_socket_create(sk, KVER_5_10);
|
||||
}
|
||||
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(cgroupsock, inet_create, 4_14, KVER_4_14, KVER_5_10)
|
||||
DEFINE_NETD_BPF_PROG_KVER_RANGE(cgroupsock, inet_create, 4_14, 4_14, 5_10)
|
||||
(struct bpf_sock* sk) {
|
||||
return inet_socket_create(sk, KVER_4_14);
|
||||
}
|
||||
|
||||
DEFINE_NETD_BPF_PROG_KVER(cgroupsockrelease, inet_release, , KVER_5_10)
|
||||
DEFINE_NETD_BPF_PROG_KVER(cgroupsockrelease, inet_release, , 5_10)
|
||||
(struct bpf_sock* sk) {
|
||||
uint64_t cookie = bpf_get_sk_cookie(sk);
|
||||
if (cookie) bpf_cookie_tag_map_delete_elem(&cookie);
|
||||
|
|
@ -846,47 +846,47 @@ static inline __always_inline int block_port(struct bpf_sock_addr *ctx) {
|
|||
return BPF_ALLOW;
|
||||
}
|
||||
|
||||
DEFINE_NETD_BPF_PROG_KVER(bind4, inet4_bind, , KVER_4_19)
|
||||
DEFINE_NETD_BPF_PROG_KVER(bind4, inet4_bind, , 4_19)
|
||||
(struct bpf_sock_addr *ctx) {
|
||||
return block_port(ctx);
|
||||
}
|
||||
|
||||
DEFINE_NETD_BPF_PROG_KVER(bind6, inet6_bind, , KVER_4_19)
|
||||
DEFINE_NETD_BPF_PROG_KVER(bind6, inet6_bind, , 4_19)
|
||||
(struct bpf_sock_addr *ctx) {
|
||||
return block_port(ctx);
|
||||
}
|
||||
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(connect4, inet4_connect, , KVER_4_19)
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(connect4, inet4_connect, , 4_19)
|
||||
(struct bpf_sock_addr *ctx) {
|
||||
return check_localhost(ctx);
|
||||
}
|
||||
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(connect6, inet6_connect, , KVER_4_19)
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(connect6, inet6_connect, , 4_19)
|
||||
(struct bpf_sock_addr *ctx) {
|
||||
return check_localhost(ctx);
|
||||
}
|
||||
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(recvmsg4, udp4_recvmsg, , KVER_4_19)
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(recvmsg4, udp4_recvmsg, , 4_19)
|
||||
(struct bpf_sock_addr *ctx) {
|
||||
return check_localhost(ctx);
|
||||
}
|
||||
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(recvmsg6, udp6_recvmsg, , KVER_4_19)
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(recvmsg6, udp6_recvmsg, , 4_19)
|
||||
(struct bpf_sock_addr *ctx) {
|
||||
return check_localhost(ctx);
|
||||
}
|
||||
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(sendmsg4, udp4_sendmsg, , KVER_4_19)
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(sendmsg4, udp4_sendmsg, , 4_19)
|
||||
(struct bpf_sock_addr *ctx) {
|
||||
return check_localhost(ctx);
|
||||
}
|
||||
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(sendmsg6, udp6_sendmsg, , KVER_4_19)
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(sendmsg6, udp6_sendmsg, , 4_19)
|
||||
(struct bpf_sock_addr *ctx) {
|
||||
return check_localhost(ctx);
|
||||
}
|
||||
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(getsockopt, prog, , KVER_5_4)
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(getsockopt, prog, , 5_4)
|
||||
(struct bpf_sockopt *ctx) {
|
||||
// Tell kernel to return 'original' kernel reply (instead of the bpf modified buffer)
|
||||
// This is important if the answer is larger than PAGE_SIZE (max size this bpf hook can provide)
|
||||
|
|
@ -894,7 +894,7 @@ DEFINE_NETD_V_BPF_PROG_KVER(getsockopt, prog, , KVER_5_4)
|
|||
return BPF_ALLOW;
|
||||
}
|
||||
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(setsockopt, prog, , KVER_5_4)
|
||||
DEFINE_NETD_V_BPF_PROG_KVER(setsockopt, prog, , 5_4)
|
||||
(struct bpf_sockopt *ctx) {
|
||||
// Tell kernel to use/process original buffer provided by userspace.
|
||||
// This is important if it is larger than PAGE_SIZE (max size this bpf hook can handle).
|
||||
|
|
|
|||
|
|
@ -257,25 +257,23 @@ static inline __always_inline int do_forward6(struct __sk_buff* skb,
|
|||
}
|
||||
|
||||
// implementation for 5.4+ (can use skb->gso_{segs,size})
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_downstream6_ether, 5_4, AID_NETWORK_STACK, KVER_5_4)
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_downstream6_ether, 5_4, AID_NETWORK_STACK, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward6(skb, ETHER, DOWNSTREAM, KVER_5_4);
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_upstream6_ether, 5_4, AID_NETWORK_STACK, KVER_5_4)
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_upstream6_ether, 5_4, AID_NETWORK_STACK, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward6(skb, ETHER, UPSTREAM, KVER_5_4);
|
||||
}
|
||||
|
||||
// implementation for 4.9/4.14/4.19
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_downstream6_ether, , AID_NETWORK_STACK,
|
||||
KVER_4_9, KVER_5_4)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_downstream6_ether, , AID_NETWORK_STACK, 4_9, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward6(skb, ETHER, DOWNSTREAM, KVER_4_9);
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream6_ether, , AID_NETWORK_STACK,
|
||||
KVER_4_9, KVER_5_4)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream6_ether, , AID_NETWORK_STACK, 4_9, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward6(skb, ETHER, UPSTREAM, KVER_4_9);
|
||||
}
|
||||
|
|
@ -294,38 +292,34 @@ DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream6_ether, , AID_NETWORK_STACK
|
|||
// and in system/netd/tests/binder_test.cpp NetdBinderTest TetherOffloadForwarding.
|
||||
//
|
||||
// Hence, these mandatory (must load successfully) implementations for 5.4+ kernels:
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_downstream6_rawip, 5_4, AID_NETWORK_STACK, KVER_5_4)
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_downstream6_rawip, 5_4, AID_NETWORK_STACK, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward6(skb, RAWIP, DOWNSTREAM, KVER_5_4);
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_upstream6_rawip, 5_4, AID_NETWORK_STACK, KVER_5_4)
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_upstream6_rawip, 5_4, AID_NETWORK_STACK, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward6(skb, RAWIP, UPSTREAM, KVER_5_4);
|
||||
}
|
||||
|
||||
// and for 4.14/4.19 kernels
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_downstream6_rawip, 4_14, AID_NETWORK_STACK,
|
||||
KVER_4_14, KVER_5_4)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_downstream6_rawip, 4_14, AID_NETWORK_STACK, 4_14, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward6(skb, RAWIP, DOWNSTREAM, KVER_4_14);
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream6_rawip, 4_14, AID_NETWORK_STACK,
|
||||
KVER_4_14, KVER_5_4)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream6_rawip, 4_14, AID_NETWORK_STACK, 4_14, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward6(skb, RAWIP, UPSTREAM, KVER_4_14);
|
||||
}
|
||||
|
||||
// and define no-op stubs for pre-4.14 kernels.
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_downstream6_rawip, stub, AID_NETWORK_STACK,
|
||||
KVER_4_9, KVER_4_14)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_downstream6_rawip, stub, AID_NETWORK_STACK, 4_9, 4_14)
|
||||
(__unused struct __sk_buff* skb) {
|
||||
return TC_ACT_PIPE;
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream6_rawip, stub, AID_NETWORK_STACK,
|
||||
KVER_4_9, KVER_4_14)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream6_rawip, stub, AID_NETWORK_STACK, 4_9, 4_14)
|
||||
(__unused struct __sk_buff* skb) {
|
||||
return TC_ACT_PIPE;
|
||||
}
|
||||
|
|
@ -640,22 +634,22 @@ static inline __always_inline int do_forward4(struct __sk_buff* skb,
|
|||
|
||||
// Full featured (required) implementations for 5.10+ kernels (these are S+ by definition)
|
||||
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_downstream4_rawip, 5_10, AID_NETWORK_STACK, KVER_5_10)
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_downstream4_rawip, 5_10, AID_NETWORK_STACK, 5_10)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, RAWIP, DOWNSTREAM, UPDATETIME, KVER_5_10);
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_upstream4_rawip, 5_10, AID_NETWORK_STACK, KVER_5_10)
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_upstream4_rawip, 5_10, AID_NETWORK_STACK, 5_10)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, RAWIP, UPSTREAM, UPDATETIME, KVER_5_10);
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_downstream4_ether, 5_10, AID_NETWORK_STACK, KVER_5_10)
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_downstream4_ether, 5_10, AID_NETWORK_STACK, 5_10)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, ETHER, DOWNSTREAM, UPDATETIME, KVER_5_10);
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_upstream4_ether, 5_10, AID_NETWORK_STACK, KVER_5_10)
|
||||
DEFINE_BPF_PROG_KVER(schedcls, tether_upstream4_ether, 5_10, AID_NETWORK_STACK, 5_10)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, ETHER, UPSTREAM, UPDATETIME, KVER_5_10);
|
||||
}
|
||||
|
|
@ -664,25 +658,25 @@ DEFINE_BPF_PROG_KVER(schedcls, tether_upstream4_ether, 5_10, AID_NETWORK_STACK,
|
|||
// (optional, because we need to be able to fallback for 5.4 pre-S kernels)
|
||||
|
||||
DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE(schedcls, tether_downstream4_rawip, opt54,
|
||||
AID_NETWORK_STACK, KVER_5_4, KVER_5_10)
|
||||
AID_NETWORK_STACK, 5_4, 5_10)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, RAWIP, DOWNSTREAM, UPDATETIME, KVER_5_4);
|
||||
}
|
||||
|
||||
DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_rawip, opt54,
|
||||
AID_NETWORK_STACK, KVER_5_4, KVER_5_10)
|
||||
AID_NETWORK_STACK, 5_4, 5_10)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, RAWIP, UPSTREAM, UPDATETIME, KVER_5_4);
|
||||
}
|
||||
|
||||
DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE(schedcls, tether_downstream4_ether, opt54,
|
||||
AID_NETWORK_STACK, KVER_5_4, KVER_5_10)
|
||||
AID_NETWORK_STACK, 5_4, 5_10)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, ETHER, DOWNSTREAM, UPDATETIME, KVER_5_4);
|
||||
}
|
||||
|
||||
DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_ether, opt54,
|
||||
AID_NETWORK_STACK, KVER_5_4, KVER_5_10)
|
||||
AID_NETWORK_STACK, 5_4, 5_10)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, ETHER, UPSTREAM, UPDATETIME, KVER_5_4);
|
||||
}
|
||||
|
|
@ -691,25 +685,25 @@ DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_ether, opt54,
|
|||
// (optional, because we need to be able to fallback for 4.14/4.19 pre-S kernels)
|
||||
|
||||
DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE(schedcls, tether_downstream4_rawip, opt,
|
||||
AID_NETWORK_STACK, KVER_4_14, KVER_5_4)
|
||||
AID_NETWORK_STACK, 4_14, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, RAWIP, DOWNSTREAM, UPDATETIME, KVER_4_14);
|
||||
}
|
||||
|
||||
DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_rawip, opt,
|
||||
AID_NETWORK_STACK, KVER_4_14, KVER_5_4)
|
||||
AID_NETWORK_STACK, 4_14, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, RAWIP, UPSTREAM, UPDATETIME, KVER_4_14);
|
||||
}
|
||||
|
||||
DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE(schedcls, tether_downstream4_ether, opt,
|
||||
AID_NETWORK_STACK, KVER_4_14, KVER_5_4)
|
||||
AID_NETWORK_STACK, 4_14, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, ETHER, DOWNSTREAM, UPDATETIME, KVER_4_14);
|
||||
}
|
||||
|
||||
DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_ether, opt,
|
||||
AID_NETWORK_STACK, KVER_4_14, KVER_5_4)
|
||||
AID_NETWORK_STACK, 4_14, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, ETHER, UPSTREAM, UPDATETIME, KVER_4_14);
|
||||
}
|
||||
|
|
@ -728,14 +722,12 @@ DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_ether, opt,
|
|||
|
||||
// RAWIP: Required for 5.4-R kernels -- which always support bpf_skb_change_head().
|
||||
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_downstream4_rawip, 5_4, AID_NETWORK_STACK,
|
||||
KVER_5_4, KVER_5_10)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_downstream4_rawip, 5_4, AID_NETWORK_STACK, 5_4, 5_10)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, RAWIP, DOWNSTREAM, NO_UPDATETIME, KVER_5_4);
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_rawip, 5_4, AID_NETWORK_STACK,
|
||||
KVER_5_4, KVER_5_10)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_rawip, 5_4, AID_NETWORK_STACK, 5_4, 5_10)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, RAWIP, UPSTREAM, NO_UPDATETIME, KVER_5_4);
|
||||
}
|
||||
|
|
@ -744,27 +736,25 @@ DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_rawip, 5_4, AID_NETWORK_ST
|
|||
// [Note: fallback for 4.14/4.19 (P/Q) kernels is below in stub section]
|
||||
|
||||
DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE(schedcls, tether_downstream4_rawip, 4_14,
|
||||
AID_NETWORK_STACK, KVER_4_14, KVER_5_4)
|
||||
AID_NETWORK_STACK, 4_14, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, RAWIP, DOWNSTREAM, NO_UPDATETIME, KVER_4_14);
|
||||
}
|
||||
|
||||
DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_rawip, 4_14,
|
||||
AID_NETWORK_STACK, KVER_4_14, KVER_5_4)
|
||||
AID_NETWORK_STACK, 4_14, 5_4)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, RAWIP, UPSTREAM, NO_UPDATETIME, KVER_4_14);
|
||||
}
|
||||
|
||||
// ETHER: Required for 4.14-Q/R, 4.19-Q/R & 5.4-R kernels.
|
||||
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_downstream4_ether, 4_14, AID_NETWORK_STACK,
|
||||
KVER_4_14, KVER_5_10)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_downstream4_ether, 4_14, AID_NETWORK_STACK, 4_14, 5_10)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, ETHER, DOWNSTREAM, NO_UPDATETIME, KVER_4_14);
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_ether, 4_14, AID_NETWORK_STACK,
|
||||
KVER_4_14, KVER_5_10)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_ether, 4_14, AID_NETWORK_STACK, 4_14, 5_10)
|
||||
(struct __sk_buff* skb) {
|
||||
return do_forward4(skb, ETHER, UPSTREAM, NO_UPDATETIME, KVER_4_14);
|
||||
}
|
||||
|
|
@ -773,28 +763,24 @@ DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_ether, 4_14, AID_NETWORK_S
|
|||
|
||||
// RAWIP: 4.9-P/Q, 4.14-P/Q & 4.19-Q kernels -- without bpf_skb_change_head() for tc programs
|
||||
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_downstream4_rawip, stub, AID_NETWORK_STACK,
|
||||
KVER_4_9, KVER_5_4)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_downstream4_rawip, stub, AID_NETWORK_STACK, 4_9, 5_4)
|
||||
(__unused struct __sk_buff* skb) {
|
||||
return TC_ACT_PIPE;
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_rawip, stub, AID_NETWORK_STACK,
|
||||
KVER_4_9, KVER_5_4)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_rawip, stub, AID_NETWORK_STACK, 4_9, 5_4)
|
||||
(__unused struct __sk_buff* skb) {
|
||||
return TC_ACT_PIPE;
|
||||
}
|
||||
|
||||
// ETHER: 4.9-P/Q kernel
|
||||
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_downstream4_ether, stub, AID_NETWORK_STACK,
|
||||
KVER_4_9, KVER_4_14)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_downstream4_ether, stub, AID_NETWORK_STACK, 4_9, 4_14)
|
||||
(__unused struct __sk_buff* skb) {
|
||||
return TC_ACT_PIPE;
|
||||
}
|
||||
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_ether, stub, AID_NETWORK_STACK,
|
||||
KVER_4_9, KVER_4_14)
|
||||
DEFINE_BPF_PROG_KVER_RANGE(schedcls, tether_upstream4_ether, stub, AID_NETWORK_STACK, 4_9, 4_14)
|
||||
(__unused struct __sk_buff* skb) {
|
||||
return TC_ACT_PIPE;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue