]> git.saurik.com Git - apple/xnu.git/blame - bsd/netns/spp_debug.c
xnu-201.42.3.tar.gz
[apple/xnu.git] / bsd / netns / spp_debug.c
CommitLineData
1c79356b
A
1/*
2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * The contents of this file constitute Original Code as defined in and
7 * are subject to the Apple Public Source License Version 1.1 (the
8 * "License"). You may not use this file except in compliance with the
9 * License. Please obtain a copy of the License at
10 * http://www.apple.com/publicsource and read it before using this file.
11 *
12 * This Original Code and all software distributed under the License are
13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17 * License for the specific language governing rights and limitations
18 * under the License.
19 *
20 * @APPLE_LICENSE_HEADER_END@
21 */
22/*
23 * Copyright (c) 1984, 1985, 1986, 1987, 1993
24 * The Regents of the University of California. All rights reserved.
25 *
26 * Redistribution and use in source and binary forms, with or without
27 * modification, are permitted provided that the following conditions
28 * are met:
29 * 1. Redistributions of source code must retain the above copyright
30 * notice, this list of conditions and the following disclaimer.
31 * 2. Redistributions in binary form must reproduce the above copyright
32 * notice, this list of conditions and the following disclaimer in the
33 * documentation and/or other materials provided with the distribution.
34 * 3. All advertising materials mentioning features or use of this software
35 * must display the following acknowledgement:
36 * This product includes software developed by the University of
37 * California, Berkeley and its contributors.
38 * 4. Neither the name of the University nor the names of its contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
43 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
44 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
45 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
46 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
47 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
48 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
49 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
50 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
51 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
52 * SUCH DAMAGE.
53 *
54 * @(#)spp_debug.c 8.1 (Berkeley) 6/10/93
55 */
56
57#include <sys/param.h>
58#include <sys/systm.h>
59#include <sys/mbuf.h>
60#include <sys/socket.h>
61#include <sys/socketvar.h>
62#include <sys/protosw.h>
63#include <sys/errno.h>
64
65#include <net/route.h>
66#include <net/if.h>
67#include <netinet/tcp_fsm.h>
68
69#include <netns/ns.h>
70#include <netns/ns_pcb.h>
71#include <netns/idp.h>
72#include <netns/idp_var.h>
73#include <netns/sp.h>
74#include <netns/spidp.h>
75#define SPPTIMERS
76#include <netns/spp_timer.h>
77#include <netns/spp_var.h>
78#define SANAMES
79#include <netns/spp_debug.h>
80
81int sppconsdebug = 0;
82/*
83 * spp debug routines
84 */
85spp_trace(act, ostate, sp, si, req)
86 short act;
87 u_char ostate;
88 struct sppcb *sp;
89 struct spidp *si;
90 int req;
91{
92#ifdef INET
93#ifdef TCPDEBUG
94 u_short seq, ack, len, alo;
95 unsigned long iptime();
96 int flags;
97 struct spp_debug *sd = &spp_debug[spp_debx++];
98 extern char *prurequests[];
99 extern char *sanames[];
100 extern char *tcpstates[];
101 extern char *spptimers[];
102
103 if (spp_debx == SPP_NDEBUG)
104 spp_debx = 0;
105 sd->sd_time = iptime();
106 sd->sd_act = act;
107 sd->sd_ostate = ostate;
108 sd->sd_cb = (caddr_t)sp;
109 if (sp)
110 sd->sd_sp = *sp;
111 else
112 bzero((caddr_t)&sd->sd_sp, sizeof (*sp));
113 if (si)
114 sd->sd_si = *si;
115 else
116 bzero((caddr_t)&sd->sd_si, sizeof (*si));
117 sd->sd_req = req;
118 if (sppconsdebug == 0)
119 return;
120 if (ostate >= TCP_NSTATES) ostate = 0;
121 if (act >= SA_DROP) act = SA_DROP;
122 if (sp)
123 printf("%x %s:", sp, tcpstates[ostate]);
124 else
125 printf("???????? ");
126 printf("%s ", sanames[act]);
127 switch (act) {
128
129 case SA_RESPOND:
130 case SA_INPUT:
131 case SA_OUTPUT:
132 case SA_DROP:
133 if (si == 0)
134 break;
135 seq = si->si_seq;
136 ack = si->si_ack;
137 alo = si->si_alo;
138 len = si->si_len;
139 if (act == SA_OUTPUT) {
140 seq = ntohs(seq);
141 ack = ntohs(ack);
142 alo = ntohs(alo);
143 len = ntohs(len);
144 }
145#ifndef lint
146#define p1(f) { printf("%s = %x, ", "f", f); }
147 p1(seq); p1(ack); p1(alo); p1(len);
148#endif
149 flags = si->si_cc;
150 if (flags) {
151 char *cp = "<";
152#ifndef lint
153#define pf(f) { if (flags&SP_/**/f) { printf("%s%s", cp, "f"); cp = ","; } }
154 pf(SP); pf(SA); pf(OB); pf(EM);
155#else
156 cp = cp;
157#endif
158 printf(">");
159 }
160#ifndef lint
161#define p2(f) { printf("%s = %x, ", "f", si->si_/**/f); }
162 p2(sid);p2(did);p2(dt);p2(pt);
163#endif
164 ns_printhost(&si->si_sna);
165 ns_printhost(&si->si_dna);
166
167 if (act==SA_RESPOND) {
168 printf("idp_len = %x, ",
169 ((struct idp *)si)->idp_len);
170 }
171 break;
172
173 case SA_USER:
174 printf("%s", prurequests[req&0xff]);
175 if ((req & 0xff) == PRU_SLOWTIMO)
176 printf("<%s>", spptimers[req>>8]);
177 break;
178 }
179 if (sp)
180 printf(" -> %s", tcpstates[sp->s_state]);
181 /* print out internal state of sp !?! */
182 printf("\n");
183 if (sp == 0)
184 return;
185#ifndef lint
186#define p3(f) { printf("%s = %x, ", "f", sp->s_/**/f); }
187 printf("\t"); p3(rack);p3(ralo);p3(smax);p3(flags); printf("\n");
188#endif
189#endif
190#endif
191}