]>
git.saurik.com Git - apple/xnu.git/blob - bsd/netccitt/hd_debug.c
2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
4 * @APPLE_LICENSE_HEADER_START@
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.
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
20 * @APPLE_LICENSE_HEADER_END@
23 * Copyright (c) University of British Columbia, 1984
24 * Copyright (c) 1990, 1993
25 * The Regents of the University of California. All rights reserved.
27 * This code is derived from software contributed to Berkeley by
28 * the Laboratory for Computation Vision and the Computer Science Department
29 * of the University of British Columbia.
31 * Redistribution and use in source and binary forms, with or without
32 * modification, are permitted provided that the following conditions
34 * 1. Redistributions of source code must retain the above copyright
35 * notice, this list of conditions and the following disclaimer.
36 * 2. Redistributions in binary form must reproduce the above copyright
37 * notice, this list of conditions and the following disclaimer in the
38 * documentation and/or other materials provided with the distribution.
39 * 3. All advertising materials mentioning features or use of this software
40 * must display the following acknowledgement:
41 * This product includes software developed by the University of
42 * California, Berkeley and its contributors.
43 * 4. Neither the name of the University nor the names of its contributors
44 * may be used to endorse or promote products derived from this software
45 * without specific prior written permission.
47 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
48 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
49 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
50 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
51 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
52 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
53 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
54 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
55 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
56 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
59 * @(#)hd_debug.c 8.1 (Berkeley) 6/10/93
62 #include <sys/param.h>
63 #include <sys/systm.h>
65 #include <sys/domain.h>
66 #include <sys/socket.h>
67 #include <sys/protosw.h>
68 #include <sys/errno.h>
70 #include <sys/kernel.h>
74 #include <netccitt/hdlc.h>
75 #include <netccitt/hd_var.h>
76 #include <netccitt/x25.h>
84 struct mbuf
*ht_frame
;
85 struct timeval ht_time
;
88 int lasttracelogged
, freezetrace
;
91 hd_trace (hdp
, direction
, frame
)
93 register struct Hdlc_frame
*frame
;
96 register int nr
, pf
, ns
, i
;
97 struct Hdlc_iframe
*iframe
= (struct Hdlc_iframe
*) frame
;
100 hd_savetrace (hdp
, direction
, frame
);
102 if (hdp
-> hd_xcp
-> xc_ltrace
) {
105 else if (direction
== 2)
114 switch (hd_decode (hdp
, frame
)) {
116 printf ("SABM : PF=%d\n", pf
);
120 printf ("DISC : PF=%d\n", pf
);
124 printf ("DM : PF=%d\n", pf
);
129 register struct Frmr_frame
*f
= (struct Frmr_frame
*)frame
;
131 printf ("FRMR : PF=%d, TEXT=", pf
);
132 for (s
= (char *) frame
, i
= 0; i
< 5; ++i
, ++s
)
133 printf ("%x ", (int) * s
& 0xff);
135 printf ("control=%x v(s)=%d v(r)=%d w%d x%d y%d z%d\n",
136 f
->frmr_control
, f
->frmr_ns
, f
->frmr_nr
,
137 f
->frmr_w
, f
->frmr_x
, f
->frmr_y
, f
->frmr_z
);
142 printf ("UA : PF=%d\n", pf
);
146 printf ("RR : N(R)=%d, PF=%d\n", nr
, pf
);
150 printf ("RNR : N(R)=%d, PF=%d\n", nr
, pf
);
154 printf ("REJ : N(R)=%d, PF=%d\n", nr
, pf
);
159 register struct mbuf
*m
;
160 register int len
= 0;
162 for(m
= dtom (frame
); m
; m
= m
-> m_next
)
165 printf ("IFRAME : N(R)=%d, PF=%d, N(S)=%d, DATA(%d)=",
167 for (s
= (char *)iframe
->i_field
, i
= 0; i
< 3; ++i
, ++s
)
168 printf ("%x ", (int) *s
& 0xff);
174 printf ("ILLEGAL: ");
175 for (s
= (char *) frame
, i
= 0; i
< 5; ++i
, ++s
)
176 printf ("%x ", (int) *s
& 0xff);
185 hd_savetrace (hdp
, dir
, frame
)
187 struct Hdlc_frame
*frame
;
189 register struct hdlctrace
*htp
;
190 register struct mbuf
*m
;
194 htp
= &hdtrace
[lasttracelogged
];
195 lasttracelogged
= (lasttracelogged
+ 1) % NTRACE
;
196 if (m
= htp
->ht_frame
)
199 htp
->ht_frame
= m_copy (m
, 0, m
->m_len
);
208 register int i
, ltrace
;
209 register struct hdlctrace
*htp
;
213 printf ("retransmit queue:");
214 for (i
= 0; i
< 8; i
++)
215 printf (" %x", hdp
-> hd_retxq
[i
]);
217 ltrace
= hdp
-> hd_xcp
-> xc_ltrace
;
218 hdp
-> hd_xcp
-> xc_ltrace
= 1;
219 for (i
= 0; i
< NTRACE
; i
++) {
220 htp
= &hdtrace
[(lasttracelogged
+ i
) % NTRACE
];
221 if (htp
->ht_hdp
!= hdp
|| htp
->ht_frame
== 0)
223 printf ("%d/%d ", htp
->ht_time
.tv_sec
& 0xff,
224 htp
->ht_time
.tv_usec
/ 10000);
225 hd_trace (htp
->ht_hdp
, htp
->ht_dir
,
226 mtod (htp
->ht_frame
, struct Hdlc_frame
*));
227 m_freem (htp
->ht_frame
);
230 hdp
-> hd_xcp
-> xc_ltrace
= ltrace
;