ANDROID: GKI: net: add vendor hooks net qos for gki purpose

We want to do some network policies when sending and receiving tcp and udp packets in the user process context

Bug: 190523684

Change-Id: Id790a381d5ce6c35a747697510f14678ccf3ff2f
Signed-off-by: Liangliang Li <liliangliang@vivo.com>
Signed-off-by: jujiang <jyu.jiang@vivo.corp-partner.google.com>
This commit is contained in:
Liangliang Li
2021-06-09 20:45:29 +08:00
committed by jujiang
parent 7e57c2b115
commit 39626e91c7
5 changed files with 38 additions and 0 deletions
+6
View File
@@ -287,6 +287,12 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_udp6_unicast_rcv_skb);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_rcv_established_fast_path);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_rcv_established_slow_path);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_rcv_rtt_update);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_tcp_sendmsg);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_tcp_recvmsg);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_udp_sendmsg);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_udp_recvmsg);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_udpv6_sendmsg);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_udpv6_recvmsg);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_should_memcg_bypass);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpu_capacity_show);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_init);
+20
View File
@@ -93,6 +93,26 @@ DECLARE_HOOK(android_vh_dc_receive,
TP_PROTO(struct sk_buff *skb, int *flag), TP_ARGS(skb, flag));
DECLARE_HOOK(android_vh_tcp_rcv_rtt_update,
TP_PROTO(struct tcp_sock *tp, u32 sample, int win_dep), TP_ARGS(tp, sample, win_dep));
struct msghdr;
DECLARE_RESTRICTED_HOOK(android_rvh_tcp_sendmsg,
TP_PROTO(struct sock *sk, struct msghdr *msg, size_t len),
TP_ARGS(sk, msg, len), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_tcp_recvmsg,
TP_PROTO(struct sock *sk, struct msghdr *msg, size_t len, int flags, int *addr_len),
TP_ARGS(sk, msg, len, flags, addr_len), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_udp_sendmsg,
TP_PROTO(struct sock *sk, struct msghdr *msg, size_t len),
TP_ARGS(sk, msg, len), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_udp_recvmsg,
TP_PROTO(struct sock *sk, struct msghdr *msg, size_t len, int flags, int *addr_len),
TP_ARGS(sk, msg, len, flags, addr_len), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_udpv6_sendmsg,
TP_PROTO(struct sock *sk, struct msghdr *msg, size_t len),
TP_ARGS(sk, msg, len), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_udpv6_recvmsg,
TP_PROTO(struct sock *sk, struct msghdr *msg, size_t len, int flags, int *addr_len),
TP_ARGS(sk, msg, len, flags, addr_len), 1);
/* macro versions of hooks are no longer required */
#endif /* _TRACE_HOOK_NET_VH_H */
+4
View File
@@ -1356,6 +1356,7 @@ int tcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t size)
{
int ret;
trace_android_rvh_tcp_sendmsg(sk, msg, size);
lock_sock(sk);
ret = tcp_sendmsg_locked(sk, msg, size);
release_sock(sk);
@@ -2877,6 +2878,9 @@ int tcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int flags,
sizeof(msg->msg_inq), &msg->msg_inq);
}
}
trace_android_rvh_tcp_recvmsg(sk, msg, len, flags, addr_len);
return ret;
}
EXPORT_SYMBOL(tcp_recvmsg);
+4
View File
@@ -1135,6 +1135,8 @@ int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
struct ip_options_data opt_copy;
int uc_index;
trace_android_rvh_udp_sendmsg(sk, msg, len);
if (len > 0xFFFF)
return -EMSGSIZE;
@@ -1958,6 +1960,8 @@ try_again:
if (flags & MSG_TRUNC)
err = ulen;
trace_android_rvh_udp_recvmsg(sk, msg, len, flags, addr_len);
skb_consume_udp(sk, skb, peeking ? -err : err);
return err;
+4
View File
@@ -494,6 +494,8 @@ try_again:
if (flags & MSG_TRUNC)
err = ulen;
trace_android_rvh_udpv6_recvmsg(sk, msg, len, flags, addr_len);
skb_consume_udp(sk, skb, peeking ? -err : err);
return err;
@@ -1401,6 +1403,8 @@ int udpv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
int is_udplite = IS_UDPLITE(sk);
int (*getfrag)(void *, char *, int, int, int, struct sk_buff *);
trace_android_rvh_udpv6_sendmsg(sk, msg, len);
ipcm6_init(&ipc6);
ipc6.gso_size = READ_ONCE(up->gso_size);
ipc6.sockc.tsflags = READ_ONCE(sk->sk_tsflags);