xref: /titanic_51/usr/src/cmd/vscan/vscand/vscan.d (revision bfc848c632c9eacb2a640246d96e198f1b185c03)
1911106dfSjm199354 #!/usr/sbin/dtrace -s
2911106dfSjm199354 /*
3911106dfSjm199354  * CDDL HEADER START
4911106dfSjm199354  *
5911106dfSjm199354  * The contents of this file are subject to the terms of the
6911106dfSjm199354  * Common Development and Distribution License (the "License").
7911106dfSjm199354  * You may not use this file except in compliance with the License.
8911106dfSjm199354  *
9911106dfSjm199354  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10911106dfSjm199354  * or http://www.opensolaris.org/os/licensing.
11911106dfSjm199354  * See the License for the specific language governing permissions
12911106dfSjm199354  * and limitations under the License.
13911106dfSjm199354  *
14911106dfSjm199354  * When distributing Covered Code, include this CDDL HEADER in each
15911106dfSjm199354  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16911106dfSjm199354  * If applicable, add the following below this CDDL HEADER, with the
17911106dfSjm199354  * fields enclosed by brackets "[]" replaced with your own identifying
18911106dfSjm199354  * information: Portions Copyright [yyyy] [name of copyright owner]
19911106dfSjm199354  *
20911106dfSjm199354  * CDDL HEADER END
21911106dfSjm199354  */
22911106dfSjm199354 /*
2353c11029Sjm199354  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
24911106dfSjm199354  * Use is subject to license terms.
25911106dfSjm199354  */
26911106dfSjm199354 
27911106dfSjm199354 #pragma ident	"%Z%%M%	%I%	%E% SMI"
28911106dfSjm199354 
29*bfc848c6Sjm199354 /*
30911106dfSjm199354 #pragma D option flowindent
31*bfc848c6Sjm199354 */
32911106dfSjm199354 
33911106dfSjm199354 /*
34911106dfSjm199354  *** vscan kernel pseudo driver ***
35911106dfSjm199354  */
36911106dfSjm199354 
37*bfc848c6Sjm199354 /*
38*bfc848c6Sjm199354  * vscan_svc.c
39*bfc848c6Sjm199354  */
40*bfc848c6Sjm199354 sdt:vscan::vscan-req-counts
41*bfc848c6Sjm199354 {
42*bfc848c6Sjm199354 	printf("%s reql: %d, node: %d, taskq: %d",
43*bfc848c6Sjm199354 	    stringof(arg0),
44*bfc848c6Sjm199354 	    ((vscan_svc_counts_t *)arg1)->vsc_reql,
45*bfc848c6Sjm199354 	    ((vscan_svc_counts_t *)arg1)->vsc_node,
46*bfc848c6Sjm199354 	    ((vscan_svc_counts_t *)arg1)->vsc_tq);
47*bfc848c6Sjm199354 }
48*bfc848c6Sjm199354 
49*bfc848c6Sjm199354 sdt:vscan::vscan-svc-state-violation
50*bfc848c6Sjm199354 {
51*bfc848c6Sjm199354 	printf("%d %s", arg0,
52*bfc848c6Sjm199354 		arg0 == 0 ? "UNCONFIG" :
53*bfc848c6Sjm199354 		arg0 == 1 ? "IDLE" :
54*bfc848c6Sjm199354 		arg0 == 2 ? "ENABLED" :
55*bfc848c6Sjm199354 		arg0 == 3 ? "DISABLED" : "UNKNOWN");
56*bfc848c6Sjm199354 }
57*bfc848c6Sjm199354 
58*bfc848c6Sjm199354 sdt:vscan::vscan-scan-timeout
59*bfc848c6Sjm199354 {
60*bfc848c6Sjm199354 	printf("idx: %d, seqnum: %d - %s",
61*bfc848c6Sjm199354 	    ((vscan_req_t *)arg0)->vsr_idx,
62*bfc848c6Sjm199354 		((vscan_req_t *)arg0)->vsr_seqnum,
63*bfc848c6Sjm199354 		stringof(((vscan_req_t *)arg0)->vsr_vp->v_path));
64*bfc848c6Sjm199354 }
65*bfc848c6Sjm199354 
66911106dfSjm199354 sdt:vscan::vscan-scan-file
67911106dfSjm199354 {
68911106dfSjm199354 	printf("%s (%s)", stringof(arg0), arg1 ? "async" : "sync");
69911106dfSjm199354 }
70911106dfSjm199354 
71911106dfSjm199354 sdt:vscan::vscan-exempt-filesize
72911106dfSjm199354 {
73911106dfSjm199354 	printf("%s EXEMPT (%s)", stringof(arg0), arg1 ? "DENY" : "ALLOW");
74911106dfSjm199354 }
75911106dfSjm199354 
76911106dfSjm199354 sdt:vscan::vscan-type-match
77911106dfSjm199354 {
78911106dfSjm199354 	printf("ext: %s matched: %s", stringof(arg0), stringof(arg1));
79911106dfSjm199354 }
80911106dfSjm199354 
81911106dfSjm199354 sdt:vscan::vscan-exempt-filetype
82911106dfSjm199354 {
83911106dfSjm199354 	printf("%s EXEMPT", stringof(arg0));
84911106dfSjm199354 }
85911106dfSjm199354 
8653c11029Sjm199354 sdt:vscan::vscan-getattr
87911106dfSjm199354 {
88911106dfSjm199354 	printf("%s, m: %d, q: %d, scanstamp: %s",
89*bfc848c6Sjm199354 		stringof(((vscan_svc_node_t *)arg0)->vsn_req->vsr_vp->v_path),
90*bfc848c6Sjm199354 		((vscan_svc_node_t *)arg0)->vsn_modified,
91*bfc848c6Sjm199354 		((vscan_svc_node_t *)arg0)->vsn_quarantined,
92*bfc848c6Sjm199354 		stringof(((vscan_svc_node_t *)arg0)->vsn_scanstamp));
93911106dfSjm199354 }
94911106dfSjm199354 
9553c11029Sjm199354 sdt:vscan::vscan-setattr
9653c11029Sjm199354 {
9753c11029Sjm199354 	/* XAT_AV_QUARANTINED */
9853c11029Sjm199354 	printf("%s", (arg1 & 0x400) == 0 ? "" :
99*bfc848c6Sjm199354 	    ((vscan_svc_node_t *)arg0)->vsn_quarantined ? "q: 1, " : "q: 0, ");
100911106dfSjm199354 
10153c11029Sjm199354 	/* XAT_AV_MODIFIED */
10253c11029Sjm199354 	printf("%s", (arg1 & 0x800) == 0 ? "" :
103*bfc848c6Sjm199354 	    ((vscan_svc_node_t *)arg0)->vsn_modified ? "m: 1, " : "m: 0, ");
10453c11029Sjm199354 
10553c11029Sjm199354 	/* XAT_AV_SCANSTAMP */
10653c11029Sjm199354 	printf("%s", (arg1 & 0x1000) == 0 ? "" : "scanstamp: ");
10753c11029Sjm199354 	printf("%s", (arg1 & 0x1000) == 0 ? "" :
108*bfc848c6Sjm199354 	    stringof(((vscan_svc_node_t *)arg0)->vsn_scanstamp));
10953c11029Sjm199354 }
11053c11029Sjm199354 
11153c11029Sjm199354 
11253c11029Sjm199354 sdt:vscan::vscan-mtime-changed
11353c11029Sjm199354 {
11453c11029Sjm199354 	printf("%s",
115*bfc848c6Sjm199354 		stringof(((vscan_svc_node_t *)arg0)->vsn_req->vsr_vp->v_path));
11653c11029Sjm199354 }
11753c11029Sjm199354 
11853c11029Sjm199354 
11953c11029Sjm199354 sdt:vscan::vscan-result
12053c11029Sjm199354 {
121*bfc848c6Sjm199354 	printf("idx: %d, seqnum: %d, VS_STATUS_%s - VS_ACCESS_%s",
122*bfc848c6Sjm199354 		arg0, arg1,
123*bfc848c6Sjm199354 	    arg2 == 0 ? "UNDEFINED" :
124*bfc848c6Sjm199354 	    arg2 == 1 ? "NO_SCAN" :
125*bfc848c6Sjm199354 	    arg2 == 2 ? "ERROR" :
126*bfc848c6Sjm199354 	    arg2 == 3 ? "CLEAN" :
127*bfc848c6Sjm199354 	    arg2 == 4 ? "INFECTED" :
128*bfc848c6Sjm199354 	    arg2 == 5 ? "SCANNING" : "XXX unknown",
129*bfc848c6Sjm199354 	    arg3 == 0 ? "UNDEFINED" :
130*bfc848c6Sjm199354 	    arg3 == 1 ? "ALLOW" : "DENY");
13153c11029Sjm199354 }
13253c11029Sjm199354 
133*bfc848c6Sjm199354 /* insert request into request list */
134*bfc848c6Sjm199354 fbt:vscan:vscan_svc_reql_insert:entry
135*bfc848c6Sjm199354 {
136*bfc848c6Sjm199354 	printf("%s", stringof(args[0]->v_path));
137*bfc848c6Sjm199354 }
138*bfc848c6Sjm199354 fbt:vscan:vscan_svc_reql_insert:return
139*bfc848c6Sjm199354 /args[1] != 0/
140*bfc848c6Sjm199354 {
141*bfc848c6Sjm199354 	printf("seqnum %d %s", args[1]->vsr_seqnum,
142*bfc848c6Sjm199354 	    stringof(args[1]->vsr_vp->v_path));
143*bfc848c6Sjm199354 }
144*bfc848c6Sjm199354 fbt:vscan:vscan_svc_reql_insert:return
145*bfc848c6Sjm199354 /args[1] == 0/
146*bfc848c6Sjm199354 {
147*bfc848c6Sjm199354 	printf("request list full");
148*bfc848c6Sjm199354 }
149*bfc848c6Sjm199354 /* insert request into scan table */
150*bfc848c6Sjm199354 fbt:vscan:vscan_svc_insert_req:entry
151*bfc848c6Sjm199354 {
152*bfc848c6Sjm199354 	printf("seqnum: %d - %s",
153*bfc848c6Sjm199354 	    args[0]->vsr_seqnum, stringof(args[0]->vsr_vp->v_path));
154*bfc848c6Sjm199354 }
155*bfc848c6Sjm199354 fbt:vscan:vscan_svc_insert_req:return
156*bfc848c6Sjm199354 {
157*bfc848c6Sjm199354 	printf("idx: %d", args[1]);
158*bfc848c6Sjm199354 }
159*bfc848c6Sjm199354 /* remove request from request list and  scan table and delete it*/
160*bfc848c6Sjm199354 fbt:vscan:vscan_svc_delete_req:entry
161*bfc848c6Sjm199354 {
162*bfc848c6Sjm199354 	printf("idx: %d, seqnum: %d - %s",
163*bfc848c6Sjm199354 	    args[0]->vsr_idx, args[0]->vsr_seqnum,
164*bfc848c6Sjm199354 		stringof(args[0]->vsr_vp->v_path));
165*bfc848c6Sjm199354 }
166*bfc848c6Sjm199354 
167*bfc848c6Sjm199354 fbt:vscan:vscan_svc_delete_req:return,
168*bfc848c6Sjm199354 fbt:vscan:vscan_svc_reql_handler:entry,
169*bfc848c6Sjm199354 fbt:vscan:vscan_svc_reql_handler:return
170*bfc848c6Sjm199354 {
171*bfc848c6Sjm199354 }
172*bfc848c6Sjm199354 
173*bfc848c6Sjm199354 fbt:vscan:vscan_svc_taskq_callback:entry,
174*bfc848c6Sjm199354 fbt:vscan:vscan_svc_do_scan:entry
175*bfc848c6Sjm199354 {
176*bfc848c6Sjm199354 	printf("idx: %d, seqnum: %d - %s",
177*bfc848c6Sjm199354 	    ((vscan_req_t *)(args[0]))->vsr_idx,
178*bfc848c6Sjm199354 		((vscan_req_t *)(args[0]))->vsr_seqnum,
179*bfc848c6Sjm199354 		stringof(((vscan_req_t *)(args[0]))->vsr_vp->v_path));
180*bfc848c6Sjm199354 }
181*bfc848c6Sjm199354 fbt:vscan:vscan_svc_scan_complete:entry
182*bfc848c6Sjm199354 {
183*bfc848c6Sjm199354 	printf("idx: %d, seqnum: %d, state: %s - %s",
184*bfc848c6Sjm199354 	    args[0]->vsr_idx, args[0]->vsr_seqnum,
185*bfc848c6Sjm199354 		args[0]->vsr_state == 0 ? "INIT" :
186*bfc848c6Sjm199354 		args[0]->vsr_state == 1 ? "QUEUED" :
187*bfc848c6Sjm199354 		args[0]->vsr_state == 2 ? "IN_PROGRESS" :
188*bfc848c6Sjm199354 		args[0]->vsr_state == 3 ? "SCANNING" :
189*bfc848c6Sjm199354 		args[0]->vsr_state == 4 ? "ASYNC_COMPLETE" :
190*bfc848c6Sjm199354 		args[0]->vsr_state == 5 ? "COMPLETE" : "UNKNOWN",
191*bfc848c6Sjm199354 		stringof(args[0]->vsr_vp->v_path));
192*bfc848c6Sjm199354 }
193*bfc848c6Sjm199354 
194*bfc848c6Sjm199354 fbt:vscan:vscan_svc_taskq_callback:return,
195*bfc848c6Sjm199354 fbt:vscan:vscan_svc_do_scan:return,
196*bfc848c6Sjm199354 fbt:vscan:vscan_svc_scan_complete:return
197*bfc848c6Sjm199354 {
198*bfc848c6Sjm199354 }
199*bfc848c6Sjm199354 
200*bfc848c6Sjm199354 sdt:vscan::vscan-abort
201*bfc848c6Sjm199354 {
202*bfc848c6Sjm199354 	printf("idx: %d, seqnum: %d - %s",
203*bfc848c6Sjm199354 	    ((vscan_req_t *)(arg0))->vsr_idx,
204*bfc848c6Sjm199354 		((vscan_req_t *)(arg0))->vsr_seqnum,
205*bfc848c6Sjm199354 		stringof(((vscan_req_t *)(arg0))->vsr_vp->v_path));
206*bfc848c6Sjm199354 }
20753c11029Sjm199354 
20853c11029Sjm199354 fbt:vscan:vscan_svc_enable:entry,
20953c11029Sjm199354 fbt:vscan:vscan_svc_enable:return,
21053c11029Sjm199354 fbt:vscan:vscan_svc_disable:entry,
21153c11029Sjm199354 fbt:vscan:vscan_svc_disable:return,
212911106dfSjm199354 fbt:vscan:vscan_svc_configure:entry,
213*bfc848c6Sjm199354 fbt:vscan:vscan_svc_configure:return
214911106dfSjm199354 {
215911106dfSjm199354 }
216911106dfSjm199354 
217911106dfSjm199354 /*
218*bfc848c6Sjm199354  * vscan_door.c
219911106dfSjm199354  */
220*bfc848c6Sjm199354 fbt:vscan:vscan_door_open:entry,
221*bfc848c6Sjm199354 fbt:vscan:vscan_door_open:return,
222*bfc848c6Sjm199354 fbt:vscan:vscan_door_close:entry,
223*bfc848c6Sjm199354 fbt:vscan:vscan_door_close:return
224*bfc848c6Sjm199354 {
225*bfc848c6Sjm199354 }
226911106dfSjm199354 
227911106dfSjm199354 fbt:vscan:vscan_door_scan_file:entry
228911106dfSjm199354 {
229*bfc848c6Sjm199354 	printf("idx: %d, seqnum: %d - %s",
230*bfc848c6Sjm199354 	    args[0]->vsr_idx, args[0]->vsr_seqnum, args[0]->vsr_path);
231911106dfSjm199354 }
232911106dfSjm199354 fbt:vscan:vscan_door_scan_file:return
233911106dfSjm199354 {
234*bfc848c6Sjm199354 	printf("VS_STATUS_%s",
235*bfc848c6Sjm199354 	    args[1] == 0 ? "UNDEFINED" :
236*bfc848c6Sjm199354 	    args[1] == 1 ? "NO_SCAN" :
237*bfc848c6Sjm199354 	    args[1] == 2 ? "ERROR" :
238*bfc848c6Sjm199354 	    args[1] == 3 ? "CLEAN" :
239*bfc848c6Sjm199354 	    args[1] == 4 ? "INFECTED" :
240*bfc848c6Sjm199354 	    args[1] == 5 ? "SCANNING" : "XXX unknown");
241911106dfSjm199354 }
242911106dfSjm199354 
243*bfc848c6Sjm199354 
244*bfc848c6Sjm199354 /*
245*bfc848c6Sjm199354  * vscan_drv.c
246*bfc848c6Sjm199354  */
247*bfc848c6Sjm199354 sdt:vscan::vscan-drv-state-violation
248*bfc848c6Sjm199354 {
249*bfc848c6Sjm199354 	printf("%d %s", arg0,
250*bfc848c6Sjm199354 		arg0 == 0 ? "UNCONFIG" :
251*bfc848c6Sjm199354 		arg0 == 1 ? "IDLE" :
252*bfc848c6Sjm199354 		arg0 == 2 ? "CONNECTED" :
253*bfc848c6Sjm199354 		arg0 == 3 ? "ENABLED" :
254*bfc848c6Sjm199354 		arg0 == 4 ? "DELAYED_DISABLE" : "UNKNOWN");
255*bfc848c6Sjm199354 }
256911106dfSjm199354 
25753c11029Sjm199354 sdt:vscan::vscan-minor-node
25853c11029Sjm199354 {
25953c11029Sjm199354 	printf("vscan%d %s", arg0, arg1 != 0 ? "created" : "error");
26053c11029Sjm199354 }
26153c11029Sjm199354 
262*bfc848c6Sjm199354 /* unprivileged vscan driver access attempt */
263911106dfSjm199354 sdt:vscan::vscan-priv
264911106dfSjm199354 /arg0 != 0/
265911106dfSjm199354 {
266911106dfSjm199354 	printf("vscan driver access attempt by unprivileged process");
267911106dfSjm199354 }
268911106dfSjm199354 
269*bfc848c6Sjm199354 /* daemon-driver synchronization */
270*bfc848c6Sjm199354 sdt:vscan::vscan-reconnect
271*bfc848c6Sjm199354 {
272*bfc848c6Sjm199354 }
273*bfc848c6Sjm199354 
274911106dfSjm199354 fbt:vscan:vscan_drv_open:entry
275911106dfSjm199354 / *(int *)args[0] == 0/
276911106dfSjm199354 {
277911106dfSjm199354 	printf("vscan daemon attach");
278911106dfSjm199354 }
279911106dfSjm199354 
280911106dfSjm199354 fbt:vscan:vscan_drv_close:entry
281911106dfSjm199354 / (int)args[0] == 0/
282911106dfSjm199354 {
283911106dfSjm199354 	printf("vscan daemon detach");
284911106dfSjm199354 }
285911106dfSjm199354 
286911106dfSjm199354 fbt:vscan:vscan_drv_ioctl:entry
287911106dfSjm199354 / (int)args[0] == 0/
288911106dfSjm199354 {
28953c11029Sjm199354 	printf("vscan daemon ioctl %d %s", args[1],
29053c11029Sjm199354 		args[1] == 1 ? "ENABLE" :
29153c11029Sjm199354 		args[1] == 2 ? "DISABLE" :
292*bfc848c6Sjm199354 		args[1] == 3 ? "CONFIG" :
293*bfc848c6Sjm199354 		args[1] == 4 ? "RESULT" :
294*bfc848c6Sjm199354 		args[1] == 5 ? "MAX FILES" : "unknown");
295911106dfSjm199354 }
296911106dfSjm199354 
29753c11029Sjm199354 fbt:vscan:vscan_drv_delayed_disable:entry,
298*bfc848c6Sjm199354 fbt:vscan:vscan_drv_delayed_disable:return,
29953c11029Sjm199354 fbt:vscan:vscan_drv_attach:entry,
300*bfc848c6Sjm199354 fbt:vscan:vscan_drv_detach:entry
301*bfc848c6Sjm199354 {
302*bfc848c6Sjm199354 }
303*bfc848c6Sjm199354 
30453c11029Sjm199354 fbt:vscan:vscan_drv_attach:return,
30553c11029Sjm199354 fbt:vscan:vscan_drv_detach:return
30653c11029Sjm199354 {
307*bfc848c6Sjm199354 	printf("%s", args[1] ? "DDI_FAILURE" : "DDI_SUCCESS");
30853c11029Sjm199354 }
30953c11029Sjm199354 
310*bfc848c6Sjm199354 fbt:vscan:vscan_drv_in_use:return
31153c11029Sjm199354 {
312*bfc848c6Sjm199354 	printf("%s", args[1] ? "TRUE" : "FALSE");
31353c11029Sjm199354 }
31453c11029Sjm199354 
315911106dfSjm199354 
316*bfc848c6Sjm199354 /* file access */
317911106dfSjm199354 
318911106dfSjm199354 /*
319911106dfSjm199354 fbt:vscan:vscan_drv_open:entry
320911106dfSjm199354 / *(int *)args[0] != 0/
321911106dfSjm199354 {
322911106dfSjm199354 	printf("%d", *(int *)args[0]);
323911106dfSjm199354 }
324911106dfSjm199354 
325911106dfSjm199354 fbt:vscan:vscan_drv_close:entry,
326911106dfSjm199354 fbt:vscan:vscan_drv_read:entry
327911106dfSjm199354 / (int)args[0] != 0/
328911106dfSjm199354 {
329911106dfSjm199354 	printf("%d", (int)args[0]);
330911106dfSjm199354 }
331911106dfSjm199354 */
332911106dfSjm199354 
333911106dfSjm199354 
334911106dfSjm199354 /*
335911106dfSjm199354  *** vscan daemon - vscand ***
336911106dfSjm199354  */
337911106dfSjm199354 
338*bfc848c6Sjm199354 pid$target::vs_svc_init:entry
339*bfc848c6Sjm199354 {
340*bfc848c6Sjm199354 	printf("Max concurrent scan requests from kernel: %d", arg1);
341*bfc848c6Sjm199354 }
342*bfc848c6Sjm199354 
343*bfc848c6Sjm199354 pid$target::vs_svc_init:return
344*bfc848c6Sjm199354 {
345*bfc848c6Sjm199354 }
346*bfc848c6Sjm199354 
347*bfc848c6Sjm199354 
348911106dfSjm199354 pid$target::vs_door_scan_req:entry,
349911106dfSjm199354 pid$target::vs_svc_scan_file:entry,
350*bfc848c6Sjm199354 pid$target::vs_svc_queue_scan_req:entry,
351*bfc848c6Sjm199354 pid$target::vs_svc_async_scan:entry,
352911106dfSjm199354 pid$target::vs_eng_scanstamp_current:entry,
353911106dfSjm199354 pid$target::vs_icap_scan_file:entry
354911106dfSjm199354 {
355911106dfSjm199354 }
356911106dfSjm199354 
357*bfc848c6Sjm199354 pid$target::vs_svc_queue_scan_req:return,
358*bfc848c6Sjm199354 pid$target::vs_svc_async_scan:return
359*bfc848c6Sjm199354 {
360*bfc848c6Sjm199354 }
361*bfc848c6Sjm199354 
362911106dfSjm199354 pid$target::vs_svc_scan_file:return
363911106dfSjm199354 {
36453c11029Sjm199354 	printf("VS_STATUS_%s",
36553c11029Sjm199354 	    arg1 == 0 ? "UNDEFINED" :
36653c11029Sjm199354 	    arg1 == 1 ? "NO_SCAN" :
36753c11029Sjm199354 	    arg1 == 2 ? "ERROR" :
36853c11029Sjm199354 	    arg1 == 3 ? "CLEAN" :
369*bfc848c6Sjm199354 	    arg1 == 4 ? "INFECTED" :
370*bfc848c6Sjm199354 	    arg1 == 5 ? "SCANNING" : "XXX unknown");
371911106dfSjm199354 }
372911106dfSjm199354 
373911106dfSjm199354 pid$target::vs_eng_scanstamp_current:return
374911106dfSjm199354 {
375911106dfSjm199354 	printf("%sCURRENT", arg1 == 0 ? "NOT " : "");
376911106dfSjm199354 }
377911106dfSjm199354 
378911106dfSjm199354 pid$target::vs_icap_scan_file:return
379911106dfSjm199354 {
380*bfc848c6Sjm199354 	printf("%d VS_RESULT_%s", (int)arg1,
381*bfc848c6Sjm199354 	    (int)arg1 == 0 ? "UNDEFINED" :
382*bfc848c6Sjm199354 	    (int)arg1 == 1 ? "CLEAN" :
383*bfc848c6Sjm199354 	    (int)arg1 == 2 ? "CLEANED" :
384*bfc848c6Sjm199354 	    (int)arg1 == 3 ? "FORBIDDEN" : "(SE)_ERROR");
385911106dfSjm199354 }
386911106dfSjm199354 
387911106dfSjm199354 pid$target::vs_stats_set:entry
388911106dfSjm199354 {
389911106dfSjm199354 	printf("%s", (arg0 == 1) ? "CLEAN" :
390911106dfSjm199354 		(arg0 == 2) ? "CLEANED" :
39153c11029Sjm199354 		(arg0 == 3) ? "QUARANTINE" : "ERROR");
392911106dfSjm199354 }
393911106dfSjm199354 
394911106dfSjm199354 pid$target::vs_stats_set:return
395911106dfSjm199354 {
396911106dfSjm199354 }
397911106dfSjm199354 
398911106dfSjm199354 /* get engine connection */
399911106dfSjm199354 pid$target::vs_eng_get:entry,
400*bfc848c6Sjm199354 pid$target::vs_eng_connect:entry,
401*bfc848c6Sjm199354 pid$target::vs_eng_release:entry,
402*bfc848c6Sjm199354 pid$target::vs_eng_release:return
403911106dfSjm199354 {
404911106dfSjm199354 }
405911106dfSjm199354 pid$target::vs_eng_get:return,
406911106dfSjm199354 pid$target::vs_eng_connect:return
407911106dfSjm199354 {
408911106dfSjm199354 	printf("%s", arg1 == 0 ? "success" : "error");
409911106dfSjm199354 }
410911106dfSjm199354 
411911106dfSjm199354 /* engine errors */
412911106dfSjm199354 pid$target::vs_eng_set_error:entry
413911106dfSjm199354 / arg1 == 1 /
414911106dfSjm199354 {
415*bfc848c6Sjm199354 	printf("scan engine error");
416911106dfSjm199354 }
417911106dfSjm199354 
418*bfc848c6Sjm199354 /* configuration */
419*bfc848c6Sjm199354 pid$target::vscand_cfg_init:entry,
420*bfc848c6Sjm199354 pid$target::vscand_cfg_fini:entry,
421*bfc848c6Sjm199354 pid$target::vscand_cfg_init:return,
422*bfc848c6Sjm199354 pid$target::vscand_cfg_fini:return,
423*bfc848c6Sjm199354 pid$target::vscand_cfg_handler:entry,
424*bfc848c6Sjm199354 pid$target::vscand_cfg_handler:return
425*bfc848c6Sjm199354 {
426*bfc848c6Sjm199354 }
427*bfc848c6Sjm199354 
428*bfc848c6Sjm199354 pid$target::vscand_dtrace_gen:entry
429*bfc848c6Sjm199354 {
430*bfc848c6Sjm199354 	printf("maxsize: %s action: %s\n",
431*bfc848c6Sjm199354 		copyinstr(arg0), (arg1 == 1) ? "allow" : "deny");
432*bfc848c6Sjm199354 	printf("types: %s\n", copyinstr(arg2));
433*bfc848c6Sjm199354 	printf("log: %s\n", copyinstr(arg3));
434*bfc848c6Sjm199354 }
435*bfc848c6Sjm199354 pid$target::vscand_dtrace_eng:entry
436*bfc848c6Sjm199354 {
437*bfc848c6Sjm199354 	printf("\n%s %s \nhost: %s \nport: %d \nmax connections: %d\n",
438*bfc848c6Sjm199354 		copyinstr(arg0), (arg1 == 1) ? "enabled" : "disabled",
439*bfc848c6Sjm199354 		copyinstr(arg2), arg3, arg4);
440*bfc848c6Sjm199354 }
441*bfc848c6Sjm199354 
442*bfc848c6Sjm199354 
443*bfc848c6Sjm199354 
444911106dfSjm199354 /* shutdown */
445911106dfSjm199354 pid$target::vscand_sig_handler:entry
446911106dfSjm199354 {
447911106dfSjm199354 	printf("received signal %d", arg0);
448911106dfSjm199354 }
449911106dfSjm199354 pid$target::vscand_sig_handler:return,
450911106dfSjm199354 pid$target::vscand_fini:entry,
451911106dfSjm199354 pid$target::vscand_fini:return,
452911106dfSjm199354 pid$target::vscand_kernel_disable:entry,
453911106dfSjm199354 pid$target::vscand_kernel_disable:return,
454911106dfSjm199354 pid$target::vscand_kernel_unbind:entry,
455911106dfSjm199354 pid$target::vscand_kernel_unbind:return,
456*bfc848c6Sjm199354 pid$target::vscand_kernel_result:entry,
457*bfc848c6Sjm199354 pid$target::vscand_kernel_result:return,
458*bfc848c6Sjm199354 pid$target::vs_svc_terminate:entry,
459*bfc848c6Sjm199354 pid$target::vs_svc_terminate:return,
460911106dfSjm199354 pid$target::vs_eng_fini:entry,
461911106dfSjm199354 pid$target::vs_eng_fini:return,
462911106dfSjm199354 pid$target::vs_eng_close_connections:entry,
463911106dfSjm199354 pid$target::vs_eng_close_connections:return
464911106dfSjm199354 {
465911106dfSjm199354 }
466911106dfSjm199354 
467911106dfSjm199354 /* vs_icap.c */
468911106dfSjm199354 
469911106dfSjm199354 /* trace entry and exit (inc status) */
470911106dfSjm199354 pid$target::vs_icap_option_request:entry,
471911106dfSjm199354 pid$target::vs_icap_send_option_req:entry,
472911106dfSjm199354 pid$target::vs_icap_read_option_resp:entry,
473911106dfSjm199354 pid$target::vs_icap_respmod_request:entry,
474911106dfSjm199354 pid$target::vs_icap_may_preview:entry,
475911106dfSjm199354 pid$target::vs_icap_send_preview:entry,
476911106dfSjm199354 pid$target::vs_icap_send_respmod_hdr:entry,
477911106dfSjm199354 pid$target::vs_icap_read_respmod_resp:entry
478911106dfSjm199354 {
479911106dfSjm199354 }
480911106dfSjm199354 
481911106dfSjm199354 pid$target::vs_icap_option_request:return,
482911106dfSjm199354 pid$target::vs_icap_send_option_req:return,
483911106dfSjm199354 pid$target::vs_icap_read_option_resp:return,
484911106dfSjm199354 pid$target::vs_icap_respmod_request:return,
485911106dfSjm199354 pid$target::vs_icap_send_preview:return,
486911106dfSjm199354 pid$target::vs_icap_send_respmod_hdr:return,
487911106dfSjm199354 pid$target::vs_icap_read_respmod_resp:return
488911106dfSjm199354 {
489*bfc848c6Sjm199354 	printf("%s", (int)arg1 < 0 ? "error" : "success");
490911106dfSjm199354 }
491911106dfSjm199354 
492911106dfSjm199354 pid$target::vs_icap_may_preview:return
493911106dfSjm199354 {
494911106dfSjm199354 	printf("TRANSFER %s", arg1 == 1 ? "PREVIEW" : "COMPLETE");
495911106dfSjm199354 }
496911106dfSjm199354 
497911106dfSjm199354 /* trace failures only  - these functions return -1 on failure */
498911106dfSjm199354 pid$target::vs_icap_read_resp_code:return,
499911106dfSjm199354 pid$target::vs_icap_read_hdr:return,
500911106dfSjm199354 pid$target::vs_icap_send_termination:return,
501911106dfSjm199354 pid$target::vs_icap_write:return,
502911106dfSjm199354 pid$target::vs_icap_set_scan_result:return,
503911106dfSjm199354 pid$target::vs_icap_read_encap_hdr:return,
504911106dfSjm199354 pid$target::vs_icap_read_encap_data:return,
505911106dfSjm199354 pid$target::vs_icap_read_resp_body:return,
506911106dfSjm199354 pid$target::vs_icap_read_body_chunk:return,
507911106dfSjm199354 pid$target::vs_icap_read:return,
508911106dfSjm199354 pid$target::vs_icap_readline:return,
509911106dfSjm199354 pid$target::vs_icap_send_chunk:return,
510911106dfSjm199354 pid$target::gethostname:return
511*bfc848c6Sjm199354 /(int)arg1 == -1/
512911106dfSjm199354 {
513911106dfSjm199354 	printf("error");
514911106dfSjm199354 }
515911106dfSjm199354 
516911106dfSjm199354 /* trace failures only  - these functions return 1 on success */
517911106dfSjm199354 pid$target::vs_icap_opt_value:return,
518911106dfSjm199354 pid$target::vs_icap_opt_ext:return,
519911106dfSjm199354 pid$target::vs_icap_resp_infection:return,
520911106dfSjm199354 pid$target::vs_icap_resp_virus_id:return,
521911106dfSjm199354 pid$target::vs_icap_resp_violations:return,
522911106dfSjm199354 pid$target::vs_icap_resp_violation_rec:return,
523911106dfSjm199354 pid$target::vs_icap_resp_istag:return,
524911106dfSjm199354 pid$target::vs_icap_resp_encap:return
525911106dfSjm199354 /arg1 != 1/
526911106dfSjm199354 {
527911106dfSjm199354 	printf("error");
528911106dfSjm199354 }
529911106dfSjm199354 
530911106dfSjm199354 pid$target::write:return,
531911106dfSjm199354 pid$target::read:return,
532911106dfSjm199354 pid$target::open:return,
533911106dfSjm199354 pid$target::calloc:return
534911106dfSjm199354 /arg1 <= 0/
535911106dfSjm199354 {
536911106dfSjm199354 	printf("error");
537911106dfSjm199354 }
538*bfc848c6Sjm199354 /*
539*bfc848c6Sjm199354 pid$target::recv:return,
540*bfc848c6Sjm199354 */
541