with crud (first working version)
[unix-history] / usr / src / sys / netinet / tcp_fsm.h
CommitLineData
4aed14e3 1/* tcp_fsm.h 4.11 81/12/12 */
8381e15f
BJ
2
3/*
2b4b57cd 4 * TCP FSM state definitions.
2ff61f9d 5 * Per RFC793, September, 1981.
8381e15f
BJ
6 */
7
2ff61f9d
BJ
8#define TCP_NSTATES 11
9
10#define TCPS_CLOSED 0 /* closed */
11#define TCPS_LISTEN 1 /* listening for connection */
12#define TCPS_SYN_SENT 2 /* active, have sent syn */
8a13b737 13#define TCPS_SYN_RECEIVED 3 /* have send and received syn */
a6503abf 14/* states < TCPS_ESTABLISHED are those where connections not established */
2ff61f9d 15#define TCPS_ESTABLISHED 4 /* established */
8a13b737 16#define TCPS_CLOSE_WAIT 5 /* rcvd fin, waiting for close */
a6503abf 17/* states > TCPS_CLOSE_WAIT are those where user has closed */
8a13b737
BJ
18#define TCPS_FIN_WAIT_1 6 /* have closed, sent fin */
19#define TCPS_CLOSING 7 /* closed xchd FIN; await FIN ACK */
20#define TCPS_LAST_ACK 8 /* had fin and close; await FIN ACK */
21/* states > TCPS_CLOSE_WAIT && < TCPS_FIN_WAIT_2 await ACK of FIN */
22#define TCPS_FIN_WAIT_2 9 /* have closed, fin is acked */
23#define TCPS_TIME_WAIT 10 /* in 2*msl quiet wait after close */
8381e15f 24
8a13b737 25#define TCPS_HAVERCVDSYN(s) ((s) >= TCPS_SYN_RECEIVED)
2ff61f9d 26#define TCPS_HAVERCVDFIN(s) ((s) >= TCPS_TIME_WAIT)
8a13b737
BJ
27#define TCPS_OURFINNOTACKED(s) ((s) > TCPS_CLOSE_WAIT && (s) < TCPS_FIN_WAIT_2)
28
29#ifdef TCPOUTFLAGS
30/*
31 * Flags used when sending segments in tcp_output.
32 * Basic flags (TH_RST,TH_ACK,TH_SYN,TH_FIN) are totally
b454c3ea
BJ
33 * determined by state, with the proviso that TH_FIN is sent only
34 * if all data queued for output is included in the segment.
8a13b737
BJ
35 */
36u_char tcp_outflags[TCP_NSTATES] = {
37 TH_RST|TH_ACK, 0, TH_SYN, TH_SYN|TH_ACK,
38 TH_ACK, TH_ACK,
4aed14e3 39 TH_FIN|TH_ACK, TH_FIN|TH_ACK, TH_FIN|TH_ACK, TH_ACK, TH_ACK,
8a13b737
BJ
40};
41#endif
8381e15f 42
9c5022e3 43#ifdef KPROF
eb44bfb2 44int tcp_acounts[TCP_NSTATES][PRU_NREQ];
8381e15f
BJ
45#endif
46
8a13b737 47#ifdef TCPSTATES
8381e15f 48char *tcpstates[] = {
2ff61f9d 49 "CLOSED", "LISTEN", "SYN_SENT", "SYN_RCVD",
4aed14e3
BJ
50 "ESTABLISHED", "CLOSE_WAIT", "FIN_WAIT_1", "CLOSING",
51 "LAST_ACK", "FIN_WAIT_2", "TIME_WAIT",
8381e15f 52};
8381e15f 53#endif