123214Smckusick /*
2*63231Sbostic * Copyright (c) 1984, 1985, 1986, 1987, 1993
3*63231Sbostic * The Regents of the University of California. All rights reserved.
423214Smckusick *
544506Sbostic * %sccs.include.redist.c%
633371Ssklower *
7*63231Sbostic * @(#)spp_debug.c 8.1 (Berkeley) 06/10/93
823214Smckusick */
921494Ssklower
1056534Sbostic #include <sys/param.h>
1156534Sbostic #include <sys/systm.h>
1256534Sbostic #include <sys/mbuf.h>
1356534Sbostic #include <sys/socket.h>
1456534Sbostic #include <sys/socketvar.h>
1556534Sbostic #include <sys/protosw.h>
1656534Sbostic #include <sys/errno.h>
1721494Ssklower
1856534Sbostic #include <net/route.h>
1956534Sbostic #include <net/if.h>
2056534Sbostic #include <netinet/tcp_fsm.h>
2121494Ssklower
2256534Sbostic #include <netns/ns.h>
2356534Sbostic #include <netns/ns_pcb.h>
2456534Sbostic #include <netns/idp.h>
2556534Sbostic #include <netns/idp_var.h>
2656534Sbostic #include <netns/sp.h>
2756534Sbostic #include <netns/spidp.h>
2833719Skarels #define SPPTIMERS
2956534Sbostic #include <netns/spp_timer.h>
3056534Sbostic #include <netns/spp_var.h>
3121494Ssklower #define SANAMES
3256534Sbostic #include <netns/spp_debug.h>
3321494Ssklower
3421494Ssklower int sppconsdebug = 0;
3521494Ssklower /*
3621494Ssklower * spp debug routines
3721494Ssklower */
spp_trace(act,ostate,sp,si,req)3821494Ssklower spp_trace(act, ostate, sp, si, req)
3921494Ssklower short act;
4021494Ssklower u_char ostate;
4121494Ssklower struct sppcb *sp;
4221494Ssklower struct spidp *si;
4321494Ssklower int req;
4421494Ssklower {
4525034Skarels #ifdef INET
4643090Ssklower #ifdef TCPDEBUG
4721494Ssklower u_short seq, ack, len, alo;
4821494Ssklower unsigned long iptime();
4921494Ssklower int flags;
5021494Ssklower struct spp_debug *sd = &spp_debug[spp_debx++];
5124413Swalsh extern char *prurequests[];
5226472Ssklower extern char *sanames[];
5324413Swalsh extern char *tcpstates[];
5433719Skarels extern char *spptimers[];
5521494Ssklower
5621494Ssklower if (spp_debx == SPP_NDEBUG)
5721494Ssklower spp_debx = 0;
5821494Ssklower sd->sd_time = iptime();
5921494Ssklower sd->sd_act = act;
6021494Ssklower sd->sd_ostate = ostate;
6121494Ssklower sd->sd_cb = (caddr_t)sp;
6221494Ssklower if (sp)
6321494Ssklower sd->sd_sp = *sp;
6421494Ssklower else
6521494Ssklower bzero((caddr_t)&sd->sd_sp, sizeof (*sp));
6621494Ssklower if (si)
6721494Ssklower sd->sd_si = *si;
6821494Ssklower else
6921494Ssklower bzero((caddr_t)&sd->sd_si, sizeof (*si));
7021494Ssklower sd->sd_req = req;
7121494Ssklower if (sppconsdebug == 0)
7221494Ssklower return;
7321494Ssklower if (ostate >= TCP_NSTATES) ostate = 0;
7421494Ssklower if (act >= SA_DROP) act = SA_DROP;
7521494Ssklower if (sp)
7621494Ssklower printf("%x %s:", sp, tcpstates[ostate]);
7721494Ssklower else
7821494Ssklower printf("???????? ");
7926472Ssklower printf("%s ", sanames[act]);
8021494Ssklower switch (act) {
8121494Ssklower
8221494Ssklower case SA_RESPOND:
8321494Ssklower case SA_INPUT:
8421494Ssklower case SA_OUTPUT:
8521494Ssklower case SA_DROP:
8621494Ssklower if (si == 0)
8721494Ssklower break;
8821494Ssklower seq = si->si_seq;
8921494Ssklower ack = si->si_ack;
9021494Ssklower alo = si->si_alo;
9121494Ssklower len = si->si_len;
9221494Ssklower if (act == SA_OUTPUT) {
9321494Ssklower seq = ntohs(seq);
9421494Ssklower ack = ntohs(ack);
9521494Ssklower alo = ntohs(alo);
9621494Ssklower len = ntohs(len);
9721494Ssklower }
9821494Ssklower #ifndef lint
9921494Ssklower #define p1(f) { printf("%s = %x, ", "f", f); }
10021494Ssklower p1(seq); p1(ack); p1(alo); p1(len);
10121494Ssklower #endif
10221494Ssklower flags = si->si_cc;
10321494Ssklower if (flags) {
10421494Ssklower char *cp = "<";
10521494Ssklower #ifndef lint
10621494Ssklower #define pf(f) { if (flags&SP_/**/f) { printf("%s%s", cp, "f"); cp = ","; } }
10721494Ssklower pf(SP); pf(SA); pf(OB); pf(EM);
10824225Ssklower #else
10924225Ssklower cp = cp;
11021494Ssklower #endif
11121494Ssklower printf(">");
11221494Ssklower }
11321494Ssklower #ifndef lint
11421494Ssklower #define p2(f) { printf("%s = %x, ", "f", si->si_/**/f); }
11521494Ssklower p2(sid);p2(did);p2(dt);p2(pt);
11621494Ssklower #endif
11721494Ssklower ns_printhost(&si->si_sna);
11821494Ssklower ns_printhost(&si->si_dna);
11921494Ssklower
12021494Ssklower if (act==SA_RESPOND) {
12121494Ssklower printf("idp_len = %x, ",
12221494Ssklower ((struct idp *)si)->idp_len);
12321494Ssklower }
12421494Ssklower break;
12521494Ssklower
12621494Ssklower case SA_USER:
12721494Ssklower printf("%s", prurequests[req&0xff]);
12821494Ssklower if ((req & 0xff) == PRU_SLOWTIMO)
12933719Skarels printf("<%s>", spptimers[req>>8]);
13021494Ssklower break;
13121494Ssklower }
13221494Ssklower if (sp)
13321494Ssklower printf(" -> %s", tcpstates[sp->s_state]);
13421494Ssklower /* print out internal state of sp !?! */
13521494Ssklower printf("\n");
13621494Ssklower if (sp == 0)
13721494Ssklower return;
13821494Ssklower #ifndef lint
13921494Ssklower #define p3(f) { printf("%s = %x, ", "f", sp->s_/**/f); }
14032597Ssklower printf("\t"); p3(rack);p3(ralo);p3(smax);p3(flags); printf("\n");
14121494Ssklower #endif
14224413Swalsh #endif
14343090Ssklower #endif
14421494Ssklower }
145