from mo
[unix-history] / usr / src / sys / netinet / tcp_fsm.h
index d87c693..4f2ce91 100644 (file)
@@ -1,4 +1,4 @@
-/*     tcp_fsm.h       4.7     81/11/24        */
+/*     tcp_fsm.h       4.12    81/12/21        */
 
 /*
  * TCP FSM state definitions.
 
 /*
  * TCP FSM state definitions.
 #define        TCPS_CLOSED             0       /* closed */
 #define        TCPS_LISTEN             1       /* listening for connection */
 #define        TCPS_SYN_SENT           2       /* active, have sent syn */
 #define        TCPS_CLOSED             0       /* closed */
 #define        TCPS_LISTEN             1       /* listening for connection */
 #define        TCPS_SYN_SENT           2       /* active, have sent syn */
-#define        TCPS_SYN_RCVD           3       /* have send and received syn */
+#define        TCPS_SYN_RECEIVED       3       /* have send and received syn */
+/* states < TCPS_ESTABLISHED are those where connections not established */
 #define        TCPS_ESTABLISHED        4       /* established */
 #define        TCPS_ESTABLISHED        4       /* established */
-#define        TCPS_FIN_WAIT_1         5       /* have closed, sent fin */
-#define        TCPS_FIN_WAIT_2         6       /* have closed, fin is acked */
-#define        TCPS_TIME_WAIT          7       /* in 2*msl quiet wait after close */
-#define        TCPS_CLOSE_WAIT         8       /* rcvd fin, waiting for close */
-#define        TCPS_CLOSING            9       /* closed xchd FIN; await FIN ACK */
-#define        TCPS_LAST_ACK           10      /* had fin and close; await FIN ACK */
+#define        TCPS_CLOSE_WAIT         5       /* rcvd fin, waiting for close */
+/* states > TCPS_CLOSE_WAIT are those where user has closed */
+#define        TCPS_FIN_WAIT_1         6       /* have closed, sent fin */
+#define        TCPS_CLOSING            7       /* closed xchd FIN; await FIN ACK */
+#define        TCPS_LAST_ACK           8       /* had fin and close; await FIN ACK */
+/* states > TCPS_CLOSE_WAIT && < TCPS_FIN_WAIT_2 await ACK of FIN */
+#define        TCPS_FIN_WAIT_2         9       /* have closed, fin is acked */
+#define        TCPS_TIME_WAIT          10      /* in 2*msl quiet wait after close */
 
 
-#define        TCPS_HAVERCVDSYN(s)     ((s) >= TCPS_SYN_RCVD)
+#define        TCPS_HAVERCVDSYN(s)     ((s) >= TCPS_SYN_RECEIVED)
 #define        TCPS_HAVERCVDFIN(s)     ((s) >= TCPS_TIME_WAIT)
 
 #define        TCPS_HAVERCVDFIN(s)     ((s) >= TCPS_TIME_WAIT)
 
+#ifdef TCPOUTFLAGS
+/*
+ * Flags used when sending segments in tcp_output.
+ * Basic flags (TH_RST,TH_ACK,TH_SYN,TH_FIN) are totally
+ * determined by state, with the proviso that TH_FIN is sent only
+ * if all data queued for output is included in the segment.
+ */
+u_char tcp_outflags[TCP_NSTATES] = {
+    TH_RST|TH_ACK, 0, TH_SYN, TH_SYN|TH_ACK,
+    TH_ACK, TH_ACK,
+    TH_FIN|TH_ACK, TH_FIN|TH_ACK, TH_FIN|TH_ACK, TH_ACK, TH_ACK,
+};
+#endif
+
 #ifdef KPROF
 int    tcp_acounts[TCP_NSTATES][PRU_NREQ];
 #endif
 
 #ifdef KPROF
 int    tcp_acounts[TCP_NSTATES][PRU_NREQ];
 #endif
 
-#ifdef TCPSTATES
+#ifdef TCPSTATES
 char *tcpstates[] = {
        "CLOSED",       "LISTEN",       "SYN_SENT",     "SYN_RCVD",
 char *tcpstates[] = {
        "CLOSED",       "LISTEN",       "SYN_SENT",     "SYN_RCVD",
-       "ESTABLISHED",  "FIN_WAIT1",    "FIN_WAIT2",    "TIME_WAIT",
-       "CLOSE_WAIT",   "CLOSING",      "LAST_ACK",
+       "ESTABLISHED",  "CLOSE_WAIT",   "FIN_WAIT_1",   "CLOSING",
+       "LAST_ACK",     "FIN_WAIT_2",   "TIME_WAIT",
 };
 #endif
 };
 #endif