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