summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/inet/tcp.h
diff options
context:
space:
mode:
authorjprakash <none@none>2006-11-13 11:48:26 -0800
committerjprakash <none@none>2006-11-13 11:48:26 -0800
commit866ba9dd840c7f527cf2c93eed0711d83da2c554 (patch)
tree2d70e17aeba303b743c33939a143a0b4cd0e03c8 /usr/src/uts/common/inet/tcp.h
parentdae6ba85caff4b224e672b0291da66d93687f6ec (diff)
downloadillumos-gate-866ba9dd840c7f527cf2c93eed0711d83da2c554.tar.gz
6265494 assertion failed: sqp != NULL, file: ../../common/inet/squeue.c, line: 715
6266870 assertion failed: cr != NULL, file: ../../common/os/strsubr.c, line: 8437 6266950 tcp_closemp reuse causes assertion failure in squeue code 6379249 SDT probes in CONN_INC_REF and CONN_DEC_REF should be where conn_lock is held 6402737 IP spends too much time identifying bad remote host when under SYN attack 6404207 tcp_clean_death() gets called twice for an eager 6408242 access to freed tcp_t in tcp_close() 6412077 missing CONN_DEC_REF in tcp_conn_request() 6415132 conn_recv should be set before insering a conn_t in a hash table 6448747 A tcp connection can be queued again for tcp TIMEWAIT processing
Diffstat (limited to 'usr/src/uts/common/inet/tcp.h')
-rw-r--r--usr/src/uts/common/inet/tcp.h33
1 files changed, 32 insertions, 1 deletions
diff --git a/usr/src/uts/common/inet/tcp.h b/usr/src/uts/common/inet/tcp.h
index 54d46f7f1b..7552e53600 100644
--- a/usr/src/uts/common/inet/tcp.h
+++ b/usr/src/uts/common/inet/tcp.h
@@ -287,7 +287,8 @@ typedef struct tcp_s {
tcp_send_discon_ind : 1, /* TLI accept err, send discon ind */
tcp_cork : 1, /* tcp_cork option */
- tcp_pad_to_bit_31 : 18;
+ tcp_tconnind_started : 1, /* conn_ind message is being sent */
+ tcp_pad_to_bit_31 : 17;
uint32_t tcp_if_mtu; /* Outgoing interface MTU. */
@@ -553,8 +554,38 @@ typedef struct tcp_s {
kssl_ent_t tcp_kssl_ent; /* SSL table entry */
kssl_ctx_t tcp_kssl_ctx; /* SSL session */
uint_t tcp_label_len; /* length of cached label */
+
+ /*
+ * tcp_closemp_used is protected by listener's tcp_eager_lock
+ * when used for eagers. When used for a tcp in TIME_WAIT state
+ * or in tcp_close(), it is not protected by any lock as we
+ * do not expect any other thread to use it concurrently.
+ * Since we do allow re-use of tcp_closemp at certain places,
+ * tcp_closemp_used is declared as uint32_t instead of boolean_t
+ * to record any attempt to re-use tcp_closemp while it is still
+ * in use. This would facilitate debugging in non-debug kernels.
+ */
+ uint32_t tcp_closemp_used;
+
+ /*
+ * previous and next eagers in the list of droppable eagers. See
+ * the comments before MAKE_DROPPABLE(). These pointers are
+ * protected by listener's tcp_eager_lock.
+ */
+ struct tcp_s *tcp_eager_prev_drop_q0;
+ struct tcp_s *tcp_eager_next_drop_q0;
+#ifdef DEBUG
+ pc_t tcmp_stk[15];
+#endif
} tcp_t;
+#ifdef DEBUG
+#define TCP_DEBUG_GETPCSTACK(buffer, depth) ((void) getpcstack(buffer, \
+ depth))
+#else
+#define TCP_DEBUG_GETPCSTACK(buffer, depth)
+#endif
+
extern void tcp_free(tcp_t *tcp);
extern void tcp_ddi_init(void);
extern void tcp_ddi_destroy(void);