Module Name:    src
Committed By:   tls
Date:           Sun Aug 10 06:56:21 UTC 2014

Modified Files:
        src/sys/netatalk [tls-earlyentropy]: at_control.c at_extern.h
            at_proto.c ddp_usrreq.c

Log Message:
Rebase.


To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.34.26.1 src/sys/netatalk/at_control.c
cvs rdiff -u -r1.16 -r1.16.76.1 src/sys/netatalk/at_extern.h
cvs rdiff -u -r1.17 -r1.17.28.1 src/sys/netatalk/at_proto.c
cvs rdiff -u -r1.41 -r1.41.2.1 src/sys/netatalk/ddp_usrreq.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/netatalk/at_control.c
diff -u src/sys/netatalk/at_control.c:1.34 src/sys/netatalk/at_control.c:1.34.26.1
--- src/sys/netatalk/at_control.c:1.34	Wed Oct 19 01:50:27 2011
+++ src/sys/netatalk/at_control.c	Sun Aug 10 06:56:21 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: at_control.c,v 1.34 2011/10/19 01:50:27 dyoung Exp $	 */
+/*	$NetBSD: at_control.c,v 1.34.26.1 2014/08/10 06:56:21 tls Exp $	 */
 
 /*
  * Copyright (c) 1990,1994 Regents of The University of Michigan.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: at_control.c,v 1.34 2011/10/19 01:50:27 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: at_control.c,v 1.34.26.1 2014/08/10 06:56:21 tls Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -72,7 +72,7 @@ static void aa_clean(void);
 			 (a)->sat_addr.s_node == (b)->sat_addr.s_node )
 
 int
-at_control(u_long cmd, void * data, struct ifnet *ifp, struct lwp *l)
+at_control(u_long cmd, void *data, struct ifnet *ifp)
 {
 	struct ifreq   *ifr = (struct ifreq *) data;
 	const struct sockaddr_at *csat;
@@ -125,7 +125,7 @@ at_control(u_long cmd, void * data, stru
 		 * If we are not superuser, then we don't get to do these
 		 * ops.
 		 */
-		if (l && kauth_authorize_network(l->l_cred,
+		if (kauth_authorize_network(curlwp->l_cred,
 		    KAUTH_NETWORK_INTERFACE,
 		    KAUTH_REQ_NETWORK_INTERFACE_SETPRIV, ifp, (void *)cmd,
 		    NULL) != 0)

Index: src/sys/netatalk/at_extern.h
diff -u src/sys/netatalk/at_extern.h:1.16 src/sys/netatalk/at_extern.h:1.16.76.1
--- src/sys/netatalk/at_extern.h:1.16	Wed Dec  5 23:47:18 2007
+++ src/sys/netatalk/at_extern.h	Sun Aug 10 06:56:21 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: at_extern.h,v 1.16 2007/12/05 23:47:18 dyoung Exp $	*/
+/*	$NetBSD: at_extern.h,v 1.16.76.1 2014/08/10 06:56:21 tls Exp $	*/
 
 /*
  * Copyright (c) 1990,1994 Regents of The University of Michigan.
@@ -41,6 +41,8 @@ struct socket;
 extern struct mowner atalk_rx_mowner;
 extern struct mowner atalk_tx_mowner;
 
+extern const struct pr_usrreqs ddp_usrreqs;
+
 void	atintr(void);
 void	aarpprobe(void *);
 int	aarpresolve(struct ifnet *, struct mbuf *, const struct sockaddr_at *,
@@ -48,14 +50,12 @@ int	aarpresolve(struct ifnet *, struct m
 void	aarpinput(struct ifnet *, struct mbuf *);
 int	at_broadcast(const struct sockaddr_at *);
 void	aarp_clean(void);
-int	at_control(u_long, void *, struct ifnet *, struct lwp *);
+int	at_control(u_long, void *, struct ifnet *);
 int	at_inithead(void **, int);
 void	at_purgeaddr(struct ifaddr *);
 void	at_purgeif(struct ifnet *);
 u_int16_t
 	at_cksum(struct mbuf *, int);
-int	ddp_usrreq(struct socket *, int, struct mbuf *, struct mbuf *,
-    struct mbuf *, struct lwp *);
 void	ddp_init(void);
 struct ifaddr *
 	at_ifawithnet(const struct sockaddr_at *, struct ifnet *);

Index: src/sys/netatalk/at_proto.c
diff -u src/sys/netatalk/at_proto.c:1.17 src/sys/netatalk/at_proto.c:1.17.28.1
--- src/sys/netatalk/at_proto.c:1.17	Thu Mar 31 19:40:52 2011
+++ src/sys/netatalk/at_proto.c	Sun Aug 10 06:56:21 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: at_proto.c,v 1.17 2011/03/31 19:40:52 dyoung Exp $	*/
+/*	$NetBSD: at_proto.c,v 1.17.28.1 2014/08/10 06:56:21 tls Exp $	*/
 
 /*
  * Copyright (c) 1990,1991 Regents of The University of Michigan.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: at_proto.c,v 1.17 2011/03/31 19:40:52 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: at_proto.c,v 1.17.28.1 2014/08/10 06:56:21 tls Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -37,7 +37,6 @@ __KERNEL_RCSID(0, "$NetBSD: at_proto.c,v
 
 #include <sys/kernel.h>
 #include <net/if.h>
-#include <net/radix.h>
 #include <net/if_ether.h>
 #include <netinet/in.h>
 #include <net/route.h>
@@ -50,9 +49,6 @@ __KERNEL_RCSID(0, "$NetBSD: at_proto.c,v
 
 DOMAIN_DEFINE(atalkdomain);	/* forward declare and add to link set */
 
-PR_WRAP_USRREQ(ddp_usrreq)
-#define	ddp_usrreq	ddp_usrreq_wrapper
-
 const struct protosw atalksw[] = {
     {
 	.pr_type = SOCK_DGRAM,
@@ -60,7 +56,7 @@ const struct protosw atalksw[] = {
 	.pr_protocol = ATPROTO_DDP,
 	.pr_flags = PR_ATOMIC|PR_ADDR,
 	.pr_output = ddp_output,
-	.pr_usrreq = ddp_usrreq,
+	.pr_usrreqs = &ddp_usrreqs,
 	.pr_init = ddp_init,
     },
 };

Index: src/sys/netatalk/ddp_usrreq.c
diff -u src/sys/netatalk/ddp_usrreq.c:1.41 src/sys/netatalk/ddp_usrreq.c:1.41.2.1
--- src/sys/netatalk/ddp_usrreq.c:1.41	Tue Feb 25 18:30:12 2014
+++ src/sys/netatalk/ddp_usrreq.c	Sun Aug 10 06:56:21 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: ddp_usrreq.c,v 1.41 2014/02/25 18:30:12 pooka Exp $	 */
+/*	$NetBSD: ddp_usrreq.c,v 1.41.2.1 2014/08/10 06:56:21 tls Exp $	 */
 
 /*
  * Copyright (c) 1990,1991 Regents of The University of Michigan.
@@ -27,14 +27,13 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ddp_usrreq.c,v 1.41 2014/02/25 18:30:12 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ddp_usrreq.c,v 1.41.2.1 2014/08/10 06:56:21 tls Exp $");
 
 #include "opt_mbuftrace.h"
 
 #include <sys/param.h>
 #include <sys/errno.h>
 #include <sys/systm.h>
-#include <sys/proc.h>
 #include <sys/mbuf.h>
 #include <sys/ioctl.h>
 #include <sys/queue.h>
@@ -42,6 +41,7 @@ __KERNEL_RCSID(0, "$NetBSD: ddp_usrreq.c
 #include <sys/socketvar.h>
 #include <sys/protosw.h>
 #include <sys/kauth.h>
+#include <sys/kmem.h>
 #include <sys/sysctl.h>
 #include <net/if.h>
 #include <net/route.h>
@@ -58,10 +58,9 @@ __KERNEL_RCSID(0, "$NetBSD: ddp_usrreq.c
 
 static void at_pcbdisconnect(struct ddpcb *);
 static void at_sockaddr(struct ddpcb *, struct mbuf *);
-static int at_pcbsetaddr(struct ddpcb *, struct mbuf *, struct lwp *);
-static int at_pcbconnect(struct ddpcb *, struct mbuf *, struct lwp *);
-static void at_pcbdetach(struct socket *, struct ddpcb *);
-static int at_pcballoc(struct socket *);
+static int at_pcbsetaddr(struct ddpcb *, struct mbuf *);
+static int at_pcbconnect(struct ddpcb *, struct mbuf *);
+static void ddp_detach(struct socket *);
 
 struct ifqueue atintrq1, atintrq2;
 struct ddpcb   *ddp_ports[ATPORT_LAST];
@@ -76,120 +75,44 @@ struct mowner atalk_rx_mowner = MOWNER_I
 struct mowner atalk_tx_mowner = MOWNER_INIT("atalk", "tx");
 #endif
 
-/* ARGSUSED */
-int
-ddp_usrreq(struct socket *so, int req, struct mbuf *m, struct mbuf *addr, struct mbuf *rights, struct lwp *l)
+static int
+ddp_usrreq(struct socket *so, int req, struct mbuf *m, struct mbuf *addr,
+    struct mbuf *rights, struct lwp *l)
 {
 	struct ddpcb   *ddp;
 	int             error = 0;
 
+	KASSERT(req != PRU_ATTACH);
+	KASSERT(req != PRU_DETACH);
+	KASSERT(req != PRU_ACCEPT);
+	KASSERT(req != PRU_BIND);
+	KASSERT(req != PRU_LISTEN);
+	KASSERT(req != PRU_CONNECT);
+	KASSERT(req != PRU_CONNECT2);
+	KASSERT(req != PRU_DISCONNECT);
+	KASSERT(req != PRU_SHUTDOWN);
+	KASSERT(req != PRU_ABORT);
+	KASSERT(req != PRU_CONTROL);
+	KASSERT(req != PRU_SENSE);
+	KASSERT(req != PRU_PEERADDR);
+	KASSERT(req != PRU_SOCKADDR);
+	KASSERT(req != PRU_RCVD);
+	KASSERT(req != PRU_RCVOOB);
+	KASSERT(req != PRU_SEND);
+	KASSERT(req != PRU_SENDOOB);
+	KASSERT(req != PRU_PURGEIF);
+
 	ddp = sotoddpcb(so);
 
-	if (req == PRU_CONTROL) {
-		return (at_control((long) m, (void *) addr,
-		    (struct ifnet *) rights, l));
-	}
-	if (req == PRU_PURGEIF) {
-		mutex_enter(softnet_lock);
-		at_purgeif((struct ifnet *) rights);
-		mutex_exit(softnet_lock);
-		return (0);
-	}
 	if (rights && rights->m_len) {
 		error = EINVAL;
 		goto release;
 	}
-	if (ddp == NULL && req != PRU_ATTACH) {
+	if (ddp == NULL) {
 		error = EINVAL;
 		goto release;
 	}
 	switch (req) {
-	case PRU_ATTACH:
-		if (ddp != NULL) {
-			error = EINVAL;
-			break;
-		}
-		sosetlock(so);
-		if ((error = at_pcballoc(so)) != 0) {
-			break;
-		}
-		error = soreserve(so, ddp_sendspace, ddp_recvspace);
-		break;
-
-	case PRU_DETACH:
-		at_pcbdetach(so, ddp);
-		break;
-
-	case PRU_BIND:
-		error = at_pcbsetaddr(ddp, addr, l);
-		break;
-
-	case PRU_SOCKADDR:
-		at_sockaddr(ddp, addr);
-		break;
-
-	case PRU_CONNECT:
-		if (ddp->ddp_fsat.sat_port != ATADDR_ANYPORT) {
-			error = EISCONN;
-			break;
-		}
-		error = at_pcbconnect(ddp, addr, l);
-		if (error == 0)
-			soisconnected(so);
-		break;
-
-	case PRU_DISCONNECT:
-		if (ddp->ddp_fsat.sat_addr.s_node == ATADDR_ANYNODE) {
-			error = ENOTCONN;
-			break;
-		}
-		at_pcbdisconnect(ddp);
-		soisdisconnected(so);
-		break;
-
-	case PRU_SHUTDOWN:
-		socantsendmore(so);
-		break;
-
-	case PRU_SEND:{
-			int s = 0;
-
-			if (addr) {
-				if (ddp->ddp_fsat.sat_port != ATADDR_ANYPORT) {
-					error = EISCONN;
-					break;
-				}
-				s = splnet();
-				error = at_pcbconnect(ddp, addr, l);
-				if (error) {
-					splx(s);
-					break;
-				}
-			} else {
-				if (ddp->ddp_fsat.sat_port == ATADDR_ANYPORT) {
-					error = ENOTCONN;
-					break;
-				}
-			}
-
-			error = ddp_output(m, ddp);
-			m = NULL;
-			if (addr) {
-				at_pcbdisconnect(ddp);
-				splx(s);
-			}
-		}
-		break;
-
-	case PRU_ABORT:
-		soisdisconnected(so);
-		at_pcbdetach(so, ddp);
-		break;
-
-	case PRU_LISTEN:
-	case PRU_CONNECT2:
-	case PRU_ACCEPT:
-	case PRU_SENDOOB:
 	case PRU_FASTTIMO:
 	case PRU_SLOWTIMO:
 	case PRU_PROTORCV:
@@ -197,20 +120,6 @@ ddp_usrreq(struct socket *so, int req, s
 		error = EOPNOTSUPP;
 		break;
 
-	case PRU_RCVD:
-	case PRU_RCVOOB:
-		/*
-		 * Don't mfree. Good architecture...
-		 */
-		return (EOPNOTSUPP);
-
-	case PRU_SENSE:
-		/*
-		 * 1. Don't return block size.
-		 * 2. Don't mfree.
-		 */
-		return (0);
-
 	default:
 		error = EOPNOTSUPP;
 	}
@@ -233,7 +142,7 @@ at_sockaddr(struct ddpcb *ddp, struct mb
 }
 
 static int
-at_pcbsetaddr(struct ddpcb *ddp, struct mbuf *addr, struct lwp *l)
+at_pcbsetaddr(struct ddpcb *ddp, struct mbuf *addr)
 {
 	struct sockaddr_at lsat, *sat;
 	struct at_ifaddr *aa;
@@ -269,8 +178,8 @@ at_pcbsetaddr(struct ddpcb *ddp, struct 
 			    sat->sat_port >= ATPORT_LAST)
 				return (EINVAL);
 
-			if (sat->sat_port < ATPORT_RESERVED && l &&
-			    (error = kauth_authorize_network(l->l_cred,
+			if (sat->sat_port < ATPORT_RESERVED &&
+			    (error = kauth_authorize_network(curlwp->l_cred,
 			    KAUTH_NETWORK_BIND, KAUTH_REQ_NETWORK_BIND_PRIVPORT,
 			    ddpcb->ddp_socket, sat, NULL)) != 0)
 				return (error);
@@ -328,7 +237,7 @@ at_pcbsetaddr(struct ddpcb *ddp, struct 
 }
 
 static int
-at_pcbconnect(struct ddpcb *ddp, struct mbuf *addr, struct lwp *l)
+at_pcbconnect(struct ddpcb *ddp, struct mbuf *addr)
 {
 	struct rtentry *rt;
 	const struct sockaddr_at *cdst;
@@ -414,7 +323,7 @@ at_pcbconnect(struct ddpcb *ddp, struct 
 		return ENETUNREACH;
 	ddp->ddp_fsat = *sat;
 	if (ddp->ddp_lsat.sat_port == ATADDR_ANYPORT)
-		return at_pcbsetaddr(ddp, NULL, l);
+		return at_pcbsetaddr(ddp, NULL);
 	return 0;
 }
 
@@ -427,13 +336,23 @@ at_pcbdisconnect(struct ddpcb *ddp)
 }
 
 static int
-at_pcballoc(struct socket *so)
+ddp_attach(struct socket *so, int proto)
 {
-	struct ddpcb   *ddp;
+	struct ddpcb *ddp;
+	int error;
 
-	ddp = malloc(sizeof(*ddp), M_PCB, M_WAITOK|M_ZERO);
-	if (!ddp)
-		panic("at_pcballoc");
+	KASSERT(sotoddpcb(so) == NULL);
+	sosetlock(so);
+#ifdef MBUFTRACE
+	so->so_rcv.sb_mowner = &atalk_rx_mowner;
+	so->so_snd.sb_mowner = &atalk_tx_mowner;
+#endif
+	error = soreserve(so, ddp_sendspace, ddp_recvspace);
+	if (error) {
+		return error;
+	}
+
+	ddp = kmem_zalloc(sizeof(*ddp), KM_SLEEP);
 	ddp->ddp_lsat.sat_port = ATADDR_ANYPORT;
 
 	ddp->ddp_next = ddpcb;
@@ -446,19 +365,17 @@ at_pcballoc(struct socket *so)
 	ddpcb = ddp;
 
 	ddp->ddp_socket = so;
-	so->so_pcb = (void *) ddp;
-#ifdef MBUFTRACE
-	so->so_rcv.sb_mowner = &atalk_rx_mowner;
-	so->so_snd.sb_mowner = &atalk_tx_mowner;
-#endif
+	so->so_pcb = ddp;
 	return 0;
 }
 
 static void
-at_pcbdetach(struct socket *so, struct ddpcb *ddp)
+ddp_detach(struct socket *so)
 {
+	struct ddpcb *ddp = sotoddpcb(so);
+
 	soisdisconnected(so);
-	so->so_pcb = 0;
+	so->so_pcb = NULL;
 	/* sofree drops the lock */
 	sofree(so);
 	mutex_enter(softnet_lock);
@@ -484,7 +401,201 @@ at_pcbdetach(struct socket *so, struct d
 	if (ddp->ddp_next) {
 		ddp->ddp_next->ddp_prev = ddp->ddp_prev;
 	}
-	free(ddp, M_PCB);
+	kmem_free(ddp, sizeof(*ddp));
+}
+
+static int
+ddp_accept(struct socket *so, struct mbuf *nam)
+{
+	KASSERT(solocked(so));
+
+	return EOPNOTSUPP;
+}
+
+static int
+ddp_bind(struct socket *so, struct mbuf *nam, struct lwp *l)
+{
+	KASSERT(solocked(so));
+	KASSERT(sotoddpcb(so) != NULL);
+
+	return at_pcbsetaddr(sotoddpcb(so), nam);
+}
+
+static int
+ddp_listen(struct socket *so, struct lwp *l)
+{
+	KASSERT(solocked(so));
+
+	return EOPNOTSUPP;
+}
+
+static int
+ddp_connect(struct socket *so, struct mbuf *nam, struct lwp *l)
+{
+	struct ddpcb *ddp = sotoddpcb(so);
+	int error = 0;
+
+	KASSERT(solocked(so));
+	KASSERT(ddp != NULL);
+	KASSERT(nam != NULL);
+
+	if (ddp->ddp_fsat.sat_port != ATADDR_ANYPORT)
+		return EISCONN;
+	error = at_pcbconnect(ddp, nam);
+	if (error == 0)
+		soisconnected(so);
+
+	return error;
+}
+
+static int
+ddp_connect2(struct socket *so, struct socket *so2)
+{
+	KASSERT(solocked(so));
+
+	return EOPNOTSUPP;
+}
+
+static int
+ddp_disconnect(struct socket *so)
+{
+	struct ddpcb *ddp = sotoddpcb(so);
+
+	KASSERT(solocked(so));
+	KASSERT(ddp != NULL);
+
+	if (ddp->ddp_fsat.sat_addr.s_node == ATADDR_ANYNODE)
+		return ENOTCONN;
+
+	at_pcbdisconnect(ddp);
+	soisdisconnected(so);
+	return 0;
+}
+
+static int
+ddp_shutdown(struct socket *so)
+{
+	KASSERT(solocked(so));
+
+	socantsendmore(so);
+	return 0;
+}
+
+static int
+ddp_abort(struct socket *so)
+{
+	KASSERT(solocked(so));
+
+	soisdisconnected(so);
+	ddp_detach(so);
+	return 0;
+}
+
+static int
+ddp_ioctl(struct socket *so, u_long cmd, void *addr, struct ifnet *ifp)
+{
+	return at_control(cmd, addr, ifp);
+}
+
+static int
+ddp_stat(struct socket *so, struct stat *ub)
+{
+	KASSERT(solocked(so));
+
+	/* stat: don't bother with a blocksize. */
+	return 0;
+}
+
+static int
+ddp_peeraddr(struct socket *so, struct mbuf *nam)
+{
+	KASSERT(solocked(so));
+
+	return EOPNOTSUPP;
+}
+
+static int
+ddp_sockaddr(struct socket *so, struct mbuf *nam)
+{
+	KASSERT(solocked(so));
+	KASSERT(sotoddpcb(so) != NULL);
+	KASSERT(nam != NULL);
+
+	at_sockaddr(sotoddpcb(so), nam);
+	return 0;
+}
+
+static int
+ddp_rcvd(struct socket *so, int flags, struct lwp *l)
+{
+	KASSERT(solocked(so));
+
+	return EOPNOTSUPP;
+}
+
+static int
+ddp_recvoob(struct socket *so, struct mbuf *m, int flags)
+{
+	KASSERT(solocked(so));
+
+	return EOPNOTSUPP;
+}
+
+static int
+ddp_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
+    struct mbuf *control, struct lwp *l)
+{
+	struct ddpcb *ddp = sotoddpcb(so);
+	int error = 0;
+	int s = 0; /* XXX gcc 4.8 warns on sgimips */
+
+	KASSERT(solocked(so));
+	KASSERT(ddp != NULL);
+
+	if (nam) {
+		if (ddp->ddp_fsat.sat_port != ATADDR_ANYPORT)
+			return EISCONN;
+		s = splnet();
+		error = at_pcbconnect(ddp, nam);
+		if (error) {
+			splx(s);
+			return error;
+		}
+	} else {
+		if (ddp->ddp_fsat.sat_port == ATADDR_ANYPORT)
+			return ENOTCONN;
+	}
+
+	error = ddp_output(m, ddp);
+	m = NULL;
+	if (nam) {
+		at_pcbdisconnect(ddp);
+		splx(s);
+	}
+
+	return error;
+}
+
+static int
+ddp_sendoob(struct socket *so, struct mbuf *m, struct mbuf *control)
+{
+	KASSERT(solocked(so));
+
+	if (m)
+		m_freem(m);
+
+	return EOPNOTSUPP;
+}
+
+static int
+ddp_purgeif(struct socket *so, struct ifnet *ifp)
+{
+
+	mutex_enter(softnet_lock);
+	at_purgeif(ifp);
+	mutex_exit(softnet_lock);
+
+	return 0;
 }
 
 /*
@@ -557,16 +668,50 @@ ddp_init(void)
 	MOWNER_ATTACH(&aarp_mowner);
 }
 
-#if 0
-static void
-ddp_clean(void)
-{
-	struct ddpcb   *ddp;
-
-	for (ddp = ddpcb; ddp; ddp = ddp->ddp_next)
-		at_pcbdetach(ddp->ddp_socket, ddp);
-}
-#endif
+PR_WRAP_USRREQS(ddp)
+#define	ddp_attach	ddp_attach_wrapper
+#define	ddp_detach	ddp_detach_wrapper
+#define	ddp_accept	ddp_accept_wrapper
+#define	ddp_bind	ddp_bind_wrapper
+#define	ddp_listen	ddp_listen_wrapper
+#define	ddp_connect	ddp_connect_wrapper
+#define	ddp_connect2	ddp_connect2_wrapper
+#define	ddp_disconnect	ddp_disconnect_wrapper
+#define	ddp_shutdown	ddp_shutdown_wrapper
+#define	ddp_abort	ddp_abort_wrapper
+#define	ddp_ioctl	ddp_ioctl_wrapper
+#define	ddp_stat	ddp_stat_wrapper
+#define	ddp_peeraddr	ddp_peeraddr_wrapper
+#define	ddp_sockaddr	ddp_sockaddr_wrapper
+#define	ddp_rcvd	ddp_rcvd_wrapper
+#define	ddp_recvoob	ddp_recvoob_wrapper
+#define	ddp_send	ddp_send_wrapper
+#define	ddp_sendoob	ddp_sendoob_wrapper
+#define	ddp_purgeif	ddp_purgeif_wrapper
+#define	ddp_usrreq	ddp_usrreq_wrapper
+
+const struct pr_usrreqs ddp_usrreqs = {
+	.pr_attach	= ddp_attach,
+	.pr_detach	= ddp_detach,
+	.pr_accept	= ddp_accept,
+	.pr_bind	= ddp_bind,
+	.pr_listen	= ddp_listen,
+	.pr_connect	= ddp_connect,
+	.pr_connect2	= ddp_connect2,
+	.pr_disconnect	= ddp_disconnect,
+	.pr_shutdown	= ddp_shutdown,
+	.pr_abort	= ddp_abort,
+	.pr_ioctl	= ddp_ioctl,
+	.pr_stat	= ddp_stat,
+	.pr_peeraddr	= ddp_peeraddr,
+	.pr_sockaddr	= ddp_sockaddr,
+	.pr_rcvd	= ddp_rcvd,
+	.pr_recvoob	= ddp_recvoob,
+	.pr_send	= ddp_send,
+	.pr_sendoob	= ddp_sendoob,
+	.pr_purgeif	= ddp_purgeif,
+	.pr_generic	= ddp_usrreq,
+};
 
 static int
 sysctl_net_atalk_ddp_stats(SYSCTLFN_ARGS)

Reply via email to