Annotation of 43BSDReno/sys/netiso/tp_trace.c, revision 1.1

1.1     ! root        1: /***********************************************************
        !             2:                Copyright IBM Corporation 1987
        !             3: 
        !             4:                       All Rights Reserved
        !             5: 
        !             6: Permission to use, copy, modify, and distribute this software and its 
        !             7: documentation for any purpose and without fee is hereby granted, 
        !             8: provided that the above copyright notice appear in all copies and that
        !             9: both that copyright notice and this permission notice appear in 
        !            10: supporting documentation, and that the name of IBM not be
        !            11: used in advertising or publicity pertaining to distribution of the
        !            12: software without specific, written prior permission.  
        !            13: 
        !            14: IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
        !            15: ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
        !            16: IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
        !            17: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
        !            18: WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
        !            19: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
        !            20: SOFTWARE.
        !            21: 
        !            22: ******************************************************************/
        !            23: 
        !            24: /*
        !            25:  * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
        !            26:  */
        !            27: /* 
        !            28:  * ARGO TP
        !            29:  *
        !            30:  * $Header: tp_trace.c,v 5.3 88/11/18 17:29:14 nhall Exp $
        !            31:  * $Source: /usr/argo/sys/netiso/RCS/tp_trace.c,v $
        !            32:  *     @(#)tp_trace.c  7.3 (Berkeley) 8/29/89 *
        !            33:  *
        !            34:  * The whole protocol trace module.
        !            35:  * We keep a circular buffer of trace structures, which are big
        !            36:  * unions of different structures we might want to see.
        !            37:  * Unfortunately this gets too big pretty easily. Pcbs were removed
        !            38:  * from the tracing when the kernel got too big to boot.
        !            39:  */
        !            40: 
        !            41: #ifndef lint
        !            42: static char *rcsid = "$Header: tp_trace.c,v 5.3 88/11/18 17:29:14 nhall Exp $";
        !            43: #endif lint
        !            44: 
        !            45: #define TP_TRACEFILE
        !            46: 
        !            47: #include "param.h"
        !            48: #include "systm.h"
        !            49: #include "mbuf.h"
        !            50: #include "socket.h"
        !            51: #include "types.h"
        !            52: #include "time.h"
        !            53: 
        !            54: #include "tp_param.h"
        !            55: #include "tp_timer.h"
        !            56: #include "tp_stat.h"
        !            57: #include "tp_param.h"
        !            58: #include "tp_ip.h"
        !            59: #include "tp_pcb.h"
        !            60: #include "tp_tpdu.h"
        !            61: #include "argo_debug.h"
        !            62: #include "tp_trace.h"
        !            63: 
        !            64: #ifdef TPPT
        !            65: static tp_seq = 0;
        !            66: u_char tp_traceflags[128];
        !            67: 
        !            68: /*
        !            69:  * The argument tpcb is the obvious.
        !            70:  * event here is just the type of trace event - TPPTmisc, etc.
        !            71:  * The rest of the arguments have different uses depending
        !            72:  * on the type of trace event.
        !            73:  */
        !            74: /*ARGSUSED*/
        !            75: /*VARARGS*/
        !            76: 
        !            77: void
        !            78: tpTrace(tpcb, event, arg, src, len, arg4, arg5)
        !            79:        struct tp_pcb   *tpcb;
        !            80:        u_int                   event, arg;
        !            81:        u_int                   src;
        !            82:        u_int                   len; 
        !            83:        u_int                   arg4;
        !            84:        u_int                   arg5;
        !            85: {
        !            86:        register struct tp_Trace *tp;
        !            87: 
        !            88:        tp = &tp_Trace[tp_Tracen++];
        !            89:        tp_Tracen %= TPTRACEN;
        !            90: 
        !            91:        tp->tpt_event = event;
        !            92:        tp->tpt_tseq = tp_seq++;
        !            93:        tp->tpt_arg = arg;
        !            94:        if(tpcb)
        !            95:                tp->tpt_arg2 = tpcb->tp_lref;
        !            96:        bcopy( (caddr_t)&time, (caddr_t)&tp->tpt_time, sizeof(struct timeval) );
        !            97: 
        !            98:        switch(event) {
        !            99: 
        !           100:        case TPPTertpdu:
        !           101:                bcopy((caddr_t)src, (caddr_t)&tp->tpt_ertpdu,
        !           102:                        (unsigned)MIN((int)len, sizeof(struct tp_Trace)));
        !           103:                break;
        !           104: 
        !           105:        case TPPTusrreq:
        !           106:        case TPPTmisc:
        !           107: 
        !           108:                /* arg is a string */
        !           109:                bcopy((caddr_t)arg, (caddr_t)tp->tpt_str, 
        !           110:                        (unsigned)MIN(1+strlen((caddr_t) arg), TPTRACE_STRLEN));
        !           111:                tp->tpt_m2 = src; 
        !           112:                tp->tpt_m3 = len;
        !           113:                tp->tpt_m4 = arg4;
        !           114:                tp->tpt_m1 = arg5;
        !           115:                break;
        !           116: 
        !           117:        case TPPTgotXack: 
        !           118:        case TPPTXack: 
        !           119:        case TPPTsendack: 
        !           120:        case TPPTgotack: 
        !           121:        case TPPTack: 
        !           122:        case TPPTindicate: 
        !           123:        default:
        !           124:        case TPPTdriver: 
        !           125:                tp->tpt_m2 = arg; 
        !           126:                tp->tpt_m3 = src;
        !           127:                tp->tpt_m4 = len;
        !           128:                tp->tpt_m5 = arg4;
        !           129:                tp->tpt_m1 = arg5; 
        !           130:                break;
        !           131:        case TPPTparam:
        !           132:                bcopy((caddr_t)src, (caddr_t)&tp->tpt_param, sizeof(struct tp_param));
        !           133:                break;
        !           134:        case TPPTref:
        !           135:                bcopy((caddr_t)src, (caddr_t)&tp->tpt_ref, sizeof(struct tp_ref));
        !           136:                break;
        !           137: 
        !           138:        case TPPTtpduin:
        !           139:        case TPPTtpduout:
        !           140:                tp->tpt_arg2 = arg4;
        !           141:                bcopy((caddr_t)src, (caddr_t)&tp->tpt_tpdu,
        !           142:                      (unsigned)MIN((int)len, sizeof(struct tp_Trace)));
        !           143:                break;
        !           144:        }
        !           145: }
        !           146: #endif TPPT

unix.superglobalmegacorp.com

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