proc->thread stage 4: rework the VFS and DEVICE subsystems to take thread
[dragonfly.git] / sys / netinet / tcp_usrreq.c
index ac9f5f4..d99d77f 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     From: @(#)tcp_usrreq.c  8.2 (Berkeley) 1/3/94
  * $FreeBSD: src/sys/netinet/tcp_usrreq.c,v 1.51.2.17 2002/10/11 11:46:44 ume Exp $
- * $DragonFly: src/sys/netinet/tcp_usrreq.c,v 1.2 2003/06/17 04:28:51 dillon Exp $
+ * $DragonFly: src/sys/netinet/tcp_usrreq.c,v 1.3 2003/06/25 03:56:04 dillon Exp $
  */
 
 #include "opt_ipsec.h"
  */
 extern char *tcpstates[];      /* XXX ??? */
 
-static int     tcp_attach __P((struct socket *, struct proc *));
+static int     tcp_attach __P((struct socket *, struct thread *));
 static int     tcp_connect __P((struct tcpcb *, struct sockaddr *, 
-                                struct proc *));
+                                struct thread *));
 #ifdef INET6
 static int     tcp6_connect __P((struct tcpcb *, struct sockaddr *,
-                                struct proc *));
+                                struct thread *));
 #endif /* INET6 */
 static struct tcpcb *
                tcp_disconnect __P((struct tcpcb *));
@@ -115,7 +115,7 @@ static struct tcpcb *
  * and an internet control block.
  */
 static int
-tcp_usr_attach(struct socket *so, int proto, struct proc *p)
+tcp_usr_attach(struct socket *so, int proto, struct thread *td)
 {
        int s = splnet();
        int error;
@@ -129,7 +129,7 @@ tcp_usr_attach(struct socket *so, int proto, struct proc *p)
                goto out;
        }
 
-       error = tcp_attach(so, p);
+       error = tcp_attach(so, td);
        if (error)
                goto out;
 
@@ -188,7 +188,7 @@ tcp_usr_detach(struct socket *so)
  * Give the socket an address.
  */
 static int
-tcp_usr_bind(struct socket *so, struct sockaddr *nam, struct proc *p)
+tcp_usr_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
 {
        int s = splnet();
        int error = 0;
@@ -208,7 +208,7 @@ tcp_usr_bind(struct socket *so, struct sockaddr *nam, struct proc *p)
                error = EAFNOSUPPORT;
                goto out;
        }
-       error = in_pcbbind(inp, nam, p);
+       error = in_pcbbind(inp, nam, td);
        if (error)
                goto out;
        COMMON_END(PRU_BIND);
@@ -217,7 +217,7 @@ tcp_usr_bind(struct socket *so, struct sockaddr *nam, struct proc *p)
 
 #ifdef INET6
 static int
-tcp6_usr_bind(struct socket *so, struct sockaddr *nam, struct proc *p)
+tcp6_usr_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
 {
        int s = splnet();
        int error = 0;
@@ -248,11 +248,11 @@ tcp6_usr_bind(struct socket *so, struct sockaddr *nam, struct proc *p)
                        in6_sin6_2_sin(&sin, sin6p);
                        inp->inp_vflag |= INP_IPV4;
                        inp->inp_vflag &= ~INP_IPV6;
-                       error = in_pcbbind(inp, (struct sockaddr *)&sin, p);
+                       error = in_pcbbind(inp, (struct sockaddr *)&sin, td);
                        goto out;
                }
        }
-       error = in6_pcbbind(inp, nam, p);
+       error = in6_pcbbind(inp, nam, td);
        if (error)
                goto out;
        COMMON_END(PRU_BIND);
@@ -263,7 +263,7 @@ tcp6_usr_bind(struct socket *so, struct sockaddr *nam, struct proc *p)
  * Prepare to accept connections.
  */
 static int
-tcp_usr_listen(struct socket *so, struct proc *p)
+tcp_usr_listen(struct socket *so, struct thread *td)
 {
        int s = splnet();
        int error = 0;
@@ -272,7 +272,7 @@ tcp_usr_listen(struct socket *so, struct proc *p)
 
        COMMON_START();
        if (inp->inp_lport == 0)
-               error = in_pcbbind(inp, (struct sockaddr *)0, p);
+               error = in_pcbbind(inp, (struct sockaddr *)0, td);
        if (error == 0)
                tp->t_state = TCPS_LISTEN;
        COMMON_END(PRU_LISTEN);
@@ -280,7 +280,7 @@ tcp_usr_listen(struct socket *so, struct proc *p)
 
 #ifdef INET6
 static int
-tcp6_usr_listen(struct socket *so, struct proc *p)
+tcp6_usr_listen(struct socket *so, struct thread *td)
 {
        int s = splnet();
        int error = 0;
@@ -292,7 +292,7 @@ tcp6_usr_listen(struct socket *so, struct proc *p)
                inp->inp_vflag &= ~INP_IPV4;
                if ((inp->inp_flags & IN6P_IPV6_V6ONLY) == 0)
                        inp->inp_vflag |= INP_IPV4;
-               error = in6_pcbbind(inp, (struct sockaddr *)0, p);
+               error = in6_pcbbind(inp, (struct sockaddr *)0, td);
        }
        if (error == 0)
                tp->t_state = TCPS_LISTEN;
@@ -308,7 +308,7 @@ tcp6_usr_listen(struct socket *so, struct proc *p)
  * Send initial segment on connection.
  */
 static int
-tcp_usr_connect(struct socket *so, struct sockaddr *nam, struct proc *p)
+tcp_usr_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
 {
        int s = splnet();
        int error = 0;
@@ -328,9 +328,9 @@ tcp_usr_connect(struct socket *so, struct sockaddr *nam, struct proc *p)
                goto out;
        }
 
-       prison_remote_ip(p, 0, &sinp->sin_addr.s_addr);
+       prison_remote_ip(td, 0, &sinp->sin_addr.s_addr);
 
-       if ((error = tcp_connect(tp, nam, p)) != 0)
+       if ((error = tcp_connect(tp, nam, td)) != 0)
                goto out;
        error = tcp_output(tp);
        COMMON_END(PRU_CONNECT);
@@ -338,7 +338,7 @@ tcp_usr_connect(struct socket *so, struct sockaddr *nam, struct proc *p)
 
 #ifdef INET6
 static int
-tcp6_usr_connect(struct socket *so, struct sockaddr *nam, struct proc *p)
+tcp6_usr_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
 {
        int s = splnet();
        int error = 0;
@@ -369,7 +369,7 @@ tcp6_usr_connect(struct socket *so, struct sockaddr *nam, struct proc *p)
                in6_sin6_2_sin(&sin, sin6p);
                inp->inp_vflag |= INP_IPV4;
                inp->inp_vflag &= ~INP_IPV6;
-               if ((error = tcp_connect(tp, (struct sockaddr *)&sin, p)) != 0)
+               if ((error = tcp_connect(tp, (struct sockaddr *)&sin, td)) != 0)
                        goto out;
                error = tcp_output(tp);
                goto out;
@@ -377,7 +377,7 @@ tcp6_usr_connect(struct socket *so, struct sockaddr *nam, struct proc *p)
        inp->inp_vflag &= ~INP_IPV4;
        inp->inp_vflag |= INP_IPV6;
        inp->inp_inc.inc_isipv6 = 1;
-       if ((error = tcp6_connect(tp, nam, p)) != 0)
+       if ((error = tcp6_connect(tp, nam, td)) != 0)
                goto out;
        error = tcp_output(tp);
        COMMON_END(PRU_CONNECT);
@@ -504,7 +504,7 @@ tcp_usr_rcvd(struct socket *so, int flags)
  */
 static int
 tcp_usr_send(struct socket *so, int flags, struct mbuf *m, 
-            struct sockaddr *nam, struct mbuf *control, struct proc *p)
+            struct sockaddr *nam, struct mbuf *control, struct thread *td)
 {
        int s = splnet();
        int error = 0;
@@ -557,10 +557,10 @@ tcp_usr_send(struct socket *so, int flags, struct mbuf *m,
                         */
 #ifdef INET6
                        if (isipv6)
-                               error = tcp6_connect(tp, nam, p);
+                               error = tcp6_connect(tp, nam, td);
                        else
 #endif /* INET6 */
-                       error = tcp_connect(tp, nam, p);
+                       error = tcp_connect(tp, nam, td);
                        if (error)
                                goto out;
                        tp->snd_wnd = TTCP_CLIENT_SND_WND;
@@ -606,10 +606,10 @@ tcp_usr_send(struct socket *so, int flags, struct mbuf *m,
                         */
 #ifdef INET6
                        if (isipv6)
-                               error = tcp6_connect(tp, nam, p);
+                               error = tcp6_connect(tp, nam, td);
                        else
 #endif /* INET6 */
-                       error = tcp_connect(tp, nam, p);
+                       error = tcp_connect(tp, nam, td);
                        if (error)
                                goto out;
                        tp->snd_wnd = TTCP_CLIENT_SND_WND;
@@ -700,10 +700,7 @@ struct pr_usrreqs tcp6_usrreqs = {
  * Initialize connection parameters and enter SYN-SENT state.
  */
 static int
-tcp_connect(tp, nam, p)
-       register struct tcpcb *tp;
-       struct sockaddr *nam;
-       struct proc *p;
+tcp_connect(struct tcpcb *tp, struct sockaddr *nam, struct thread *td)
 {
        struct inpcb *inp = tp->t_inpcb, *oinp;
        struct socket *so = inp->inp_socket;
@@ -715,7 +712,7 @@ tcp_connect(tp, nam, p)
        int error;
 
        if (inp->inp_lport == 0) {
-               error = in_pcbbind(inp, (struct sockaddr *)0, p);
+               error = in_pcbbind(inp, (struct sockaddr *)0, td);
                if (error)
                        return error;
        }
@@ -784,10 +781,7 @@ tcp_connect(tp, nam, p)
 
 #ifdef INET6
 static int
-tcp6_connect(tp, nam, p)
-       register struct tcpcb *tp;
-       struct sockaddr *nam;
-       struct proc *p;
+tcp6_connect(struct tcpcb *tp, struct sockaddr *nam, struct thread *td)
 {
        struct inpcb *inp = tp->t_inpcb, *oinp;
        struct socket *so = inp->inp_socket;
@@ -799,7 +793,7 @@ tcp6_connect(tp, nam, p)
        int error;
 
        if (inp->inp_lport == 0) {
-               error = in6_pcbbind(inp, (struct sockaddr *)0, p);
+               error = in6_pcbbind(inp, (struct sockaddr *)0, td);
                if (error)
                        return error;
        }
@@ -1009,9 +1003,7 @@ SYSCTL_INT(_net_inet_tcp, TCPCTL_RECVSPACE, recvspace, CTLFLAG_RW,
  * bufer space, and entering LISTEN state if to accept connections.
  */
 static int
-tcp_attach(so, p)
-       struct socket *so;
-       struct proc *p;
+tcp_attach(struct socket *so, struct thread *td)
 {
        register struct tcpcb *tp;
        struct inpcb *inp;
@@ -1025,7 +1017,7 @@ tcp_attach(so, p)
                if (error)
                        return (error);
        }
-       error = in_pcballoc(so, &tcbinfo, p);
+       error = in_pcballoc(so, &tcbinfo, td);
        if (error)
                return (error);
        inp = sotoinpcb(so);