Annotation of 43BSDReno/sys/netiso/tp_trace.c, revision 1.1.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.