|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: ! 25: /* ! 26: * Copyright (c) University of British Columbia, 1984 ! 27: * Copyright (c) 1990, 1993 ! 28: * The Regents of the University of California. All rights reserved. ! 29: * ! 30: * This code is derived from software contributed to Berkeley by ! 31: * the Laboratory for Computation Vision and the Computer Science Department ! 32: * of the University of British Columbia. ! 33: * ! 34: * Redistribution and use in source and binary forms, with or without ! 35: * modification, are permitted provided that the following conditions ! 36: * are met: ! 37: * 1. Redistributions of source code must retain the above copyright ! 38: * notice, this list of conditions and the following disclaimer. ! 39: * 2. Redistributions in binary form must reproduce the above copyright ! 40: * notice, this list of conditions and the following disclaimer in the ! 41: * documentation and/or other materials provided with the distribution. ! 42: * 3. All advertising materials mentioning features or use of this software ! 43: * must display the following acknowledgement: ! 44: * This product includes software developed by the University of ! 45: * California, Berkeley and its contributors. ! 46: * 4. Neither the name of the University nor the names of its contributors ! 47: * may be used to endorse or promote products derived from this software ! 48: * without specific prior written permission. ! 49: * ! 50: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ! 51: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ! 52: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! 53: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ! 54: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! 55: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ! 56: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ! 57: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ! 58: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ! 59: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ! 60: * SUCH DAMAGE. ! 61: * ! 62: * @(#)pk_debug.c 8.1 (Berkeley) 6/10/93 ! 63: */ ! 64: ! 65: #include <sys/param.h> ! 66: #include <sys/systm.h> ! 67: #include <sys/mbuf.h> ! 68: #include <sys/socket.h> ! 69: #include <sys/protosw.h> ! 70: #include <sys/socketvar.h> ! 71: #include <sys/errno.h> ! 72: #include <sys/malloc.h> ! 73: ! 74: #include <net/if.h> ! 75: ! 76: #include <netccitt/x25.h> ! 77: #include <netccitt/pk.h> ! 78: #include <netccitt/pk_var.h> ! 79: ! 80: char *pk_state[] = { ! 81: "Listen", "Ready", "Received-Call", ! 82: "Sent-Call", "Data-Transfer","Received-Clear", ! 83: "Sent-Clear", ! 84: }; ! 85: ! 86: char *pk_name[] = { ! 87: "Call", "Call-Conf", "Clear", ! 88: "Clear-Conf", "Data", "Intr", "Intr-Conf", ! 89: "Rr", "Rnr", "Reset", "Reset-Conf", ! 90: "Restart", "Restart-Conf", "Reject", "Diagnostic", ! 91: "Invalid" ! 92: }; ! 93: ! 94: pk_trace (xcp, m, dir) ! 95: struct x25config *xcp; ! 96: register struct mbuf *m; ! 97: char *dir; ! 98: { ! 99: register char *s; ! 100: struct x25_packet *xp = mtod(m, struct x25_packet *); ! 101: register int i, len = 0, cnt = 0; ! 102: ! 103: if (xcp -> xc_ptrace == 0) ! 104: return; ! 105: ! 106: i = pk_decode (xp) / MAXSTATES; ! 107: for (; m; m = m -> m_next) { ! 108: len = len + m -> m_len; ! 109: ++cnt; ! 110: } ! 111: printf ("LCN=%d %s: %s #=%d, len=%d ", ! 112: LCN(xp), dir, pk_name[i], cnt, len); ! 113: for (s = (char *) xp, i = 0; i < 5; ++i, ++s) ! 114: printf ("%x ", (int) * s & 0xff); ! 115: printf ("\n"); ! 116: } ! 117: ! 118: mbuf_cache(c, m) ! 119: register struct mbuf_cache *c; ! 120: struct mbuf *m; ! 121: { ! 122: register struct mbuf **mp; ! 123: ! 124: if (c->mbc_size != c->mbc_oldsize) { ! 125: unsigned zero_size, copy_size; ! 126: unsigned new_size = c->mbc_size * sizeof(m); ! 127: caddr_t cache = (caddr_t)c->mbc_cache; ! 128: ! 129: if (new_size) { ! 130: // c->mbc_cache = (struct mbuf **) ! 131: // malloc(new_size, M_MBUF, M_NOWAIT); ! 132: MALLOC(c->mbc_cache, struct mbuf **, new_size, M_MBUF, M_NOWAIT); ! 133: if (c->mbc_cache == 0) { ! 134: c->mbc_cache = (struct mbuf **)cache; ! 135: return; ! 136: } ! 137: c->mbc_num %= c->mbc_size; ! 138: } else ! 139: c->mbc_cache = 0; ! 140: if (c->mbc_size < c->mbc_oldsize) { ! 141: register struct mbuf **mplim; ! 142: mp = c->mbc_size + (struct mbuf **)cache; ! 143: mplim = c->mbc_oldsize + (struct mbuf **)cache; ! 144: while (mp < mplim) ! 145: m_freem(*mp++); ! 146: zero_size = 0; ! 147: } else ! 148: zero_size = (c->mbc_size - c->mbc_oldsize) * sizeof(m); ! 149: copy_size = new_size - zero_size; ! 150: c->mbc_oldsize = c->mbc_size; ! 151: if (copy_size) ! 152: bcopy(cache, (caddr_t)c->mbc_cache, copy_size); ! 153: if (cache) ! 154: free(cache, M_MBUF); ! 155: if (zero_size) ! 156: bzero(copy_size + (caddr_t)c->mbc_cache, zero_size); ! 157: } ! 158: if (c->mbc_size == 0) ! 159: return; ! 160: mp = c->mbc_cache + c->mbc_num; ! 161: c->mbc_num = (1 + c->mbc_num) % c->mbc_size; ! 162: if (*mp) ! 163: m_freem(*mp); ! 164: if (*mp = m_copym(m, 0, M_COPYALL, M_DONTWAIT)) ! 165: (*mp)->m_flags |= m->m_flags & 0x08; ! 166: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.