Commit | Line | Data |
---|---|---|
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 | |
55 | char *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 | ||
68 | char *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 | ||
79 | char *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 | |
90 | extern int rdp_unop_connect(); /* RDP_sUNOPENED x RDP_iCONNECT */ | |
91 | extern int rdp_unop_listen(); /* RDP_sUNOPENED x RDP_iLISTEN */ | |
92 | extern int rdp_unop_netr(); /* RDP_sUNOPENED x RDP_iNETR */ | |
93 | extern int rdp_unop_close(); /* RDP_sUNOPENED x RDP_iUCLOSE */ | |
94 | ||
95 | extern int rdp_lis_listen(); /* RDP_sLISTEN x RDP_iLISTEN */ | |
96 | extern int rdp_lis_netr(); /* RDP_sLISTEN x RDP_iNETR */ | |
97 | extern int rdp_lis_close(); /* RDP_sLISTEN x RDP_iCLOSE */ | |
98 | ||
99 | extern int rdp_synsent_netr(); /* RDP_sSYNSENT x RDP_iNETR */ | |
100 | extern int rdp_synsent_close(); /* RDP_sSYNSENT x RDP_iUCLOSE */ | |
101 | extern int rdp_synsent_timer(); /* RDP_sSYNSENT x RDP_iTIMER */ | |
102 | ||
103 | extern int rdp_lsynrcvd_netr(); /* RDP_sLSYNRCVD x RDP_iNETR */ | |
104 | extern int rdp_lsynrcvd_close(); /* RDP_sLSYNRCVD x RDP_iUCLOSE */ | |
105 | extern int rdp_lsynrcvd_timer(); /* RDP_sLSYNRCVD x RDP_iTIMER */ | |
106 | ||
107 | extern int rdp_synrcvd_netr(); /* RDP_sSYNRCVD x RDP_iNETR */ | |
108 | extern int rdp_synrcvd_close(); /* RDP_sSYNRCVD x RDP_iUCLOSE */ | |
109 | extern int rdp_synrcvd_timer(); /* RDP_sSYNRCVD x RDP_iTIMER */ | |
110 | ||
111 | extern int rdp_estab_netr(); /* RDP_sESTAB x RDP_iNETR */ | |
112 | extern int rdp_estab_close(); /* RDP_sESTAB x RDP_iUCLOSE */ | |
113 | extern int rdp_estab_timer(); /* RDP_sESTAB x RDP_iTIMER */ | |
114 | extern int rdp_estab_rcv(); /* RDP_sESTAB x RDP_iRCV */ | |
115 | extern int rdp_estab_send(); /* RDP_sESTAB x RDP_iSEND */ | |
116 | ||
117 | extern int rdp_closew_netr(); /* RDP_sCLOSEWAIT x RDP_iNETR */ | |
118 | extern int rdp_closew_close(); /* RDP_sCLOSEWAIT x RDP_iUCLOSE */ | |
119 | extern int rdp_closew_timer(); /* RDP_sCLOSEWAIT x RDP_iTIMER */ | |
120 | extern int rdp_closew_rcv(); /* RDP_sCLOSEWAIT x RDP_iRCV */ | |
121 | ||
122 | #define illegal 0 | |
123 | ||
124 | int (*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 |