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