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