1: /*
2: * Copyright (c) 1984, 1985, 1986 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: *
6: * @(#)spp_debug.c 7.1 (Berkeley) 6/5/86
7: */
8:
9: #include "param.h"
10: #include "systm.h"
11: #include "mbuf.h"
12: #include "socket.h"
13: #include "socketvar.h"
14: #include "protosw.h"
15: #include "errno.h"
16:
17: #include "../net/route.h"
18: #include "../net/if.h"
19: #include "../netinet/tcp_fsm.h"
20: #include "../netinet/tcp_timer.h"
21:
22: #include "ns.h"
23: #include "ns_pcb.h"
24: #include "idp.h"
25: #include "idp_var.h"
26: #include "sp.h"
27: #include "spidp.h"
28: #include "spp_var.h"
29: #define SANAMES
30: #include "spp_debug.h"
31:
32: int sppconsdebug = 0;
33: /*
34: * spp debug routines
35: */
36: spp_trace(act, ostate, sp, si, req)
37: short act;
38: u_char ostate;
39: struct sppcb *sp;
40: struct spidp *si;
41: int req;
42: {
43: #ifdef INET
44: u_short seq, ack, len, alo;
45: unsigned long iptime();
46: int flags;
47: struct spp_debug *sd = &spp_debug[spp_debx++];
48: extern char *prurequests[];
49: extern char *sanames[];
50: extern char *tcpstates[];
51: extern char *tcptimers[];
52:
53: if (spp_debx == SPP_NDEBUG)
54: spp_debx = 0;
55: sd->sd_time = iptime();
56: sd->sd_act = act;
57: sd->sd_ostate = ostate;
58: sd->sd_cb = (caddr_t)sp;
59: if (sp)
60: sd->sd_sp = *sp;
61: else
62: bzero((caddr_t)&sd->sd_sp, sizeof (*sp));
63: if (si)
64: sd->sd_si = *si;
65: else
66: bzero((caddr_t)&sd->sd_si, sizeof (*si));
67: sd->sd_req = req;
68: if (sppconsdebug == 0)
69: return;
70: if (ostate >= TCP_NSTATES) ostate = 0;
71: if (act >= SA_DROP) act = SA_DROP;
72: if (sp)
73: printf("%x %s:", sp, tcpstates[ostate]);
74: else
75: printf("???????? ");
76: printf("%s ", sanames[act]);
77: switch (act) {
78:
79: case SA_RESPOND:
80: case SA_INPUT:
81: case SA_OUTPUT:
82: case SA_DROP:
83: if (si == 0)
84: break;
85: seq = si->si_seq;
86: ack = si->si_ack;
87: alo = si->si_alo;
88: len = si->si_len;
89: if (act == SA_OUTPUT) {
90: seq = ntohs(seq);
91: ack = ntohs(ack);
92: alo = ntohs(alo);
93: len = ntohs(len);
94: }
95: #ifndef lint
96: #define p1(f) { printf("%s = %x, ", "f", f); }
97: p1(seq); p1(ack); p1(alo); p1(len);
98: #endif
99: flags = si->si_cc;
100: if (flags) {
101: char *cp = "<";
102: #ifndef lint
103: #define pf(f) { if (flags&SP_/**/f) { printf("%s%s", cp, "f"); cp = ","; } }
104: pf(SP); pf(SA); pf(OB); pf(EM);
105: #else
106: cp = cp;
107: #endif
108: printf(">");
109: }
110: #ifndef lint
111: #define p2(f) { printf("%s = %x, ", "f", si->si_/**/f); }
112: p2(sid);p2(did);p2(dt);p2(pt);
113: #endif
114: ns_printhost(&si->si_sna);
115: ns_printhost(&si->si_dna);
116:
117: if (act==SA_RESPOND) {
118: printf("idp_len = %x, ",
119: ((struct idp *)si)->idp_len);
120: }
121: break;
122:
123: case SA_USER:
124: printf("%s", prurequests[req&0xff]);
125: if ((req & 0xff) == PRU_SLOWTIMO)
126: printf("<%s>", tcptimers[req>>8]);
127: break;
128: }
129: if (sp)
130: printf(" -> %s", tcpstates[sp->s_state]);
131: /* print out internal state of sp !?! */
132: printf("\n");
133: if (sp == 0)
134: return;
135: #ifndef lint
136: #define p3(f) { printf("%s = %x, ", "f", sp->s_/**/f); }
137: printf("\t"); p3(rack);p3(ralo);p3(snt);p3(flags); printf("\n");
138: #endif
139: #endif
140: }
Defined functions
Defined variables
Defined macros
p1
defined in line
96; used 4 times
p2
defined in line
111; used 4 times
p3
defined in line
136; used 4 times
pf
defined in line
103; used 4 times