ANDROID: GKI: Add hooks for network management.
These hooks allow vendor modules to perform more operations on various data streams, thereby enhancing the user's internet experience. 'trace_android_vh_tcp_v4_connect', 'trace_android_vh_tcp_v6_connect', 'trace_android_vh_udp_v4_connect' and 'trace_android_vh_udp_v6_connect' are invoked when a TCP or UDP stream is about to establish a connection. The vendor module willassist in binding the stream to different network interfaces based on additional information. Bug: 356731522 Change-Id: Ibf85875d6c846843d5d29a874c9c2cd6aaac30ad Signed-off-by: jiangxinpei <huangdezhi@hihonor.com> (cherry picked from commit 17d93c3ecffa190d8b72300e0aff6b4d285f6305)
This commit is contained in:
committed by
Treehugger Robot
parent
7c789dabc8
commit
570da3349b
@@ -231,6 +231,10 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_sp_pc_abort);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_dma_buf_stats_teardown);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dpm_wait_start);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dpm_wait_finish);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_v4_connect);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_v6_connect);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_udp_v4_connect);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_udp_v6_connect);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sync_irq_wait_start);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sync_irq_wait_finish);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_flush_wq_wait_start);
|
||||
|
||||
@@ -15,6 +15,16 @@ DECLARE_HOOK(android_vh_ptype_head,
|
||||
TP_ARGS(pt, vendor_pt));
|
||||
|
||||
struct sock;
|
||||
struct sockaddr_in6;
|
||||
DECLARE_HOOK(android_vh_tcp_v4_connect,
|
||||
TP_PROTO(struct sock *sk, struct sockaddr *uaddr), TP_ARGS(sk, uaddr));
|
||||
DECLARE_HOOK(android_vh_tcp_v6_connect,
|
||||
TP_PROTO(struct sock *sk, struct sockaddr *uaddr), TP_ARGS(sk, uaddr));
|
||||
DECLARE_HOOK(android_vh_udp_v4_connect,
|
||||
TP_PROTO(struct sock *sk, __be32 daddr, __be16 dport, uint16_t family),
|
||||
TP_ARGS(sk, daddr, dport, family));
|
||||
DECLARE_HOOK(android_vh_udp_v6_connect,
|
||||
TP_PROTO(struct sock *sk, struct sockaddr_in6 *sin6), TP_ARGS(sk, sin6));
|
||||
DECLARE_HOOK(android_vh_tcp_write_timeout_estab_retrans,
|
||||
TP_PROTO(struct sock *sk), TP_ARGS(sk));
|
||||
DECLARE_HOOK(android_vh_tcp_connect,
|
||||
|
||||
@@ -85,6 +85,7 @@
|
||||
#include <linux/scatterlist.h>
|
||||
|
||||
#include <trace/events/tcp.h>
|
||||
#include <trace/hooks/net.h>
|
||||
|
||||
#ifdef CONFIG_TCP_MD5SIG
|
||||
static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key,
|
||||
@@ -235,6 +236,8 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
|
||||
if (usin->sin_family != AF_INET)
|
||||
return -EAFNOSUPPORT;
|
||||
|
||||
trace_android_vh_tcp_v4_connect(sk, uaddr);
|
||||
|
||||
nexthop = daddr = usin->sin_addr.s_addr;
|
||||
inet_opt = rcu_dereference_protected(inet->inet_opt,
|
||||
lockdep_sock_is_held(sk));
|
||||
|
||||
@@ -1135,6 +1135,8 @@ int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
|
||||
connected = 1;
|
||||
}
|
||||
|
||||
trace_android_vh_udp_v4_connect(sk, daddr, dport, AF_INET);
|
||||
|
||||
ipcm_init_sk(&ipc, inet);
|
||||
ipc.gso_size = READ_ONCE(up->gso_size);
|
||||
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
#include <linux/scatterlist.h>
|
||||
|
||||
#include <trace/events/tcp.h>
|
||||
#include <trace/hooks/net.h>
|
||||
|
||||
static void tcp_v6_send_reset(const struct sock *sk, struct sk_buff *skb,
|
||||
enum sk_rst_reason reason);
|
||||
@@ -256,6 +257,8 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
|
||||
return err;
|
||||
}
|
||||
|
||||
trace_android_vh_tcp_v6_connect(sk, uaddr);
|
||||
|
||||
if (!ipv6_addr_any(&sk->sk_v6_rcv_saddr))
|
||||
saddr = &sk->sk_v6_rcv_saddr;
|
||||
|
||||
|
||||
@@ -1472,6 +1472,8 @@ do_udp_sendmsg:
|
||||
connected = true;
|
||||
}
|
||||
|
||||
trace_android_vh_udp_v6_connect(sk, sin6);
|
||||
|
||||
if (!fl6->flowi6_oif)
|
||||
fl6->flowi6_oif = READ_ONCE(sk->sk_bound_dev_if);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user