added watt32 headers and brought the DOS version up to parity with UNIX
[oftp] / libs / watt32 / netinet / tcp_debu.h
diff --git a/libs/watt32/netinet/tcp_debu.h b/libs/watt32/netinet/tcp_debu.h
new file mode 100644 (file)
index 0000000..c6821db
--- /dev/null
@@ -0,0 +1,122 @@
+/*!\file netinet/tcp_debu.h
+ * TCP debugging.
+ */
+
+/*
+ * Copyright (c) 1982, 1986, 1993
+ *      The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by the University of
+ *      California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *      @(#)tcp_debug.h 8.1 (Berkeley) 6/10/93
+ * $Id: tcp_debug.h,v 1.5 1996/04/13 12:45:57 bde Exp $
+ */
+
+#ifndef __NETINET_TCP_DEBUG_H
+#define __NETINET_TCP_DEBUG_H
+
+struct tcp_debug {
+       n_time           td_time;
+       short            td_act;
+       short            td_ostate;
+       caddr_t          td_tcb;
+       struct  tcpiphdr td_ti;
+       short            td_req;
+       struct  tcpcb    td_cb;
+     };
+
+#define TA_INPUT        0
+#define TA_OUTPUT       1
+#define TA_USER         2
+#define TA_RESPOND      3
+#define TA_DROP         4
+
+#ifdef TANAMES
+static char *tanames[] = {
+            "input", "output", "user", "respond", "drop"
+          };
+#endif
+
+#define TCP_NDEBUG 100
+
+#ifdef TCP_AUTO_DEBUG
+#include <sys/wtime.h>
+
+/* The following table is used as a circular buffer in which TCP
+ * autotuning statistics can be kept.
+ * It is intended that these statistics will be periodically read
+ * by a debugging application using kvm.
+ */
+
+#define TAD_ENTRIES 1024            /* number of entries in monitor_table */
+
+struct tad_entry {
+       u_long         seq_no;            /* tad entry number */
+       struct timeval time;              /* time of entry */
+       u_long         snd_cwnd;          /* congestion window */
+       u_long         sb_hiwat;          /* send socket buffer hi water mark */
+       u_long         sb_target_hiwat;   /*      target for same */
+       u_long         sb_cc;             /* space used in send socket buf */
+       u_long         m_clused;          /* m_clusters - m_clfree */
+       u_short        lport;             /* local port number */
+       u_short        rport;             /* remote port number */
+       u_long         debug;             /* used for debugging */
+       tcp_seq        snd_max;           /* highest sequence number sent */
+     } tad_table[TAD_ENTRIES];
+
+extern struct tad_entry *tad_index;     /* insert point */
+extern u_long tad_seq;
+extern u_long tad_debug;
+
+/* increment the index into the table
+ */
+#define TAD_INDEX_INCR tad_index = (struct tad_entry*)((u_long)tad_index + \
+                                    sizeof(struct tad_entry)); \
+                       if ((u_long) tad_index >= \
+                           (u_long) &tad_table[TAD_ENTRIES]) \
+                          tad_index = tad_table;
+
+/* add a log entry to the table
+ */
+#define TAD_SNAPSHOT(tp, so)  tad_index->seq_no = tad_seq++; \
+                   microtime(&(tad_index->time)); \
+                   tad_index->snd_cwnd = tp->snd_cwnd; \
+                   tad_index->sb_hiwat = so->so_snd.sb_hiwat; \
+                   tad_index->sb_target_hiwat = so->so_snd.sb_net_target; \
+                   tad_index->sb_cc = so->so_snd.sb_cc; \
+                   tad_index->m_clused = mbstat.m_clusters - mbstat.m_clfree;\
+                   tad_index->lport = tp->t_inpcb->inp_lport; \
+                   tad_index->rport = tp->t_inpcb->inp_fport; \
+                   tad_index->debug = tad_debug; \
+                   tad_index->snd_max = tp->snd_max; \
+                   TAD_INDEX_INCR;
+
+#endif  /* TCP_AUTO_DEBUG */
+
+#endif  /* __NETINET_TCP_DEBUG_H */