Annotation of XNU/bsd/netns/spp_debug.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      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.
                     11:  * 
                     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
                     18:  * under the License.
                     19:  * 
                     20:  * @APPLE_LICENSE_HEADER_END@
                     21:  */
                     22: /*
                     23:  * Copyright (c) 1984, 1985, 1986, 1987, 1993
                     24:  *     The Regents of the University of California.  All rights reserved.
                     25:  *
                     26:  * Redistribution and use in source and binary forms, with or without
                     27:  * modification, are permitted provided that the following conditions
                     28:  * are met:
                     29:  * 1. Redistributions of source code must retain the above copyright
                     30:  *    notice, this list of conditions and the following disclaimer.
                     31:  * 2. Redistributions in binary form must reproduce the above copyright
                     32:  *    notice, this list of conditions and the following disclaimer in the
                     33:  *    documentation and/or other materials provided with the distribution.
                     34:  * 3. All advertising materials mentioning features or use of this software
                     35:  *    must display the following acknowledgement:
                     36:  *     This product includes software developed by the University of
                     37:  *     California, Berkeley and its contributors.
                     38:  * 4. Neither the name of the University nor the names of its contributors
                     39:  *    may be used to endorse or promote products derived from this software
                     40:  *    without specific prior written permission.
                     41:  *
                     42:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     43:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     44:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     45:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     46:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     47:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     48:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     49:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     50:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     51:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     52:  * SUCH DAMAGE.
                     53:  *
                     54:  *     @(#)spp_debug.c 8.1 (Berkeley) 6/10/93
                     55:  */
                     56: 
                     57: #include <sys/param.h>
                     58: #include <sys/systm.h>
                     59: #include <sys/mbuf.h>
                     60: #include <sys/socket.h>
                     61: #include <sys/socketvar.h>
                     62: #include <sys/protosw.h>
                     63: #include <sys/errno.h>
                     64: 
                     65: #include <net/route.h>
                     66: #include <net/if.h>
                     67: #include <netinet/tcp_fsm.h>
                     68: 
                     69: #include <netns/ns.h>
                     70: #include <netns/ns_pcb.h>
                     71: #include <netns/idp.h>
                     72: #include <netns/idp_var.h>
                     73: #include <netns/sp.h>
                     74: #include <netns/spidp.h>
                     75: #define SPPTIMERS
                     76: #include <netns/spp_timer.h>
                     77: #include <netns/spp_var.h>
                     78: #define        SANAMES
                     79: #include <netns/spp_debug.h>
                     80: 
                     81: int    sppconsdebug = 0;
                     82: /*
                     83:  * spp debug routines
                     84:  */
                     85: spp_trace(act, ostate, sp, si, req)
                     86:        short act;
                     87:        u_char ostate;
                     88:        struct sppcb *sp;
                     89:        struct spidp *si;
                     90:        int req;
                     91: {
                     92: #ifdef INET
                     93: #ifdef TCPDEBUG
                     94:        u_short seq, ack, len, alo;
                     95:        unsigned long iptime();
                     96:        int flags;
                     97:        struct spp_debug *sd = &spp_debug[spp_debx++];
                     98:        extern char *prurequests[];
                     99:        extern char *sanames[];
                    100:        extern char *tcpstates[];
                    101:        extern char *spptimers[];
                    102: 
                    103:        if (spp_debx == SPP_NDEBUG)
                    104:                spp_debx = 0;
                    105:        sd->sd_time = iptime();
                    106:        sd->sd_act = act;
                    107:        sd->sd_ostate = ostate;
                    108:        sd->sd_cb = (caddr_t)sp;
                    109:        if (sp)
                    110:                sd->sd_sp = *sp;
                    111:        else
                    112:                bzero((caddr_t)&sd->sd_sp, sizeof (*sp));
                    113:        if (si)
                    114:                sd->sd_si = *si;
                    115:        else
                    116:                bzero((caddr_t)&sd->sd_si, sizeof (*si));
                    117:        sd->sd_req = req;
                    118:        if (sppconsdebug == 0)
                    119:                return;
                    120:        if (ostate >= TCP_NSTATES) ostate = 0;
                    121:        if (act >= SA_DROP) act = SA_DROP;
                    122:        if (sp)
                    123:                printf("%x %s:", sp, tcpstates[ostate]);
                    124:        else
                    125:                printf("???????? ");
                    126:        printf("%s ", sanames[act]);
                    127:        switch (act) {
                    128: 
                    129:        case SA_RESPOND:
                    130:        case SA_INPUT:
                    131:        case SA_OUTPUT:
                    132:        case SA_DROP:
                    133:                if (si == 0)
                    134:                        break;
                    135:                seq = si->si_seq;
                    136:                ack = si->si_ack;
                    137:                alo = si->si_alo;
                    138:                len = si->si_len;
                    139:                if (act == SA_OUTPUT) {
                    140:                        seq = ntohs(seq);
                    141:                        ack = ntohs(ack);
                    142:                        alo = ntohs(alo);
                    143:                        len = ntohs(len);
                    144:                }
                    145: #ifndef lint
                    146: #define p1(f)  { printf("%s = %x, ", "f", f); }
                    147:                p1(seq); p1(ack); p1(alo); p1(len);
                    148: #endif
                    149:                flags = si->si_cc;
                    150:                if (flags) {
                    151:                        char *cp = "<";
                    152: #ifndef lint
                    153: #define pf(f) { if (flags&SP_/**/f) { printf("%s%s", cp, "f"); cp = ","; } }
                    154:                        pf(SP); pf(SA); pf(OB); pf(EM);
                    155: #else
                    156:                        cp = cp;
                    157: #endif
                    158:                        printf(">");
                    159:                }
                    160: #ifndef lint
                    161: #define p2(f)  { printf("%s = %x, ", "f", si->si_/**/f); }
                    162:                p2(sid);p2(did);p2(dt);p2(pt);
                    163: #endif
                    164:                ns_printhost(&si->si_sna);
                    165:                ns_printhost(&si->si_dna);
                    166: 
                    167:                if (act==SA_RESPOND) {
                    168:                        printf("idp_len = %x, ",
                    169:                                ((struct idp *)si)->idp_len);
                    170:                }
                    171:                break;
                    172: 
                    173:        case SA_USER:
                    174:                printf("%s", prurequests[req&0xff]);
                    175:                if ((req & 0xff) == PRU_SLOWTIMO)
                    176:                        printf("<%s>", spptimers[req>>8]);
                    177:                break;
                    178:        }
                    179:        if (sp)
                    180:                printf(" -> %s", tcpstates[sp->s_state]);
                    181:        /* print out internal state of sp !?! */
                    182:        printf("\n");
                    183:        if (sp == 0)
                    184:                return;
                    185: #ifndef lint
                    186: #define p3(f)  { printf("%s = %x, ", "f", sp->s_/**/f); }
                    187:        printf("\t"); p3(rack);p3(ralo);p3(smax);p3(flags); printf("\n");
                    188: #endif
                    189: #endif
                    190: #endif
                    191: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.