]>
git.saurik.com Git - apple/xnu.git/blob - bsd/netccitt/pk_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 * @(#)pk_debug.c 8.1 (Berkeley) 6/10/93
62 #include <sys/param.h>
63 #include <sys/systm.h>
65 #include <sys/socket.h>
66 #include <sys/protosw.h>
67 #include <sys/socketvar.h>
68 #include <sys/errno.h>
69 #include <sys/malloc.h>
73 #include <netccitt/x25.h>
74 #include <netccitt/pk.h>
75 #include <netccitt/pk_var.h>
78 "Listen", "Ready", "Received-Call",
79 "Sent-Call", "Data-Transfer","Received-Clear",
84 "Call", "Call-Conf", "Clear",
85 "Clear-Conf", "Data", "Intr", "Intr-Conf",
86 "Rr", "Rnr", "Reset", "Reset-Conf",
87 "Restart", "Restart-Conf", "Reject", "Diagnostic",
91 pk_trace (xcp
, m
, dir
)
92 struct x25config
*xcp
;
93 register struct mbuf
*m
;
97 struct x25_packet
*xp
= mtod(m
, struct x25_packet
*);
98 register int i
, len
= 0, cnt
= 0;
100 if (xcp
-> xc_ptrace
== 0)
103 i
= pk_decode (xp
) / MAXSTATES
;
104 for (; m
; m
= m
-> m_next
) {
105 len
= len
+ m
-> m_len
;
108 printf ("LCN=%d %s: %s #=%d, len=%d ",
109 LCN(xp
), dir
, pk_name
[i
], cnt
, len
);
110 for (s
= (char *) xp
, i
= 0; i
< 5; ++i
, ++s
)
111 printf ("%x ", (int) * s
& 0xff);
116 register struct mbuf_cache
*c
;
119 register struct mbuf
**mp
;
121 if (c
->mbc_size
!= c
->mbc_oldsize
) {
122 unsigned zero_size
, copy_size
;
123 unsigned new_size
= c
->mbc_size
* sizeof(m
);
124 caddr_t cache
= (caddr_t
)c
->mbc_cache
;
127 // c->mbc_cache = (struct mbuf **)
128 // malloc(new_size, M_MBUF, M_NOWAIT);
129 MALLOC(c
->mbc_cache
, struct mbuf
**, new_size
, M_MBUF
, M_NOWAIT
);
130 if (c
->mbc_cache
== 0) {
131 c
->mbc_cache
= (struct mbuf
**)cache
;
134 c
->mbc_num
%= c
->mbc_size
;
137 if (c
->mbc_size
< c
->mbc_oldsize
) {
138 register struct mbuf
**mplim
;
139 mp
= c
->mbc_size
+ (struct mbuf
**)cache
;
140 mplim
= c
->mbc_oldsize
+ (struct mbuf
**)cache
;
145 zero_size
= (c
->mbc_size
- c
->mbc_oldsize
) * sizeof(m
);
146 copy_size
= new_size
- zero_size
;
147 c
->mbc_oldsize
= c
->mbc_size
;
149 bcopy(cache
, (caddr_t
)c
->mbc_cache
, copy_size
);
153 bzero(copy_size
+ (caddr_t
)c
->mbc_cache
, zero_size
);
155 if (c
->mbc_size
== 0)
157 mp
= c
->mbc_cache
+ c
->mbc_num
;
158 c
->mbc_num
= (1 + c
->mbc_num
) % c
->mbc_size
;
161 if (*mp
= m_copym(m
, 0, M_COPYALL
, M_DONTWAIT
))
162 (*mp
)->m_flags
|= m
->m_flags
& 0x08;