|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*-
23: * Copyright (c) 1991, 1993
24: * The Regents of the University of California. All rights reserved.
25: *
26: * Redistribution and use in source and binary forms, with or without
27: * modification, are permitted provided that the following conditions
28: * are met:
29: * 1. Redistributions of source code must retain the above copyright
30: * notice, this list of conditions and the following disclaimer.
31: * 2. Redistributions in binary form must reproduce the above copyright
32: * notice, this list of conditions and the following disclaimer in the
33: * documentation and/or other materials provided with the distribution.
34: * 3. All advertising materials mentioning features or use of this software
35: * must display the following acknowledgement:
36: * This product includes software developed by the University of
37: * California, Berkeley and its contributors.
38: * 4. Neither the name of the University nor the names of its contributors
39: * may be used to endorse or promote products derived from this software
40: * without specific prior written permission.
41: *
42: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
43: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
44: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
45: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
46: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
47: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
48: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
49: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
50: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
51: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
52: * SUCH DAMAGE.
53: *
54: * @(#)tp_trace.h 8.1 (Berkeley) 6/10/93
55: */
56:
57: /***********************************************************
58: Copyright IBM Corporation 1987
59:
60: All Rights Reserved
61:
62: Permission to use, copy, modify, and distribute this software and its
63: documentation for any purpose and without fee is hereby granted,
64: provided that the above copyright notice appear in all copies and that
65: both that copyright notice and this permission notice appear in
66: supporting documentation, and that the name of IBM not be
67: used in advertising or publicity pertaining to distribution of the
68: software without specific, written prior permission.
69:
70: IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
71: ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
72: IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
73: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
74: WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
75: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
76: SOFTWARE.
77:
78: ******************************************************************/
79:
80: /*
81: * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
82: */
83: /*
84: * ARGO TP
85: *
86: * Definitions needed for the protocol trace mechanism.
87: */
88:
89: #ifndef __TP_TRACE__
90: #define __TP_TRACE__
91:
92:
93: #define TPPTsendack 1
94: #define TPPTgotack 2
95: #define TPPTXack 3
96: #define TPPTgotXack 4
97: #define TPPTack 5
98: #define TPPTindicate 6
99: #define TPPTusrreq 7
100: #define TPPTmisc 8
101: #define TPPTpcb 9
102: #define TPPTref 10
103: #define TPPTtpduin 11
104: #define TPPTparam 12
105: #define TPPTertpdu 13
106: #define TPPTdriver 14
107: #define TPPTtpduout 15
108:
109: #include <netiso/tp_pcb.h>
110:
111: /* this #if is to avoid lint */
112:
113: #if defined(TP_TRACEFILE)||!defined(KERNEL)
114:
115: #include <netiso/tp_tpdu.h>
116:
117: #define TPTRACE_STRLEN 50
118:
119:
120: /* for packet tracing */
121: struct tp_timeval {
122: SeqNum tptv_seq;
123: u_int tptv_kind;
124: u_int tptv_window;
125: u_int tptv_size;
126: };
127:
128: struct tp_Trace {
129: u_int tpt_event;
130: u_int tpt_arg;
131: u_int tpt_arg2;
132: int tpt_tseq;
133: struct timeval tpt_time;
134: union {
135: struct inpcb tpt_Inpcb; /* protocol control block */
136: struct tp_ref tpt_Ref; /* ref part of pcb */
137: struct tpdu tpt_Tpdu; /* header*/
138: struct tp_refinfo tpt_Param; /* ?? bytes, make sure < 128??*/
139: struct tp_timeval tpt_Time;
140: struct {
141: u_int tptm_2;
142: u_int tptm_3;
143: u_int tptm_4;
144: u_int tptm_5;
145: char tpt_Str[TPTRACE_STRLEN];
146: u_int tptm_1;
147: } tptmisc;
148: u_char tpt_Ertpdu; /* use rest of structure */
149: } tpt_stuff;
150: };
151: #define tpt_inpcb tpt_stuff.tpt_Inpcb
152: #define tpt_pcb tpt_stuff.tpt_Pcb
153: #define tpt_ref tpt_stuff.tpt_Ref
154: #define tpt_tpdu tpt_stuff.tpt_Tpdu
155: #define tpt_param tpt_stuff.tpt_Param
156: #define tpt_ertpdu tpt_stuff.tpt_Ertpdu
157: #define tpt_str tpt_stuff.tptmisc.tpt_Str
158: #define tpt_m1 tpt_stuff.tptmisc.tptm_1
159: #define tpt_m2 tpt_stuff.tptmisc.tptm_2
160: #define tpt_m3 tpt_stuff.tptmisc.tptm_3
161: #define tpt_m4 tpt_stuff.tptmisc.tptm_4
162: #define tpt_m5 tpt_stuff.tptmisc.tptm_5
163:
164: #define tpt_seq tpt_stuff.tpt_Time.tptv_seq
165: #define tpt_kind tpt_stuff.tpt_Time.tptv_kind
166: #define tpt_window tpt_stuff.tpt_Time.tptv_window
167: #define tpt_size tpt_stuff.tpt_Time.tptv_size
168:
169: #endif /* defined(TP_TRACEFILE)||!defined(KERNEL) */
170:
171:
172: #ifdef TPPT
173:
174: #define TPTRACEN 300
175:
176: #define tptrace(A,B,C,D,E,F) \
177: tpTrace((struct tp_pcb *)0,\
178: (u_int)(A),(u_int)(B),(u_int)(C),(u_int)(D),(u_int)(E),(u_int)(F))
179:
180: #define tptraceTPCB(A,B,C,D,E,F) \
181: tpTrace(tpcb,\
182: (u_int)(A),(u_int)(B),(u_int)(C),(u_int)(D),(u_int)(E),(u_int)(F))
183:
184: extern void tpTrace();
185: extern struct tp_Trace tp_Trace[];
186: extern u_char tp_traceflags[];
187: int tp_Tracen = 0;
188:
189: #define IFTRACE(ascii)\
190: if(tp_traceflags[ascii]) {
191: /*
192: * for some reason lint complains about tp_param being undefined no
193: * matter where or how many times I define it.
194: */
195: #define ENDTRACE }
196:
197:
198: #else /* TPPT */
199:
200: /***********************************************
201: * NO TPPT TRACE STUFF
202: **********************************************/
203: #define TPTRACEN 1
204:
205: #define tptrace(A,B,C,D,E,F) 0
206: #define tptraceTPCB(A,B,C,D,E,F) 0
207:
208: #define IFTRACE(ascii) if (0) {
209: #define ENDTRACE }
210:
211: #endif /* TPPT */
212:
213:
214:
215: #endif /* __TP_TRACE__ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.