• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0 */
2 
3 #undef TRACE_SYSTEM
4 #define TRACE_SYSTEM net
5 #define TRACE_INCLUDE_PATH trace/hooks
6 
7 #if !defined(_TRACE_HOOK_NET_VH_H) || defined(TRACE_HEADER_MULTI_READ)
8 #define _TRACE_HOOK_NET_VH_H
9 #include <trace/hooks/vendor_hooks.h>
10 
11 #ifndef TCP_STATE_CHANGE_REASON_H
12 #define TCP_STATE_CHANGE_REASON_H
13 enum tcp_state_change_reason {
14 	TCP_STATE_CHANGE_REASON_NORMAL,
15 	TCP_STATE_CHANGE_REASON_SYN_RST,
16 	TCP_STATE_CHANGE_REASON_SYN_TIMEOUT,
17 	TCP_STATE_CHANGE_REASON_RETRANSMIT
18 };
19 #endif
20 
21 struct packet_type;
22 struct list_head;
23 DECLARE_HOOK(android_vh_ptype_head,
24 	TP_PROTO(const struct packet_type *pt, struct list_head *vendor_pt),
25 	TP_ARGS(pt, vendor_pt));
26 
27 struct sock;
28 struct sockaddr_in6;
29 struct tcp_sock;
30 DECLARE_HOOK(android_vh_tcp_v4_connect,
31 	TP_PROTO(struct sock *sk, struct sockaddr *uaddr), TP_ARGS(sk, uaddr));
32 DECLARE_HOOK(android_vh_tcp_v6_connect,
33 	TP_PROTO(struct sock *sk, struct sockaddr *uaddr), TP_ARGS(sk, uaddr));
34 DECLARE_HOOK(android_vh_udp_v4_connect,
35 	TP_PROTO(struct sock *sk, __be32 daddr, __be16 dport, uint16_t family),
36 	TP_ARGS(sk, daddr, dport, family));
37 DECLARE_HOOK(android_vh_udp_v6_connect,
38 	TP_PROTO(struct sock *sk, struct sockaddr_in6 *sin6), TP_ARGS(sk, sin6));
39 DECLARE_HOOK(android_vh_inet_create,
40 	TP_PROTO(struct sock *sk, bool err), TP_ARGS(sk, err));
41 DECLARE_HOOK(android_vh_uplink_send_msg,
42 	TP_PROTO(struct sock *sk), TP_ARGS(sk));
43 DECLARE_HOOK(android_vh_sock_create,
44 	TP_PROTO(struct sock *sk), TP_ARGS(sk));
45 DECLARE_HOOK(android_vh_tcp_write_timeout_estab_retrans,
46 	TP_PROTO(struct sock *sk), TP_ARGS(sk));
47 DECLARE_HOOK(android_vh_tcp_connect,
48 	TP_PROTO(struct sk_buff *skb), TP_ARGS(skb));
49 DECLARE_HOOK(android_vh_sk_clone_lock,
50 	TP_PROTO(struct sock *nsk), TP_ARGS(nsk));
51 struct request_sock;
52 DECLARE_HOOK(android_vh_inet_csk_clone_lock,
53 	TP_PROTO(struct sock *newsk, const struct request_sock *req), TP_ARGS(newsk, req));
54 DECLARE_HOOK(android_vh_tcp_clean_rtx_queue,
55 	TP_PROTO(struct sock *sk, int flag, long seq_rtt_us),
56 	TP_ARGS(sk, flag, seq_rtt_us));
57 struct inet_connection_sock;
58 DECLARE_HOOK(android_vh_tcp_rcv_synack,
59 	TP_PROTO(struct inet_connection_sock *icsk), TP_ARGS(icsk));
60 DECLARE_HOOK(android_vh_udp_unicast_rcv_skb,
61 	TP_PROTO(struct sk_buff *skb, struct sock *sk),
62 	TP_ARGS(skb, sk));
63 DECLARE_HOOK(android_vh_udp6_unicast_rcv_skb,
64 	TP_PROTO(struct sk_buff *skb, struct sock *sk),
65 	TP_ARGS(skb, sk));
66 DECLARE_HOOK(android_vh_tcp_sock_error,
67 	TP_PROTO(struct sock *sk), TP_ARGS(sk));
68 DECLARE_HOOK(android_vh_tcp_fastsyn,
69 	TP_PROTO(struct sock *sk), TP_ARGS(sk));
70 DECLARE_HOOK(android_vh_tcp_select_window,
71 	TP_PROTO(struct sock *sk, uint32_t *win), TP_ARGS(sk, win));
72 DECLARE_HOOK(android_vh_tcp_state_change,
73 	TP_PROTO(struct sock *sk, enum tcp_state_change_reason reason, int state),
74 	TP_ARGS(sk, reason, state));
75 DECLARE_HOOK(android_vh_tcp_update_rtt,
76 	TP_PROTO(struct sock *sk, long rtt), TP_ARGS(sk, rtt));
77 DECLARE_HOOK(android_vh_sk_alloc,
78 	TP_PROTO(struct sock *sk), TP_ARGS(sk));
79 DECLARE_HOOK(android_vh_sk_free,
80 	TP_PROTO(struct sock *sk), TP_ARGS(sk));
81 DECLARE_HOOK(android_vh_tcp_rcv_established_fast_path,
82 	TP_PROTO(struct sock *sk), TP_ARGS(sk));
83 DECLARE_HOOK(android_vh_tcp_rcv_established_slow_path,
84 	TP_PROTO(struct sock *sk), TP_ARGS(sk));
85 DECLARE_HOOK(android_vh_receive_sock,
86 	TP_PROTO(struct sock *sk), TP_ARGS(sk));
87 DECLARE_HOOK(android_vh_task_get_classid,
88 	TP_PROTO(const struct sk_buff *skb, u32 *classid), TP_ARGS(skb, classid));
89 struct net_device;
90 DECLARE_HOOK(android_vh_dc_send_copy,
91 	TP_PROTO(struct sk_buff *skb, struct net_device *dev), TP_ARGS(skb, dev));
92 DECLARE_HOOK(android_vh_dc_receive,
93 	TP_PROTO(struct sk_buff *skb, int *flag), TP_ARGS(skb, flag));
94 DECLARE_HOOK(android_vh_tcp_rcv_rtt_update,
95 	TP_PROTO(struct tcp_sock *tp, u32 sample, int win_dep), TP_ARGS(tp, sample, win_dep));
96 struct msghdr;
97 DECLARE_RESTRICTED_HOOK(android_rvh_tcp_sendmsg,
98 	TP_PROTO(struct sock *sk, struct msghdr *msg, size_t len),
99 	TP_ARGS(sk, msg, len), 1);
100 DECLARE_RESTRICTED_HOOK(android_rvh_tcp_recvmsg,
101 	TP_PROTO(struct sock *sk, struct msghdr *msg, size_t len, int flags, int *addr_len),
102 	TP_ARGS(sk, msg, len, flags, addr_len), 1);
103 DECLARE_RESTRICTED_HOOK(android_rvh_udp_sendmsg,
104 	TP_PROTO(struct sock *sk, struct msghdr *msg, size_t len),
105 	TP_ARGS(sk, msg, len), 1);
106 DECLARE_RESTRICTED_HOOK(android_rvh_udp_recvmsg,
107 	TP_PROTO(struct sock *sk, struct msghdr *msg, size_t len, int flags, int *addr_len),
108 	TP_ARGS(sk, msg, len, flags, addr_len), 1);
109 DECLARE_RESTRICTED_HOOK(android_rvh_udpv6_sendmsg,
110 	TP_PROTO(struct sock *sk, struct msghdr *msg, size_t len),
111 	TP_ARGS(sk, msg, len), 1);
112 DECLARE_RESTRICTED_HOOK(android_rvh_udpv6_recvmsg,
113 	TP_PROTO(struct sock *sk, struct msghdr *msg, size_t len, int flags, int *addr_len),
114 	TP_ARGS(sk, msg, len, flags, addr_len), 1);
115 struct sk_buff;
116 DECLARE_RESTRICTED_HOOK(android_rvh_tcp_select_window,
117 	TP_PROTO(struct sock *sk, u32 *new_win), TP_ARGS(sk, new_win), 1);
118 DECLARE_RESTRICTED_HOOK(android_rvh_inet_sock_create,
119 	TP_PROTO(struct sock *sk), TP_ARGS(sk), 1);
120 DECLARE_RESTRICTED_HOOK(android_rvh_inet_sock_release,
121 	TP_PROTO(struct sock *sk), TP_ARGS(sk), 1);
122 DECLARE_RESTRICTED_HOOK(android_rvh_bpf_skb_load_bytes,
123 	TP_PROTO(const struct sk_buff *skb, u32 offset, void *to, u32 len,
124 		int *handled, int *err),
125 	TP_ARGS(skb, offset, to, len, handled, err), 1);
126 DECLARE_RESTRICTED_HOOK(android_rvh_tcp_rcv_spurious_retrans,
127 	TP_PROTO(struct sock *sk), TP_ARGS(sk), 1);
128 DECLARE_HOOK(android_vh_tcp_rtt_estimator,
129 	TP_PROTO(struct sock *sk, long mrtt_us), TP_ARGS(sk, mrtt_us));
130 DECLARE_HOOK(android_vh_udp_enqueue_schedule_skb,
131 	TP_PROTO(struct sock *sk, struct sk_buff *skb), TP_ARGS(sk, skb));
132 DECLARE_HOOK(android_vh_build_skb_around,
133 	TP_PROTO(struct sk_buff *skb), TP_ARGS(skb));
134 
135 /* macro versions of hooks are no longer required */
136 
137 #endif /* _TRACE_HOOK_NET_VH_H */
138 /* This part must be outside protection */
139 #include <trace/define_trace.h>
140