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