cltp_usrreq.c made separate file in conf/files
[unix-history] / usr / src / sys / netiso / tp_trace.c
CommitLineData
1c490f1b
KS
1/***********************************************************
2 Copyright IBM Corporation 1987
3
4 All Rights Reserved
5
6Permission to use, copy, modify, and distribute this software and its
7documentation for any purpose and without fee is hereby granted,
8provided that the above copyright notice appear in all copies and that
9both that copyright notice and this permission notice appear in
10supporting documentation, and that the name of IBM not be
11used in advertising or publicity pertaining to distribution of the
12software without specific, written prior permission.
13
14IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
15ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
16IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
17ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
18WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
19ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
20SOFTWARE.
21
22******************************************************************/
23
24/*
25 * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
26 */
27/*
28 * ARGO TP
29 *
30 * $Header: tp_trace.c,v 5.3 88/11/18 17:29:14 nhall Exp $
31 * $Source: /usr/argo/sys/netiso/RCS/tp_trace.c,v $
44f52ea5 32 * @(#)tp_trace.c 7.3 (Berkeley) %G% *
1c490f1b
KS
33 *
34 * The whole protocol trace module.
35 * We keep a circular buffer of trace structures, which are big
36 * unions of different structures we might want to see.
37 * Unfortunately this gets too big pretty easily. Pcbs were removed
38 * from the tracing when the kernel got too big to boot.
39 */
40
41#ifndef lint
42static char *rcsid = "$Header: tp_trace.c,v 5.3 88/11/18 17:29:14 nhall Exp $";
43#endif lint
44
45#define TP_TRACEFILE
46
47#include "param.h"
48#include "systm.h"
49#include "mbuf.h"
50#include "socket.h"
51#include "types.h"
52#include "time.h"
53
a50e2bc0
KS
54#include "tp_param.h"
55#include "tp_timer.h"
56#include "tp_stat.h"
57#include "tp_param.h"
58#include "tp_ip.h"
59#include "tp_pcb.h"
60#include "tp_tpdu.h"
61#include "argo_debug.h"
62#include "tp_trace.h"
1c490f1b
KS
63
64#ifdef TPPT
65static tp_seq = 0;
66u_char tp_traceflags[128];
67
68/*
69 * The argument tpcb is the obvious.
70 * event here is just the type of trace event - TPPTmisc, etc.
71 * The rest of the arguments have different uses depending
72 * on the type of trace event.
73 */
74/*ARGSUSED*/
75/*VARARGS*/
76
77void
78tpTrace(tpcb, event, arg, src, len, arg4, arg5)
79 struct tp_pcb *tpcb;
80 u_int event, arg;
81 u_int src;
82 u_int len;
83 u_int arg4;
84 u_int arg5;
85{
86 register struct tp_Trace *tp;
87
88 tp = &tp_Trace[tp_Tracen++];
89 tp_Tracen %= TPTRACEN;
90
91 tp->tpt_event = event;
92 tp->tpt_tseq = tp_seq++;
93 tp->tpt_arg = arg;
94 if(tpcb)
95 tp->tpt_arg2 = tpcb->tp_lref;
96 bcopy( (caddr_t)&time, (caddr_t)&tp->tpt_time, sizeof(struct timeval) );
97
98 switch(event) {
99
100 case TPPTertpdu:
101 bcopy((caddr_t)src, (caddr_t)&tp->tpt_ertpdu,
a50e2bc0 102 (unsigned)MIN((int)len, sizeof(struct tp_Trace)));
1c490f1b
KS
103 break;
104
105 case TPPTusrreq:
106 case TPPTmisc:
107
108 /* arg is a string */
109 bcopy((caddr_t)arg, (caddr_t)tp->tpt_str,
a50e2bc0 110 (unsigned)MIN(1+strlen((caddr_t) arg), TPTRACE_STRLEN));
1c490f1b
KS
111 tp->tpt_m2 = src;
112 tp->tpt_m3 = len;
113 tp->tpt_m4 = arg4;
114 tp->tpt_m1 = arg5;
115 break;
116
117 case TPPTgotXack:
118 case TPPTXack:
119 case TPPTsendack:
120 case TPPTgotack:
121 case TPPTack:
122 case TPPTindicate:
123 default:
124 case TPPTdriver:
125 tp->tpt_m2 = arg;
126 tp->tpt_m3 = src;
127 tp->tpt_m4 = len;
128 tp->tpt_m5 = arg4;
129 tp->tpt_m1 = arg5;
130 break;
131 case TPPTparam:
132 bcopy((caddr_t)src, (caddr_t)&tp->tpt_param, sizeof(struct tp_param));
133 break;
134 case TPPTref:
135 bcopy((caddr_t)src, (caddr_t)&tp->tpt_ref, sizeof(struct tp_ref));
136 break;
137
138 case TPPTtpduin:
139 case TPPTtpduout:
140 tp->tpt_arg2 = arg4;
a50e2bc0
KS
141 bcopy((caddr_t)src, (caddr_t)&tp->tpt_tpdu,
142 (unsigned)MIN((int)len, sizeof(struct tp_Trace)));
1c490f1b
KS
143 break;
144 }
145}
146#endif TPPT