Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0 */
2#undef TRACE_SYSTEM
3#define TRACE_SYSTEM handshake
4
5#if !defined(_TRACE_HANDSHAKE_H) || defined(TRACE_HEADER_MULTI_READ)
6#define _TRACE_HANDSHAKE_H
7
8#include <linux/net.h>
9#include <linux/tracepoint.h>
10
11DECLARE_EVENT_CLASS(handshake_event_class,
12 TP_PROTO(
13 const struct net *net,
14 const struct handshake_req *req,
15 const struct sock *sk
16 ),
17 TP_ARGS(net, req, sk),
18 TP_STRUCT__entry(
19 __field(const void *, req)
20 __field(const void *, sk)
21 __field(unsigned int, netns_ino)
22 ),
23 TP_fast_assign(
24 __entry->req = req;
25 __entry->sk = sk;
26 __entry->netns_ino = net->ns.inum;
27 ),
28 TP_printk("req=%p sk=%p",
29 __entry->req, __entry->sk
30 )
31);
32#define DEFINE_HANDSHAKE_EVENT(name) \
33 DEFINE_EVENT(handshake_event_class, name, \
34 TP_PROTO( \
35 const struct net *net, \
36 const struct handshake_req *req, \
37 const struct sock *sk \
38 ), \
39 TP_ARGS(net, req, sk))
40
41DECLARE_EVENT_CLASS(handshake_fd_class,
42 TP_PROTO(
43 const struct net *net,
44 const struct handshake_req *req,
45 const struct sock *sk,
46 int fd
47 ),
48 TP_ARGS(net, req, sk, fd),
49 TP_STRUCT__entry(
50 __field(const void *, req)
51 __field(const void *, sk)
52 __field(int, fd)
53 __field(unsigned int, netns_ino)
54 ),
55 TP_fast_assign(
56 __entry->req = req;
57 __entry->sk = req->hr_sk;
58 __entry->fd = fd;
59 __entry->netns_ino = net->ns.inum;
60 ),
61 TP_printk("req=%p sk=%p fd=%d",
62 __entry->req, __entry->sk, __entry->fd
63 )
64);
65#define DEFINE_HANDSHAKE_FD_EVENT(name) \
66 DEFINE_EVENT(handshake_fd_class, name, \
67 TP_PROTO( \
68 const struct net *net, \
69 const struct handshake_req *req, \
70 const struct sock *sk, \
71 int fd \
72 ), \
73 TP_ARGS(net, req, sk, fd))
74
75DECLARE_EVENT_CLASS(handshake_error_class,
76 TP_PROTO(
77 const struct net *net,
78 const struct handshake_req *req,
79 const struct sock *sk,
80 int err
81 ),
82 TP_ARGS(net, req, sk, err),
83 TP_STRUCT__entry(
84 __field(const void *, req)
85 __field(const void *, sk)
86 __field(int, err)
87 __field(unsigned int, netns_ino)
88 ),
89 TP_fast_assign(
90 __entry->req = req;
91 __entry->sk = sk;
92 __entry->err = err;
93 __entry->netns_ino = net->ns.inum;
94 ),
95 TP_printk("req=%p sk=%p err=%d",
96 __entry->req, __entry->sk, __entry->err
97 )
98);
99#define DEFINE_HANDSHAKE_ERROR(name) \
100 DEFINE_EVENT(handshake_error_class, name, \
101 TP_PROTO( \
102 const struct net *net, \
103 const struct handshake_req *req, \
104 const struct sock *sk, \
105 int err \
106 ), \
107 TP_ARGS(net, req, sk, err))
108
109
110/*
111 * Request lifetime events
112 */
113
114DEFINE_HANDSHAKE_EVENT(handshake_submit);
115DEFINE_HANDSHAKE_ERROR(handshake_submit_err);
116DEFINE_HANDSHAKE_EVENT(handshake_cancel);
117DEFINE_HANDSHAKE_EVENT(handshake_cancel_none);
118DEFINE_HANDSHAKE_EVENT(handshake_cancel_busy);
119DEFINE_HANDSHAKE_EVENT(handshake_destruct);
120
121
122TRACE_EVENT(handshake_complete,
123 TP_PROTO(
124 const struct net *net,
125 const struct handshake_req *req,
126 const struct sock *sk,
127 int status
128 ),
129 TP_ARGS(net, req, sk, status),
130 TP_STRUCT__entry(
131 __field(const void *, req)
132 __field(const void *, sk)
133 __field(int, status)
134 __field(unsigned int, netns_ino)
135 ),
136 TP_fast_assign(
137 __entry->req = req;
138 __entry->sk = sk;
139 __entry->status = status;
140 __entry->netns_ino = net->ns.inum;
141 ),
142 TP_printk("req=%p sk=%p status=%d",
143 __entry->req, __entry->sk, __entry->status
144 )
145);
146
147/*
148 * Netlink events
149 */
150
151DEFINE_HANDSHAKE_ERROR(handshake_notify_err);
152DEFINE_HANDSHAKE_FD_EVENT(handshake_cmd_accept);
153DEFINE_HANDSHAKE_ERROR(handshake_cmd_accept_err);
154DEFINE_HANDSHAKE_FD_EVENT(handshake_cmd_done);
155DEFINE_HANDSHAKE_ERROR(handshake_cmd_done_err);
156
157#endif /* _TRACE_HANDSHAKE_H */
158
159#include <trace/define_trace.h>