|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1984, 1985, 1986, 1987 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted ! 6: * provided that the above copyright notice and this paragraph are ! 7: * duplicated in all such forms and that any documentation, ! 8: * advertising materials, and other materials related to such ! 9: * distribution and use acknowledge that the software was developed ! 10: * by the University of California, Berkeley. The name of the ! 11: * University may not be used to endorse or promote products derived ! 12: * from this software without specific prior written permission. ! 13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 16: * ! 17: * @(#)spp_debug.c 7.5 (Berkeley) 6/29/88 ! 18: */ ! 19: ! 20: #include "param.h" ! 21: #include "systm.h" ! 22: #include "mbuf.h" ! 23: #include "socket.h" ! 24: #include "socketvar.h" ! 25: #include "protosw.h" ! 26: #include "errno.h" ! 27: ! 28: #include "../net/route.h" ! 29: #include "../net/if.h" ! 30: #include "../netinet/tcp_fsm.h" ! 31: ! 32: #include "ns.h" ! 33: #include "ns_pcb.h" ! 34: #include "idp.h" ! 35: #include "idp_var.h" ! 36: #include "sp.h" ! 37: #include "spidp.h" ! 38: #define SPPTIMERS ! 39: #include "spp_timer.h" ! 40: #include "spp_var.h" ! 41: #define SANAMES ! 42: #include "spp_debug.h" ! 43: ! 44: int sppconsdebug = 0; ! 45: /* ! 46: * spp debug routines ! 47: */ ! 48: spp_trace(act, ostate, sp, si, req) ! 49: short act; ! 50: u_char ostate; ! 51: struct sppcb *sp; ! 52: struct spidp *si; ! 53: int req; ! 54: { ! 55: #ifdef INET ! 56: u_short seq, ack, len, alo; ! 57: unsigned long iptime(); ! 58: int flags; ! 59: struct spp_debug *sd = &spp_debug[spp_debx++]; ! 60: extern char *prurequests[]; ! 61: extern char *sanames[]; ! 62: extern char *tcpstates[]; ! 63: extern char *spptimers[]; ! 64: ! 65: if (spp_debx == SPP_NDEBUG) ! 66: spp_debx = 0; ! 67: sd->sd_time = iptime(); ! 68: sd->sd_act = act; ! 69: sd->sd_ostate = ostate; ! 70: sd->sd_cb = (caddr_t)sp; ! 71: if (sp) ! 72: sd->sd_sp = *sp; ! 73: else ! 74: bzero((caddr_t)&sd->sd_sp, sizeof (*sp)); ! 75: if (si) ! 76: sd->sd_si = *si; ! 77: else ! 78: bzero((caddr_t)&sd->sd_si, sizeof (*si)); ! 79: sd->sd_req = req; ! 80: if (sppconsdebug == 0) ! 81: return; ! 82: if (ostate >= TCP_NSTATES) ostate = 0; ! 83: if (act >= SA_DROP) act = SA_DROP; ! 84: if (sp) ! 85: printf("%x %s:", sp, tcpstates[ostate]); ! 86: else ! 87: printf("???????? "); ! 88: printf("%s ", sanames[act]); ! 89: switch (act) { ! 90: ! 91: case SA_RESPOND: ! 92: case SA_INPUT: ! 93: case SA_OUTPUT: ! 94: case SA_DROP: ! 95: if (si == 0) ! 96: break; ! 97: seq = si->si_seq; ! 98: ack = si->si_ack; ! 99: alo = si->si_alo; ! 100: len = si->si_len; ! 101: if (act == SA_OUTPUT) { ! 102: seq = ntohs(seq); ! 103: ack = ntohs(ack); ! 104: alo = ntohs(alo); ! 105: len = ntohs(len); ! 106: } ! 107: #ifndef lint ! 108: #define p1(f) { printf("%s = %x, ", "f", f); } ! 109: p1(seq); p1(ack); p1(alo); p1(len); ! 110: #endif ! 111: flags = si->si_cc; ! 112: if (flags) { ! 113: char *cp = "<"; ! 114: #ifndef lint ! 115: #define pf(f) { if (flags&SP_/**/f) { printf("%s%s", cp, "f"); cp = ","; } } ! 116: pf(SP); pf(SA); pf(OB); pf(EM); ! 117: #else ! 118: cp = cp; ! 119: #endif ! 120: printf(">"); ! 121: } ! 122: #ifndef lint ! 123: #define p2(f) { printf("%s = %x, ", "f", si->si_/**/f); } ! 124: p2(sid);p2(did);p2(dt);p2(pt); ! 125: #endif ! 126: ns_printhost(&si->si_sna); ! 127: ns_printhost(&si->si_dna); ! 128: ! 129: if (act==SA_RESPOND) { ! 130: printf("idp_len = %x, ", ! 131: ((struct idp *)si)->idp_len); ! 132: } ! 133: break; ! 134: ! 135: case SA_USER: ! 136: printf("%s", prurequests[req&0xff]); ! 137: if ((req & 0xff) == PRU_SLOWTIMO) ! 138: printf("<%s>", spptimers[req>>8]); ! 139: break; ! 140: } ! 141: if (sp) ! 142: printf(" -> %s", tcpstates[sp->s_state]); ! 143: /* print out internal state of sp !?! */ ! 144: printf("\n"); ! 145: if (sp == 0) ! 146: return; ! 147: #ifndef lint ! 148: #define p3(f) { printf("%s = %x, ", "f", sp->s_/**/f); } ! 149: printf("\t"); p3(rack);p3(ralo);p3(smax);p3(flags); printf("\n"); ! 150: #endif ! 151: #endif ! 152: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.