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