xref: /csrg-svn/sys/netinet/tcp_fsm.h (revision 4924)
1*4924Swnj /*	tcp_fsm.h	4.6	81/11/18	*/
24725Swnj 
34725Swnj /*
4*4924Swnj  * TCP FSM state definitions.
54730Swnj  *
64730Swnj  * This TCP machine has two more states than suggested in RFC 793,
7*4924Swnj  * the extra states being L_SYN_RCVD and RCV_WAIT
84730Swnj  *
9*4924Swnj  * EXPLAIN THE EXTRA STATES.
104725Swnj  */
114725Swnj 
124725Swnj /*
134725Swnj  * States
144725Swnj  */
154725Swnj #define	TCP_NSTATES	14
164725Swnj 
174730Swnj #define	EFAILEC		-1		/* new state for failure, internally */
184730Swnj #define	SAME		0		/* no state change, internally */
194730Swnj #define	LISTEN		1		/* listening for connection */
204730Swnj #define	SYN_SENT	2		/* active, have sent syn */
214725Swnj #define	SYN_RCVD	3
224725Swnj #define	L_SYN_RCVD	4
234730Swnj #define	ESTAB		5		/* established */
244730Swnj #define	FIN_W1		6		/* have closed and sent fin */
254730Swnj #define	FIN_W2		7		/* have closed and rcvd ack of fin */
264730Swnj #define	TIME_WAIT	8		/* in 2*msl quiet wait after close */
27*4924Swnj #define	CLOSE_WAIT	9		/* rcvd fin, waiting for close */
284730Swnj #define	CLOSING		10		/* closed xchd FIN; await FIN ACK */
29*4924Swnj #define	LAST_ACK	11		/* had fin and close; await FIN ACK */
304730Swnj #define	RCV_WAIT	12		/* waiting for user to drain data */
314730Swnj #define	CLOSED		13		/* closed */
324725Swnj 
334730Swnj #ifdef KPROF
344899Swnj int	tcp_acounts[TCP_NSTATES][PRU_NREQ];
354725Swnj #endif
364725Swnj 
374725Swnj #ifdef TCPSTATES
384725Swnj char *tcpstates[] = {
394730Swnj 	"SAME",		"LISTEN",	"SYN_SENT",	"SYN_RCVD",
404725Swnj 	"L_SYN_RCVD",	"ESTAB",	"FIN_W1",	"FIN_W2",
414730Swnj 	"TIME_WAIT",	"CLOSE_WAIT",	"CLOSING",	"LAST_ACK",
424725Swnj 	"RCV_WAIT",	"CLOSED"
434725Swnj };
444730Swnj char *tcptimers[] = { "INIT", "REXMT", "REXMTTL", "PERSIST", "FINACK" };
454725Swnj #endif
46