* Copyright (c) University of British Columbia, 1984
* Copyright (c) 1990 The Regents of the University of California.
* This code is derived from software contributed to Berkeley by
* the Laboratory for Computation Vision and the Computer Science Department
* of the University of British Columbia.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* @(#)hd_debug.c 7.5 (Berkeley) 5/29/91
int lasttracelogged
, freezetrace
;
hd_trace (hdp
, direction
, frame
)
register struct Hdlc_frame
*frame
;
register int nr
, pf
, ns
, i
;
struct Hdlc_iframe
*iframe
= (struct Hdlc_iframe
*) frame
;
hd_savetrace (hdp
, direction
, frame
);
if (hdp
-> hd_xcp
-> xc_ltrace
) {
switch (hd_decode (hdp
, frame
)) {
printf ("SABM : PF=%d\n", pf
);
printf ("DISC : PF=%d\n", pf
);
printf ("DM : PF=%d\n", pf
);
register struct Frmr_frame
*f
= (struct Frmr_frame
*)frame
;
printf ("FRMR : PF=%d, TEXT=", pf
);
for (s
= (char *) frame
, i
= 0; i
< 5; ++i
, ++s
)
printf ("%x ", (int) * s
& 0xff);
printf ("control=%x v(s)=%d v(r)=%d w%d x%d y%d z%d\n",
f
->frmr_control
, f
->frmr_ns
, f
->frmr_nr
,
f
->frmr_w
, f
->frmr_x
, f
->frmr_y
, f
->frmr_z
);
printf ("UA : PF=%d\n", pf
);
printf ("RR : N(R)=%d, PF=%d\n", nr
, pf
);
printf ("RNR : N(R)=%d, PF=%d\n", nr
, pf
);
printf ("REJ : N(R)=%d, PF=%d\n", nr
, pf
);
for(m
= dtom (frame
); m
; m
= m
-> m_next
)
printf ("IFRAME : N(R)=%d, PF=%d, N(S)=%d, DATA(%d)=",
for (s
= (char *)iframe
->i_field
, i
= 0; i
< 3; ++i
, ++s
)
printf ("%x ", (int) *s
& 0xff);
for (s
= (char *) frame
, i
= 0; i
< 5; ++i
, ++s
)
printf ("%x ", (int) *s
& 0xff);
hd_savetrace (hdp
, dir
, frame
)
struct Hdlc_frame
*frame
;
register struct hdlctrace
*htp
;
htp
= &hdtrace
[lasttracelogged
];
lasttracelogged
= (lasttracelogged
+ 1) % NTRACE
;
htp
->ht_frame
= m_copy (m
, 0, m
->m_len
);
register struct hdlctrace
*htp
;
printf ("retransmit queue:");
printf (" %x", hdp
-> hd_retxq
[i
]);
ltrace
= hdp
-> hd_xcp
-> xc_ltrace
;
hdp
-> hd_xcp
-> xc_ltrace
= 1;
for (i
= 0; i
< NTRACE
; i
++) {
htp
= &hdtrace
[(lasttracelogged
+ i
) % NTRACE
];
if (htp
->ht_hdp
!= hdp
|| htp
->ht_frame
== 0)
printf ("%d/%d ", htp
->ht_time
.tv_sec
& 0xff,
htp
->ht_time
.tv_usec
/ 10000);
hd_trace (htp
->ht_hdp
, htp
->ht_dir
,
mtod (htp
->ht_frame
, struct Hdlc_frame
*));
hdp
-> hd_xcp
-> xc_ltrace
= ltrace
;