]>
Commit | Line | Data |
---|---|---|
3f117d6f TP |
1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | #undef TRACE_SYSTEM | |
3 | #define TRACE_SYSTEM l2tp | |
4 | ||
5 | #if !defined(_TRACE_L2TP_H) || defined(TRACE_HEADER_MULTI_READ) | |
6 | #define _TRACE_L2TP_H | |
7 | ||
2a03dd8e TP |
8 | #include <linux/tracepoint.h> |
9 | #include <linux/l2tp.h> | |
10 | #include "l2tp_core.h" | |
11 | ||
12 | #define encap_type_name(e) { L2TP_ENCAPTYPE_##e, #e } | |
13 | #define show_encap_type_name(val) \ | |
14 | __print_symbolic(val, \ | |
15 | encap_type_name(UDP), \ | |
16 | encap_type_name(IP)) | |
17 | ||
18 | #define pw_type_name(p) { L2TP_PWTYPE_##p, #p } | |
19 | #define show_pw_type_name(val) \ | |
20 | __print_symbolic(val, \ | |
21 | pw_type_name(ETH_VLAN), \ | |
22 | pw_type_name(ETH), \ | |
23 | pw_type_name(PPP), \ | |
24 | pw_type_name(PPP_AC), \ | |
25 | pw_type_name(IP)) | |
26 | ||
27 | DECLARE_EVENT_CLASS(tunnel_only_evt, | |
28 | TP_PROTO(struct l2tp_tunnel *tunnel), | |
29 | TP_ARGS(tunnel), | |
30 | TP_STRUCT__entry( | |
31 | __array(char, name, L2TP_TUNNEL_NAME_MAX) | |
32 | ), | |
33 | TP_fast_assign( | |
34 | memcpy(__entry->name, tunnel->name, L2TP_TUNNEL_NAME_MAX); | |
35 | ), | |
36 | TP_printk("%s", __entry->name) | |
37 | ); | |
38 | ||
39 | DECLARE_EVENT_CLASS(session_only_evt, | |
40 | TP_PROTO(struct l2tp_session *session), | |
41 | TP_ARGS(session), | |
42 | TP_STRUCT__entry( | |
43 | __array(char, name, L2TP_SESSION_NAME_MAX) | |
44 | ), | |
45 | TP_fast_assign( | |
46 | memcpy(__entry->name, session->name, L2TP_SESSION_NAME_MAX); | |
47 | ), | |
48 | TP_printk("%s", __entry->name) | |
49 | ); | |
50 | ||
51 | TRACE_EVENT(register_tunnel, | |
52 | TP_PROTO(struct l2tp_tunnel *tunnel), | |
53 | TP_ARGS(tunnel), | |
54 | TP_STRUCT__entry( | |
55 | __array(char, name, L2TP_TUNNEL_NAME_MAX) | |
56 | __field(int, fd) | |
57 | __field(u32, tid) | |
58 | __field(u32, ptid) | |
59 | __field(int, version) | |
60 | __field(enum l2tp_encap_type, encap) | |
61 | ), | |
62 | TP_fast_assign( | |
63 | memcpy(__entry->name, tunnel->name, L2TP_TUNNEL_NAME_MAX); | |
64 | __entry->fd = tunnel->fd; | |
65 | __entry->tid = tunnel->tunnel_id; | |
66 | __entry->ptid = tunnel->peer_tunnel_id; | |
67 | __entry->version = tunnel->version; | |
68 | __entry->encap = tunnel->encap; | |
69 | ), | |
70 | TP_printk("%s: type=%s encap=%s version=L2TPv%d tid=%u ptid=%u fd=%d", | |
71 | __entry->name, | |
72 | __entry->fd > 0 ? "managed" : "unmanaged", | |
73 | show_encap_type_name(__entry->encap), | |
74 | __entry->version, | |
75 | __entry->tid, | |
76 | __entry->ptid, | |
77 | __entry->fd) | |
78 | ); | |
79 | ||
80 | DEFINE_EVENT(tunnel_only_evt, delete_tunnel, | |
81 | TP_PROTO(struct l2tp_tunnel *tunnel), | |
82 | TP_ARGS(tunnel) | |
83 | ); | |
84 | ||
85 | DEFINE_EVENT(tunnel_only_evt, free_tunnel, | |
86 | TP_PROTO(struct l2tp_tunnel *tunnel), | |
87 | TP_ARGS(tunnel) | |
88 | ); | |
89 | ||
90 | TRACE_EVENT(register_session, | |
91 | TP_PROTO(struct l2tp_session *session), | |
92 | TP_ARGS(session), | |
93 | TP_STRUCT__entry( | |
94 | __array(char, name, L2TP_SESSION_NAME_MAX) | |
95 | __field(u32, tid) | |
96 | __field(u32, ptid) | |
97 | __field(u32, sid) | |
98 | __field(u32, psid) | |
99 | __field(enum l2tp_pwtype, pwtype) | |
100 | ), | |
101 | TP_fast_assign( | |
102 | memcpy(__entry->name, session->name, L2TP_SESSION_NAME_MAX); | |
103 | __entry->tid = session->tunnel ? session->tunnel->tunnel_id : 0; | |
104 | __entry->ptid = session->tunnel ? session->tunnel->peer_tunnel_id : 0; | |
105 | __entry->sid = session->session_id; | |
106 | __entry->psid = session->peer_session_id; | |
107 | __entry->pwtype = session->pwtype; | |
108 | ), | |
109 | TP_printk("%s: pseudowire=%s sid=%u psid=%u tid=%u ptid=%u", | |
110 | __entry->name, | |
111 | show_pw_type_name(__entry->pwtype), | |
112 | __entry->sid, | |
113 | __entry->psid, | |
114 | __entry->sid, | |
115 | __entry->psid) | |
116 | ); | |
117 | ||
118 | DEFINE_EVENT(session_only_evt, delete_session, | |
119 | TP_PROTO(struct l2tp_session *session), | |
120 | TP_ARGS(session) | |
121 | ); | |
122 | ||
123 | DEFINE_EVENT(session_only_evt, free_session, | |
124 | TP_PROTO(struct l2tp_session *session), | |
125 | TP_ARGS(session) | |
126 | ); | |
127 | ||
128 | DEFINE_EVENT(session_only_evt, session_seqnum_lns_enable, | |
129 | TP_PROTO(struct l2tp_session *session), | |
130 | TP_ARGS(session) | |
131 | ); | |
132 | ||
133 | DEFINE_EVENT(session_only_evt, session_seqnum_lns_disable, | |
134 | TP_PROTO(struct l2tp_session *session), | |
135 | TP_ARGS(session) | |
136 | ); | |
137 | ||
138 | DECLARE_EVENT_CLASS(session_seqnum_evt, | |
139 | TP_PROTO(struct l2tp_session *session), | |
140 | TP_ARGS(session), | |
141 | TP_STRUCT__entry( | |
142 | __array(char, name, L2TP_SESSION_NAME_MAX) | |
143 | __field(u32, ns) | |
144 | __field(u32, nr) | |
145 | ), | |
146 | TP_fast_assign( | |
147 | memcpy(__entry->name, session->name, L2TP_SESSION_NAME_MAX); | |
148 | __entry->ns = session->ns; | |
149 | __entry->nr = session->nr; | |
150 | ), | |
151 | TP_printk("%s: ns=%u nr=%u", | |
152 | __entry->name, | |
153 | __entry->ns, | |
154 | __entry->nr) | |
155 | ); | |
156 | ||
157 | DEFINE_EVENT(session_seqnum_evt, session_seqnum_update, | |
158 | TP_PROTO(struct l2tp_session *session), | |
159 | TP_ARGS(session) | |
160 | ); | |
161 | ||
162 | DEFINE_EVENT(session_seqnum_evt, session_seqnum_reset, | |
163 | TP_PROTO(struct l2tp_session *session), | |
164 | TP_ARGS(session) | |
165 | ); | |
166 | ||
167 | DECLARE_EVENT_CLASS(session_pkt_discard_evt, | |
168 | TP_PROTO(struct l2tp_session *session, u32 pkt_ns), | |
169 | TP_ARGS(session, pkt_ns), | |
170 | TP_STRUCT__entry( | |
171 | __array(char, name, L2TP_SESSION_NAME_MAX) | |
172 | __field(u32, pkt_ns) | |
173 | __field(u32, my_nr) | |
174 | __field(u32, reorder_q_len) | |
175 | ), | |
176 | TP_fast_assign( | |
177 | memcpy(__entry->name, session->name, L2TP_SESSION_NAME_MAX); | |
178 | __entry->pkt_ns = pkt_ns, | |
179 | __entry->my_nr = session->nr; | |
180 | __entry->reorder_q_len = skb_queue_len(&session->reorder_q); | |
181 | ), | |
182 | TP_printk("%s: pkt_ns=%u my_nr=%u reorder_q_len=%u", | |
183 | __entry->name, | |
184 | __entry->pkt_ns, | |
185 | __entry->my_nr, | |
186 | __entry->reorder_q_len) | |
187 | ); | |
188 | ||
189 | DEFINE_EVENT(session_pkt_discard_evt, session_pkt_expired, | |
190 | TP_PROTO(struct l2tp_session *session, u32 pkt_ns), | |
191 | TP_ARGS(session, pkt_ns) | |
192 | ); | |
193 | ||
194 | DEFINE_EVENT(session_pkt_discard_evt, session_pkt_outside_rx_window, | |
195 | TP_PROTO(struct l2tp_session *session, u32 pkt_ns), | |
196 | TP_ARGS(session, pkt_ns) | |
197 | ); | |
198 | ||
199 | DEFINE_EVENT(session_pkt_discard_evt, session_pkt_oos, | |
200 | TP_PROTO(struct l2tp_session *session, u32 pkt_ns), | |
201 | TP_ARGS(session, pkt_ns) | |
202 | ); | |
203 | ||
3f117d6f TP |
204 | #endif /* _TRACE_L2TP_H */ |
205 | ||
206 | /* This part must be outside protection */ | |
207 | #undef TRACE_INCLUDE_PATH | |
208 | #define TRACE_INCLUDE_PATH . | |
209 | #undef TRACE_INCLUDE_FILE | |
210 | #define TRACE_INCLUDE_FILE trace | |
211 | #include <trace/define_trace.h> |