xref: /csrg-svn/sys/deprecated/bbnnet/fsmdef.h (revision 25202)
1*25202Skarels /* $Header: fsmdef.h,v 1.4 85/06/18 14:28:45 walsh Exp $ */
2*25202Skarels 
3*25202Skarels 
4*25202Skarels #ifndef TRPT
5*25202Skarels char fstab[TCP_NSTATES][INOP] = {
6*25202Skarels {
7*25202Skarels /* STATE CLOSED */
8*25202Skarels /* unused X unused */				0,
9*25202Skarels /* CLOSED X from U:OPEN(await) */		1,
10*25202Skarels /* CLOSED X from N:RECEIVE(response) */		0,
11*25202Skarels /* CLOSED X from U:OPEN(request) */		4,
12*25202Skarels 			/* user may close a socket after socket() or bind() */
13*25202Skarels /* CLOSED X from U:CLOSE(request) */		6,	/* was 0 in 4.1 */
14*25202Skarels /* CLOSED X from S:TIMER(response) */		24,
15*25202Skarels /* CLOSED X from U:RECEIVE(request) */		0,
16*25202Skarels /* CLOSED X from U:SEND(normal) */		0,
17*25202Skarels /* CLOSED X from U:ABORT(request) */		0,
18*25202Skarels /* CLOSED X from N:CLEAR(indication) */		24,
19*25202Skarels }, /* STATE CLOSED */
20*25202Skarels 
21*25202Skarels /* STATE LISTEN */
22*25202Skarels {
23*25202Skarels /* LISTEN X unused */				0,
24*25202Skarels /* LISTEN X from U:OPEN(await) */		0,
25*25202Skarels /* LISTEN X from N:RECEIVE(response) */		2,
26*25202Skarels /* LISTEN X from U:OPEN(request) */		0,
27*25202Skarels /* LISTEN X from U:CLOSE(request) */		6,
28*25202Skarels /* LISTEN X from S:TIMER(response) */		9,
29*25202Skarels /* LISTEN X from U:RECEIVE(request) */		24,
30*25202Skarels /* LISTEN X from U:SEND(normal) */		24,
31*25202Skarels /* LISTEN X from U:ABORT(request) */		21,
32*25202Skarels /* LISTEN X from N:CLEAR(indication) */		23,
33*25202Skarels }, /* STATE LISTEN */
34*25202Skarels 
35*25202Skarels 
36*25202Skarels /* STATE SYN_SENT */
37*25202Skarels {
38*25202Skarels /* SYN_SENT X unused */	                        0,
39*25202Skarels /* SYN_SENT X from U:OPEN(await) */		0,
40*25202Skarels /* SYN_SENT X from N:RECEIVE(response) */       5,
41*25202Skarels /* SYN_SENT X from U:OPEN(request) */		0,
42*25202Skarels /* SYN_SENT X from U:CLOSE(request) */		6,
43*25202Skarels /* SYN_SENT X from S:TIMER(response) */		9,
44*25202Skarels /* SYN_SENT X from U:RECEIVE(request) */        24,
45*25202Skarels /* SYN_SENT X from U:SEND(normal) */		19,	/* was 24 in 4.1 */
46*25202Skarels /* SYN_SENT X from U:ABORT(request) */		21,
47*25202Skarels /* SYN_SENT X from N:CLEAR(indication) */       23,
48*25202Skarels }, /* STATE SYN_SENT */
49*25202Skarels 
50*25202Skarels 
51*25202Skarels /* STATE SYN_RCVD */
52*25202Skarels {
53*25202Skarels /* SYN_RCVD X unused */	                        0,
54*25202Skarels /* SYN_RCVD X from U:OPEN(await) */		0,
55*25202Skarels /* SYN_RCVD X from N:RECEIVE(response) */       3,
56*25202Skarels /* SYN_RCVD X from U:OPEN(request) */		0,
57*25202Skarels /* SYN_RCVD X from U:CLOSE(request) */		14,
58*25202Skarels /* SYN_RCVD X from S:TIMER(response) */	        9,
59*25202Skarels /* SYN_RCVD X from U:RECEIVE(request) */        24,
60*25202Skarels /* SYN_RCVD X from U:SEND(normal) */		24,
61*25202Skarels /* SYN_RCVD X from U:ABORT(request) */          21,
62*25202Skarels /* SYN_RCVD X from N:CLEAR(indication) */       23,
63*25202Skarels }, /* STATE SYN_RCVD */
64*25202Skarels 
65*25202Skarels 
66*25202Skarels /* STATE L_SYN_RCVD */
67*25202Skarels {
68*25202Skarels /* L_SYN_RCVD X unused */                       0,
69*25202Skarels /* L_SYN_RCVD X from U:OPEN(await) */		0,
70*25202Skarels /* L_SYN_RCVD X from N:RECEIVE(response) */	3,
71*25202Skarels /* L_SYN_RCVD X from U:OPEN(request) */		0,
72*25202Skarels /* L_SYN_RCVD X from U:CLOSE(request) */	14,
73*25202Skarels /* L_SYN_RCVD X from S:TIMER(response) */	9,
74*25202Skarels /* L_SYN_RCVD X from U:RECEIVE(request) */	24,
75*25202Skarels /* L_SYN_RCVD X from U:SEND(normal) */		24,
76*25202Skarels /* L_SYN_RCVD X from U:ABORT(request) */	21,
77*25202Skarels /* L_SYN_RCVD X from N:CLEAR(indication) */	23,
78*25202Skarels }, /* STATE L_SYN_RCVD */
79*25202Skarels 
80*25202Skarels 
81*25202Skarels /* STATE ESTAB */
82*25202Skarels {
83*25202Skarels /* ESTAB X unused */                            0,
84*25202Skarels /* ESTAB X from U:OPEN(await) */		0,
85*25202Skarels /* ESTAB X from N:RECEIVE(response) */		7,
86*25202Skarels /* ESTAB X from U:OPEN(request) */		0,
87*25202Skarels /* ESTAB X from U:CLOSE(request) */	        14,
88*25202Skarels /* ESTAB X from S:TIMER(response) */	        9,
89*25202Skarels /* ESTAB X from U:RECEIVE(request) */           20,
90*25202Skarels /* ESTAB X from U:SEND(normal) */               19,
91*25202Skarels /* ESTAB X from U:ABORT(request) */             22,
92*25202Skarels /* ESTAB X from N:CLEAR(indication) */	        23,
93*25202Skarels }, /* STATE ESTAB */
94*25202Skarels 
95*25202Skarels 
96*25202Skarels /* STATE FIN_WAIT_1 */
97*25202Skarels {
98*25202Skarels /* FIN_WAIT_1 X unused */                       0,
99*25202Skarels /* FIN_WAIT_1 X from U:OPEN(await) */		0,
100*25202Skarels /* FIN_WAIT_1 X from N:RECEIVE(response) */	15,
101*25202Skarels /* FIN_WAIT_1 X from U:OPEN(request) */		0,
102*25202Skarels /* FIN_WAIT_1 X from U:CLOSE(request) */	24,
103*25202Skarels /* FIN_WAIT_1 X from S:TIMER(response) */	9,
104*25202Skarels /* FIN_WAIT_1 X from U:RECEIVE(request) */	20,
105*25202Skarels /* FIN_WAIT_1 X from U:SEND(normal) */		25,
106*25202Skarels /* FIN_WAIT_1 X from U:ABORT(request) */	22,
107*25202Skarels /* FIN_WAIT_1 X from N:CLEAR(indication) */	23,
108*25202Skarels }, /* STATE FIN_WAIT_1 */
109*25202Skarels 
110*25202Skarels 
111*25202Skarels /* STATE FIN_WAIT_2 */
112*25202Skarels {
113*25202Skarels /* FIN_WAIT_2 X unused */                       0,
114*25202Skarels /* FIN_WAIT_2 X from U:OPEN(await) */		0,
115*25202Skarels /* FIN_WAIT_2 X from N:RECEIVE(response) */	16,
116*25202Skarels /* FIN_WAIT_2 X from U:OPEN(request) */		0,
117*25202Skarels /* FIN_WAIT_2 X from U:CLOSE(request) */	24,
118*25202Skarels /* FIN_WAIT_2 X from S:TIMER(response) */	9,
119*25202Skarels /* FIN_WAIT_2 X from U:RECEIVE(request) */	20,
120*25202Skarels /* FIN_WAIT_2 X from U:SEND(normal) */		24,
121*25202Skarels /* FIN_WAIT_2 X from U:ABORT(request) */	22,
122*25202Skarels /* FIN_WAIT_2 X from N:CLEAR(indication) */	23,
123*25202Skarels }, /* STATE FIN_WAIT_2 */
124*25202Skarels 
125*25202Skarels 
126*25202Skarels /* STATE TIME_WAIT */
127*25202Skarels {
128*25202Skarels /* TIME_WAIT X unused */                        0,
129*25202Skarels /* TIME_WAIT X from U:OPEN(await) */		0,
130*25202Skarels /* TIME_WAIT X from N:RECEIVE(response) */	18,
131*25202Skarels /* TIME_WAIT X from U:OPEN(request) */		0,
132*25202Skarels /* TIME_WAIT X from U:CLOSE(request) */		24,
133*25202Skarels /* TIME_WAIT X from S:TIMER(response) */	9,
134*25202Skarels /* TIME_WAIT X from U:RECEIVE(request) */	20,
135*25202Skarels /* TIME_WAIT X from U:SEND(normal) */		25,
136*25202Skarels /* TIME_WAIT X from U:ABORT(request) */	        22,
137*25202Skarels /* TIME_WAIT X from N:CLEAR(indication) */	23,
138*25202Skarels }, /* STATE TIME_WAIT */
139*25202Skarels 
140*25202Skarels 
141*25202Skarels /* STATE CLOSE_WAIT */
142*25202Skarels {
143*25202Skarels /* CLOSE_WAIT X unused */			0,
144*25202Skarels /* CLOSE_WAIT X from U:OPEN(await) */		0,
145*25202Skarels /* CLOSE_WAIT X from N:RECEIVE(response) */	17,
146*25202Skarels /* CLOSE_WAIT X from U:OPEN(request) */		0,
147*25202Skarels /* CLOSE_WAIT X from U:CLOSE(request) */	8,
148*25202Skarels /* CLOSE_WAIT X from S:TIMER(response) */	9,
149*25202Skarels /* CLOSE_WAIT X from U:RECEIVE(request) */	20,
150*25202Skarels /* CLOSE_WAIT X from U:SEND(normal) */	        19,
151*25202Skarels /* CLOSE_WAIT X from U:ABORT(request) */	22,
152*25202Skarels /* CLOSE_WAIT X from N:CLEAR(indication) */	23,
153*25202Skarels }, /* STATE CLOSE_WAIT */
154*25202Skarels 
155*25202Skarels 
156*25202Skarels /* STATE CLOSING_1 */
157*25202Skarels {
158*25202Skarels /* CLOSING_1 X unused */			0,
159*25202Skarels /* CLOSING_1 X from U:OPEN(await) */		0,
160*25202Skarels /* CLOSING_1 X from N:RECEIVE(response) */	10,
161*25202Skarels /* CLOSING_1 X from U:OPEN(request) */		0,
162*25202Skarels /* CLOSING_1 X from U:CLOSE(request) */		25,
163*25202Skarels /* CLOSING_1 X from S:TIMER(response) */	9,
164*25202Skarels /* CLOSING_1 X from U:RECEIVE(request) */	20,
165*25202Skarels /* CLOSING_1 X from U:SEND(normal) */		25,
166*25202Skarels /* CLOSING_1 X from U:ABORT(request) */	        22,
167*25202Skarels /* CLOSING_1 X from N:CLEAR(indication) */	23,
168*25202Skarels }, /* STATE CLOSING_1 */
169*25202Skarels 
170*25202Skarels 
171*25202Skarels /* STATE CLOSING_2 */
172*25202Skarels {
173*25202Skarels /* CLOSING_2 X unused */			0,
174*25202Skarels /* CLOSING_2 X from U:OPEN(await) */		0,
175*25202Skarels /* CLOSING_2 X from N:RECEIVE(response) */	11,
176*25202Skarels /* CLOSING_2 X from U:OPEN(request) */		0,
177*25202Skarels /* CLOSING_2 X from U:CLOSE(request) */		25,
178*25202Skarels /* CLOSING_2 X from S:TIMER(response) */	9,
179*25202Skarels /* CLOSING_2 X from U:RECEIVE(request) */	20,
180*25202Skarels /* CLOSING_2 X from U:SEND(normal) */		25,
181*25202Skarels /* CLOSING_2 X from U:ABORT(request) */	        22,
182*25202Skarels /* CLOSING_2 X from N:CLEAR(indication) */	23,
183*25202Skarels }, /* STATE CLOSING_2 */
184*25202Skarels 
185*25202Skarels 
186*25202Skarels /* STATE RCV_WAIT */
187*25202Skarels {
188*25202Skarels /* RCV_WAIT X unused */				0,
189*25202Skarels /* RCV_WAIT X from U:OPEN(await) */		0,
190*25202Skarels /* RCV_WAIT X from N:RECEIVE(response) */	13,
191*25202Skarels /* RCV_WAIT X from U:OPEN(request) */		0,
192*25202Skarels /* RCV_WAIT X from U:CLOSE(request) */		25,
193*25202Skarels /* RCV_WAIT X from S:TIMER(response) */	        9,
194*25202Skarels /* RCV_WAIT X from U:RECEIVE(request) */	12,
195*25202Skarels /* RCV_WAIT X from U:SEND(normal) */		25,
196*25202Skarels /* RCV_WAIT X from U:ABORT(request) */	        22,
197*25202Skarels /* RCV_WAIT X from N:CLEAR(indication) */	23,
198*25202Skarels }, /* STATE RCV_WAIT */
199*25202Skarels 
200*25202Skarels 
201*25202Skarels /* STATE CLOSED */
202*25202Skarels {
203*25202Skarels /* CLOSED X unused */				0,
204*25202Skarels /* CLOSED X from U:OPEN(await) */               1,
205*25202Skarels /* CLOSED X from N:RECEIVE(response) */		0,
206*25202Skarels /* CLOSED X from U:OPEN(request) */	        4,
207*25202Skarels /* CLOSED X from U:CLOSE(request) */		0,
208*25202Skarels /* CLOSED X from S:TIMER(response) */		24,
209*25202Skarels /* CLOSED X from U:RECEIVE(request) */		0,
210*25202Skarels /* CLOSED X from U:SEND(normal) */		0,
211*25202Skarels /* CLOSED X from U:ABORT(request) */		0,
212*25202Skarels /* CLOSED X from N:CLEAR(indication) */		24
213*25202Skarels }  /* STATE CLOSED */
214*25202Skarels 
215*25202Skarels };
216*25202Skarels 
null()217*25202Skarels int null() {return(0);}
218*25202Skarels int lis_cls();
219*25202Skarels int lis_netr();
220*25202Skarels int syr_netr();
221*25202Skarels int sys_cls();
222*25202Skarels int sys_netr();
223*25202Skarels int cls_opn();
224*25202Skarels int est_netr();
225*25202Skarels int cl2_clw();
226*25202Skarels int timers();
227*25202Skarels int cl1_netr();
228*25202Skarels int cl2_netr();
229*25202Skarels int cls_rwt();
230*25202Skarels int rwt_netr();
231*25202Skarels int fw1_syr();
232*25202Skarels int fw1_netr();
233*25202Skarels int fw2_netr();
234*25202Skarels int cwt_netr();
235*25202Skarels int sss_syn();
236*25202Skarels int sss_snd();
237*25202Skarels int sss_rcv();
238*25202Skarels int cls_nsy();
239*25202Skarels int cls_syn();
240*25202Skarels int cls_act();
241*25202Skarels int cls_err();
242*25202Skarels 
243*25202Skarels int (*fsactab[])() = {
244*25202Skarels 
245*25202Skarels 	/* 0 */         null,
246*25202Skarels         /* 1 */ 	lis_cls,        /* 1 */
247*25202Skarels         /* 2 */ 	lis_netr,       /* 3,4 */
248*25202Skarels         /* 3 */ 	syr_netr,       /* 5,33 */
249*25202Skarels         /* 4 */ 	sys_cls,        /* 6 */
250*25202Skarels         /* 5 */ 	sys_netr,       /* 8,9,11,32 */
251*25202Skarels         /* 6 */ 	cls_opn,        /* 10 */
252*25202Skarels         /* 7 */ 	est_netr,       /* 12,39 */
253*25202Skarels         /* 8 */ 	cl2_clw,        /* 13 */
254*25202Skarels         /* 9 */ 	timers,         /* 14,17,35,36,37,38 */
255*25202Skarels         /* 10 */	cl1_netr,       /* 15,18,22,23,30,39 */
256*25202Skarels         /* 11 */	cl2_netr,       /* 16,19,31,39 */
257*25202Skarels         /* 12 */	cls_rwt,        /* 20 */
258*25202Skarels         /* 13 */	rwt_netr,       /* 21,30 */
259*25202Skarels         /* 14 */	fw1_syr,        /* 24 */
260*25202Skarels         /* 15 */	fw1_netr,       /* 26,27,28,39 */
261*25202Skarels         /* 16 */	fw2_netr,       /* 29,39 */
262*25202Skarels         /* 17 */	cwt_netr,       /* 30,31,39 */
263*25202Skarels         /* 18 */ 	sss_syn,        /* 39 */
264*25202Skarels         /* 19 */	sss_snd,        /* 40,41 */
265*25202Skarels         /* 20 */	sss_rcv,        /* 42 */
266*25202Skarels         /* 21 */	cls_nsy,        /* 44 */
267*25202Skarels         /* 22 */	cls_syn,        /* 45 */
268*25202Skarels         /* 23 */	cls_act,        /* 47 ### this & INCLEAR unused on 4.2 */
269*25202Skarels 	/* 24 */	null,
270*25202Skarels 	/* 25 */        cls_err
271*25202Skarels };
272*25202Skarels 
273*25202Skarels #endif TRPT
274*25202Skarels #ifdef TCPDEBUG
275*25202Skarels 
276*25202Skarels char *tcpstates[] =
277*25202Skarels {
278*25202Skarels 	"CLOSED",
279*25202Skarels 	"LISTEN",
280*25202Skarels 	"SYN_SENT",
281*25202Skarels 	"SYN_RCVD",
282*25202Skarels 	"L_SYN_RCVD",
283*25202Skarels 	"ESTAB",
284*25202Skarels 	"FIN_W1",
285*25202Skarels         "FIN_W2",
286*25202Skarels         "TIME_WAIT",
287*25202Skarels 	"CLOSE_WAIT",
288*25202Skarels 	"CLOSING1",
289*25202Skarels 	"CLOSING2",
290*25202Skarels 	"RCV_WAIT",
291*25202Skarels 	"CLOSED"
292*25202Skarels };
293*25202Skarels 
294*25202Skarels char *tcpinputs[] =
295*25202Skarels {
296*25202Skarels 	"BAD",
297*25202Skarels 	"UOPENA",
298*25202Skarels 	"NRECV",
299*25202Skarels 	"UOPENR",
300*25202Skarels 	"UCLOSE",
301*25202Skarels 	"TIMER",
302*25202Skarels 	"URECV",
303*25202Skarels 	"USEND",
304*25202Skarels 	"UABORT",
305*25202Skarels 	"NCLEAR"
306*25202Skarels };
307*25202Skarels 
308*25202Skarels char *tcptimers[] =
309*25202Skarels {
310*25202Skarels 	"",
311*25202Skarels 	"INIT",
312*25202Skarels 	"REXMT",
313*25202Skarels 	"REXMTTL",
314*25202Skarels 	"PERSIST",
315*25202Skarels 	"FINACK",
316*25202Skarels 	"DELACK",
317*25202Skarels 	"NOACT"
318*25202Skarels };
319*25202Skarels 
320*25202Skarels #endif TCPDEBUG
321*25202Skarels 
322