Source-Changes-HG archive

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

[src/trunk]: src/sys split PRU_SENDOOB and PRU_RCVOOB function out of pr_gene...



details:   https://anonhg.NetBSD.org/src/rev/aa480146e3c9
branches:  trunk
changeset: 797596:aa480146e3c9
user:      rtr <rtr%NetBSD.org@localhost>
date:      Wed Jul 23 13:17:18 2014 +0000

description:
split PRU_SENDOOB and PRU_RCVOOB function out of pr_generic() usrreq
switches and put into separate functions
  xxx_sendoob(struct socket *, struct mbuf *, struct mbuf *)
  xxx_recvoob(struct socket *, struct mbuf *, int)

  - always KASSERT(solocked(so)) even if request is not implemented

  - replace calls to pr_generic() with req = PRU_{SEND,RCV}OOB with
    calls to pr_{send,recv}oob() respectively.

there is still some tweaking of m_freem(m) and m_freem(control) to come
for consistency.  not performed with this commit for clarity.

reviewed by rmind

diffstat:

 sys/dev/kttcp.c                     |   16 +-
 sys/kern/uipc_socket.c              |   16 +-
 sys/kern/uipc_usrreq.c              |   39 +++++--
 sys/net/raw_usrreq.c                |   21 +---
 sys/net/rtsock.c                    |   28 +++++-
 sys/netatalk/ddp_usrreq.c           |   31 +++++-
 sys/netbt/hci_socket.c              |   33 +++++-
 sys/netbt/l2cap_socket.c            |   33 +++++-
 sys/netbt/rfcomm_socket.c           |   35 +++++-
 sys/netbt/sco_socket.c              |   33 +++++-
 sys/netinet/raw_ip.c                |   39 +++++--
 sys/netinet/tcp_usrreq.c            |  184 +++++++++++++++++++++++++++--------
 sys/netinet/udp_usrreq.c            |   41 +++++--
 sys/netinet6/raw_ip6.c              |   31 +++++-
 sys/netinet6/udp6_usrreq.c          |   33 +++++-
 sys/netipsec/keysock.c              |   29 +++++-
 sys/netmpls/mpls_proto.c            |   24 ++++-
 sys/netnatm/natm.c                  |   28 ++++-
 sys/rump/net/lib/libsockin/sockin.c |   22 +++-
 sys/sys/protosw.h                   |   24 ++++-
 20 files changed, 587 insertions(+), 153 deletions(-)

diffs (truncated from 1628 to 300 lines):

diff -r 268e2c52610d -r aa480146e3c9 sys/dev/kttcp.c
--- a/sys/dev/kttcp.c   Wed Jul 23 11:43:29 2014 +0000
+++ b/sys/dev/kttcp.c   Wed Jul 23 13:17:18 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: kttcp.c,v 1.33 2014/05/18 14:46:15 rmind Exp $ */
+/*     $NetBSD: kttcp.c,v 1.34 2014/07/23 13:17:18 rtr Exp $   */
 
 /*
  * Copyright (c) 2002 Wasabi Systems, Inc.
@@ -42,7 +42,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kttcp.c,v 1.33 2014/05/18 14:46:15 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kttcp.c,v 1.34 2014/07/23 13:17:18 rtr Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -319,9 +319,12 @@
                                so->so_options |= SO_DONTROUTE;
                        if (resid > 0)
                                so->so_state |= SS_MORETOCOME;
-                       error = (*so->so_proto->pr_usrreqs->pr_generic)(so,
-                           (flags & MSG_OOB) ? PRU_SENDOOB : PRU_SEND,
-                           top, NULL, NULL, l);
+                       if (flags & MSG_OOB)
+                               error = (*so->so_proto->pr_usrreqs->pr_sendoob)(so,
+                                   top, NULL);
+                       else
+                               error = (*so->so_proto->pr_usrreqs->pr_generic)(so,
+                                   PRU_SEND, top, NULL, NULL, l);
                        if (dontroute)
                                so->so_options &= ~SO_DONTROUTE;
                        if (resid > 0)
@@ -367,8 +370,7 @@
        if (flags & MSG_OOB) {
                m = m_get(M_WAIT, MT_DATA);
                solock(so);
-               error = (*pr->pr_usrreqs->pr_generic)(so, PRU_RCVOOB, m,
-                   (struct mbuf *)(long)(flags & MSG_PEEK), NULL, NULL);
+               error = (*pr->pr_usrreqs->pr_recvoob)(so, m, flags & MSG_PEEK);
                sounlock(so);
                if (error)
                        goto bad;
diff -r 268e2c52610d -r aa480146e3c9 sys/kern/uipc_socket.c
--- a/sys/kern/uipc_socket.c    Wed Jul 23 11:43:29 2014 +0000
+++ b/sys/kern/uipc_socket.c    Wed Jul 23 13:17:18 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: uipc_socket.c,v 1.225 2014/07/09 14:41:42 rtr Exp $    */
+/*     $NetBSD: uipc_socket.c,v 1.226 2014/07/23 13:17:18 rtr Exp $    */
 
 /*-
  * Copyright (c) 2002, 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -71,7 +71,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_socket.c,v 1.225 2014/07/09 14:41:42 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_socket.c,v 1.226 2014/07/23 13:17:18 rtr Exp $");
 
 #include "opt_compat_netbsd.h"
 #include "opt_sock_counters.h"
@@ -1053,9 +1053,12 @@
                                so->so_options |= SO_DONTROUTE;
                        if (resid > 0)
                                so->so_state |= SS_MORETOCOME;
-                       error = (*so->so_proto->pr_usrreqs->pr_generic)(so,
-                           (flags & MSG_OOB) ? PRU_SENDOOB : PRU_SEND,
-                           top, addr, control, curlwp);
+                       if (flags & MSG_OOB)
+                               error = (*so->so_proto->pr_usrreqs->pr_sendoob)(so,
+                                   top, control);
+                       else
+                               error = (*so->so_proto->pr_usrreqs->pr_generic)(so,
+                                   PRU_SEND, top, addr, control, curlwp);
                        if (dontroute)
                                so->so_options &= ~SO_DONTROUTE;
                        if (resid > 0)
@@ -1167,8 +1170,7 @@
        if (flags & MSG_OOB) {
                m = m_get(M_WAIT, MT_DATA);
                solock(so);
-               error = (*pr->pr_usrreqs->pr_generic)(so, PRU_RCVOOB, m,
-                   (struct mbuf *)(long)(flags & MSG_PEEK), NULL, l);
+               error = (*pr->pr_usrreqs->pr_recvoob)(so, m, flags & MSG_PEEK);
                sounlock(so);
                if (error)
                        goto bad;
diff -r 268e2c52610d -r aa480146e3c9 sys/kern/uipc_usrreq.c
--- a/sys/kern/uipc_usrreq.c    Wed Jul 23 11:43:29 2014 +0000
+++ b/sys/kern/uipc_usrreq.c    Wed Jul 23 13:17:18 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: uipc_usrreq.c,v 1.159 2014/07/09 14:41:42 rtr Exp $    */
+/*     $NetBSD: uipc_usrreq.c,v 1.160 2014/07/23 13:17:18 rtr Exp $    */
 
 /*-
  * Copyright (c) 1998, 2000, 2004, 2008, 2009 The NetBSD Foundation, Inc.
@@ -96,7 +96,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_usrreq.c,v 1.159 2014/07/09 14:41:42 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_usrreq.c,v 1.160 2014/07/23 13:17:18 rtr Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -366,6 +366,25 @@
 }
 
 static int
+unp_recvoob(struct socket *so, struct mbuf *m, int flags)
+{
+       KASSERT(solocked(so));
+
+       return EOPNOTSUPP;
+}
+
+static int
+unp_sendoob(struct socket *so, struct mbuf *m, struct mbuf * control)
+{
+       KASSERT(solocked(so));
+
+       m_freem(m);
+       m_freem(control);
+
+       return EOPNOTSUPP;
+}
+
+static int
 unp_usrreq(struct socket *so, int req, struct mbuf *m, struct mbuf *nam,
     struct mbuf *control, struct lwp *l)
 {
@@ -381,11 +400,13 @@
        KASSERT(req != PRU_SENSE);
        KASSERT(req != PRU_PEERADDR);
        KASSERT(req != PRU_SOCKADDR);
+       KASSERT(req != PRU_RCVOOB);
+       KASSERT(req != PRU_SENDOOB);
 
        KASSERT(solocked(so));
        unp = sotounpcb(so);
 
-       KASSERT(!control || (req == PRU_SEND || req == PRU_SENDOOB));
+       KASSERT(!control || req == PRU_SEND);
        if (unp == NULL) {
                error = EINVAL;
                goto release;
@@ -581,16 +602,6 @@
                unp_detach(so);
                break;
 
-       case PRU_RCVOOB:
-               error = EOPNOTSUPP;
-               break;
-
-       case PRU_SENDOOB:
-               m_freem(control);
-               m_freem(m);
-               error = EOPNOTSUPP;
-               break;
-
        default:
                panic("piusrreq");
        }
@@ -1862,5 +1873,7 @@
        .pr_stat        = unp_stat,
        .pr_peeraddr    = unp_peeraddr,
        .pr_sockaddr    = unp_sockaddr,
+       .pr_recvoob     = unp_recvoob,
+       .pr_sendoob     = unp_sendoob,
        .pr_generic     = unp_usrreq,
 };
diff -r 268e2c52610d -r aa480146e3c9 sys/net/raw_usrreq.c
--- a/sys/net/raw_usrreq.c      Wed Jul 23 11:43:29 2014 +0000
+++ b/sys/net/raw_usrreq.c      Wed Jul 23 13:17:18 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: raw_usrreq.c,v 1.43 2014/07/09 14:41:42 rtr Exp $      */
+/*     $NetBSD: raw_usrreq.c,v 1.44 2014/07/23 13:17:18 rtr Exp $      */
 
 /*
  * Copyright (c) 1980, 1986, 1993
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: raw_usrreq.c,v 1.43 2014/07/09 14:41:42 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: raw_usrreq.c,v 1.44 2014/07/23 13:17:18 rtr Exp $");
 
 #include <sys/param.h>
 #include <sys/mbuf.h>
@@ -167,11 +167,13 @@
        KASSERT(req != PRU_SENSE);
        KASSERT(req != PRU_PEERADDR);
        KASSERT(req != PRU_SOCKADDR);
+       KASSERT(req != PRU_RCVOOB);
+       KASSERT(req != PRU_SENDOOB);
 
        s = splsoftnet();
        KERNEL_LOCK(1, NULL);
 
-       KASSERT(!control || (req == PRU_SEND || req == PRU_SENDOOB));
+       KASSERT(!control || req == PRU_SEND);
        if (rp == NULL) {
                error = EINVAL;
                goto release;
@@ -241,19 +243,6 @@
                        raw_disconnect(rp);
                break;
 
-       /*
-        * Not supported.
-        */
-       case PRU_RCVOOB:
-               error = EOPNOTSUPP;
-               break;
-
-       case PRU_SENDOOB:
-               m_freem(control);
-               m_freem(m);
-               error = EOPNOTSUPP;
-               break;
-
        default:
                panic("raw_usrreq");
        }
diff -r 268e2c52610d -r aa480146e3c9 sys/net/rtsock.c
--- a/sys/net/rtsock.c  Wed Jul 23 11:43:29 2014 +0000
+++ b/sys/net/rtsock.c  Wed Jul 23 13:17:18 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: rtsock.c,v 1.155 2014/07/09 14:41:42 rtr Exp $ */
+/*     $NetBSD: rtsock.c,v 1.156 2014/07/23 13:17:18 rtr Exp $ */
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.155 2014/07/09 14:41:42 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.156 2014/07/23 13:17:18 rtr Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -281,6 +281,26 @@
 }
 
 static int
+COMPATNAME(route_recvoob)(struct socket *so, struct mbuf *m, int flags)
+{
+       KASSERT(solocked(so));
+
+       return EOPNOTSUPP;
+}
+
+static int
+COMPATNAME(route_sendoob)(struct socket *so, struct mbuf *m,
+    struct mbuf *control)
+{
+       KASSERT(solocked(so));
+
+       m_freem(m);
+       m_freem(control);
+
+       return EOPNOTSUPP;
+}
+
+static int
 COMPATNAME(route_usrreq)(struct socket *so, int req, struct mbuf *m,
     struct mbuf *nam, struct mbuf *control, struct lwp *l)
 {
@@ -293,6 +313,8 @@
        KASSERT(req != PRU_SENSE);
        KASSERT(req != PRU_PEERADDR);
        KASSERT(req != PRU_SOCKADDR);
+       KASSERT(req != PRU_RCVOOB);
+       KASSERT(req != PRU_SENDOOB);
 
        s = splsoftnet();
        error = raw_usrreq(so, req, m, nam, control, l);
@@ -1394,6 +1416,8 @@
        .pr_stat        = COMPATNAME(route_stat_wrapper),
        .pr_peeraddr    = COMPATNAME(route_peeraddr_wrapper),
        .pr_sockaddr    = COMPATNAME(route_sockaddr_wrapper),
+       .pr_recvoob     = COMPATNAME(route_recvoob_wrapper),
+       .pr_sendoob     = COMPATNAME(route_sendoob_wrapper),
        .pr_generic     = COMPATNAME(route_usrreq_wrapper),
 };
 
diff -r 268e2c52610d -r aa480146e3c9 sys/netatalk/ddp_usrreq.c
--- a/sys/netatalk/ddp_usrreq.c Wed Jul 23 11:43:29 2014 +0000
+++ b/sys/netatalk/ddp_usrreq.c Wed Jul 23 13:17:18 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ddp_usrreq.c,v 1.53 2014/07/09 14:41:42 rtr Exp $       */
+/*     $NetBSD: ddp_usrreq.c,v 1.54 2014/07/23 13:17:18 rtr Exp $       */
 
 /*
  * Copyright (c) 1990,1991 Regents of The University of Michigan.
@@ -27,7 +27,7 @@
  */
 



Home | Main Index | Thread Index | Old Index