fixes for range locking
[unix-history] / usr / src / sys / deprecated / bbnnet / rdp_fsm.c
CommitLineData
17efd7fe
MK
1/*
2 $Log: rdp_fsm.c,v $
3 * Revision 2.1 84/11/02 10:12:44 walsh
4 * Fixed to include RCS comments in checked out source.
5 *
6 *
7 * description:
8 * Transition table for RDP finite state machine.
9 *
10 * revision 1.5
11 * date: 84/07/22 19:44:39; author: walsh; state: Exp; lines added/del: 2/1
12 * Added a state transition function rdp_closew_rcv() to compensate for
13 * socket code's dropping of system priority level for a brief period of time.
14 *
15 * revision 1.4
16 * date: 84/07/18 18:50:34; author: walsh; state: Exp; lines added/del: 2/1
17 * Added provision for sending of NULL messages. These are sent on an idle
18 * connection to determine that the other side still exists.
19 *
20 * revision 1.3
21 * date: 84/07/09 14:17:34; author: walsh; state: Exp; lines added/del: 2/1
22 * Added ACK-delay timer to debugging printf arrays.
23 *
24 * revision 1.2
25 * date: 84/07/06 09:49:07; author: root; state: Exp; lines added/del: 1/1
26 * This version seems to run bug-free.
27 *
28 * revision 1.1
29 * date: 84/06/26 14:16:59; author: walsh; state: Exp;
30 * Initial revision
31 */
32
33
34#ifdef RDP
35#include "../h/param.h"
36#include "../h/dir.h"
37#include "../h/user.h"
38#include "../h/kernel.h"
39#include "../h/inode.h"
40#include "../h/mbuf.h"
41#include "../h/socket.h"
42#include "../h/socketvar.h"
43
44#include "../net/if.h"
45#include "../net/route.h"
46
47#include "../bbnnet/in.h"
48#include "../bbnnet/in_var.h"
49#include "../bbnnet/net.h"
50#include "../bbnnet/in_pcb.h"
51#include "../bbnnet/ip.h"
52#include "../bbnnet/rdp.h"
53
54#ifdef RDPDEBUG
55char *rdpstates[RDP_NSTATES] =
56{
57 "RDP_sSAME",
58 "RDP_sUNOPENED",
59 "RDP_sLISTEN",
60 "RDP_sSYNSENT",
61 "RDP_sLSYNRCVD",
62 "RDP_sSYNRCVD",
63 "RDP_sESTAB",
64 "RDP_sCLOSEWAIT",
65 "RDP_sCLOSED"
66} ;
67
68char *rdpinputs[RDP_NINPUTS] =
69{
70 "RDP_iCONNECT",
71 "RDP_iLISTEN",
72 "RDP_iNETR",
73 "RDP_iUCLOSE",
74 "RDP_iTIMER",
75 "RDP_iRCV",
76 "RDP_iSEND"
77} ;
78
79char *rdptimers[RDP_NTIMERS] =
80{
81 "RDP_tCLOSEWAIT",
82 "RDP_tRTTL",
83 "RDP_tRXMIT",
84 "RDP_tACKDELAY",
85 "RDP_tNULL"
86} ;
87#endif
88
89#ifdef KERNEL
90extern int rdp_unop_connect(); /* RDP_sUNOPENED x RDP_iCONNECT */
91extern int rdp_unop_listen(); /* RDP_sUNOPENED x RDP_iLISTEN */
92extern int rdp_unop_netr(); /* RDP_sUNOPENED x RDP_iNETR */
93extern int rdp_unop_close(); /* RDP_sUNOPENED x RDP_iUCLOSE */
94
95extern int rdp_lis_listen(); /* RDP_sLISTEN x RDP_iLISTEN */
96extern int rdp_lis_netr(); /* RDP_sLISTEN x RDP_iNETR */
97extern int rdp_lis_close(); /* RDP_sLISTEN x RDP_iCLOSE */
98
99extern int rdp_synsent_netr(); /* RDP_sSYNSENT x RDP_iNETR */
100extern int rdp_synsent_close(); /* RDP_sSYNSENT x RDP_iUCLOSE */
101extern int rdp_synsent_timer(); /* RDP_sSYNSENT x RDP_iTIMER */
102
103extern int rdp_lsynrcvd_netr(); /* RDP_sLSYNRCVD x RDP_iNETR */
104extern int rdp_lsynrcvd_close(); /* RDP_sLSYNRCVD x RDP_iUCLOSE */
105extern int rdp_lsynrcvd_timer(); /* RDP_sLSYNRCVD x RDP_iTIMER */
106
107extern int rdp_synrcvd_netr(); /* RDP_sSYNRCVD x RDP_iNETR */
108extern int rdp_synrcvd_close(); /* RDP_sSYNRCVD x RDP_iUCLOSE */
109extern int rdp_synrcvd_timer(); /* RDP_sSYNRCVD x RDP_iTIMER */
110
111extern int rdp_estab_netr(); /* RDP_sESTAB x RDP_iNETR */
112extern int rdp_estab_close(); /* RDP_sESTAB x RDP_iUCLOSE */
113extern int rdp_estab_timer(); /* RDP_sESTAB x RDP_iTIMER */
114extern int rdp_estab_rcv(); /* RDP_sESTAB x RDP_iRCV */
115extern int rdp_estab_send(); /* RDP_sESTAB x RDP_iSEND */
116
117extern int rdp_closew_netr(); /* RDP_sCLOSEWAIT x RDP_iNETR */
118extern int rdp_closew_close(); /* RDP_sCLOSEWAIT x RDP_iUCLOSE */
119extern int rdp_closew_timer(); /* RDP_sCLOSEWAIT x RDP_iTIMER */
120extern int rdp_closew_rcv(); /* RDP_sCLOSEWAIT x RDP_iRCV */
121
122#define illegal 0
123
124int (*rdp_action_table[RDP_NSTATES][RDP_NINPUTS])() =
125{
126 {
127 illegal, /* to avoid off-by-1 error because SAME is 0 */
128 illegal,
129 illegal,
130 illegal,
131 illegal,
132 illegal,
133 illegal
134 }
135 ,
136
137 {
138 rdp_unop_connect,
139 rdp_unop_listen,
140 rdp_unop_netr,
141 rdp_unop_close,
142 illegal,
143 illegal,
144 illegal
145 }
146 ,
147
148 {
149 illegal,
150 rdp_lis_listen,
151 rdp_lis_netr,
152 rdp_lis_close,
153 illegal,
154 illegal,
155 illegal
156 }
157 ,
158
159 {
160 illegal,
161 illegal,
162 rdp_synsent_netr,
163 rdp_synsent_close,
164 rdp_synsent_timer,
165 illegal,
166 illegal
167 }
168 ,
169
170 {
171 illegal,
172 illegal,
173 rdp_lsynrcvd_netr,
174 rdp_lsynrcvd_close,
175 rdp_lsynrcvd_timer,
176 illegal,
177 illegal
178 }
179 ,
180
181 {
182 illegal,
183 illegal,
184 rdp_synrcvd_netr,
185 rdp_synrcvd_close,
186 rdp_synrcvd_timer,
187 illegal,
188 illegal
189 }
190 ,
191
192 {
193 illegal,
194 illegal,
195 rdp_estab_netr,
196 rdp_estab_close,
197 rdp_estab_timer,
198 rdp_estab_rcv,
199 rdp_estab_send
200 }
201 ,
202
203 {
204 illegal,
205 illegal,
206 rdp_closew_netr,
207 rdp_closew_close,
208 rdp_closew_timer,
209 rdp_closew_rcv,
210 illegal
211 }
212} ;
213#endif
214#endif