fix dom_init prototype (no args => __P((void)), not empty)
[unix-history] / usr / src / sys / netccitt / pk_debug.c
CommitLineData
51386eb2
KS
1/*
2 * Copyright (c) University of British Columbia, 1984
3 * Copyright (c) 1990 The Regents of the University of California.
4 * All rights reserved.
5 *
6 * This code is derived from software contributed to Berkeley by
7 * the Laboratory for Computation Vision and the Computer Science Department
8 * of the University of British Columbia.
9 *
10 * %sccs.include.redist.c%
11 *
5548a02f 12 * @(#)pk_debug.c 7.9 (Berkeley) %G%
51386eb2 13 */
7f874860 14
5548a02f
KB
15#include <sys/param.h>
16#include <sys/systm.h>
17#include <sys/mbuf.h>
18#include <sys/socket.h>
19#include <sys/protosw.h>
20#include <sys/socketvar.h>
21#include <sys/errno.h>
4507dea2 22
5548a02f 23#include <net/if.h>
4507dea2 24
5548a02f
KB
25#include <netccitt/x25.h>
26#include <netccitt/pk.h>
27#include <netccitt/pk_var.h>
7f874860
KS
28
29char *pk_state[] = {
30 "Listen", "Ready", "Received-Call",
31 "Sent-Call", "Data-Transfer","Received-Clear",
32 "Sent-Clear",
33};
34
35char *pk_name[] = {
36 "Call", "Call-Conf", "Clear",
37 "Clear-Conf", "Data", "Intr", "Intr-Conf",
38 "Rr", "Rnr", "Reset", "Reset-Conf",
528d7313
KS
39 "Restart", "Restart-Conf", "Reject", "Diagnostic",
40 "Invalid"
7f874860
KS
41};
42
9c9b50bc 43pk_trace (xcp, m, dir)
7f874860 44struct x25config *xcp;
9c9b50bc 45register struct mbuf *m;
7f874860
KS
46char *dir;
47{
48 register char *s;
9c9b50bc 49 struct x25_packet *xp = mtod(m, struct x25_packet *);
7f874860
KS
50 register int i, len = 0, cnt = 0;
51
52 if (xcp -> xc_ptrace == 0)
53 return;
54
55 i = pk_decode (xp) / MAXSTATES;
9c9b50bc 56 for (; m; m = m -> m_next) {
7f874860
KS
57 len = len + m -> m_len;
58 ++cnt;
59 }
60 printf ("LCN=%d %s: %s #=%d, len=%d ",
78a470b6 61 LCN(xp), dir, pk_name[i], cnt, len);
7f874860
KS
62 for (s = (char *) xp, i = 0; i < 5; ++i, ++s)
63 printf ("%x ", (int) * s & 0xff);
64 printf ("\n");
65}
045bc868
KS
66
67mbuf_cache(c, m)
68register struct mbuf_cache *c;
69struct mbuf *m;
70{
71 register struct mbuf **mp;
72
73 if (c->mbc_size != c->mbc_oldsize) {
74 unsigned zero_size, copy_size;
75 unsigned new_size = c->mbc_size * sizeof(m);
76 caddr_t cache = (caddr_t)c->mbc_cache;
77
78 if (new_size) {
79 c->mbc_cache = (struct mbuf **)
80 malloc(new_size, M_MBUF, M_NOWAIT);
81 if (c->mbc_cache == 0) {
82 c->mbc_cache = (struct mbuf **)cache;
83 return;
84 }
85 c->mbc_num %= c->mbc_size;
86 } else
87 c->mbc_cache = 0;
88 if (c->mbc_size < c->mbc_oldsize) {
89 register struct mbuf **mplim;
90 mp = c->mbc_size + (struct mbuf **)cache;
91 mplim = c->mbc_oldsize + (struct mbuf **)cache;
92 while (mp < mplim)
93 m_freem(*mp++);
94 zero_size = 0;
95 } else
96 zero_size = (c->mbc_size - c->mbc_oldsize) * sizeof(m);
97 copy_size = new_size - zero_size;
98 c->mbc_oldsize = c->mbc_size;
99 if (copy_size)
100 bcopy(cache, (caddr_t)c->mbc_cache, copy_size);
101 if (cache)
102 free(cache, M_MBUF);
103 if (zero_size)
104 bzero(copy_size + (caddr_t)c->mbc_cache, zero_size);
105 }
106 if (c->mbc_size == 0)
107 return;
108 mp = c->mbc_cache + c->mbc_num;
109 c->mbc_num = (1 + c->mbc_num) % c->mbc_size;
110 if (*mp)
111 m_freem(*mp);
94c03198
KS
112 if (*mp = m_copym(m, 0, M_COPYALL, M_DONTWAIT))
113 (*mp)->m_flags |= m->m_flags & 0x08;
045bc868 114}