This inlines all the trivial functions in the various places.
OK?

diff --git sys/conf/files sys/conf/files
index 03b4a0e24cc..2771b6f4446 100644
--- sys/conf/files
+++ sys/conf/files
@@ -788,7 +788,6 @@ file net/switchctl.c                        switch
 file net/switchofp.c                   switch
 file net/pipex.c                       pipex
 file net/radix.c                       pf | ipsec | pipex | nfsserver
-file net/raw_cb.c
 file net/raw_usrreq.c
 file net/rtable.c
 file net/route.c
diff --git sys/net/pfkeyv2.c sys/net/pfkeyv2.c
index 9d0194c0570..fc836155a52 100644
--- sys/net/pfkeyv2.c
+++ sys/net/pfkeyv2.c
@@ -229,12 +229,17 @@ pfkeyv2_attach(struct socket *so, int proto)
        rp = &kp->rcb;
        so->so_pcb = rp;
 
-       error = raw_attach(so, proto);
+       error = soreserve(so, RAWSNDQ, RAWRCVQ);
+
        if (error) {
                free(kp, M_PCB, sizeof(struct keycb));
                return (error);
        }
 
+       rp->rcb_socket = so;
+       rp->rcb_proto.sp_family = so->so_proto->pr_domain->dom_family;
+       rp->rcb_proto.sp_protocol = proto;
+
        so->so_options |= SO_USELOOPBACK;
        soisconnected(so);
 
@@ -277,7 +282,9 @@ pfkeyv2_detach(struct socket *so)
                mtx_leave(&pfkeyv2_mtx);
        }
 
-       raw_do_detach(&kp->rcb);
+       so->so_pcb = 0;
+       sofree(so);
+       free((caddr_t)(&kp->rcb), M_PCB, 0);
        return (0);
 }
 
diff --git sys/net/raw_cb.c sys/net/raw_cb.c
deleted file mode 100644
index f2396c704dd..00000000000
--- sys/net/raw_cb.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*     $OpenBSD: raw_cb.c,v 1.13 2017/11/02 14:01:18 florian Exp $     */
-/*     $NetBSD: raw_cb.c,v 1.9 1996/02/13 22:00:39 christos Exp $      */
-
-/*
- * Copyright (c) 1980, 1986, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *     @(#)raw_cb.c    8.1 (Berkeley) 6/10/93
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-#include <sys/socket.h>
-#include <sys/socketvar.h>
-#include <sys/domain.h>
-#include <sys/protosw.h>
-#include <sys/errno.h>
-
-#include <net/raw_cb.h>
-#include <netinet/in.h>
-
-/*
- * Routines to manage the raw protocol control blocks.
- */
-
-u_long raw_sendspace = RAWSNDQ;
-u_long raw_recvspace = RAWRCVQ;
-
-/*
- * Allocate a control block and a nominal amount
- * of buffer space for the socket.
- */
-int
-raw_attach(struct socket *so, int proto)
-{
-       struct rawcb *rp = sotorawcb(so);
-       int error;
-
-       /*
-        * It is assumed that raw_attach is called
-        * after space has been allocated for the
-        * rawcb.
-        */
-       if (rp == NULL)
-               return (ENOBUFS);
-       if ((error = soreserve(so, raw_sendspace, raw_recvspace)) != 0)
-               return (error);
-       rp->rcb_socket = so;
-       rp->rcb_proto.sp_family = so->so_proto->pr_domain->dom_family;
-       rp->rcb_proto.sp_protocol = proto;
-       return (0);
-}
-
-int
-raw_detach(struct socket *so)
-{
-       struct rawcb *rp = sotorawcb(so);
-
-       soassertlocked(so);
-
-       if (rp == NULL)
-               return (EINVAL);
-
-       raw_do_detach(rp);
-
-       return (0);
-}
-
-/*
- * Detach the raw connection block and discard
- * socket resources.
- */
-void
-raw_do_detach(struct rawcb *rp)
-{
-       struct socket *so = rp->rcb_socket;
-
-       so->so_pcb = 0;
-       sofree(so);
-       free((caddr_t)(rp), M_PCB, 0);
-}
diff --git sys/net/raw_cb.h sys/net/raw_cb.h
index f284b56044f..dd15ca3d1f4 100644
--- sys/net/raw_cb.h
+++ sys/net/raw_cb.h
@@ -55,9 +55,6 @@ struct rawcb {
 #ifdef _KERNEL
 
 #define        sotorawcb(so)           ((struct rawcb *)(so)->so_pcb)
-int     raw_attach(struct socket *, int);
-int     raw_detach(struct socket *);
-void    raw_do_detach(struct rawcb *);
 void    raw_init(void);
 int     raw_usrreq(struct socket *,
            int, struct mbuf *, struct mbuf *, struct mbuf *, struct proc *);
diff --git sys/net/rtsock.c sys/net/rtsock.c
index c2adc8d26ce..03fccea1084 100644
--- sys/net/rtsock.c
+++ sys/net/rtsock.c
@@ -224,12 +224,16 @@ route_attach(struct socket *so, int proto)
 
        if (curproc == NULL)
                error = EACCES;
-       else
-               error = raw_attach(so, proto);
+       else 
+               error = soreserve(so, RAWSNDQ, RAWRCVQ);
        if (error) {
                free(rop, M_PCB, sizeof(struct routecb));
                return (error);
        }
+       rp->rcb_socket = so;
+       rp->rcb_proto.sp_family = so->so_proto->pr_domain->dom_family;
+       rp->rcb_proto.sp_protocol = proto;
+
        rop->rtableid = curproc->p_p->ps_rtableid;
        switch (rp->rcb_proto.sp_protocol) {
        case AF_INET:
@@ -259,6 +263,7 @@ int
 route_detach(struct socket *so)
 {
        struct routecb  *rop;
+       struct rawcb    *rp;
        int              af;
 
        soassertlocked(so);
@@ -267,6 +272,10 @@ route_detach(struct socket *so)
        if (rop == NULL)
                return (EINVAL);
 
+       rp = sotorawcb(so);
+       if (rp == NULL)
+               return (EINVAL);
+
        timeout_del(&rop->timeout);
        af = rop->rcb.rcb_proto.sp_protocol;
        if (af == AF_INET)
@@ -279,7 +288,12 @@ route_detach(struct socket *so)
 #endif
        route_cb.any_count--;
        LIST_REMOVE(rop, rcb_list);
-       return (raw_detach(so));
+
+       so->so_pcb = 0;
+       sofree(so);
+       free((caddr_t)(rp), M_PCB, 0);
+
+       return (0);
 }
 
 int


-- 
I'm not entirely sure you are real.

Reply via email to