xref: /linux/include/trace/events/rpcgss.h (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
10c77668dSChuck Lever /* SPDX-License-Identifier: GPL-2.0 */
20c77668dSChuck Lever /*
30c77668dSChuck Lever  * Copyright (c) 2018 Oracle.  All rights reserved.
40c77668dSChuck Lever  *
50c77668dSChuck Lever  * Trace point definitions for the "rpcgss" subsystem.
60c77668dSChuck Lever  */
70c77668dSChuck Lever 
80c77668dSChuck Lever #undef TRACE_SYSTEM
90c77668dSChuck Lever #define TRACE_SYSTEM rpcgss
100c77668dSChuck Lever 
11268bb038SThiago Rafael Becker #if !defined(_TRACE_RPCGSS_H) || defined(TRACE_HEADER_MULTI_READ)
120c77668dSChuck Lever #define _TRACE_RPCGSS_H
130c77668dSChuck Lever 
140c77668dSChuck Lever #include <linux/tracepoint.h>
150c77668dSChuck Lever 
16247c01ffSChuck Lever #include <trace/misc/sunrpc.h>
17b4776a34SChuck Lever 
180c77668dSChuck Lever /**
190c77668dSChuck Lever  ** GSS-API related trace events
200c77668dSChuck Lever  **/
210c77668dSChuck Lever 
2274fb8fecSChuck Lever TRACE_DEFINE_ENUM(RPC_GSS_SVC_NONE);
2374fb8fecSChuck Lever TRACE_DEFINE_ENUM(RPC_GSS_SVC_INTEGRITY);
2474fb8fecSChuck Lever TRACE_DEFINE_ENUM(RPC_GSS_SVC_PRIVACY);
2574fb8fecSChuck Lever 
2674fb8fecSChuck Lever #define show_gss_service(x)						\
2774fb8fecSChuck Lever 	__print_symbolic(x,						\
2874fb8fecSChuck Lever 		{ RPC_GSS_SVC_NONE,		"none" },		\
2974fb8fecSChuck Lever 		{ RPC_GSS_SVC_INTEGRITY,	"integrity" },		\
3074fb8fecSChuck Lever 		{ RPC_GSS_SVC_PRIVACY,		"privacy" })
3174fb8fecSChuck Lever 
320c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_BAD_MECH);
330c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_BAD_NAME);
340c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_BAD_NAMETYPE);
350c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_BAD_BINDINGS);
360c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_BAD_STATUS);
370c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_BAD_SIG);
380c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_NO_CRED);
390c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_NO_CONTEXT);
400c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_DEFECTIVE_TOKEN);
410c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_DEFECTIVE_CREDENTIAL);
420c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_CREDENTIALS_EXPIRED);
430c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_CONTEXT_EXPIRED);
440c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_FAILURE);
450c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_BAD_QOP);
460c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_UNAUTHORIZED);
470c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_UNAVAILABLE);
480c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_DUPLICATE_ELEMENT);
490c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_NAME_NOT_MN);
500c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_CONTINUE_NEEDED);
510c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_DUPLICATE_TOKEN);
520c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_OLD_TOKEN);
530c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_UNSEQ_TOKEN);
540c77668dSChuck Lever TRACE_DEFINE_ENUM(GSS_S_GAP_TOKEN);
550c77668dSChuck Lever 
560c77668dSChuck Lever #define show_gss_status(x)						\
57*b9fae9f0SBenjamin Coddington 	__print_symbolic(x, 						\
580c77668dSChuck Lever 		{ GSS_S_BAD_MECH, "GSS_S_BAD_MECH" },			\
590c77668dSChuck Lever 		{ GSS_S_BAD_NAME, "GSS_S_BAD_NAME" },			\
600c77668dSChuck Lever 		{ GSS_S_BAD_NAMETYPE, "GSS_S_BAD_NAMETYPE" },		\
610c77668dSChuck Lever 		{ GSS_S_BAD_BINDINGS, "GSS_S_BAD_BINDINGS" },		\
620c77668dSChuck Lever 		{ GSS_S_BAD_STATUS, "GSS_S_BAD_STATUS" },		\
630c77668dSChuck Lever 		{ GSS_S_BAD_SIG, "GSS_S_BAD_SIG" },			\
640c77668dSChuck Lever 		{ GSS_S_NO_CRED, "GSS_S_NO_CRED" },			\
650c77668dSChuck Lever 		{ GSS_S_NO_CONTEXT, "GSS_S_NO_CONTEXT" },		\
660c77668dSChuck Lever 		{ GSS_S_DEFECTIVE_TOKEN, "GSS_S_DEFECTIVE_TOKEN" },	\
670c77668dSChuck Lever 		{ GSS_S_DEFECTIVE_CREDENTIAL, "GSS_S_DEFECTIVE_CREDENTIAL" }, \
680c77668dSChuck Lever 		{ GSS_S_CREDENTIALS_EXPIRED, "GSS_S_CREDENTIALS_EXPIRED" }, \
690c77668dSChuck Lever 		{ GSS_S_CONTEXT_EXPIRED, "GSS_S_CONTEXT_EXPIRED" },	\
700c77668dSChuck Lever 		{ GSS_S_FAILURE, "GSS_S_FAILURE" },			\
710c77668dSChuck Lever 		{ GSS_S_BAD_QOP, "GSS_S_BAD_QOP" },			\
720c77668dSChuck Lever 		{ GSS_S_UNAUTHORIZED, "GSS_S_UNAUTHORIZED" },		\
730c77668dSChuck Lever 		{ GSS_S_UNAVAILABLE, "GSS_S_UNAVAILABLE" },		\
740c77668dSChuck Lever 		{ GSS_S_DUPLICATE_ELEMENT, "GSS_S_DUPLICATE_ELEMENT" },	\
750c77668dSChuck Lever 		{ GSS_S_NAME_NOT_MN, "GSS_S_NAME_NOT_MN" },		\
760c77668dSChuck Lever 		{ GSS_S_CONTINUE_NEEDED, "GSS_S_CONTINUE_NEEDED" },	\
770c77668dSChuck Lever 		{ GSS_S_DUPLICATE_TOKEN, "GSS_S_DUPLICATE_TOKEN" },	\
780c77668dSChuck Lever 		{ GSS_S_OLD_TOKEN, "GSS_S_OLD_TOKEN" },			\
790c77668dSChuck Lever 		{ GSS_S_UNSEQ_TOKEN, "GSS_S_UNSEQ_TOKEN" },		\
800c77668dSChuck Lever 		{ GSS_S_GAP_TOKEN, "GSS_S_GAP_TOKEN" })
810c77668dSChuck Lever 
820c77668dSChuck Lever 
830c77668dSChuck Lever DECLARE_EVENT_CLASS(rpcgss_gssapi_event,
840c77668dSChuck Lever 	TP_PROTO(
850c77668dSChuck Lever 		const struct rpc_task *task,
860c77668dSChuck Lever 		u32 maj_stat
870c77668dSChuck Lever 	),
880c77668dSChuck Lever 
890c77668dSChuck Lever 	TP_ARGS(task, maj_stat),
900c77668dSChuck Lever 
910c77668dSChuck Lever 	TP_STRUCT__entry(
920c77668dSChuck Lever 		__field(unsigned int, task_id)
930c77668dSChuck Lever 		__field(unsigned int, client_id)
940c77668dSChuck Lever 		__field(u32, maj_stat)
950c77668dSChuck Lever 
960c77668dSChuck Lever 	),
970c77668dSChuck Lever 
980c77668dSChuck Lever 	TP_fast_assign(
990c77668dSChuck Lever 		__entry->task_id = task->tk_pid;
1000c77668dSChuck Lever 		__entry->client_id = task->tk_client->cl_clid;
1010c77668dSChuck Lever 		__entry->maj_stat = maj_stat;
1020c77668dSChuck Lever 	),
1030c77668dSChuck Lever 
104b4776a34SChuck Lever 	TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " maj_stat=%s",
1050c77668dSChuck Lever 		__entry->task_id, __entry->client_id,
1060c77668dSChuck Lever 		__entry->maj_stat == 0 ?
1070c77668dSChuck Lever 		"GSS_S_COMPLETE" : show_gss_status(__entry->maj_stat))
1080c77668dSChuck Lever );
1090c77668dSChuck Lever 
1100c77668dSChuck Lever #define DEFINE_GSSAPI_EVENT(name)					\
1110c77668dSChuck Lever 	DEFINE_EVENT(rpcgss_gssapi_event, rpcgss_##name,		\
1120c77668dSChuck Lever 			TP_PROTO(					\
1130c77668dSChuck Lever 				const struct rpc_task *task,		\
1140c77668dSChuck Lever 				u32 maj_stat				\
1150c77668dSChuck Lever 			),						\
1160c77668dSChuck Lever 			TP_ARGS(task, maj_stat))
1170c77668dSChuck Lever 
1180c77668dSChuck Lever TRACE_EVENT(rpcgss_import_ctx,
1190c77668dSChuck Lever 	TP_PROTO(
1200c77668dSChuck Lever 		int status
1210c77668dSChuck Lever 	),
1220c77668dSChuck Lever 
1230c77668dSChuck Lever 	TP_ARGS(status),
1240c77668dSChuck Lever 
1250c77668dSChuck Lever 	TP_STRUCT__entry(
1260c77668dSChuck Lever 		__field(int, status)
1270c77668dSChuck Lever 	),
1280c77668dSChuck Lever 
1290c77668dSChuck Lever 	TP_fast_assign(
1300c77668dSChuck Lever 		__entry->status = status;
1310c77668dSChuck Lever 	),
1320c77668dSChuck Lever 
1330c77668dSChuck Lever 	TP_printk("status=%d", __entry->status)
1340c77668dSChuck Lever );
1350c77668dSChuck Lever 
1360c77668dSChuck Lever DEFINE_GSSAPI_EVENT(get_mic);
1370c77668dSChuck Lever DEFINE_GSSAPI_EVENT(verify_mic);
1380c77668dSChuck Lever DEFINE_GSSAPI_EVENT(wrap);
1390c77668dSChuck Lever DEFINE_GSSAPI_EVENT(unwrap);
1400c77668dSChuck Lever 
14174fb8fecSChuck Lever DECLARE_EVENT_CLASS(rpcgss_ctx_class,
14274fb8fecSChuck Lever 	TP_PROTO(
14374fb8fecSChuck Lever 		const struct gss_cred *gc
14474fb8fecSChuck Lever 	),
14574fb8fecSChuck Lever 
14674fb8fecSChuck Lever 	TP_ARGS(gc),
14774fb8fecSChuck Lever 
14874fb8fecSChuck Lever 	TP_STRUCT__entry(
14974fb8fecSChuck Lever 		__field(const void *, cred)
15074fb8fecSChuck Lever 		__field(unsigned long, service)
15174fb8fecSChuck Lever 		__string(principal, gc->gc_principal)
15274fb8fecSChuck Lever 	),
15374fb8fecSChuck Lever 
15474fb8fecSChuck Lever 	TP_fast_assign(
15574fb8fecSChuck Lever 		__entry->cred = gc;
15674fb8fecSChuck Lever 		__entry->service = gc->gc_service;
1572c92ca84SSteven Rostedt (Google) 		__assign_str(principal);
15874fb8fecSChuck Lever 	),
15974fb8fecSChuck Lever 
16074fb8fecSChuck Lever 	TP_printk("cred=%p service=%s principal='%s'",
16174fb8fecSChuck Lever 		__entry->cred, show_gss_service(__entry->service),
16274fb8fecSChuck Lever 		__get_str(principal))
16374fb8fecSChuck Lever );
16474fb8fecSChuck Lever 
16574fb8fecSChuck Lever #define DEFINE_CTX_EVENT(name)						\
16674fb8fecSChuck Lever 	DEFINE_EVENT(rpcgss_ctx_class, rpcgss_ctx_##name,		\
16774fb8fecSChuck Lever 			TP_PROTO(					\
16874fb8fecSChuck Lever 				const struct gss_cred *gc		\
16974fb8fecSChuck Lever 			),						\
17074fb8fecSChuck Lever 			TP_ARGS(gc))
17174fb8fecSChuck Lever 
17274fb8fecSChuck Lever DEFINE_CTX_EVENT(init);
17374fb8fecSChuck Lever DEFINE_CTX_EVENT(destroy);
17474fb8fecSChuck Lever 
17510b9d99aSChuck Lever DECLARE_EVENT_CLASS(rpcgss_svc_gssapi_class,
17610b9d99aSChuck Lever 	TP_PROTO(
17710b9d99aSChuck Lever 		const struct svc_rqst *rqstp,
17810b9d99aSChuck Lever 		u32 maj_stat
17910b9d99aSChuck Lever 	),
18010b9d99aSChuck Lever 
18110b9d99aSChuck Lever 	TP_ARGS(rqstp, maj_stat),
18210b9d99aSChuck Lever 
18310b9d99aSChuck Lever 	TP_STRUCT__entry(
18410b9d99aSChuck Lever 		__field(u32, xid)
18510b9d99aSChuck Lever 		__field(u32, maj_stat)
18610b9d99aSChuck Lever 		__string(addr, rqstp->rq_xprt->xpt_remotebuf)
18710b9d99aSChuck Lever 	),
18810b9d99aSChuck Lever 
18910b9d99aSChuck Lever 	TP_fast_assign(
19010b9d99aSChuck Lever 		__entry->xid = __be32_to_cpu(rqstp->rq_xid);
19110b9d99aSChuck Lever 		__entry->maj_stat = maj_stat;
1922c92ca84SSteven Rostedt (Google) 		__assign_str(addr);
19310b9d99aSChuck Lever 	),
19410b9d99aSChuck Lever 
19510b9d99aSChuck Lever 	TP_printk("addr=%s xid=0x%08x maj_stat=%s",
19610b9d99aSChuck Lever 		__get_str(addr), __entry->xid,
19710b9d99aSChuck Lever 		__entry->maj_stat == 0 ?
19810b9d99aSChuck Lever 		"GSS_S_COMPLETE" : show_gss_status(__entry->maj_stat))
19910b9d99aSChuck Lever );
20010b9d99aSChuck Lever 
20110b9d99aSChuck Lever #define DEFINE_SVC_GSSAPI_EVENT(name)					\
20210b9d99aSChuck Lever 	DEFINE_EVENT(rpcgss_svc_gssapi_class, rpcgss_svc_##name,	\
20310b9d99aSChuck Lever 			TP_PROTO(					\
20410b9d99aSChuck Lever 				const struct svc_rqst *rqstp,		\
20510b9d99aSChuck Lever 				u32 maj_stat				\
20610b9d99aSChuck Lever 			),						\
20710b9d99aSChuck Lever 			TP_ARGS(rqstp, maj_stat))
20810b9d99aSChuck Lever 
209ba8b13e5SChuck Lever DEFINE_SVC_GSSAPI_EVENT(wrap);
21010b9d99aSChuck Lever DEFINE_SVC_GSSAPI_EVENT(unwrap);
21110b9d99aSChuck Lever DEFINE_SVC_GSSAPI_EVENT(mic);
21215d8f808SChuck Lever DEFINE_SVC_GSSAPI_EVENT(get_mic);
21310b9d99aSChuck Lever 
214ba8b13e5SChuck Lever TRACE_EVENT(rpcgss_svc_wrap_failed,
215ba8b13e5SChuck Lever 	TP_PROTO(
216ba8b13e5SChuck Lever 		const struct svc_rqst *rqstp
217ba8b13e5SChuck Lever 	),
218ba8b13e5SChuck Lever 
219ba8b13e5SChuck Lever 	TP_ARGS(rqstp),
220ba8b13e5SChuck Lever 
221ba8b13e5SChuck Lever 	TP_STRUCT__entry(
222ba8b13e5SChuck Lever 		__field(u32, xid)
223ba8b13e5SChuck Lever 		__string(addr, rqstp->rq_xprt->xpt_remotebuf)
224ba8b13e5SChuck Lever 	),
225ba8b13e5SChuck Lever 
226ba8b13e5SChuck Lever 	TP_fast_assign(
227ba8b13e5SChuck Lever 		__entry->xid = be32_to_cpu(rqstp->rq_xid);
2282c92ca84SSteven Rostedt (Google) 		__assign_str(addr);
229ba8b13e5SChuck Lever 	),
230ba8b13e5SChuck Lever 
231ba8b13e5SChuck Lever 	TP_printk("addr=%s xid=0x%08x", __get_str(addr), __entry->xid)
232ba8b13e5SChuck Lever );
233ba8b13e5SChuck Lever 
23410b9d99aSChuck Lever TRACE_EVENT(rpcgss_svc_unwrap_failed,
23510b9d99aSChuck Lever 	TP_PROTO(
23610b9d99aSChuck Lever 		const struct svc_rqst *rqstp
23710b9d99aSChuck Lever 	),
23810b9d99aSChuck Lever 
23910b9d99aSChuck Lever 	TP_ARGS(rqstp),
24010b9d99aSChuck Lever 
24110b9d99aSChuck Lever 	TP_STRUCT__entry(
24210b9d99aSChuck Lever 		__field(u32, xid)
24310b9d99aSChuck Lever 		__string(addr, rqstp->rq_xprt->xpt_remotebuf)
24410b9d99aSChuck Lever 	),
24510b9d99aSChuck Lever 
24610b9d99aSChuck Lever 	TP_fast_assign(
24710b9d99aSChuck Lever 		__entry->xid = be32_to_cpu(rqstp->rq_xid);
2482c92ca84SSteven Rostedt (Google) 		__assign_str(addr);
24910b9d99aSChuck Lever 	),
25010b9d99aSChuck Lever 
25110b9d99aSChuck Lever 	TP_printk("addr=%s xid=0x%08x", __get_str(addr), __entry->xid)
25210b9d99aSChuck Lever );
25310b9d99aSChuck Lever 
25410b9d99aSChuck Lever TRACE_EVENT(rpcgss_svc_seqno_bad,
25510b9d99aSChuck Lever 	TP_PROTO(
25610b9d99aSChuck Lever 		const struct svc_rqst *rqstp,
25710b9d99aSChuck Lever 		u32 expected,
25810b9d99aSChuck Lever 		u32 received
25910b9d99aSChuck Lever 	),
26010b9d99aSChuck Lever 
26110b9d99aSChuck Lever 	TP_ARGS(rqstp, expected, received),
26210b9d99aSChuck Lever 
26310b9d99aSChuck Lever 	TP_STRUCT__entry(
26410b9d99aSChuck Lever 		__field(u32, expected)
26510b9d99aSChuck Lever 		__field(u32, received)
26610b9d99aSChuck Lever 		__field(u32, xid)
26710b9d99aSChuck Lever 		__string(addr, rqstp->rq_xprt->xpt_remotebuf)
26810b9d99aSChuck Lever 	),
26910b9d99aSChuck Lever 
27010b9d99aSChuck Lever 	TP_fast_assign(
27110b9d99aSChuck Lever 		__entry->expected = expected;
27210b9d99aSChuck Lever 		__entry->received = received;
27310b9d99aSChuck Lever 		__entry->xid = __be32_to_cpu(rqstp->rq_xid);
2742c92ca84SSteven Rostedt (Google) 		__assign_str(addr);
27510b9d99aSChuck Lever 	),
27610b9d99aSChuck Lever 
27710b9d99aSChuck Lever 	TP_printk("addr=%s xid=0x%08x expected seqno %u, received seqno %u",
27810b9d99aSChuck Lever 		__get_str(addr), __entry->xid,
27910b9d99aSChuck Lever 		__entry->expected, __entry->received)
28010b9d99aSChuck Lever );
28110b9d99aSChuck Lever 
28228155524SChuck Lever TRACE_EVENT(rpcgss_svc_accept_upcall,
283ff27e9f7SChuck Lever 	TP_PROTO(
28410b9d99aSChuck Lever 		const struct svc_rqst *rqstp,
285ff27e9f7SChuck Lever 		u32 major_status,
286ff27e9f7SChuck Lever 		u32 minor_status
287ff27e9f7SChuck Lever 	),
288ff27e9f7SChuck Lever 
28910b9d99aSChuck Lever 	TP_ARGS(rqstp, major_status, minor_status),
290ff27e9f7SChuck Lever 
291ff27e9f7SChuck Lever 	TP_STRUCT__entry(
292ff27e9f7SChuck Lever 		__field(u32, minor_status)
293ff27e9f7SChuck Lever 		__field(unsigned long, major_status)
29410b9d99aSChuck Lever 		__field(u32, xid)
29510b9d99aSChuck Lever 		__string(addr, rqstp->rq_xprt->xpt_remotebuf)
296ff27e9f7SChuck Lever 	),
297ff27e9f7SChuck Lever 
298ff27e9f7SChuck Lever 	TP_fast_assign(
299ff27e9f7SChuck Lever 		__entry->minor_status = minor_status;
300ff27e9f7SChuck Lever 		__entry->major_status = major_status;
30110b9d99aSChuck Lever 		__entry->xid = be32_to_cpu(rqstp->rq_xid);
3022c92ca84SSteven Rostedt (Google) 		__assign_str(addr);
303ff27e9f7SChuck Lever 	),
304ff27e9f7SChuck Lever 
30510b9d99aSChuck Lever 	TP_printk("addr=%s xid=0x%08x major_status=%s (0x%08lx) minor_status=%u",
30610b9d99aSChuck Lever 		__get_str(addr), __entry->xid,
30710b9d99aSChuck Lever 		(__entry->major_status == 0) ? "GSS_S_COMPLETE" :
308ff27e9f7SChuck Lever 			show_gss_status(__entry->major_status),
309ff27e9f7SChuck Lever 		__entry->major_status, __entry->minor_status
310ff27e9f7SChuck Lever 	)
311ff27e9f7SChuck Lever );
312ff27e9f7SChuck Lever 
31310b9d99aSChuck Lever TRACE_EVENT(rpcgss_svc_authenticate,
31428155524SChuck Lever 	TP_PROTO(
31510b9d99aSChuck Lever 		const struct svc_rqst *rqstp,
31610b9d99aSChuck Lever 		const struct rpc_gss_wire_cred *gc
31728155524SChuck Lever 	),
31828155524SChuck Lever 
31910b9d99aSChuck Lever 	TP_ARGS(rqstp, gc),
32028155524SChuck Lever 
32128155524SChuck Lever 	TP_STRUCT__entry(
32210b9d99aSChuck Lever 		__field(u32, seqno)
32328155524SChuck Lever 		__field(u32, xid)
32410b9d99aSChuck Lever 		__string(addr, rqstp->rq_xprt->xpt_remotebuf)
32528155524SChuck Lever 	),
32628155524SChuck Lever 
32728155524SChuck Lever 	TP_fast_assign(
32810b9d99aSChuck Lever 		__entry->xid = be32_to_cpu(rqstp->rq_xid);
32910b9d99aSChuck Lever 		__entry->seqno = gc->gc_seq;
3302c92ca84SSteven Rostedt (Google) 		__assign_str(addr);
33128155524SChuck Lever 	),
33228155524SChuck Lever 
33310b9d99aSChuck Lever 	TP_printk("addr=%s xid=0x%08x seqno=%u", __get_str(addr),
33410b9d99aSChuck Lever 		__entry->xid, __entry->seqno)
33528155524SChuck Lever );
33628155524SChuck Lever 
3370c77668dSChuck Lever 
3380c77668dSChuck Lever /**
3390c77668dSChuck Lever  ** GSS auth unwrap failures
3400c77668dSChuck Lever  **/
3410c77668dSChuck Lever 
3420c77668dSChuck Lever TRACE_EVENT(rpcgss_unwrap_failed,
3430c77668dSChuck Lever 	TP_PROTO(
3440c77668dSChuck Lever 		const struct rpc_task *task
3450c77668dSChuck Lever 	),
3460c77668dSChuck Lever 
3470c77668dSChuck Lever 	TP_ARGS(task),
3480c77668dSChuck Lever 
3490c77668dSChuck Lever 	TP_STRUCT__entry(
3500c77668dSChuck Lever 		__field(unsigned int, task_id)
3510c77668dSChuck Lever 		__field(unsigned int, client_id)
3520c77668dSChuck Lever 	),
3530c77668dSChuck Lever 
3540c77668dSChuck Lever 	TP_fast_assign(
3550c77668dSChuck Lever 		__entry->task_id = task->tk_pid;
3560c77668dSChuck Lever 		__entry->client_id = task->tk_client->cl_clid;
3570c77668dSChuck Lever 	),
3580c77668dSChuck Lever 
359b4776a34SChuck Lever 	TP_printk(SUNRPC_TRACE_TASK_SPECIFIER,
360b4776a34SChuck Lever 		__entry->task_id, __entry->client_id)
3610c77668dSChuck Lever );
3620c77668dSChuck Lever 
3630c77668dSChuck Lever TRACE_EVENT(rpcgss_bad_seqno,
3640c77668dSChuck Lever 	TP_PROTO(
3650c77668dSChuck Lever 		const struct rpc_task *task,
3660c77668dSChuck Lever 		u32 expected,
3670c77668dSChuck Lever 		u32 received
3680c77668dSChuck Lever 	),
3690c77668dSChuck Lever 
3700c77668dSChuck Lever 	TP_ARGS(task, expected, received),
3710c77668dSChuck Lever 
3720c77668dSChuck Lever 	TP_STRUCT__entry(
3730c77668dSChuck Lever 		__field(unsigned int, task_id)
3740c77668dSChuck Lever 		__field(unsigned int, client_id)
3750c77668dSChuck Lever 		__field(u32, expected)
3760c77668dSChuck Lever 		__field(u32, received)
3770c77668dSChuck Lever 	),
3780c77668dSChuck Lever 
3790c77668dSChuck Lever 	TP_fast_assign(
3800c77668dSChuck Lever 		__entry->task_id = task->tk_pid;
3810c77668dSChuck Lever 		__entry->client_id = task->tk_client->cl_clid;
3820c77668dSChuck Lever 		__entry->expected = expected;
3830c77668dSChuck Lever 		__entry->received = received;
3840c77668dSChuck Lever 	),
3850c77668dSChuck Lever 
386b4776a34SChuck Lever 	TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
387b4776a34SChuck Lever 		  " expected seqno %u, received seqno %u",
3880c77668dSChuck Lever 		__entry->task_id, __entry->client_id,
3890c77668dSChuck Lever 		__entry->expected, __entry->received)
3900c77668dSChuck Lever );
3910c77668dSChuck Lever 
3920c77668dSChuck Lever TRACE_EVENT(rpcgss_seqno,
3930c77668dSChuck Lever 	TP_PROTO(
3940c77668dSChuck Lever 		const struct rpc_task *task
3950c77668dSChuck Lever 	),
3960c77668dSChuck Lever 
3970c77668dSChuck Lever 	TP_ARGS(task),
3980c77668dSChuck Lever 
3990c77668dSChuck Lever 	TP_STRUCT__entry(
4000c77668dSChuck Lever 		__field(unsigned int, task_id)
4010c77668dSChuck Lever 		__field(unsigned int, client_id)
4020c77668dSChuck Lever 		__field(u32, xid)
4030c77668dSChuck Lever 		__field(u32, seqno)
4040c77668dSChuck Lever 	),
4050c77668dSChuck Lever 
4060c77668dSChuck Lever 	TP_fast_assign(
4070c77668dSChuck Lever 		const struct rpc_rqst *rqst = task->tk_rqstp;
4080c77668dSChuck Lever 
4090c77668dSChuck Lever 		__entry->task_id = task->tk_pid;
4100c77668dSChuck Lever 		__entry->client_id = task->tk_client->cl_clid;
4110c77668dSChuck Lever 		__entry->xid = be32_to_cpu(rqst->rq_xid);
4120c77668dSChuck Lever 		__entry->seqno = rqst->rq_seqno;
4130c77668dSChuck Lever 	),
4140c77668dSChuck Lever 
415b4776a34SChuck Lever 	TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x seqno=%u",
4160c77668dSChuck Lever 		__entry->task_id, __entry->client_id,
4170c77668dSChuck Lever 		__entry->xid, __entry->seqno)
4180c77668dSChuck Lever );
4190c77668dSChuck Lever 
4200c77668dSChuck Lever TRACE_EVENT(rpcgss_need_reencode,
4210c77668dSChuck Lever 	TP_PROTO(
4220c77668dSChuck Lever 		const struct rpc_task *task,
4230c77668dSChuck Lever 		u32 seq_xmit,
4240c77668dSChuck Lever 		bool ret
4250c77668dSChuck Lever 	),
4260c77668dSChuck Lever 
4270c77668dSChuck Lever 	TP_ARGS(task, seq_xmit, ret),
4280c77668dSChuck Lever 
4290c77668dSChuck Lever 	TP_STRUCT__entry(
4300c77668dSChuck Lever 		__field(unsigned int, task_id)
4310c77668dSChuck Lever 		__field(unsigned int, client_id)
4320c77668dSChuck Lever 		__field(u32, xid)
4330c77668dSChuck Lever 		__field(u32, seq_xmit)
4340c77668dSChuck Lever 		__field(u32, seqno)
4350c77668dSChuck Lever 		__field(bool, ret)
4360c77668dSChuck Lever 	),
4370c77668dSChuck Lever 
4380c77668dSChuck Lever 	TP_fast_assign(
4390c77668dSChuck Lever 		__entry->task_id = task->tk_pid;
4400c77668dSChuck Lever 		__entry->client_id = task->tk_client->cl_clid;
4410c77668dSChuck Lever 		__entry->xid = be32_to_cpu(task->tk_rqstp->rq_xid);
4420c77668dSChuck Lever 		__entry->seq_xmit = seq_xmit;
4430c77668dSChuck Lever 		__entry->seqno = task->tk_rqstp->rq_seqno;
4440c77668dSChuck Lever 		__entry->ret = ret;
4450c77668dSChuck Lever 	),
4460c77668dSChuck Lever 
447b4776a34SChuck Lever 	TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
448b4776a34SChuck Lever 		  " xid=0x%08x rq_seqno=%u seq_xmit=%u reencode %sneeded",
4490c77668dSChuck Lever 		__entry->task_id, __entry->client_id,
4500c77668dSChuck Lever 		__entry->xid, __entry->seqno, __entry->seq_xmit,
4510c77668dSChuck Lever 		__entry->ret ? "" : "un")
4520c77668dSChuck Lever );
4530c77668dSChuck Lever 
45453bc19f1SChuck Lever TRACE_EVENT(rpcgss_update_slack,
45553bc19f1SChuck Lever 	TP_PROTO(
45653bc19f1SChuck Lever 		const struct rpc_task *task,
45753bc19f1SChuck Lever 		const struct rpc_auth *auth
45853bc19f1SChuck Lever 	),
45953bc19f1SChuck Lever 
46053bc19f1SChuck Lever 	TP_ARGS(task, auth),
46153bc19f1SChuck Lever 
46253bc19f1SChuck Lever 	TP_STRUCT__entry(
46353bc19f1SChuck Lever 		__field(unsigned int, task_id)
46453bc19f1SChuck Lever 		__field(unsigned int, client_id)
46553bc19f1SChuck Lever 		__field(u32, xid)
46653bc19f1SChuck Lever 		__field(const void *, auth)
46753bc19f1SChuck Lever 		__field(unsigned int, rslack)
46853bc19f1SChuck Lever 		__field(unsigned int, ralign)
46953bc19f1SChuck Lever 		__field(unsigned int, verfsize)
47053bc19f1SChuck Lever 	),
47153bc19f1SChuck Lever 
47253bc19f1SChuck Lever 	TP_fast_assign(
47353bc19f1SChuck Lever 		__entry->task_id = task->tk_pid;
47453bc19f1SChuck Lever 		__entry->client_id = task->tk_client->cl_clid;
47553bc19f1SChuck Lever 		__entry->xid = be32_to_cpu(task->tk_rqstp->rq_xid);
47653bc19f1SChuck Lever 		__entry->auth = auth;
47753bc19f1SChuck Lever 		__entry->rslack = auth->au_rslack;
47853bc19f1SChuck Lever 		__entry->ralign = auth->au_ralign;
47953bc19f1SChuck Lever 		__entry->verfsize = auth->au_verfsize;
48053bc19f1SChuck Lever 	),
48153bc19f1SChuck Lever 
482b4776a34SChuck Lever 	TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
483b4776a34SChuck Lever 		  " xid=0x%08x auth=%p rslack=%u ralign=%u verfsize=%u\n",
48453bc19f1SChuck Lever 		__entry->task_id, __entry->client_id, __entry->xid,
48553bc19f1SChuck Lever 		__entry->auth, __entry->rslack, __entry->ralign,
48653bc19f1SChuck Lever 		__entry->verfsize)
48753bc19f1SChuck Lever );
48853bc19f1SChuck Lever 
48928155524SChuck Lever DECLARE_EVENT_CLASS(rpcgss_svc_seqno_class,
49028155524SChuck Lever 	TP_PROTO(
49110b9d99aSChuck Lever 		const struct svc_rqst *rqstp,
49228155524SChuck Lever 		u32 seqno
49328155524SChuck Lever 	),
49428155524SChuck Lever 
49510b9d99aSChuck Lever 	TP_ARGS(rqstp, seqno),
49628155524SChuck Lever 
49728155524SChuck Lever 	TP_STRUCT__entry(
49828155524SChuck Lever 		__field(u32, xid)
49928155524SChuck Lever 		__field(u32, seqno)
50028155524SChuck Lever 	),
50128155524SChuck Lever 
50228155524SChuck Lever 	TP_fast_assign(
50310b9d99aSChuck Lever 		__entry->xid = be32_to_cpu(rqstp->rq_xid);
50428155524SChuck Lever 		__entry->seqno = seqno;
50528155524SChuck Lever 	),
50628155524SChuck Lever 
50710b9d99aSChuck Lever 	TP_printk("xid=0x%08x seqno=%u",
50828155524SChuck Lever 		__entry->xid, __entry->seqno)
50928155524SChuck Lever );
51028155524SChuck Lever 
51128155524SChuck Lever #define DEFINE_SVC_SEQNO_EVENT(name)					\
51210b9d99aSChuck Lever 	DEFINE_EVENT(rpcgss_svc_seqno_class, rpcgss_svc_seqno_##name,	\
51328155524SChuck Lever 			TP_PROTO(					\
51410b9d99aSChuck Lever 				const struct svc_rqst *rqstp,		\
51528155524SChuck Lever 				u32 seqno				\
51628155524SChuck Lever 			),						\
51710b9d99aSChuck Lever 			TP_ARGS(rqstp, seqno))
51828155524SChuck Lever 
51910b9d99aSChuck Lever DEFINE_SVC_SEQNO_EVENT(large);
52010b9d99aSChuck Lever DEFINE_SVC_SEQNO_EVENT(seen);
52128155524SChuck Lever 
52210b9d99aSChuck Lever TRACE_EVENT(rpcgss_svc_seqno_low,
52310b9d99aSChuck Lever 	TP_PROTO(
52410b9d99aSChuck Lever 		const struct svc_rqst *rqstp,
52510b9d99aSChuck Lever 		u32 seqno,
52610b9d99aSChuck Lever 		u32 min,
52710b9d99aSChuck Lever 		u32 max
52810b9d99aSChuck Lever 	),
52910b9d99aSChuck Lever 
53010b9d99aSChuck Lever 	TP_ARGS(rqstp, seqno, min, max),
53110b9d99aSChuck Lever 
53210b9d99aSChuck Lever 	TP_STRUCT__entry(
53310b9d99aSChuck Lever 		__field(u32, xid)
53410b9d99aSChuck Lever 		__field(u32, seqno)
53510b9d99aSChuck Lever 		__field(u32, min)
53610b9d99aSChuck Lever 		__field(u32, max)
53710b9d99aSChuck Lever 	),
53810b9d99aSChuck Lever 
53910b9d99aSChuck Lever 	TP_fast_assign(
54010b9d99aSChuck Lever 		__entry->xid = be32_to_cpu(rqstp->rq_xid);
54110b9d99aSChuck Lever 		__entry->seqno = seqno;
54210b9d99aSChuck Lever 		__entry->min = min;
54310b9d99aSChuck Lever 		__entry->max = max;
54410b9d99aSChuck Lever 	),
54510b9d99aSChuck Lever 
54610b9d99aSChuck Lever 	TP_printk("xid=0x%08x seqno=%u window=[%u..%u]",
54710b9d99aSChuck Lever 		__entry->xid, __entry->seqno, __entry->min, __entry->max)
54810b9d99aSChuck Lever );
54928155524SChuck Lever 
5500c77668dSChuck Lever /**
5510c77668dSChuck Lever  ** gssd upcall related trace events
5520c77668dSChuck Lever  **/
5530c77668dSChuck Lever 
5540c77668dSChuck Lever TRACE_EVENT(rpcgss_upcall_msg,
5550c77668dSChuck Lever 	TP_PROTO(
5560c77668dSChuck Lever 		const char *buf
5570c77668dSChuck Lever 	),
5580c77668dSChuck Lever 
5590c77668dSChuck Lever 	TP_ARGS(buf),
5600c77668dSChuck Lever 
5610c77668dSChuck Lever 	TP_STRUCT__entry(
5620c77668dSChuck Lever 		__string(msg, buf)
5630c77668dSChuck Lever 	),
5640c77668dSChuck Lever 
5650c77668dSChuck Lever 	TP_fast_assign(
5662c92ca84SSteven Rostedt (Google) 		__assign_str(msg);
5670c77668dSChuck Lever 	),
5680c77668dSChuck Lever 
5690c77668dSChuck Lever 	TP_printk("msg='%s'", __get_str(msg))
5700c77668dSChuck Lever );
5710c77668dSChuck Lever 
5720c77668dSChuck Lever TRACE_EVENT(rpcgss_upcall_result,
5730c77668dSChuck Lever 	TP_PROTO(
5740c77668dSChuck Lever 		u32 uid,
5750c77668dSChuck Lever 		int result
5760c77668dSChuck Lever 	),
5770c77668dSChuck Lever 
5780c77668dSChuck Lever 	TP_ARGS(uid, result),
5790c77668dSChuck Lever 
5800c77668dSChuck Lever 	TP_STRUCT__entry(
5810c77668dSChuck Lever 		__field(u32, uid)
5820c77668dSChuck Lever 		__field(int, result)
5830c77668dSChuck Lever 
5840c77668dSChuck Lever 	),
5850c77668dSChuck Lever 
5860c77668dSChuck Lever 	TP_fast_assign(
5870c77668dSChuck Lever 		__entry->uid = uid;
5880c77668dSChuck Lever 		__entry->result = result;
5890c77668dSChuck Lever 	),
5900c77668dSChuck Lever 
5910c77668dSChuck Lever 	TP_printk("for uid %u, result=%d", __entry->uid, __entry->result)
5920c77668dSChuck Lever );
5930c77668dSChuck Lever 
5940c77668dSChuck Lever TRACE_EVENT(rpcgss_context,
5950c77668dSChuck Lever 	TP_PROTO(
59674fb8fecSChuck Lever 		u32 window_size,
5970c77668dSChuck Lever 		unsigned long expiry,
5980c77668dSChuck Lever 		unsigned long now,
5990c77668dSChuck Lever 		unsigned int timeout,
6000c77668dSChuck Lever 		unsigned int len,
6010c77668dSChuck Lever 		const u8 *data
6020c77668dSChuck Lever 	),
6030c77668dSChuck Lever 
60474fb8fecSChuck Lever 	TP_ARGS(window_size, expiry, now, timeout, len, data),
6050c77668dSChuck Lever 
6060c77668dSChuck Lever 	TP_STRUCT__entry(
6070c77668dSChuck Lever 		__field(unsigned long, expiry)
6080c77668dSChuck Lever 		__field(unsigned long, now)
6090c77668dSChuck Lever 		__field(unsigned int, timeout)
61074fb8fecSChuck Lever 		__field(u32, window_size)
6110c77668dSChuck Lever 		__field(int, len)
612a4833e3aSSteven Rostedt (Google) 		__string_len(acceptor, data, len)
6130c77668dSChuck Lever 	),
6140c77668dSChuck Lever 
6150c77668dSChuck Lever 	TP_fast_assign(
6160c77668dSChuck Lever 		__entry->expiry = expiry;
6170c77668dSChuck Lever 		__entry->now = now;
6180c77668dSChuck Lever 		__entry->timeout = timeout;
61974fb8fecSChuck Lever 		__entry->window_size = window_size;
6200c77668dSChuck Lever 		__entry->len = len;
6212c92ca84SSteven Rostedt (Google) 		__assign_str(acceptor);
6220c77668dSChuck Lever 	),
6230c77668dSChuck Lever 
62474fb8fecSChuck Lever 	TP_printk("win_size=%u expiry=%lu now=%lu timeout=%u acceptor=%.*s",
62574fb8fecSChuck Lever 		__entry->window_size, __entry->expiry, __entry->now,
62674fb8fecSChuck Lever 		__entry->timeout, __entry->len, __get_str(acceptor))
6270c77668dSChuck Lever );
6280c77668dSChuck Lever 
6290c77668dSChuck Lever 
6300c77668dSChuck Lever /**
6310c77668dSChuck Lever  ** Miscellaneous events
6320c77668dSChuck Lever  */
6330c77668dSChuck Lever 
6340c77668dSChuck Lever TRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5);
6350c77668dSChuck Lever TRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5I);
6360c77668dSChuck Lever TRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5P);
6370c77668dSChuck Lever 
6380c77668dSChuck Lever #define show_pseudoflavor(x)						\
6390c77668dSChuck Lever 	__print_symbolic(x,						\
6400c77668dSChuck Lever 		{ RPC_AUTH_GSS_KRB5, "RPC_AUTH_GSS_KRB5" },		\
6410c77668dSChuck Lever 		{ RPC_AUTH_GSS_KRB5I, "RPC_AUTH_GSS_KRB5I" },		\
6420c77668dSChuck Lever 		{ RPC_AUTH_GSS_KRB5P, "RPC_AUTH_GSS_KRB5P" })
6430c77668dSChuck Lever 
6440c77668dSChuck Lever 
6450c77668dSChuck Lever TRACE_EVENT(rpcgss_createauth,
6460c77668dSChuck Lever 	TP_PROTO(
6470c77668dSChuck Lever 		unsigned int flavor,
6480c77668dSChuck Lever 		int error
6490c77668dSChuck Lever 	),
6500c77668dSChuck Lever 
6510c77668dSChuck Lever 	TP_ARGS(flavor, error),
6520c77668dSChuck Lever 
6530c77668dSChuck Lever 	TP_STRUCT__entry(
6540c77668dSChuck Lever 		__field(unsigned int, flavor)
6550c77668dSChuck Lever 		__field(int, error)
6560c77668dSChuck Lever 
6570c77668dSChuck Lever 	),
6580c77668dSChuck Lever 
6590c77668dSChuck Lever 	TP_fast_assign(
6600c77668dSChuck Lever 		__entry->flavor = flavor;
6610c77668dSChuck Lever 		__entry->error = error;
6620c77668dSChuck Lever 	),
6630c77668dSChuck Lever 
6640c77668dSChuck Lever 	TP_printk("flavor=%s error=%d",
6650c77668dSChuck Lever 		show_pseudoflavor(__entry->flavor), __entry->error)
6660c77668dSChuck Lever );
6670c77668dSChuck Lever 
668ff27e9f7SChuck Lever TRACE_EVENT(rpcgss_oid_to_mech,
669ff27e9f7SChuck Lever 	TP_PROTO(
670ff27e9f7SChuck Lever 		const char *oid
671ff27e9f7SChuck Lever 	),
672ff27e9f7SChuck Lever 
673ff27e9f7SChuck Lever 	TP_ARGS(oid),
674ff27e9f7SChuck Lever 
675ff27e9f7SChuck Lever 	TP_STRUCT__entry(
676ff27e9f7SChuck Lever 		__string(oid, oid)
677ff27e9f7SChuck Lever 	),
678ff27e9f7SChuck Lever 
679ff27e9f7SChuck Lever 	TP_fast_assign(
6802c92ca84SSteven Rostedt (Google) 		__assign_str(oid);
681ff27e9f7SChuck Lever 	),
682ff27e9f7SChuck Lever 
683ff27e9f7SChuck Lever 	TP_printk("mech for oid %s was not found", __get_str(oid))
684ff27e9f7SChuck Lever );
6850c77668dSChuck Lever 
6860c77668dSChuck Lever #endif	/* _TRACE_RPCGSS_H */
6870c77668dSChuck Lever 
6880c77668dSChuck Lever #include <trace/define_trace.h>
689