Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-1-6]: src/sys/netinet Pullup rev 1.03 (requested by he in ticket ...



details:   https://anonhg.NetBSD.org/src/rev/607f1050107c
branches:  netbsd-1-6
changeset: 530953:607f1050107c
user:      jmc <jmc%NetBSD.org@localhost>
date:      Wed Oct 22 06:06:13 2003 +0000

description:
Pullup rev 1.03 (requested by he in ticket #1530)


        Introduce a new INVOKING status for callouts, and use it to close
        a race condition in the TCP code.  Fixes PR#20390.

diffstat:

 sys/netinet/tcp_var.h |  8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diffs (52 lines):

diff -r 8b2b5c8b6cdf -r 607f1050107c sys/netinet/tcp_var.h
--- a/sys/netinet/tcp_var.h     Wed Oct 22 06:06:05 2003 +0000
+++ b/sys/netinet/tcp_var.h     Wed Oct 22 06:06:13 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: tcp_var.h,v 1.90.4.1 2003/09/05 13:42:46 tron Exp $    */
+/*     $NetBSD: tcp_var.h,v 1.90.4.2 2003/10/22 06:06:13 jmc Exp $     */
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -184,6 +184,7 @@
 #define        TF_CANT_TXSACK  0x1000          /* other side said I could not SACK */
 #define        TF_IGNR_RXSACK  0x2000          /* ignore received SACK blocks */
 #define        TF_REASSEMBLING 0x4000          /* we're busy reassembling */
+#define        TF_DEAD         0x8000          /* dead and to-be-released */
 
 
        struct  mbuf *t_template;       /* skeletal packet for transmit */
@@ -410,6 +411,7 @@
 
 #define        SCF_UNREACH             0x0001          /* we've had an unreach error */
 #define        SCF_TIMESTAMP           0x0002          /* peer will do timestamps */
+#define        SCF_DEAD                0x0004          /* this entry to be released */
 
        struct mbuf *sc_ipopts;                 /* IP options */
        u_int16_t sc_peermaxseg;
@@ -540,6 +542,7 @@
        u_quad_t tcps_noport;           /* no socket on port */
        u_quad_t tcps_badsyn;           /* received ack for which we have
                                           no SYN in compressed state */
+       u_quad_t tcps_delayed_free;     /* delayed pool_put() of tcpcb */
 
        /* These statistics deal with the SYN cache. */
        u_quad_t tcps_sc_added;         /* # of entries added */
@@ -554,6 +557,7 @@
        u_quad_t tcps_sc_dropped;       /* # of SYNs dropped (no route/mem) */
        u_quad_t tcps_sc_collisions;    /* # of hash collisions */
        u_quad_t tcps_sc_retransmitted; /* # of retransmissions */
+       u_quad_t tcps_sc_delayed_free;  /* # of delayed pool_put()s */
 
        u_quad_t tcps_selfquench;       /* # of ENOBUFS we get on output */
 };
@@ -681,8 +685,10 @@
 
 int     tcp_attach __P((struct socket *));
 void    tcp_canceltimers __P((struct tcpcb *));
+int     tcp_timers_invoking __P((struct tcpcb*));
 struct tcpcb *
         tcp_close __P((struct tcpcb *));
+int     tcp_isdead __P((struct tcpcb *));
 #ifdef INET6
 void    tcp6_ctlinput __P((int, struct sockaddr *, void *));
 #endif



Home | Main Index | Thread Index | Old Index