Bring back the detach messages in trpt(8) for tcp debugging. They
authorbluhm <bluhm@openbsd.org>
Mon, 22 Jan 2018 20:27:28 +0000 (20:27 +0000)
committerbluhm <bluhm@openbsd.org>
Mon, 22 Jan 2018 20:27:28 +0000 (20:27 +0000)
got lost with the pr_detach conversion.  While there, remove some
dead code.
OK mpi@

sys/netinet/tcp_usrreq.c
sys/sys/protosw.h

index cc2b23e..c534f0e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: tcp_usrreq.c,v 1.163 2018/01/09 15:14:23 mpi Exp $    */
+/*     $OpenBSD: tcp_usrreq.c,v 1.164 2018/01/22 20:27:28 bluhm Exp $  */
 /*     $NetBSD: tcp_usrreq.c,v 1.20 1996/02/13 23:44:16 christos Exp $ */
 
 /*
@@ -170,9 +170,8 @@ tcp_usrreq(struct socket *so, int req, struct mbuf *m, struct mbuf *nam,
        if (inp) {
                tp = intotcpcb(inp);
                /* tp might get 0 when using socket splicing */
-               if (tp == NULL) {
+               if (tp == NULL)
                        return (0);
-               }
 #ifdef KPROF
                tcp_acounts[tp->t_state][req]++;
 #endif
@@ -628,21 +627,16 @@ tcp_detach(struct socket *so)
                error = so->so_error;
                if (error == 0)
                        error = EINVAL;
-
                return (error);
        }
-       if (inp) {
-               tp = intotcpcb(inp);
-               /* tp might get 0 when using socket splicing */
-               if (tp == NULL) {
-                       return (0);
-               }
+       tp = intotcpcb(inp);
+       /* tp might get 0 when using socket splicing */
+       if (tp == NULL)
+               return (0);
 #ifdef KPROF
-               tcp_acounts[tp->t_state][req]++;
+       tcp_acounts[tp->t_state][req]++;
 #endif
-               ostate = tp->t_state;
-       } else
-               ostate = 0;
+       ostate = tp->t_state;
 
        /*
         * Detach the TCP protocol from the socket.
@@ -651,8 +645,10 @@ tcp_detach(struct socket *so)
         * which may finish later; embryonic TCB's can just
         * be discarded here.
         */
-       tcp_disconnect(tp);
+       tp = tcp_disconnect(tp);
 
+       if (tp && (so->so_options & SO_DEBUG))
+               tcp_trace(TA_USER, ostate, tp, (caddr_t)0, PRU_DETACH, 0);
        return (error);
 }
 
index 5683bfa..dac5727 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: protosw.h,v 1.28 2017/11/23 13:45:46 mpi Exp $        */
+/*     $OpenBSD: protosw.h,v 1.29 2018/01/22 20:27:28 bluhm Exp $      */
 /*     $NetBSD: protosw.h,v 1.10 1996/04/09 20:55:32 cgd Exp $ */
 
 /*-
@@ -121,6 +121,7 @@ struct protosw {
  * A non-zero return from usrreq gives an
  * UNIX error number which should be passed to higher level software.
  */
+#define        PRU_DETACH              1       /* detach protocol from up */
 #define        PRU_BIND                2       /* bind socket to address */
 #define        PRU_LISTEN              3       /* listen for connection */
 #define        PRU_CONNECT             4       /* establish connection to peer */