xref: /titanic_44/usr/src/cmd/smbsrv/dtrace/cifs.d (revision 148c5f43199ca0b43fc8e3b643aab11cd66ea327)
1faa1795aSjb150015 #!/usr/sbin/dtrace -s
2faa1795aSjb150015 /*
3faa1795aSjb150015  * CDDL HEADER START
4faa1795aSjb150015  *
5faa1795aSjb150015  * The contents of this file are subject to the terms of the
6faa1795aSjb150015  * Common Development and Distribution License (the "License").
7faa1795aSjb150015  * You may not use this file except in compliance with the License.
8faa1795aSjb150015  *
9faa1795aSjb150015  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10faa1795aSjb150015  * or http://www.opensolaris.org/os/licensing.
11faa1795aSjb150015  * See the License for the specific language governing permissions
12faa1795aSjb150015  * and limitations under the License.
13faa1795aSjb150015  *
14faa1795aSjb150015  * When distributing Covered Code, include this CDDL HEADER in each
15faa1795aSjb150015  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16faa1795aSjb150015  * If applicable, add the following below this CDDL HEADER, with the
17faa1795aSjb150015  * fields enclosed by brackets "[]" replaced with your own identifying
18faa1795aSjb150015  * information: Portions Copyright [yyyy] [name of copyright owner]
19faa1795aSjb150015  *
20faa1795aSjb150015  * CDDL HEADER END
21faa1795aSjb150015  */
22faa1795aSjb150015 /*
23*148c5f43SAlan Wright  * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
24faa1795aSjb150015  */
25faa1795aSjb150015 
26faa1795aSjb150015 /*
27faa1795aSjb150015 #pragma D option flowindent
28faa1795aSjb150015 */
29faa1795aSjb150015 
30faa1795aSjb150015 /*
31faa1795aSjb150015  * Usage:	./cifs.d -p `pgrep smbd`
32faa1795aSjb150015  *
33faa1795aSjb150015  * On multi-processor systems, it may be easier to follow the output
34faa1795aSjb150015  * if run on a single processor: see psradm.  For example, to disable
35faa1795aSjb150015  * the second processor on a dual-processor system:	psradm -f 1
36faa1795aSjb150015  */
37faa1795aSjb150015 
38faa1795aSjb150015 BEGIN
39faa1795aSjb150015 {
40faa1795aSjb150015 	printf("CIFS Trace Started");
41faa1795aSjb150015 	printf("\n\n");
42faa1795aSjb150015 }
43faa1795aSjb150015 
44faa1795aSjb150015 END
45faa1795aSjb150015 {
46faa1795aSjb150015 	printf("CIFS Trace Ended");
47faa1795aSjb150015 	printf("\n\n");
48faa1795aSjb150015 }
49faa1795aSjb150015 
50faa1795aSjb150015 sdt:smbsrv::-smb_op*-start
51faa1795aSjb150015 {
52faa1795aSjb150015 	sr = (struct smb_request *)arg0;
53faa1795aSjb150015 
54faa1795aSjb150015 	printf("cmd=%d [uid=%d tid=%d]",
55faa1795aSjb150015 	    sr->smb_com, sr->smb_uid, sr->smb_tid);
56faa1795aSjb150015 
57faa1795aSjb150015 	self->status = 0;
58faa1795aSjb150015 }
59faa1795aSjb150015 
60faa1795aSjb150015 sdt:smbsrv::-smb_op*-done
61faa1795aSjb150015 {
62faa1795aSjb150015 	sr = (struct smb_request *)arg0;
63faa1795aSjb150015 
64faa1795aSjb150015 	printf("cmd[%d]: status=0x%08x (class=%d code=%d)",
65faa1795aSjb150015 	    sr->smb_com, sr->smb_error.status,
66faa1795aSjb150015 	    sr->smb_error.errcls, sr->smb_error.errcode);
67faa1795aSjb150015 
68faa1795aSjb150015 	self->status = sr->smb_error.status;
69faa1795aSjb150015 }
70faa1795aSjb150015 
71*148c5f43SAlan Wright sdt:smbsrv::-smb_op-Negotiate-done
72*148c5f43SAlan Wright {
73*148c5f43SAlan Wright 	sr = (struct smb_request *)arg0;
74*148c5f43SAlan Wright 	negprot = (smb_arg_negotiate_t *)arg1;
75*148c5f43SAlan Wright 
76*148c5f43SAlan Wright 	printf("dialect=%s index=%u caps=0x%08x maxmpx=%u tz=%d time=%u",
77*148c5f43SAlan Wright 	    stringof(negprot->ni_name),
78*148c5f43SAlan Wright 	    negprot->ni_index,
79*148c5f43SAlan Wright 	    negprot->ni_capabilities,
80*148c5f43SAlan Wright 	    negprot->ni_maxmpxcount,
81*148c5f43SAlan Wright 	    negprot->ni_tzcorrection,
82*148c5f43SAlan Wright 	    negprot->ni_servertime.tv_sec);
83*148c5f43SAlan Wright 
84*148c5f43SAlan Wright 	printf(" [status=0x%08x (class=%d code=%d)]",
85*148c5f43SAlan Wright 	    sr->smb_error.status,
86*148c5f43SAlan Wright 	    sr->smb_error.errcls, sr->smb_error.errcode);
87*148c5f43SAlan Wright 
88*148c5f43SAlan Wright 	self->status = sr->smb_error.status;
89*148c5f43SAlan Wright }
90*148c5f43SAlan Wright 
91faa1795aSjb150015 sdt:smbsrv::-smb_op-SessionSetupX-start
92faa1795aSjb150015 {
93faa1795aSjb150015 	sr = (struct smb_request *)arg0;
94*148c5f43SAlan Wright 	ssetup = (smb_arg_sessionsetup_t *)arg1;
95faa1795aSjb150015 
96*148c5f43SAlan Wright 	printf("[%s] %s %s %s",
97faa1795aSjb150015 	    (sr->session->s_local_port == 139) ? "NBT" : "TCP",
98faa1795aSjb150015 	    (sr->session->s_local_port == 139) ?
99*148c5f43SAlan Wright 	    stringof(sr->session->workstation) : "",
100*148c5f43SAlan Wright 	    stringof(ssetup->ssi_domain),
101*148c5f43SAlan Wright 	    stringof(ssetup->ssi_user));
102*148c5f43SAlan Wright 
103*148c5f43SAlan Wright 	printf(" maxmpx=%u vc=%u maxbuf=%u",
104*148c5f43SAlan Wright 	    ssetup->ssi_maxmpxcount,
105*148c5f43SAlan Wright 	    sr->session->vcnumber,
106*148c5f43SAlan Wright 	    sr->session->smb_msg_size);
107faa1795aSjb150015 }
108faa1795aSjb150015 
109*148c5f43SAlan Wright sdt:smbsrv::-smb_op-SessionSetupX-done
110*148c5f43SAlan Wright {
111*148c5f43SAlan Wright 	sr = (struct smb_request *)arg0;
112*148c5f43SAlan Wright 	ssetup = (smb_arg_sessionsetup_t *)arg1;
113*148c5f43SAlan Wright 
114*148c5f43SAlan Wright 	printf("%s/%s: smbuid=%d (%s)",
115*148c5f43SAlan Wright 	    stringof(sr->uid_user->u_domain),
116*148c5f43SAlan Wright 	    stringof(sr->uid_user->u_name),
117*148c5f43SAlan Wright 	    sr->smb_uid,
118*148c5f43SAlan Wright 	    (ssetup->ssi_guest == 0) ? "user" : "guest");
119*148c5f43SAlan Wright 
120*148c5f43SAlan Wright 	printf(" [status=0x%08x (class=%d code=%d)]",
121*148c5f43SAlan Wright 	    sr->smb_error.status,
122*148c5f43SAlan Wright 	    sr->smb_error.errcls, sr->smb_error.errcode);
123*148c5f43SAlan Wright 
124*148c5f43SAlan Wright 	self->status = sr->smb_error.status;
125*148c5f43SAlan Wright }
126*148c5f43SAlan Wright 
127faa1795aSjb150015 sdt:smbsrv::-smb_op-LogoffX-start
128faa1795aSjb150015 {
129faa1795aSjb150015 	sr = (struct smb_request *)arg0;
130faa1795aSjb150015 
131faa1795aSjb150015 	printf("uid %d: %s/%s", sr->smb_uid,
132faa1795aSjb150015 	    stringof(sr->uid_user->u_domain),
133faa1795aSjb150015 	    stringof(sr->uid_user->u_name));
134faa1795aSjb150015 }
135faa1795aSjb150015 
136faa1795aSjb150015 sdt:smbsrv::-smb_op-TreeConnectX-start
137faa1795aSjb150015 {
138faa1795aSjb150015 	tcon = (struct tcon *)arg1;
139faa1795aSjb150015 
140faa1795aSjb150015 	printf("[%s] %s",
141faa1795aSjb150015                 stringof(tcon->service),
142faa1795aSjb150015                 stringof(tcon->path));
143faa1795aSjb150015 }
144faa1795aSjb150015 
145*148c5f43SAlan Wright sdt:smbsrv::-smb_op-TreeConnectX-done
146*148c5f43SAlan Wright {
147*148c5f43SAlan Wright 	sr = (struct smb_request *)arg0;
148*148c5f43SAlan Wright 
149*148c5f43SAlan Wright 	printf("tid %d: %s", sr->smb_tid,
150*148c5f43SAlan Wright 	    (sr->smb_error.status == 0) ?
151*148c5f43SAlan Wright 	    stringof(sr->tid_tree->t_sharename) : "");
152*148c5f43SAlan Wright 
153*148c5f43SAlan Wright 	printf(" [status=0x%08x (class=%d code=%d)]",
154*148c5f43SAlan Wright 	    sr->smb_error.status,
155*148c5f43SAlan Wright 	    sr->smb_error.errcls, sr->smb_error.errcode);
156*148c5f43SAlan Wright }
157*148c5f43SAlan Wright 
158faa1795aSjb150015 sdt:smbsrv::-smb_op-TreeDisconnect-start
159faa1795aSjb150015 {
160faa1795aSjb150015 	sr = (struct smb_request *)arg0;
161faa1795aSjb150015 
162faa1795aSjb150015 	printf("tid %d: %s", sr->smb_tid,
163faa1795aSjb150015 	    stringof(sr->tid_tree->t_sharename));
164faa1795aSjb150015 	discard(self->status);
165faa1795aSjb150015 }
166faa1795aSjb150015 
167faa1795aSjb150015 sdt:smbsrv::-smb_op-Open-start,
168faa1795aSjb150015 sdt:smbsrv::-smb_op-OpenX-start,
169faa1795aSjb150015 sdt:smbsrv::-smb_op-Create-start,
170faa1795aSjb150015 sdt:smbsrv::-smb_op-CreateNew-start,
171faa1795aSjb150015 sdt:smbsrv::-smb_op-CreateTemporary-start,
172faa1795aSjb150015 sdt:smbsrv::-smb_op-CreateDirectory-start,
173faa1795aSjb150015 sdt:smbsrv::-smb_op-NtCreateX-start,
174faa1795aSjb150015 sdt:smbsrv::-smb_op-NtTransactCreate-start
175faa1795aSjb150015 {
176faa1795aSjb150015 	op =  (struct open_param *)arg1;
177faa1795aSjb150015 
178f96bd5c8SAlan Wright 	printf("%s", stringof(op->fqi.fq_path.pn_path));
179faa1795aSjb150015 }
180faa1795aSjb150015 
181faa1795aSjb150015 sdt:smbsrv::-smb_op-Open-done,
182faa1795aSjb150015 sdt:smbsrv::-smb_op-OpenX-done,
183faa1795aSjb150015 sdt:smbsrv::-smb_op-Create-done,
184faa1795aSjb150015 sdt:smbsrv::-smb_op-CreateNew-done,
185faa1795aSjb150015 sdt:smbsrv::-smb_op-CreateTemporary-done,
186faa1795aSjb150015 sdt:smbsrv::-smb_op-CreateDirectory-done,
187faa1795aSjb150015 sdt:smbsrv::-smb_op-NtCreateX-done,
188faa1795aSjb150015 sdt:smbsrv::-smb_op-NtTransactCreate-done
189faa1795aSjb150015 {
190faa1795aSjb150015 	sr = (struct smb_request *)arg0;
191faa1795aSjb150015 
192faa1795aSjb150015 	printf("%s: fid=%u",
193f96bd5c8SAlan Wright 	    stringof(sr->arg.open.fqi.fq_path.pn_path), sr->smb_fid);
194faa1795aSjb150015 }
195faa1795aSjb150015 
196faa1795aSjb150015 sdt:smbsrv::-smb_op-Read-start,
197faa1795aSjb150015 sdt:smbsrv::-smb_op-LockAndRead-start,
198faa1795aSjb150015 sdt:smbsrv::-smb_op-ReadX-start,
199faa1795aSjb150015 sdt:smbsrv::-smb_op-ReadRaw-start,
200faa1795aSjb150015 sdt:smbsrv::-smb_op-Write-start,
201faa1795aSjb150015 sdt:smbsrv::-smb_op-WriteAndClose-start,
202faa1795aSjb150015 sdt:smbsrv::-smb_op-WriteAndUnlock-start,
203faa1795aSjb150015 sdt:smbsrv::-smb_op-WriteX-start,
204faa1795aSjb150015 sdt:smbsrv::-smb_op-WriteRaw-start
205faa1795aSjb150015 {
206faa1795aSjb150015 	sr = (struct smb_request *)arg0;
207faa1795aSjb150015 	rw =  (smb_rw_param_t *)arg1;
208faa1795aSjb150015 
209faa1795aSjb150015 	printf("fid=%d: %u bytes at offset %u",
210faa1795aSjb150015 	    sr->smb_fid, rw->rw_count, rw->rw_offset);
211faa1795aSjb150015 }
212faa1795aSjb150015 
213faa1795aSjb150015 sdt:smbsrv::-smb_op-Read-done,
214faa1795aSjb150015 sdt:smbsrv::-smb_op-LockAndRead-done,
215faa1795aSjb150015 sdt:smbsrv::-smb_op-ReadX-done,
216faa1795aSjb150015 sdt:smbsrv::-smb_op-ReadRaw-done
217faa1795aSjb150015 /self->status == 0/
218faa1795aSjb150015 {
219faa1795aSjb150015 	sr = (struct smb_request *)arg0;
220faa1795aSjb150015 	rw =  (smb_rw_param_t *)arg1;
221faa1795aSjb150015 
222faa1795aSjb150015 	printf("fid=%d: %u bytes at offset %u",
223faa1795aSjb150015 	    sr->smb_fid, rw->rw_count, rw->rw_offset);
224faa1795aSjb150015 }
225faa1795aSjb150015 
226faa1795aSjb150015 sdt:smbsrv::-smb_op-Rename-start
227faa1795aSjb150015 {
228faa1795aSjb150015 	p = (struct dirop *)arg1;
229faa1795aSjb150015 
230faa1795aSjb150015 	printf("%s to %s",
231f96bd5c8SAlan Wright 	    stringof(p->fqi.fq_path.pn_path),
232f96bd5c8SAlan Wright 	    stringof(p->dst_fqi.fq_path.pn_path));
233faa1795aSjb150015 }
234faa1795aSjb150015 
235faa1795aSjb150015 sdt:smbsrv::-smb_op-CheckDirectory-start,
236faa1795aSjb150015 sdt:smbsrv::-smb_op-CreateDirectory-start,
237faa1795aSjb150015 sdt:smbsrv::-smb_op-DeleteDirectory-start,
238faa1795aSjb150015 sdt:smbsrv::-smb_op-Delete-start
239faa1795aSjb150015 {
240faa1795aSjb150015 	p = (struct dirop *)arg1;
241faa1795aSjb150015 
242f96bd5c8SAlan Wright 	printf("%s", stringof(p->fqi.fq_path.pn_path));
243faa1795aSjb150015 }
244faa1795aSjb150015 
245faa1795aSjb150015 /*
246faa1795aSjb150015 smb_dispatch_request:entry,
247faa1795aSjb150015 smb_dispatch_request:return,
248faa1795aSjb150015 smb_pre_*:return,
249faa1795aSjb150015 smb_com_*:return,
250faa1795aSjb150015 smb_post_*:return,
251*148c5f43SAlan Wright smbsr_status:return,
252faa1795aSjb150015 smbsr_errno:return
253faa1795aSjb150015 {
254faa1795aSjb150015 }
255faa1795aSjb150015 
256faa1795aSjb150015 smb_pre_*:entry,
257faa1795aSjb150015 smb_com_*:entry,
258faa1795aSjb150015 smb_post_*:entry
259faa1795aSjb150015 {
260faa1795aSjb150015 	sr = (struct smb_request *)arg0;
261faa1795aSjb150015 
262faa1795aSjb150015 	printf("cmd=%d [uid=%d tid=%d]",
263faa1795aSjb150015 	    sr->smb_com, sr->smb_uid, sr->smb_tid);
264faa1795aSjb150015 }
265faa1795aSjb150015 
266*148c5f43SAlan Wright smbsr_status:entry
267faa1795aSjb150015 {
268faa1795aSjb150015     printf("status=0x%08x class=%d, code=%d\n", arg1, arg2, arg3);
269faa1795aSjb150015 }
270faa1795aSjb150015 
271faa1795aSjb150015 smbsr_errno:entry
272faa1795aSjb150015 {
273faa1795aSjb150015     printf("errno=%d\n", arg1);
274faa1795aSjb150015 }
275faa1795aSjb150015 */
276