Warning: This file is not a C or C++ file. It does not have highlighting.
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
2 | /* |
3 | * Copyright (c) 2018 Oracle. All rights reserved. |
4 | * |
5 | * Trace point definitions for the "rpcgss" subsystem. |
6 | */ |
7 | |
8 | #undef TRACE_SYSTEM |
9 | #define TRACE_SYSTEM rpcgss |
10 | |
11 | #if !defined(_TRACE_RPCGSS_H) || defined(TRACE_HEADER_MULTI_READ) |
12 | #define _TRACE_RPCGSS_H |
13 | |
14 | #include <linux/tracepoint.h> |
15 | |
16 | #include <trace/misc/sunrpc.h> |
17 | |
18 | /** |
19 | ** GSS-API related trace events |
20 | **/ |
21 | |
22 | TRACE_DEFINE_ENUM(RPC_GSS_SVC_NONE); |
23 | TRACE_DEFINE_ENUM(RPC_GSS_SVC_INTEGRITY); |
24 | TRACE_DEFINE_ENUM(RPC_GSS_SVC_PRIVACY); |
25 | |
26 | #define show_gss_service(x) \ |
27 | __print_symbolic(x, \ |
28 | { RPC_GSS_SVC_NONE, "none" }, \ |
29 | { RPC_GSS_SVC_INTEGRITY, "integrity" }, \ |
30 | { RPC_GSS_SVC_PRIVACY, "privacy" }) |
31 | |
32 | TRACE_DEFINE_ENUM(GSS_S_BAD_MECH); |
33 | TRACE_DEFINE_ENUM(GSS_S_BAD_NAME); |
34 | TRACE_DEFINE_ENUM(GSS_S_BAD_NAMETYPE); |
35 | TRACE_DEFINE_ENUM(GSS_S_BAD_BINDINGS); |
36 | TRACE_DEFINE_ENUM(GSS_S_BAD_STATUS); |
37 | TRACE_DEFINE_ENUM(GSS_S_BAD_SIG); |
38 | TRACE_DEFINE_ENUM(GSS_S_NO_CRED); |
39 | TRACE_DEFINE_ENUM(GSS_S_NO_CONTEXT); |
40 | TRACE_DEFINE_ENUM(GSS_S_DEFECTIVE_TOKEN); |
41 | TRACE_DEFINE_ENUM(GSS_S_DEFECTIVE_CREDENTIAL); |
42 | TRACE_DEFINE_ENUM(GSS_S_CREDENTIALS_EXPIRED); |
43 | TRACE_DEFINE_ENUM(GSS_S_CONTEXT_EXPIRED); |
44 | TRACE_DEFINE_ENUM(GSS_S_FAILURE); |
45 | TRACE_DEFINE_ENUM(GSS_S_BAD_QOP); |
46 | TRACE_DEFINE_ENUM(GSS_S_UNAUTHORIZED); |
47 | TRACE_DEFINE_ENUM(GSS_S_UNAVAILABLE); |
48 | TRACE_DEFINE_ENUM(GSS_S_DUPLICATE_ELEMENT); |
49 | TRACE_DEFINE_ENUM(GSS_S_NAME_NOT_MN); |
50 | TRACE_DEFINE_ENUM(GSS_S_CONTINUE_NEEDED); |
51 | TRACE_DEFINE_ENUM(GSS_S_DUPLICATE_TOKEN); |
52 | TRACE_DEFINE_ENUM(GSS_S_OLD_TOKEN); |
53 | TRACE_DEFINE_ENUM(GSS_S_UNSEQ_TOKEN); |
54 | TRACE_DEFINE_ENUM(GSS_S_GAP_TOKEN); |
55 | |
56 | #define show_gss_status(x) \ |
57 | __print_flags(x, "|", \ |
58 | { GSS_S_BAD_MECH, "GSS_S_BAD_MECH" }, \ |
59 | { GSS_S_BAD_NAME, "GSS_S_BAD_NAME" }, \ |
60 | { GSS_S_BAD_NAMETYPE, "GSS_S_BAD_NAMETYPE" }, \ |
61 | { GSS_S_BAD_BINDINGS, "GSS_S_BAD_BINDINGS" }, \ |
62 | { GSS_S_BAD_STATUS, "GSS_S_BAD_STATUS" }, \ |
63 | { GSS_S_BAD_SIG, "GSS_S_BAD_SIG" }, \ |
64 | { GSS_S_NO_CRED, "GSS_S_NO_CRED" }, \ |
65 | { GSS_S_NO_CONTEXT, "GSS_S_NO_CONTEXT" }, \ |
66 | { GSS_S_DEFECTIVE_TOKEN, "GSS_S_DEFECTIVE_TOKEN" }, \ |
67 | { GSS_S_DEFECTIVE_CREDENTIAL, "GSS_S_DEFECTIVE_CREDENTIAL" }, \ |
68 | { GSS_S_CREDENTIALS_EXPIRED, "GSS_S_CREDENTIALS_EXPIRED" }, \ |
69 | { GSS_S_CONTEXT_EXPIRED, "GSS_S_CONTEXT_EXPIRED" }, \ |
70 | { GSS_S_FAILURE, "GSS_S_FAILURE" }, \ |
71 | { GSS_S_BAD_QOP, "GSS_S_BAD_QOP" }, \ |
72 | { GSS_S_UNAUTHORIZED, "GSS_S_UNAUTHORIZED" }, \ |
73 | { GSS_S_UNAVAILABLE, "GSS_S_UNAVAILABLE" }, \ |
74 | { GSS_S_DUPLICATE_ELEMENT, "GSS_S_DUPLICATE_ELEMENT" }, \ |
75 | { GSS_S_NAME_NOT_MN, "GSS_S_NAME_NOT_MN" }, \ |
76 | { GSS_S_CONTINUE_NEEDED, "GSS_S_CONTINUE_NEEDED" }, \ |
77 | { GSS_S_DUPLICATE_TOKEN, "GSS_S_DUPLICATE_TOKEN" }, \ |
78 | { GSS_S_OLD_TOKEN, "GSS_S_OLD_TOKEN" }, \ |
79 | { GSS_S_UNSEQ_TOKEN, "GSS_S_UNSEQ_TOKEN" }, \ |
80 | { GSS_S_GAP_TOKEN, "GSS_S_GAP_TOKEN" }) |
81 | |
82 | |
83 | DECLARE_EVENT_CLASS(rpcgss_gssapi_event, |
84 | TP_PROTO( |
85 | const struct rpc_task *task, |
86 | u32 maj_stat |
87 | ), |
88 | |
89 | TP_ARGS(task, maj_stat), |
90 | |
91 | TP_STRUCT__entry( |
92 | __field(unsigned int, task_id) |
93 | __field(unsigned int, client_id) |
94 | __field(u32, maj_stat) |
95 | |
96 | ), |
97 | |
98 | TP_fast_assign( |
99 | __entry->task_id = task->tk_pid; |
100 | __entry->client_id = task->tk_client->cl_clid; |
101 | __entry->maj_stat = maj_stat; |
102 | ), |
103 | |
104 | TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " maj_stat=%s", |
105 | __entry->task_id, __entry->client_id, |
106 | __entry->maj_stat == 0 ? |
107 | "GSS_S_COMPLETE" : show_gss_status(__entry->maj_stat)) |
108 | ); |
109 | |
110 | #define DEFINE_GSSAPI_EVENT(name) \ |
111 | DEFINE_EVENT(rpcgss_gssapi_event, rpcgss_##name, \ |
112 | TP_PROTO( \ |
113 | const struct rpc_task *task, \ |
114 | u32 maj_stat \ |
115 | ), \ |
116 | TP_ARGS(task, maj_stat)) |
117 | |
118 | TRACE_EVENT(rpcgss_import_ctx, |
119 | TP_PROTO( |
120 | int status |
121 | ), |
122 | |
123 | TP_ARGS(status), |
124 | |
125 | TP_STRUCT__entry( |
126 | __field(int, status) |
127 | ), |
128 | |
129 | TP_fast_assign( |
130 | __entry->status = status; |
131 | ), |
132 | |
133 | TP_printk("status=%d", __entry->status) |
134 | ); |
135 | |
136 | DEFINE_GSSAPI_EVENT(get_mic); |
137 | DEFINE_GSSAPI_EVENT(verify_mic); |
138 | DEFINE_GSSAPI_EVENT(wrap); |
139 | DEFINE_GSSAPI_EVENT(unwrap); |
140 | |
141 | DECLARE_EVENT_CLASS(rpcgss_ctx_class, |
142 | TP_PROTO( |
143 | const struct gss_cred *gc |
144 | ), |
145 | |
146 | TP_ARGS(gc), |
147 | |
148 | TP_STRUCT__entry( |
149 | __field(const void *, cred) |
150 | __field(unsigned long, service) |
151 | __string(principal, gc->gc_principal) |
152 | ), |
153 | |
154 | TP_fast_assign( |
155 | __entry->cred = gc; |
156 | __entry->service = gc->gc_service; |
157 | __assign_str(principal, gc->gc_principal); |
158 | ), |
159 | |
160 | TP_printk("cred=%p service=%s principal='%s'", |
161 | __entry->cred, show_gss_service(__entry->service), |
162 | __get_str(principal)) |
163 | ); |
164 | |
165 | #define DEFINE_CTX_EVENT(name) \ |
166 | DEFINE_EVENT(rpcgss_ctx_class, rpcgss_ctx_##name, \ |
167 | TP_PROTO( \ |
168 | const struct gss_cred *gc \ |
169 | ), \ |
170 | TP_ARGS(gc)) |
171 | |
172 | DEFINE_CTX_EVENT(init); |
173 | DEFINE_CTX_EVENT(destroy); |
174 | |
175 | DECLARE_EVENT_CLASS(rpcgss_svc_gssapi_class, |
176 | TP_PROTO( |
177 | const struct svc_rqst *rqstp, |
178 | u32 maj_stat |
179 | ), |
180 | |
181 | TP_ARGS(rqstp, maj_stat), |
182 | |
183 | TP_STRUCT__entry( |
184 | __field(u32, xid) |
185 | __field(u32, maj_stat) |
186 | __string(addr, rqstp->rq_xprt->xpt_remotebuf) |
187 | ), |
188 | |
189 | TP_fast_assign( |
190 | __entry->xid = __be32_to_cpu(rqstp->rq_xid); |
191 | __entry->maj_stat = maj_stat; |
192 | __assign_str(addr, rqstp->rq_xprt->xpt_remotebuf); |
193 | ), |
194 | |
195 | TP_printk("addr=%s xid=0x%08x maj_stat=%s", |
196 | __get_str(addr), __entry->xid, |
197 | __entry->maj_stat == 0 ? |
198 | "GSS_S_COMPLETE" : show_gss_status(__entry->maj_stat)) |
199 | ); |
200 | |
201 | #define DEFINE_SVC_GSSAPI_EVENT(name) \ |
202 | DEFINE_EVENT(rpcgss_svc_gssapi_class, rpcgss_svc_##name, \ |
203 | TP_PROTO( \ |
204 | const struct svc_rqst *rqstp, \ |
205 | u32 maj_stat \ |
206 | ), \ |
207 | TP_ARGS(rqstp, maj_stat)) |
208 | |
209 | DEFINE_SVC_GSSAPI_EVENT(wrap); |
210 | DEFINE_SVC_GSSAPI_EVENT(unwrap); |
211 | DEFINE_SVC_GSSAPI_EVENT(mic); |
212 | DEFINE_SVC_GSSAPI_EVENT(get_mic); |
213 | |
214 | TRACE_EVENT(rpcgss_svc_wrap_failed, |
215 | TP_PROTO( |
216 | const struct svc_rqst *rqstp |
217 | ), |
218 | |
219 | TP_ARGS(rqstp), |
220 | |
221 | TP_STRUCT__entry( |
222 | __field(u32, xid) |
223 | __string(addr, rqstp->rq_xprt->xpt_remotebuf) |
224 | ), |
225 | |
226 | TP_fast_assign( |
227 | __entry->xid = be32_to_cpu(rqstp->rq_xid); |
228 | __assign_str(addr, rqstp->rq_xprt->xpt_remotebuf); |
229 | ), |
230 | |
231 | TP_printk("addr=%s xid=0x%08x", __get_str(addr), __entry->xid) |
232 | ); |
233 | |
234 | TRACE_EVENT(rpcgss_svc_unwrap_failed, |
235 | TP_PROTO( |
236 | const struct svc_rqst *rqstp |
237 | ), |
238 | |
239 | TP_ARGS(rqstp), |
240 | |
241 | TP_STRUCT__entry( |
242 | __field(u32, xid) |
243 | __string(addr, rqstp->rq_xprt->xpt_remotebuf) |
244 | ), |
245 | |
246 | TP_fast_assign( |
247 | __entry->xid = be32_to_cpu(rqstp->rq_xid); |
248 | __assign_str(addr, rqstp->rq_xprt->xpt_remotebuf); |
249 | ), |
250 | |
251 | TP_printk("addr=%s xid=0x%08x", __get_str(addr), __entry->xid) |
252 | ); |
253 | |
254 | TRACE_EVENT(rpcgss_svc_seqno_bad, |
255 | TP_PROTO( |
256 | const struct svc_rqst *rqstp, |
257 | u32 expected, |
258 | u32 received |
259 | ), |
260 | |
261 | TP_ARGS(rqstp, expected, received), |
262 | |
263 | TP_STRUCT__entry( |
264 | __field(u32, expected) |
265 | __field(u32, received) |
266 | __field(u32, xid) |
267 | __string(addr, rqstp->rq_xprt->xpt_remotebuf) |
268 | ), |
269 | |
270 | TP_fast_assign( |
271 | __entry->expected = expected; |
272 | __entry->received = received; |
273 | __entry->xid = __be32_to_cpu(rqstp->rq_xid); |
274 | __assign_str(addr, rqstp->rq_xprt->xpt_remotebuf); |
275 | ), |
276 | |
277 | TP_printk("addr=%s xid=0x%08x expected seqno %u, received seqno %u", |
278 | __get_str(addr), __entry->xid, |
279 | __entry->expected, __entry->received) |
280 | ); |
281 | |
282 | TRACE_EVENT(rpcgss_svc_accept_upcall, |
283 | TP_PROTO( |
284 | const struct svc_rqst *rqstp, |
285 | u32 major_status, |
286 | u32 minor_status |
287 | ), |
288 | |
289 | TP_ARGS(rqstp, major_status, minor_status), |
290 | |
291 | TP_STRUCT__entry( |
292 | __field(u32, minor_status) |
293 | __field(unsigned long, major_status) |
294 | __field(u32, xid) |
295 | __string(addr, rqstp->rq_xprt->xpt_remotebuf) |
296 | ), |
297 | |
298 | TP_fast_assign( |
299 | __entry->minor_status = minor_status; |
300 | __entry->major_status = major_status; |
301 | __entry->xid = be32_to_cpu(rqstp->rq_xid); |
302 | __assign_str(addr, rqstp->rq_xprt->xpt_remotebuf); |
303 | ), |
304 | |
305 | TP_printk("addr=%s xid=0x%08x major_status=%s (0x%08lx) minor_status=%u", |
306 | __get_str(addr), __entry->xid, |
307 | (__entry->major_status == 0) ? "GSS_S_COMPLETE" : |
308 | show_gss_status(__entry->major_status), |
309 | __entry->major_status, __entry->minor_status |
310 | ) |
311 | ); |
312 | |
313 | TRACE_EVENT(rpcgss_svc_authenticate, |
314 | TP_PROTO( |
315 | const struct svc_rqst *rqstp, |
316 | const struct rpc_gss_wire_cred *gc |
317 | ), |
318 | |
319 | TP_ARGS(rqstp, gc), |
320 | |
321 | TP_STRUCT__entry( |
322 | __field(u32, seqno) |
323 | __field(u32, xid) |
324 | __string(addr, rqstp->rq_xprt->xpt_remotebuf) |
325 | ), |
326 | |
327 | TP_fast_assign( |
328 | __entry->xid = be32_to_cpu(rqstp->rq_xid); |
329 | __entry->seqno = gc->gc_seq; |
330 | __assign_str(addr, rqstp->rq_xprt->xpt_remotebuf); |
331 | ), |
332 | |
333 | TP_printk("addr=%s xid=0x%08x seqno=%u", __get_str(addr), |
334 | __entry->xid, __entry->seqno) |
335 | ); |
336 | |
337 | |
338 | /** |
339 | ** GSS auth unwrap failures |
340 | **/ |
341 | |
342 | TRACE_EVENT(rpcgss_unwrap_failed, |
343 | TP_PROTO( |
344 | const struct rpc_task *task |
345 | ), |
346 | |
347 | TP_ARGS(task), |
348 | |
349 | TP_STRUCT__entry( |
350 | __field(unsigned int, task_id) |
351 | __field(unsigned int, client_id) |
352 | ), |
353 | |
354 | TP_fast_assign( |
355 | __entry->task_id = task->tk_pid; |
356 | __entry->client_id = task->tk_client->cl_clid; |
357 | ), |
358 | |
359 | TP_printk(SUNRPC_TRACE_TASK_SPECIFIER, |
360 | __entry->task_id, __entry->client_id) |
361 | ); |
362 | |
363 | TRACE_EVENT(rpcgss_bad_seqno, |
364 | TP_PROTO( |
365 | const struct rpc_task *task, |
366 | u32 expected, |
367 | u32 received |
368 | ), |
369 | |
370 | TP_ARGS(task, expected, received), |
371 | |
372 | TP_STRUCT__entry( |
373 | __field(unsigned int, task_id) |
374 | __field(unsigned int, client_id) |
375 | __field(u32, expected) |
376 | __field(u32, received) |
377 | ), |
378 | |
379 | TP_fast_assign( |
380 | __entry->task_id = task->tk_pid; |
381 | __entry->client_id = task->tk_client->cl_clid; |
382 | __entry->expected = expected; |
383 | __entry->received = received; |
384 | ), |
385 | |
386 | TP_printk(SUNRPC_TRACE_TASK_SPECIFIER |
387 | " expected seqno %u, received seqno %u", |
388 | __entry->task_id, __entry->client_id, |
389 | __entry->expected, __entry->received) |
390 | ); |
391 | |
392 | TRACE_EVENT(rpcgss_seqno, |
393 | TP_PROTO( |
394 | const struct rpc_task *task |
395 | ), |
396 | |
397 | TP_ARGS(task), |
398 | |
399 | TP_STRUCT__entry( |
400 | __field(unsigned int, task_id) |
401 | __field(unsigned int, client_id) |
402 | __field(u32, xid) |
403 | __field(u32, seqno) |
404 | ), |
405 | |
406 | TP_fast_assign( |
407 | const struct rpc_rqst *rqst = task->tk_rqstp; |
408 | |
409 | __entry->task_id = task->tk_pid; |
410 | __entry->client_id = task->tk_client->cl_clid; |
411 | __entry->xid = be32_to_cpu(rqst->rq_xid); |
412 | __entry->seqno = rqst->rq_seqno; |
413 | ), |
414 | |
415 | TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x seqno=%u", |
416 | __entry->task_id, __entry->client_id, |
417 | __entry->xid, __entry->seqno) |
418 | ); |
419 | |
420 | TRACE_EVENT(rpcgss_need_reencode, |
421 | TP_PROTO( |
422 | const struct rpc_task *task, |
423 | u32 seq_xmit, |
424 | bool ret |
425 | ), |
426 | |
427 | TP_ARGS(task, seq_xmit, ret), |
428 | |
429 | TP_STRUCT__entry( |
430 | __field(unsigned int, task_id) |
431 | __field(unsigned int, client_id) |
432 | __field(u32, xid) |
433 | __field(u32, seq_xmit) |
434 | __field(u32, seqno) |
435 | __field(bool, ret) |
436 | ), |
437 | |
438 | TP_fast_assign( |
439 | __entry->task_id = task->tk_pid; |
440 | __entry->client_id = task->tk_client->cl_clid; |
441 | __entry->xid = be32_to_cpu(task->tk_rqstp->rq_xid); |
442 | __entry->seq_xmit = seq_xmit; |
443 | __entry->seqno = task->tk_rqstp->rq_seqno; |
444 | __entry->ret = ret; |
445 | ), |
446 | |
447 | TP_printk(SUNRPC_TRACE_TASK_SPECIFIER |
448 | " xid=0x%08x rq_seqno=%u seq_xmit=%u reencode %sneeded", |
449 | __entry->task_id, __entry->client_id, |
450 | __entry->xid, __entry->seqno, __entry->seq_xmit, |
451 | __entry->ret ? "" : "un") |
452 | ); |
453 | |
454 | TRACE_EVENT(rpcgss_update_slack, |
455 | TP_PROTO( |
456 | const struct rpc_task *task, |
457 | const struct rpc_auth *auth |
458 | ), |
459 | |
460 | TP_ARGS(task, auth), |
461 | |
462 | TP_STRUCT__entry( |
463 | __field(unsigned int, task_id) |
464 | __field(unsigned int, client_id) |
465 | __field(u32, xid) |
466 | __field(const void *, auth) |
467 | __field(unsigned int, rslack) |
468 | __field(unsigned int, ralign) |
469 | __field(unsigned int, verfsize) |
470 | ), |
471 | |
472 | TP_fast_assign( |
473 | __entry->task_id = task->tk_pid; |
474 | __entry->client_id = task->tk_client->cl_clid; |
475 | __entry->xid = be32_to_cpu(task->tk_rqstp->rq_xid); |
476 | __entry->auth = auth; |
477 | __entry->rslack = auth->au_rslack; |
478 | __entry->ralign = auth->au_ralign; |
479 | __entry->verfsize = auth->au_verfsize; |
480 | ), |
481 | |
482 | TP_printk(SUNRPC_TRACE_TASK_SPECIFIER |
483 | " xid=0x%08x auth=%p rslack=%u ralign=%u verfsize=%u\n", |
484 | __entry->task_id, __entry->client_id, __entry->xid, |
485 | __entry->auth, __entry->rslack, __entry->ralign, |
486 | __entry->verfsize) |
487 | ); |
488 | |
489 | DECLARE_EVENT_CLASS(rpcgss_svc_seqno_class, |
490 | TP_PROTO( |
491 | const struct svc_rqst *rqstp, |
492 | u32 seqno |
493 | ), |
494 | |
495 | TP_ARGS(rqstp, seqno), |
496 | |
497 | TP_STRUCT__entry( |
498 | __field(u32, xid) |
499 | __field(u32, seqno) |
500 | ), |
501 | |
502 | TP_fast_assign( |
503 | __entry->xid = be32_to_cpu(rqstp->rq_xid); |
504 | __entry->seqno = seqno; |
505 | ), |
506 | |
507 | TP_printk("xid=0x%08x seqno=%u", |
508 | __entry->xid, __entry->seqno) |
509 | ); |
510 | |
511 | #define DEFINE_SVC_SEQNO_EVENT(name) \ |
512 | DEFINE_EVENT(rpcgss_svc_seqno_class, rpcgss_svc_seqno_##name, \ |
513 | TP_PROTO( \ |
514 | const struct svc_rqst *rqstp, \ |
515 | u32 seqno \ |
516 | ), \ |
517 | TP_ARGS(rqstp, seqno)) |
518 | |
519 | DEFINE_SVC_SEQNO_EVENT(large); |
520 | DEFINE_SVC_SEQNO_EVENT(seen); |
521 | |
522 | TRACE_EVENT(rpcgss_svc_seqno_low, |
523 | TP_PROTO( |
524 | const struct svc_rqst *rqstp, |
525 | u32 seqno, |
526 | u32 min, |
527 | u32 max |
528 | ), |
529 | |
530 | TP_ARGS(rqstp, seqno, min, max), |
531 | |
532 | TP_STRUCT__entry( |
533 | __field(u32, xid) |
534 | __field(u32, seqno) |
535 | __field(u32, min) |
536 | __field(u32, max) |
537 | ), |
538 | |
539 | TP_fast_assign( |
540 | __entry->xid = be32_to_cpu(rqstp->rq_xid); |
541 | __entry->seqno = seqno; |
542 | __entry->min = min; |
543 | __entry->max = max; |
544 | ), |
545 | |
546 | TP_printk("xid=0x%08x seqno=%u window=[%u..%u]", |
547 | __entry->xid, __entry->seqno, __entry->min, __entry->max) |
548 | ); |
549 | |
550 | /** |
551 | ** gssd upcall related trace events |
552 | **/ |
553 | |
554 | TRACE_EVENT(rpcgss_upcall_msg, |
555 | TP_PROTO( |
556 | const char *buf |
557 | ), |
558 | |
559 | TP_ARGS(buf), |
560 | |
561 | TP_STRUCT__entry( |
562 | __string(msg, buf) |
563 | ), |
564 | |
565 | TP_fast_assign( |
566 | __assign_str(msg, buf); |
567 | ), |
568 | |
569 | TP_printk("msg='%s'", __get_str(msg)) |
570 | ); |
571 | |
572 | TRACE_EVENT(rpcgss_upcall_result, |
573 | TP_PROTO( |
574 | u32 uid, |
575 | int result |
576 | ), |
577 | |
578 | TP_ARGS(uid, result), |
579 | |
580 | TP_STRUCT__entry( |
581 | __field(u32, uid) |
582 | __field(int, result) |
583 | |
584 | ), |
585 | |
586 | TP_fast_assign( |
587 | __entry->uid = uid; |
588 | __entry->result = result; |
589 | ), |
590 | |
591 | TP_printk("for uid %u, result=%d", __entry->uid, __entry->result) |
592 | ); |
593 | |
594 | TRACE_EVENT(rpcgss_context, |
595 | TP_PROTO( |
596 | u32 window_size, |
597 | unsigned long expiry, |
598 | unsigned long now, |
599 | unsigned int timeout, |
600 | unsigned int len, |
601 | const u8 *data |
602 | ), |
603 | |
604 | TP_ARGS(window_size, expiry, now, timeout, len, data), |
605 | |
606 | TP_STRUCT__entry( |
607 | __field(unsigned long, expiry) |
608 | __field(unsigned long, now) |
609 | __field(unsigned int, timeout) |
610 | __field(u32, window_size) |
611 | __field(int, len) |
612 | __string(acceptor, data) |
613 | ), |
614 | |
615 | TP_fast_assign( |
616 | __entry->expiry = expiry; |
617 | __entry->now = now; |
618 | __entry->timeout = timeout; |
619 | __entry->window_size = window_size; |
620 | __entry->len = len; |
621 | strncpy(__get_str(acceptor), data, len); |
622 | ), |
623 | |
624 | TP_printk("win_size=%u expiry=%lu now=%lu timeout=%u acceptor=%.*s", |
625 | __entry->window_size, __entry->expiry, __entry->now, |
626 | __entry->timeout, __entry->len, __get_str(acceptor)) |
627 | ); |
628 | |
629 | |
630 | /** |
631 | ** Miscellaneous events |
632 | */ |
633 | |
634 | TRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5); |
635 | TRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5I); |
636 | TRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5P); |
637 | |
638 | #define show_pseudoflavor(x) \ |
639 | __print_symbolic(x, \ |
640 | { RPC_AUTH_GSS_KRB5, "RPC_AUTH_GSS_KRB5" }, \ |
641 | { RPC_AUTH_GSS_KRB5I, "RPC_AUTH_GSS_KRB5I" }, \ |
642 | { RPC_AUTH_GSS_KRB5P, "RPC_AUTH_GSS_KRB5P" }) |
643 | |
644 | |
645 | TRACE_EVENT(rpcgss_createauth, |
646 | TP_PROTO( |
647 | unsigned int flavor, |
648 | int error |
649 | ), |
650 | |
651 | TP_ARGS(flavor, error), |
652 | |
653 | TP_STRUCT__entry( |
654 | __field(unsigned int, flavor) |
655 | __field(int, error) |
656 | |
657 | ), |
658 | |
659 | TP_fast_assign( |
660 | __entry->flavor = flavor; |
661 | __entry->error = error; |
662 | ), |
663 | |
664 | TP_printk("flavor=%s error=%d", |
665 | show_pseudoflavor(__entry->flavor), __entry->error) |
666 | ); |
667 | |
668 | TRACE_EVENT(rpcgss_oid_to_mech, |
669 | TP_PROTO( |
670 | const char *oid |
671 | ), |
672 | |
673 | TP_ARGS(oid), |
674 | |
675 | TP_STRUCT__entry( |
676 | __string(oid, oid) |
677 | ), |
678 | |
679 | TP_fast_assign( |
680 | __assign_str(oid, oid); |
681 | ), |
682 | |
683 | TP_printk("mech for oid %s was not found", __get_str(oid)) |
684 | ); |
685 | |
686 | #endif /* _TRACE_RPCGSS_H */ |
687 | |
688 | #include <trace/define_trace.h> |
689 |
Warning: This file is not a C or C++ file. It does not have highlighting.