0001
0002
0003
0004
0005
0006
0007
0008 #undef TRACE_SYSTEM
0009 #define TRACE_SYSTEM rpcgss
0010
0011 #if !defined(_TRACE_RPCGSS_H) || defined(TRACE_HEADER_MULTI_READ)
0012 #define _TRACE_RPCGSS_H
0013
0014 #include <linux/tracepoint.h>
0015
0016 #include <trace/events/sunrpc_base.h>
0017
0018
0019
0020
0021
0022 TRACE_DEFINE_ENUM(RPC_GSS_SVC_NONE);
0023 TRACE_DEFINE_ENUM(RPC_GSS_SVC_INTEGRITY);
0024 TRACE_DEFINE_ENUM(RPC_GSS_SVC_PRIVACY);
0025
0026 #define show_gss_service(x) \
0027 __print_symbolic(x, \
0028 { RPC_GSS_SVC_NONE, "none" }, \
0029 { RPC_GSS_SVC_INTEGRITY, "integrity" }, \
0030 { RPC_GSS_SVC_PRIVACY, "privacy" })
0031
0032 TRACE_DEFINE_ENUM(GSS_S_BAD_MECH);
0033 TRACE_DEFINE_ENUM(GSS_S_BAD_NAME);
0034 TRACE_DEFINE_ENUM(GSS_S_BAD_NAMETYPE);
0035 TRACE_DEFINE_ENUM(GSS_S_BAD_BINDINGS);
0036 TRACE_DEFINE_ENUM(GSS_S_BAD_STATUS);
0037 TRACE_DEFINE_ENUM(GSS_S_BAD_SIG);
0038 TRACE_DEFINE_ENUM(GSS_S_NO_CRED);
0039 TRACE_DEFINE_ENUM(GSS_S_NO_CONTEXT);
0040 TRACE_DEFINE_ENUM(GSS_S_DEFECTIVE_TOKEN);
0041 TRACE_DEFINE_ENUM(GSS_S_DEFECTIVE_CREDENTIAL);
0042 TRACE_DEFINE_ENUM(GSS_S_CREDENTIALS_EXPIRED);
0043 TRACE_DEFINE_ENUM(GSS_S_CONTEXT_EXPIRED);
0044 TRACE_DEFINE_ENUM(GSS_S_FAILURE);
0045 TRACE_DEFINE_ENUM(GSS_S_BAD_QOP);
0046 TRACE_DEFINE_ENUM(GSS_S_UNAUTHORIZED);
0047 TRACE_DEFINE_ENUM(GSS_S_UNAVAILABLE);
0048 TRACE_DEFINE_ENUM(GSS_S_DUPLICATE_ELEMENT);
0049 TRACE_DEFINE_ENUM(GSS_S_NAME_NOT_MN);
0050 TRACE_DEFINE_ENUM(GSS_S_CONTINUE_NEEDED);
0051 TRACE_DEFINE_ENUM(GSS_S_DUPLICATE_TOKEN);
0052 TRACE_DEFINE_ENUM(GSS_S_OLD_TOKEN);
0053 TRACE_DEFINE_ENUM(GSS_S_UNSEQ_TOKEN);
0054 TRACE_DEFINE_ENUM(GSS_S_GAP_TOKEN);
0055
0056 #define show_gss_status(x) \
0057 __print_flags(x, "|", \
0058 { GSS_S_BAD_MECH, "GSS_S_BAD_MECH" }, \
0059 { GSS_S_BAD_NAME, "GSS_S_BAD_NAME" }, \
0060 { GSS_S_BAD_NAMETYPE, "GSS_S_BAD_NAMETYPE" }, \
0061 { GSS_S_BAD_BINDINGS, "GSS_S_BAD_BINDINGS" }, \
0062 { GSS_S_BAD_STATUS, "GSS_S_BAD_STATUS" }, \
0063 { GSS_S_BAD_SIG, "GSS_S_BAD_SIG" }, \
0064 { GSS_S_NO_CRED, "GSS_S_NO_CRED" }, \
0065 { GSS_S_NO_CONTEXT, "GSS_S_NO_CONTEXT" }, \
0066 { GSS_S_DEFECTIVE_TOKEN, "GSS_S_DEFECTIVE_TOKEN" }, \
0067 { GSS_S_DEFECTIVE_CREDENTIAL, "GSS_S_DEFECTIVE_CREDENTIAL" }, \
0068 { GSS_S_CREDENTIALS_EXPIRED, "GSS_S_CREDENTIALS_EXPIRED" }, \
0069 { GSS_S_CONTEXT_EXPIRED, "GSS_S_CONTEXT_EXPIRED" }, \
0070 { GSS_S_FAILURE, "GSS_S_FAILURE" }, \
0071 { GSS_S_BAD_QOP, "GSS_S_BAD_QOP" }, \
0072 { GSS_S_UNAUTHORIZED, "GSS_S_UNAUTHORIZED" }, \
0073 { GSS_S_UNAVAILABLE, "GSS_S_UNAVAILABLE" }, \
0074 { GSS_S_DUPLICATE_ELEMENT, "GSS_S_DUPLICATE_ELEMENT" }, \
0075 { GSS_S_NAME_NOT_MN, "GSS_S_NAME_NOT_MN" }, \
0076 { GSS_S_CONTINUE_NEEDED, "GSS_S_CONTINUE_NEEDED" }, \
0077 { GSS_S_DUPLICATE_TOKEN, "GSS_S_DUPLICATE_TOKEN" }, \
0078 { GSS_S_OLD_TOKEN, "GSS_S_OLD_TOKEN" }, \
0079 { GSS_S_UNSEQ_TOKEN, "GSS_S_UNSEQ_TOKEN" }, \
0080 { GSS_S_GAP_TOKEN, "GSS_S_GAP_TOKEN" })
0081
0082
0083 DECLARE_EVENT_CLASS(rpcgss_gssapi_event,
0084 TP_PROTO(
0085 const struct rpc_task *task,
0086 u32 maj_stat
0087 ),
0088
0089 TP_ARGS(task, maj_stat),
0090
0091 TP_STRUCT__entry(
0092 __field(unsigned int, task_id)
0093 __field(unsigned int, client_id)
0094 __field(u32, maj_stat)
0095
0096 ),
0097
0098 TP_fast_assign(
0099 __entry->task_id = task->tk_pid;
0100 __entry->client_id = task->tk_client->cl_clid;
0101 __entry->maj_stat = maj_stat;
0102 ),
0103
0104 TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " maj_stat=%s",
0105 __entry->task_id, __entry->client_id,
0106 __entry->maj_stat == 0 ?
0107 "GSS_S_COMPLETE" : show_gss_status(__entry->maj_stat))
0108 );
0109
0110 #define DEFINE_GSSAPI_EVENT(name) \
0111 DEFINE_EVENT(rpcgss_gssapi_event, rpcgss_##name, \
0112 TP_PROTO( \
0113 const struct rpc_task *task, \
0114 u32 maj_stat \
0115 ), \
0116 TP_ARGS(task, maj_stat))
0117
0118 TRACE_EVENT(rpcgss_import_ctx,
0119 TP_PROTO(
0120 int status
0121 ),
0122
0123 TP_ARGS(status),
0124
0125 TP_STRUCT__entry(
0126 __field(int, status)
0127 ),
0128
0129 TP_fast_assign(
0130 __entry->status = status;
0131 ),
0132
0133 TP_printk("status=%d", __entry->status)
0134 );
0135
0136 DEFINE_GSSAPI_EVENT(get_mic);
0137 DEFINE_GSSAPI_EVENT(verify_mic);
0138 DEFINE_GSSAPI_EVENT(wrap);
0139 DEFINE_GSSAPI_EVENT(unwrap);
0140
0141 DECLARE_EVENT_CLASS(rpcgss_ctx_class,
0142 TP_PROTO(
0143 const struct gss_cred *gc
0144 ),
0145
0146 TP_ARGS(gc),
0147
0148 TP_STRUCT__entry(
0149 __field(const void *, cred)
0150 __field(unsigned long, service)
0151 __string(principal, gc->gc_principal)
0152 ),
0153
0154 TP_fast_assign(
0155 __entry->cred = gc;
0156 __entry->service = gc->gc_service;
0157 __assign_str(principal, gc->gc_principal);
0158 ),
0159
0160 TP_printk("cred=%p service=%s principal='%s'",
0161 __entry->cred, show_gss_service(__entry->service),
0162 __get_str(principal))
0163 );
0164
0165 #define DEFINE_CTX_EVENT(name) \
0166 DEFINE_EVENT(rpcgss_ctx_class, rpcgss_ctx_##name, \
0167 TP_PROTO( \
0168 const struct gss_cred *gc \
0169 ), \
0170 TP_ARGS(gc))
0171
0172 DEFINE_CTX_EVENT(init);
0173 DEFINE_CTX_EVENT(destroy);
0174
0175 DECLARE_EVENT_CLASS(rpcgss_svc_gssapi_class,
0176 TP_PROTO(
0177 const struct svc_rqst *rqstp,
0178 u32 maj_stat
0179 ),
0180
0181 TP_ARGS(rqstp, maj_stat),
0182
0183 TP_STRUCT__entry(
0184 __field(u32, xid)
0185 __field(u32, maj_stat)
0186 __string(addr, rqstp->rq_xprt->xpt_remotebuf)
0187 ),
0188
0189 TP_fast_assign(
0190 __entry->xid = __be32_to_cpu(rqstp->rq_xid);
0191 __entry->maj_stat = maj_stat;
0192 __assign_str(addr, rqstp->rq_xprt->xpt_remotebuf);
0193 ),
0194
0195 TP_printk("addr=%s xid=0x%08x maj_stat=%s",
0196 __get_str(addr), __entry->xid,
0197 __entry->maj_stat == 0 ?
0198 "GSS_S_COMPLETE" : show_gss_status(__entry->maj_stat))
0199 );
0200
0201 #define DEFINE_SVC_GSSAPI_EVENT(name) \
0202 DEFINE_EVENT(rpcgss_svc_gssapi_class, rpcgss_svc_##name, \
0203 TP_PROTO( \
0204 const struct svc_rqst *rqstp, \
0205 u32 maj_stat \
0206 ), \
0207 TP_ARGS(rqstp, maj_stat))
0208
0209 DEFINE_SVC_GSSAPI_EVENT(unwrap);
0210 DEFINE_SVC_GSSAPI_EVENT(mic);
0211
0212 TRACE_EVENT(rpcgss_svc_unwrap_failed,
0213 TP_PROTO(
0214 const struct svc_rqst *rqstp
0215 ),
0216
0217 TP_ARGS(rqstp),
0218
0219 TP_STRUCT__entry(
0220 __field(u32, xid)
0221 __string(addr, rqstp->rq_xprt->xpt_remotebuf)
0222 ),
0223
0224 TP_fast_assign(
0225 __entry->xid = be32_to_cpu(rqstp->rq_xid);
0226 __assign_str(addr, rqstp->rq_xprt->xpt_remotebuf);
0227 ),
0228
0229 TP_printk("addr=%s xid=0x%08x", __get_str(addr), __entry->xid)
0230 );
0231
0232 TRACE_EVENT(rpcgss_svc_seqno_bad,
0233 TP_PROTO(
0234 const struct svc_rqst *rqstp,
0235 u32 expected,
0236 u32 received
0237 ),
0238
0239 TP_ARGS(rqstp, expected, received),
0240
0241 TP_STRUCT__entry(
0242 __field(u32, expected)
0243 __field(u32, received)
0244 __field(u32, xid)
0245 __string(addr, rqstp->rq_xprt->xpt_remotebuf)
0246 ),
0247
0248 TP_fast_assign(
0249 __entry->expected = expected;
0250 __entry->received = received;
0251 __entry->xid = __be32_to_cpu(rqstp->rq_xid);
0252 __assign_str(addr, rqstp->rq_xprt->xpt_remotebuf);
0253 ),
0254
0255 TP_printk("addr=%s xid=0x%08x expected seqno %u, received seqno %u",
0256 __get_str(addr), __entry->xid,
0257 __entry->expected, __entry->received)
0258 );
0259
0260 TRACE_EVENT(rpcgss_svc_accept_upcall,
0261 TP_PROTO(
0262 const struct svc_rqst *rqstp,
0263 u32 major_status,
0264 u32 minor_status
0265 ),
0266
0267 TP_ARGS(rqstp, major_status, minor_status),
0268
0269 TP_STRUCT__entry(
0270 __field(u32, minor_status)
0271 __field(unsigned long, major_status)
0272 __field(u32, xid)
0273 __string(addr, rqstp->rq_xprt->xpt_remotebuf)
0274 ),
0275
0276 TP_fast_assign(
0277 __entry->minor_status = minor_status;
0278 __entry->major_status = major_status;
0279 __entry->xid = be32_to_cpu(rqstp->rq_xid);
0280 __assign_str(addr, rqstp->rq_xprt->xpt_remotebuf);
0281 ),
0282
0283 TP_printk("addr=%s xid=0x%08x major_status=%s (0x%08lx) minor_status=%u",
0284 __get_str(addr), __entry->xid,
0285 (__entry->major_status == 0) ? "GSS_S_COMPLETE" :
0286 show_gss_status(__entry->major_status),
0287 __entry->major_status, __entry->minor_status
0288 )
0289 );
0290
0291 TRACE_EVENT(rpcgss_svc_authenticate,
0292 TP_PROTO(
0293 const struct svc_rqst *rqstp,
0294 const struct rpc_gss_wire_cred *gc
0295 ),
0296
0297 TP_ARGS(rqstp, gc),
0298
0299 TP_STRUCT__entry(
0300 __field(u32, seqno)
0301 __field(u32, xid)
0302 __string(addr, rqstp->rq_xprt->xpt_remotebuf)
0303 ),
0304
0305 TP_fast_assign(
0306 __entry->xid = be32_to_cpu(rqstp->rq_xid);
0307 __entry->seqno = gc->gc_seq;
0308 __assign_str(addr, rqstp->rq_xprt->xpt_remotebuf);
0309 ),
0310
0311 TP_printk("addr=%s xid=0x%08x seqno=%u", __get_str(addr),
0312 __entry->xid, __entry->seqno)
0313 );
0314
0315
0316
0317
0318
0319
0320 TRACE_EVENT(rpcgss_unwrap_failed,
0321 TP_PROTO(
0322 const struct rpc_task *task
0323 ),
0324
0325 TP_ARGS(task),
0326
0327 TP_STRUCT__entry(
0328 __field(unsigned int, task_id)
0329 __field(unsigned int, client_id)
0330 ),
0331
0332 TP_fast_assign(
0333 __entry->task_id = task->tk_pid;
0334 __entry->client_id = task->tk_client->cl_clid;
0335 ),
0336
0337 TP_printk(SUNRPC_TRACE_TASK_SPECIFIER,
0338 __entry->task_id, __entry->client_id)
0339 );
0340
0341 TRACE_EVENT(rpcgss_bad_seqno,
0342 TP_PROTO(
0343 const struct rpc_task *task,
0344 u32 expected,
0345 u32 received
0346 ),
0347
0348 TP_ARGS(task, expected, received),
0349
0350 TP_STRUCT__entry(
0351 __field(unsigned int, task_id)
0352 __field(unsigned int, client_id)
0353 __field(u32, expected)
0354 __field(u32, received)
0355 ),
0356
0357 TP_fast_assign(
0358 __entry->task_id = task->tk_pid;
0359 __entry->client_id = task->tk_client->cl_clid;
0360 __entry->expected = expected;
0361 __entry->received = received;
0362 ),
0363
0364 TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
0365 " expected seqno %u, received seqno %u",
0366 __entry->task_id, __entry->client_id,
0367 __entry->expected, __entry->received)
0368 );
0369
0370 TRACE_EVENT(rpcgss_seqno,
0371 TP_PROTO(
0372 const struct rpc_task *task
0373 ),
0374
0375 TP_ARGS(task),
0376
0377 TP_STRUCT__entry(
0378 __field(unsigned int, task_id)
0379 __field(unsigned int, client_id)
0380 __field(u32, xid)
0381 __field(u32, seqno)
0382 ),
0383
0384 TP_fast_assign(
0385 const struct rpc_rqst *rqst = task->tk_rqstp;
0386
0387 __entry->task_id = task->tk_pid;
0388 __entry->client_id = task->tk_client->cl_clid;
0389 __entry->xid = be32_to_cpu(rqst->rq_xid);
0390 __entry->seqno = rqst->rq_seqno;
0391 ),
0392
0393 TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x seqno=%u",
0394 __entry->task_id, __entry->client_id,
0395 __entry->xid, __entry->seqno)
0396 );
0397
0398 TRACE_EVENT(rpcgss_need_reencode,
0399 TP_PROTO(
0400 const struct rpc_task *task,
0401 u32 seq_xmit,
0402 bool ret
0403 ),
0404
0405 TP_ARGS(task, seq_xmit, ret),
0406
0407 TP_STRUCT__entry(
0408 __field(unsigned int, task_id)
0409 __field(unsigned int, client_id)
0410 __field(u32, xid)
0411 __field(u32, seq_xmit)
0412 __field(u32, seqno)
0413 __field(bool, ret)
0414 ),
0415
0416 TP_fast_assign(
0417 __entry->task_id = task->tk_pid;
0418 __entry->client_id = task->tk_client->cl_clid;
0419 __entry->xid = be32_to_cpu(task->tk_rqstp->rq_xid);
0420 __entry->seq_xmit = seq_xmit;
0421 __entry->seqno = task->tk_rqstp->rq_seqno;
0422 __entry->ret = ret;
0423 ),
0424
0425 TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
0426 " xid=0x%08x rq_seqno=%u seq_xmit=%u reencode %sneeded",
0427 __entry->task_id, __entry->client_id,
0428 __entry->xid, __entry->seqno, __entry->seq_xmit,
0429 __entry->ret ? "" : "un")
0430 );
0431
0432 TRACE_EVENT(rpcgss_update_slack,
0433 TP_PROTO(
0434 const struct rpc_task *task,
0435 const struct rpc_auth *auth
0436 ),
0437
0438 TP_ARGS(task, auth),
0439
0440 TP_STRUCT__entry(
0441 __field(unsigned int, task_id)
0442 __field(unsigned int, client_id)
0443 __field(u32, xid)
0444 __field(const void *, auth)
0445 __field(unsigned int, rslack)
0446 __field(unsigned int, ralign)
0447 __field(unsigned int, verfsize)
0448 ),
0449
0450 TP_fast_assign(
0451 __entry->task_id = task->tk_pid;
0452 __entry->client_id = task->tk_client->cl_clid;
0453 __entry->xid = be32_to_cpu(task->tk_rqstp->rq_xid);
0454 __entry->auth = auth;
0455 __entry->rslack = auth->au_rslack;
0456 __entry->ralign = auth->au_ralign;
0457 __entry->verfsize = auth->au_verfsize;
0458 ),
0459
0460 TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
0461 " xid=0x%08x auth=%p rslack=%u ralign=%u verfsize=%u\n",
0462 __entry->task_id, __entry->client_id, __entry->xid,
0463 __entry->auth, __entry->rslack, __entry->ralign,
0464 __entry->verfsize)
0465 );
0466
0467 DECLARE_EVENT_CLASS(rpcgss_svc_seqno_class,
0468 TP_PROTO(
0469 const struct svc_rqst *rqstp,
0470 u32 seqno
0471 ),
0472
0473 TP_ARGS(rqstp, seqno),
0474
0475 TP_STRUCT__entry(
0476 __field(u32, xid)
0477 __field(u32, seqno)
0478 ),
0479
0480 TP_fast_assign(
0481 __entry->xid = be32_to_cpu(rqstp->rq_xid);
0482 __entry->seqno = seqno;
0483 ),
0484
0485 TP_printk("xid=0x%08x seqno=%u",
0486 __entry->xid, __entry->seqno)
0487 );
0488
0489 #define DEFINE_SVC_SEQNO_EVENT(name) \
0490 DEFINE_EVENT(rpcgss_svc_seqno_class, rpcgss_svc_seqno_##name, \
0491 TP_PROTO( \
0492 const struct svc_rqst *rqstp, \
0493 u32 seqno \
0494 ), \
0495 TP_ARGS(rqstp, seqno))
0496
0497 DEFINE_SVC_SEQNO_EVENT(large);
0498 DEFINE_SVC_SEQNO_EVENT(seen);
0499
0500 TRACE_EVENT(rpcgss_svc_seqno_low,
0501 TP_PROTO(
0502 const struct svc_rqst *rqstp,
0503 u32 seqno,
0504 u32 min,
0505 u32 max
0506 ),
0507
0508 TP_ARGS(rqstp, seqno, min, max),
0509
0510 TP_STRUCT__entry(
0511 __field(u32, xid)
0512 __field(u32, seqno)
0513 __field(u32, min)
0514 __field(u32, max)
0515 ),
0516
0517 TP_fast_assign(
0518 __entry->xid = be32_to_cpu(rqstp->rq_xid);
0519 __entry->seqno = seqno;
0520 __entry->min = min;
0521 __entry->max = max;
0522 ),
0523
0524 TP_printk("xid=0x%08x seqno=%u window=[%u..%u]",
0525 __entry->xid, __entry->seqno, __entry->min, __entry->max)
0526 );
0527
0528
0529
0530
0531
0532 TRACE_EVENT(rpcgss_upcall_msg,
0533 TP_PROTO(
0534 const char *buf
0535 ),
0536
0537 TP_ARGS(buf),
0538
0539 TP_STRUCT__entry(
0540 __string(msg, buf)
0541 ),
0542
0543 TP_fast_assign(
0544 __assign_str(msg, buf);
0545 ),
0546
0547 TP_printk("msg='%s'", __get_str(msg))
0548 );
0549
0550 TRACE_EVENT(rpcgss_upcall_result,
0551 TP_PROTO(
0552 u32 uid,
0553 int result
0554 ),
0555
0556 TP_ARGS(uid, result),
0557
0558 TP_STRUCT__entry(
0559 __field(u32, uid)
0560 __field(int, result)
0561
0562 ),
0563
0564 TP_fast_assign(
0565 __entry->uid = uid;
0566 __entry->result = result;
0567 ),
0568
0569 TP_printk("for uid %u, result=%d", __entry->uid, __entry->result)
0570 );
0571
0572 TRACE_EVENT(rpcgss_context,
0573 TP_PROTO(
0574 u32 window_size,
0575 unsigned long expiry,
0576 unsigned long now,
0577 unsigned int timeout,
0578 unsigned int len,
0579 const u8 *data
0580 ),
0581
0582 TP_ARGS(window_size, expiry, now, timeout, len, data),
0583
0584 TP_STRUCT__entry(
0585 __field(unsigned long, expiry)
0586 __field(unsigned long, now)
0587 __field(unsigned int, timeout)
0588 __field(u32, window_size)
0589 __field(int, len)
0590 __string(acceptor, data)
0591 ),
0592
0593 TP_fast_assign(
0594 __entry->expiry = expiry;
0595 __entry->now = now;
0596 __entry->timeout = timeout;
0597 __entry->window_size = window_size;
0598 __entry->len = len;
0599 strncpy(__get_str(acceptor), data, len);
0600 ),
0601
0602 TP_printk("win_size=%u expiry=%lu now=%lu timeout=%u acceptor=%.*s",
0603 __entry->window_size, __entry->expiry, __entry->now,
0604 __entry->timeout, __entry->len, __get_str(acceptor))
0605 );
0606
0607
0608
0609
0610
0611
0612 TRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5);
0613 TRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5I);
0614 TRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5P);
0615
0616 #define show_pseudoflavor(x) \
0617 __print_symbolic(x, \
0618 { RPC_AUTH_GSS_KRB5, "RPC_AUTH_GSS_KRB5" }, \
0619 { RPC_AUTH_GSS_KRB5I, "RPC_AUTH_GSS_KRB5I" }, \
0620 { RPC_AUTH_GSS_KRB5P, "RPC_AUTH_GSS_KRB5P" })
0621
0622
0623 TRACE_EVENT(rpcgss_createauth,
0624 TP_PROTO(
0625 unsigned int flavor,
0626 int error
0627 ),
0628
0629 TP_ARGS(flavor, error),
0630
0631 TP_STRUCT__entry(
0632 __field(unsigned int, flavor)
0633 __field(int, error)
0634
0635 ),
0636
0637 TP_fast_assign(
0638 __entry->flavor = flavor;
0639 __entry->error = error;
0640 ),
0641
0642 TP_printk("flavor=%s error=%d",
0643 show_pseudoflavor(__entry->flavor), __entry->error)
0644 );
0645
0646 TRACE_EVENT(rpcgss_oid_to_mech,
0647 TP_PROTO(
0648 const char *oid
0649 ),
0650
0651 TP_ARGS(oid),
0652
0653 TP_STRUCT__entry(
0654 __string(oid, oid)
0655 ),
0656
0657 TP_fast_assign(
0658 __assign_str(oid, oid);
0659 ),
0660
0661 TP_printk("mech for oid %s was not found", __get_str(oid))
0662 );
0663
0664 #endif
0665
0666 #include <trace/define_trace.h>