Module Name: src
Committed By: rtr
Date: Sun Jul 6 03:33:33 UTC 2014
Modified Files:
src/sys/kern: sys_socket.c uipc_usrreq.c
src/sys/net: raw_usrreq.c rtsock.c
src/sys/netatalk: ddp_usrreq.c
src/sys/netbt: hci_socket.c l2cap_socket.c rfcomm_socket.c sco_socket.c
src/sys/netinet: raw_ip.c tcp_usrreq.c udp_usrreq.c
src/sys/netinet6: raw_ip6.c udp6_usrreq.c
src/sys/netipsec: keysock.c
src/sys/netnatm: natm.c
src/sys/sys: protosw.h
Log Message:
* split PRU_SENSE functionality out of xxx_usrreq() switches and place into
separate xxx_stat(struct socket *, struct stat *) functions.
* replace calls using pr_generic with req == PRU_SENSE with pr_stat().
further change will follow that cleans up the pattern used to extract the
pcb and test for its presence.
reviewed by rmind
To generate a diff of this commit:
cvs rdiff -u -r1.71 -r1.72 src/sys/kern/sys_socket.c
cvs rdiff -u -r1.155 -r1.156 src/sys/kern/uipc_usrreq.c
cvs rdiff -u -r1.40 -r1.41 src/sys/net/raw_usrreq.c
cvs rdiff -u -r1.149 -r1.150 src/sys/net/rtsock.c
cvs rdiff -u -r1.47 -r1.48 src/sys/netatalk/ddp_usrreq.c
cvs rdiff -u -r1.26 -r1.27 src/sys/netbt/hci_socket.c
cvs rdiff -u -r1.17 -r1.18 src/sys/netbt/l2cap_socket.c
cvs rdiff -u -r1.18 -r1.19 src/sys/netbt/rfcomm_socket.c
cvs rdiff -u -r1.19 -r1.20 src/sys/netbt/sco_socket.c
cvs rdiff -u -r1.127 -r1.128 src/sys/netinet/raw_ip.c
cvs rdiff -u -r1.180 -r1.181 src/sys/netinet/tcp_usrreq.c
cvs rdiff -u -r1.202 -r1.203 src/sys/netinet/udp_usrreq.c
cvs rdiff -u -r1.121 -r1.122 src/sys/netinet6/raw_ip6.c
cvs rdiff -u -r1.101 -r1.102 src/sys/netinet6/udp6_usrreq.c
cvs rdiff -u -r1.29 -r1.30 src/sys/netipsec/keysock.c
cvs rdiff -u -r1.29 -r1.30 src/sys/netnatm/natm.c
cvs rdiff -u -r1.49 -r1.50 src/sys/sys/protosw.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/kern/sys_socket.c
diff -u src/sys/kern/sys_socket.c:1.71 src/sys/kern/sys_socket.c:1.72
--- src/sys/kern/sys_socket.c:1.71 Tue Jul 1 05:49:18 2014
+++ src/sys/kern/sys_socket.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: sys_socket.c,v 1.71 2014/07/01 05:49:18 rtr Exp $ */
+/* $NetBSD: sys_socket.c,v 1.72 2014/07/06 03:33:33 rtr Exp $ */
/*-
* Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sys_socket.c,v 1.71 2014/07/01 05:49:18 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sys_socket.c,v 1.72 2014/07/06 03:33:33 rtr Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -239,8 +239,7 @@ soo_stat(file_t *fp, struct stat *ub)
ub->st_mode = S_IFSOCK;
solock(so);
- error = (*so->so_proto->pr_usrreqs->pr_generic)(so, PRU_SENSE,
- (struct mbuf *)ub, NULL, NULL, curlwp);
+ error = (*so->so_proto->pr_usrreqs->pr_stat)(so, ub);
sounlock(so);
return error;
Index: src/sys/kern/uipc_usrreq.c
diff -u src/sys/kern/uipc_usrreq.c:1.155 src/sys/kern/uipc_usrreq.c:1.156
--- src/sys/kern/uipc_usrreq.c:1.155 Tue Jul 1 05:49:18 2014
+++ src/sys/kern/uipc_usrreq.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: uipc_usrreq.c,v 1.155 2014/07/01 05:49:18 rtr Exp $ */
+/* $NetBSD: uipc_usrreq.c,v 1.156 2014/07/06 03:33:33 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.155 2014/07/01 05:49:18 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_usrreq.c,v 1.156 2014/07/06 03:33:33 rtr Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -377,6 +377,7 @@ unp_usrreq(struct socket *so, int req, s
KASSERT(req != PRU_ATTACH);
KASSERT(req != PRU_DETACH);
KASSERT(req != PRU_CONTROL);
+ KASSERT(req != PRU_SENSE);
KASSERT(solocked(so));
unp = sotounpcb(so);
@@ -627,30 +628,6 @@ unp_usrreq(struct socket *so, int req, s
unp_detach(so);
break;
- case PRU_SENSE:
- ((struct stat *) m)->st_blksize = so->so_snd.sb_hiwat;
- switch (so->so_type) {
- case SOCK_SEQPACKET: /* FALLTHROUGH */
- case SOCK_STREAM:
- if (unp->unp_conn == 0)
- break;
-
- so2 = unp->unp_conn->unp_socket;
- KASSERT(solocked2(so, so2));
- ((struct stat *) m)->st_blksize += so2->so_rcv.sb_cc;
- break;
- default:
- break;
- }
- ((struct stat *) m)->st_dev = NODEV;
- if (unp->unp_ino == 0)
- unp->unp_ino = unp_ino++;
- ((struct stat *) m)->st_atimespec =
- ((struct stat *) m)->st_mtimespec =
- ((struct stat *) m)->st_ctimespec = unp->unp_ctime;
- ((struct stat *) m)->st_ino = unp->unp_ino;
- return (0);
-
case PRU_RCVOOB:
error = EOPNOTSUPP;
break;
@@ -871,6 +848,38 @@ unp_ioctl(struct socket *so, u_long cmd,
return EOPNOTSUPP;
}
+static int
+unp_stat(struct socket *so, struct stat *ub)
+{
+ struct unpcb *unp;
+ struct socket *so2;
+
+ unp = sotounpcb(so);
+ if (unp == NULL)
+ return EINVAL;
+
+ ub->st_blksize = so->so_snd.sb_hiwat;
+ switch (so->so_type) {
+ case SOCK_SEQPACKET: /* FALLTHROUGH */
+ case SOCK_STREAM:
+ if (unp->unp_conn == 0)
+ break;
+
+ so2 = unp->unp_conn->unp_socket;
+ KASSERT(solocked2(so, so2));
+ ub->st_blksize += so2->so_rcv.sb_cc;
+ break;
+ default:
+ break;
+ }
+ ub->st_dev = NODEV;
+ if (unp->unp_ino == 0)
+ unp->unp_ino = unp_ino++;
+ ub->st_atimespec = ub->st_mtimespec = ub->st_ctimespec = unp->unp_ctime;
+ ub->st_ino = unp->unp_ino;
+ return (0);
+}
+
/*
* Allocate the new sockaddr. We have to allocate one
* extra byte so that we can ensure that the pathname
@@ -1817,5 +1826,6 @@ const struct pr_usrreqs unp_usrreqs = {
.pr_attach = unp_attach,
.pr_detach = unp_detach,
.pr_ioctl = unp_ioctl,
+ .pr_stat = unp_stat,
.pr_generic = unp_usrreq,
};
Index: src/sys/net/raw_usrreq.c
diff -u src/sys/net/raw_usrreq.c:1.40 src/sys/net/raw_usrreq.c:1.41
--- src/sys/net/raw_usrreq.c:1.40 Sun Jun 22 08:10:18 2014
+++ src/sys/net/raw_usrreq.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: raw_usrreq.c,v 1.40 2014/06/22 08:10:18 rtr Exp $ */
+/* $NetBSD: raw_usrreq.c,v 1.41 2014/07/06 03:33:33 rtr Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: raw_usrreq.c,v 1.40 2014/06/22 08:10:18 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: raw_usrreq.c,v 1.41 2014/07/06 03:33:33 rtr Exp $");
#include <sys/param.h>
#include <sys/mbuf.h>
@@ -163,6 +163,7 @@ raw_usrreq(struct socket *so, int req, s
KASSERT(req != PRU_ATTACH);
KASSERT(req != PRU_DETACH);
KASSERT(req != PRU_CONTROL);
+ KASSERT(req != PRU_SENSE);
s = splsoftnet();
KERNEL_LOCK(1, NULL);
@@ -237,13 +238,6 @@ raw_usrreq(struct socket *so, int req, s
raw_disconnect(rp);
break;
- case PRU_SENSE:
- /*
- * stat: don't bother with a blocksize.
- */
- error = 0;
- break;
-
/*
* Not supported.
*/
Index: src/sys/net/rtsock.c
diff -u src/sys/net/rtsock.c:1.149 src/sys/net/rtsock.c:1.150
--- src/sys/net/rtsock.c:1.149 Tue Jul 1 05:49:18 2014
+++ src/sys/net/rtsock.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: rtsock.c,v 1.149 2014/07/01 05:49:18 rtr Exp $ */
+/* $NetBSD: rtsock.c,v 1.150 2014/07/06 03:33:33 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.149 2014/07/01 05:49:18 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.150 2014/07/06 03:33:33 rtr Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -231,6 +231,12 @@ COMPATNAME(route_ioctl)(struct socket *s
}
static int
+COMPATNAME(route_stat)(struct socket *so, struct stat *ub)
+{
+ return 0;
+}
+
+static int
COMPATNAME(route_usrreq)(struct socket *so, int req, struct mbuf *m,
struct mbuf *nam, struct mbuf *control, struct lwp *l)
{
@@ -239,6 +245,7 @@ COMPATNAME(route_usrreq)(struct socket *
KASSERT(req != PRU_ATTACH);
KASSERT(req != PRU_DETACH);
KASSERT(req != PRU_CONTROL);
+ KASSERT(req != PRU_SENSE);
s = splsoftnet();
error = raw_usrreq(so, req, m, nam, control, l);
@@ -1336,6 +1343,7 @@ static const struct pr_usrreqs route_usr
.pr_attach = COMPATNAME(route_attach_wrapper),
.pr_detach = COMPATNAME(route_detach_wrapper),
.pr_ioctl = COMPATNAME(route_ioctl_wrapper),
+ .pr_stat = COMPATNAME(route_stat_wrapper),
.pr_generic = COMPATNAME(route_usrreq_wrapper),
};
Index: src/sys/netatalk/ddp_usrreq.c
diff -u src/sys/netatalk/ddp_usrreq.c:1.47 src/sys/netatalk/ddp_usrreq.c:1.48
--- src/sys/netatalk/ddp_usrreq.c:1.47 Tue Jul 1 05:49:18 2014
+++ src/sys/netatalk/ddp_usrreq.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: ddp_usrreq.c,v 1.47 2014/07/01 05:49:18 rtr Exp $ */
+/* $NetBSD: ddp_usrreq.c,v 1.48 2014/07/06 03:33:33 rtr Exp $ */
/*
* Copyright (c) 1990,1991 Regents of The University of Michigan.
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ddp_usrreq.c,v 1.47 2014/07/01 05:49:18 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ddp_usrreq.c,v 1.48 2014/07/06 03:33:33 rtr Exp $");
#include "opt_mbuftrace.h"
@@ -85,6 +85,7 @@ ddp_usrreq(struct socket *so, int req, s
KASSERT(req != PRU_ATTACH);
KASSERT(req != PRU_DETACH);
KASSERT(req != PRU_CONTROL);
+ KASSERT(req != PRU_SENSE);
ddp = sotoddpcb(so);
@@ -187,13 +188,6 @@ ddp_usrreq(struct socket *so, int req, s
*/
return (EOPNOTSUPP);
- case PRU_SENSE:
- /*
- * 1. Don't return block size.
- * 2. Don't mfree.
- */
- return (0);
-
default:
error = EOPNOTSUPP;
}
@@ -484,6 +478,19 @@ ddp_ioctl(struct socket *so, u_long cmd,
return at_control(cmd, addr, ifp);
}
+static int
+ddp_stat(struct socket *so, struct stat *ub)
+{
+ struct ddpcb *ddp;
+
+ ddp = sotoddpcb(so);
+ if (ddp == NULL)
+ return EINVAL;
+
+ /* Don't return block size. */
+ return 0;
+}
+
/*
* For the moment, this just find the pcb with the correct local address.
* In the future, this will actually do some real searching, so we can use
@@ -558,12 +565,14 @@ PR_WRAP_USRREQS(ddp)
#define ddp_attach ddp_attach_wrapper
#define ddp_detach ddp_detach_wrapper
#define ddp_ioctl ddp_ioctl_wrapper
+#define ddp_stat ddp_stat_wrapper
#define ddp_usrreq ddp_usrreq_wrapper
const struct pr_usrreqs ddp_usrreqs = {
.pr_attach = ddp_attach,
.pr_detach = ddp_detach,
.pr_ioctl = ddp_ioctl,
+ .pr_stat = ddp_stat,
.pr_generic = ddp_usrreq,
};
Index: src/sys/netbt/hci_socket.c
diff -u src/sys/netbt/hci_socket.c:1.26 src/sys/netbt/hci_socket.c:1.27
--- src/sys/netbt/hci_socket.c:1.26 Tue Jul 1 05:49:18 2014
+++ src/sys/netbt/hci_socket.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: hci_socket.c,v 1.26 2014/07/01 05:49:18 rtr Exp $ */
+/* $NetBSD: hci_socket.c,v 1.27 2014/07/06 03:33:33 rtr Exp $ */
/*-
* Copyright (c) 2005 Iain Hibbert.
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hci_socket.c,v 1.26 2014/07/01 05:49:18 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hci_socket.c,v 1.27 2014/07/06 03:33:33 rtr Exp $");
/* load symbolic names */
#ifdef BLUETOOTH_DEBUG
@@ -493,6 +493,17 @@ hci_ioctl(struct socket *up, u_long cmd,
return err;
}
+static int
+hci_stat(struct socket *so, struct stat *ub)
+{
+ struct hci_pcb *pcb = (struct hci_pcb *)so->so_pcb;
+
+ if (pcb == NULL)
+ return EINVAL;
+
+ return 0;
+}
+
/*
* User Request.
* up is socket
@@ -515,6 +526,7 @@ hci_usrreq(struct socket *up, int req, s
KASSERT(req != PRU_ATTACH);
KASSERT(req != PRU_DETACH);
KASSERT(req != PRU_CONTROL);
+ KASSERT(req != PRU_SENSE);
switch(req) {
case PRU_PURGEIF:
@@ -628,9 +640,6 @@ hci_usrreq(struct socket *up, int req, s
return hci_send(pcb, m, (sa ? &sa->bt_bdaddr : &pcb->hp_raddr));
- case PRU_SENSE:
- return 0; /* (no sense - Doh!) */
-
case PRU_RCVD:
case PRU_RCVOOB:
return EOPNOTSUPP; /* (no release) */
@@ -869,11 +878,13 @@ PR_WRAP_USRREQS(hci)
#define hci_attach hci_attach_wrapper
#define hci_detach hci_detach_wrapper
#define hci_ioctl hci_ioctl_wrapper
+#define hci_stat hci_stat_wrapper
#define hci_usrreq hci_usrreq_wrapper
const struct pr_usrreqs hci_usrreqs = {
.pr_attach = hci_attach,
.pr_detach = hci_detach,
.pr_ioctl = hci_ioctl,
+ .pr_stat = hci_stat,
.pr_generic = hci_usrreq,
};
Index: src/sys/netbt/l2cap_socket.c
diff -u src/sys/netbt/l2cap_socket.c:1.17 src/sys/netbt/l2cap_socket.c:1.18
--- src/sys/netbt/l2cap_socket.c:1.17 Tue Jul 1 05:49:18 2014
+++ src/sys/netbt/l2cap_socket.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: l2cap_socket.c,v 1.17 2014/07/01 05:49:18 rtr Exp $ */
+/* $NetBSD: l2cap_socket.c,v 1.18 2014/07/06 03:33:33 rtr Exp $ */
/*-
* Copyright (c) 2005 Iain Hibbert.
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: l2cap_socket.c,v 1.17 2014/07/01 05:49:18 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: l2cap_socket.c,v 1.18 2014/07/06 03:33:33 rtr Exp $");
/* load symbolic names */
#ifdef BLUETOOTH_DEBUG
@@ -122,6 +122,17 @@ l2cap_ioctl(struct socket *up, u_long cm
return EPASSTHROUGH;
}
+static int
+l2cap_stat(struct socket *so, struct stat *ub)
+{
+ struct l2cap_channel *pcb = so->so_pcb;
+
+ if (pcb == NULL)
+ return EINVAL;
+
+ return 0;
+}
+
/*
* User Request.
* up is socket
@@ -150,6 +161,7 @@ l2cap_usrreq(struct socket *up, int req,
KASSERT(req != PRU_ATTACH);
KASSERT(req != PRU_DETACH);
KASSERT(req != PRU_CONTROL);
+ KASSERT(req != PRU_SENSE);
switch (req) {
case PRU_PURGEIF:
@@ -235,9 +247,6 @@ l2cap_usrreq(struct socket *up, int req,
sbappendrecord(&up->so_snd, m);
return l2cap_send(pcb, m0);
- case PRU_SENSE:
- return 0; /* (no release) */
-
case PRU_RCVD:
case PRU_RCVOOB:
return EOPNOTSUPP; /* (no release) */
@@ -417,11 +426,13 @@ PR_WRAP_USRREQS(l2cap)
#define l2cap_attach l2cap_attach_wrapper
#define l2cap_detach l2cap_detach_wrapper
#define l2cap_ioctl l2cap_ioctl_wrapper
+#define l2cap_stat l2cap_stat_wrapper
#define l2cap_usrreq l2cap_usrreq_wrapper
const struct pr_usrreqs l2cap_usrreqs = {
.pr_attach = l2cap_attach,
.pr_detach = l2cap_detach,
.pr_ioctl = l2cap_ioctl,
+ .pr_stat = l2cap_stat,
.pr_generic = l2cap_usrreq,
};
Index: src/sys/netbt/rfcomm_socket.c
diff -u src/sys/netbt/rfcomm_socket.c:1.18 src/sys/netbt/rfcomm_socket.c:1.19
--- src/sys/netbt/rfcomm_socket.c:1.18 Tue Jul 1 05:49:18 2014
+++ src/sys/netbt/rfcomm_socket.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: rfcomm_socket.c,v 1.18 2014/07/01 05:49:18 rtr Exp $ */
+/* $NetBSD: rfcomm_socket.c,v 1.19 2014/07/06 03:33:33 rtr Exp $ */
/*-
* Copyright (c) 2006 Itronix Inc.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rfcomm_socket.c,v 1.18 2014/07/01 05:49:18 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rfcomm_socket.c,v 1.19 2014/07/06 03:33:33 rtr Exp $");
/* load symbolic names */
#ifdef BLUETOOTH_DEBUG
@@ -130,6 +130,17 @@ rfcomm_ioctl(struct socket *up, u_long c
return EPASSTHROUGH;
}
+static int
+rfcomm_stat(struct socket *so, struct stat *ub)
+{
+ struct rfcomm_dlc *pcb = so->so_pcb;
+
+ if (pcb == NULL)
+ return EINVAL;
+
+ return 0;
+}
+
/*
* User Request.
* up is socket
@@ -158,6 +169,7 @@ rfcomm_usrreq(struct socket *up, int req
KASSERT(req != PRU_ATTACH);
KASSERT(req != PRU_DETACH);
KASSERT(req != PRU_CONTROL);
+ KASSERT(req != PRU_SENSE);
switch (req) {
case PRU_PURGEIF:
@@ -234,9 +246,6 @@ rfcomm_usrreq(struct socket *up, int req
return rfcomm_send(pcb, m0);
- case PRU_SENSE:
- return 0; /* (no release) */
-
case PRU_RCVD:
return rfcomm_rcvd(pcb, sbspace(&up->so_rcv));
@@ -430,11 +439,13 @@ PR_WRAP_USRREQS(rfcomm)
#define rfcomm_attach rfcomm_attach_wrapper
#define rfcomm_detach rfcomm_detach_wrapper
#define rfcomm_ioctl rfcomm_ioctl_wrapper
+#define rfcomm_stat rfcomm_stat_wrapper
#define rfcomm_usrreq rfcomm_usrreq_wrapper
const struct pr_usrreqs rfcomm_usrreqs = {
.pr_attach = rfcomm_attach,
.pr_detach = rfcomm_detach,
.pr_ioctl = rfcomm_ioctl,
+ .pr_stat = rfcomm_stat,
.pr_generic = rfcomm_usrreq,
};
Index: src/sys/netbt/sco_socket.c
diff -u src/sys/netbt/sco_socket.c:1.19 src/sys/netbt/sco_socket.c:1.20
--- src/sys/netbt/sco_socket.c:1.19 Tue Jul 1 05:49:18 2014
+++ src/sys/netbt/sco_socket.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: sco_socket.c,v 1.19 2014/07/01 05:49:18 rtr Exp $ */
+/* $NetBSD: sco_socket.c,v 1.20 2014/07/06 03:33:33 rtr Exp $ */
/*-
* Copyright (c) 2006 Itronix Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sco_socket.c,v 1.19 2014/07/01 05:49:18 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sco_socket.c,v 1.20 2014/07/06 03:33:33 rtr Exp $");
/* load symbolic names */
#ifdef BLUETOOTH_DEBUG
@@ -113,6 +113,17 @@ sco_ioctl(struct socket *up, u_long cmd,
return EOPNOTSUPP;
}
+static int
+sco_stat(struct socket *so, struct stat *ub)
+{
+ struct sco_pcb *pcb = (struct sco_pcb *)so->so_pcb;
+
+ if (pcb == NULL)
+ return EINVAL;
+
+ return 0;
+}
+
/*
* User Request.
* up is socket
@@ -137,6 +148,7 @@ sco_usrreq(struct socket *up, int req, s
KASSERT(req != PRU_ATTACH);
KASSERT(req != PRU_DETACH);
KASSERT(req != PRU_CONTROL);
+ KASSERT(req != PRU_SENSE);
switch(req) {
case PRU_PURGEIF:
@@ -223,9 +235,6 @@ sco_usrreq(struct socket *up, int req, s
sbappendrecord(&up->so_snd, m);
return sco_send(pcb, m0);
- case PRU_SENSE:
- return 0; /* (no sense - Doh!) */
-
case PRU_RCVD:
case PRU_RCVOOB:
return EOPNOTSUPP; /* (no release) */
@@ -384,11 +393,13 @@ PR_WRAP_USRREQS(sco)
#define sco_attach sco_attach_wrapper
#define sco_detach sco_detach_wrapper
#define sco_ioctl sco_ioctl_wrapper
+#define sco_stat sco_stat_wrapper
#define sco_usrreq sco_usrreq_wrapper
const struct pr_usrreqs sco_usrreqs = {
.pr_attach = sco_attach,
.pr_detach = sco_detach,
.pr_ioctl = sco_ioctl,
+ .pr_stat = sco_stat,
.pr_generic = sco_usrreq,
};
Index: src/sys/netinet/raw_ip.c
diff -u src/sys/netinet/raw_ip.c:1.127 src/sys/netinet/raw_ip.c:1.128
--- src/sys/netinet/raw_ip.c:1.127 Tue Jul 1 05:49:18 2014
+++ src/sys/netinet/raw_ip.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: raw_ip.c,v 1.127 2014/07/01 05:49:18 rtr Exp $ */
+/* $NetBSD: raw_ip.c,v 1.128 2014/07/06 03:33:33 rtr Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -65,7 +65,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: raw_ip.c,v 1.127 2014/07/01 05:49:18 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: raw_ip.c,v 1.128 2014/07/06 03:33:33 rtr Exp $");
#include "opt_inet.h"
#include "opt_compat_netbsd.h"
@@ -572,6 +572,19 @@ rip_ioctl(struct socket *so, u_long cmd,
return in_control(so, cmd, nam, ifp);
}
+static int
+rip_stat(struct socket *so, struct stat *ub)
+{
+ struct inpcb *inp;
+
+ inp = sotoinpcb(so);
+ if (inp == NULL)
+ return EINVAL;
+
+ /* stat: don't bother with a blocksize. */
+ return 0;
+}
+
int
rip_usrreq(struct socket *so, int req, struct mbuf *m, struct mbuf *nam,
struct mbuf *control, struct lwp *l)
@@ -582,6 +595,7 @@ rip_usrreq(struct socket *so, int req, s
KASSERT(req != PRU_ATTACH);
KASSERT(req != PRU_DETACH);
KASSERT(req != PRU_CONTROL);
+ KASSERT(req != PRU_SENSE);
s = splsoftnet();
if (req == PRU_PURGEIF) {
@@ -675,13 +689,6 @@ rip_usrreq(struct socket *so, int req, s
}
break;
- case PRU_SENSE:
- /*
- * stat: don't bother with a blocksize.
- */
- splx(s);
- return (0);
-
case PRU_RCVOOB:
error = EOPNOTSUPP;
break;
@@ -712,12 +719,14 @@ PR_WRAP_USRREQS(rip)
#define rip_attach rip_attach_wrapper
#define rip_detach rip_detach_wrapper
#define rip_ioctl rip_ioctl_wrapper
+#define rip_stat rip_stat_wrapper
#define rip_usrreq rip_usrreq_wrapper
const struct pr_usrreqs rip_usrreqs = {
.pr_attach = rip_attach,
.pr_detach = rip_detach,
.pr_ioctl = rip_ioctl,
+ .pr_stat = rip_stat,
.pr_generic = rip_usrreq,
};
Index: src/sys/netinet/tcp_usrreq.c
diff -u src/sys/netinet/tcp_usrreq.c:1.180 src/sys/netinet/tcp_usrreq.c:1.181
--- src/sys/netinet/tcp_usrreq.c:1.180 Tue Jul 1 05:49:18 2014
+++ src/sys/netinet/tcp_usrreq.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: tcp_usrreq.c,v 1.180 2014/07/01 05:49:18 rtr Exp $ */
+/* $NetBSD: tcp_usrreq.c,v 1.181 2014/07/06 03:33:33 rtr Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -99,7 +99,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tcp_usrreq.c,v 1.180 2014/07/01 05:49:18 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tcp_usrreq.c,v 1.181 2014/07/06 03:33:33 rtr Exp $");
#include "opt_inet.h"
#include "opt_ipsec.h"
@@ -180,6 +180,7 @@ tcp_usrreq(struct socket *so, int req, s
KASSERT(req != PRU_ATTACH);
KASSERT(req != PRU_DETACH);
KASSERT(req != PRU_CONTROL);
+ KASSERT(req != PRU_SENSE);
family = so->so_proto->pr_domain->dom_family;
@@ -242,11 +243,11 @@ tcp_usrreq(struct socket *so, int req, s
* a (struct inpcb) pointed at by the socket, and this
* structure will point at a subsidary (struct tcpcb).
*/
- if ((inp == NULL
+ if (inp == NULL
#ifdef INET6
&& in6p == NULL
#endif
- ) && req != PRU_SENSE)
+ )
{
error = EINVAL;
goto release;
@@ -475,13 +476,6 @@ tcp_usrreq(struct socket *so, int req, s
tp = tcp_drop(tp, ECONNABORTED);
break;
- case PRU_SENSE:
- /*
- * stat: don't bother with a blocksize.
- */
- splx(s);
- return (0);
-
case PRU_RCVOOB:
if (control && control->m_len) {
m_freem(control);
@@ -959,6 +953,13 @@ tcp_ioctl(struct socket *so, u_long cmd,
}
}
+static int
+tcp_stat(struct socket *so, struct stat *ub)
+{
+ /* stat: don't bother with a blocksize. */
+ return 0;
+}
+
/*
* Initiate (or continue) disconnect.
* If embryonic state, just send reset (once).
@@ -2196,11 +2197,13 @@ PR_WRAP_USRREQS(tcp)
#define tcp_attach tcp_attach_wrapper
#define tcp_detach tcp_detach_wrapper
#define tcp_ioctl tcp_ioctl_wrapper
+#define tcp_stat tcp_stat_wrapper
#define tcp_usrreq tcp_usrreq_wrapper
const struct pr_usrreqs tcp_usrreqs = {
.pr_attach = tcp_attach,
.pr_detach = tcp_detach,
.pr_ioctl = tcp_ioctl,
+ .pr_stat = tcp_stat,
.pr_generic = tcp_usrreq,
};
Index: src/sys/netinet/udp_usrreq.c
diff -u src/sys/netinet/udp_usrreq.c:1.202 src/sys/netinet/udp_usrreq.c:1.203
--- src/sys/netinet/udp_usrreq.c:1.202 Tue Jul 1 05:49:18 2014
+++ src/sys/netinet/udp_usrreq.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: udp_usrreq.c,v 1.202 2014/07/01 05:49:18 rtr Exp $ */
+/* $NetBSD: udp_usrreq.c,v 1.203 2014/07/06 03:33:33 rtr Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -66,7 +66,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: udp_usrreq.c,v 1.202 2014/07/01 05:49:18 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udp_usrreq.c,v 1.203 2014/07/06 03:33:33 rtr Exp $");
#include "opt_inet.h"
#include "opt_compat_netbsd.h"
@@ -901,6 +901,19 @@ udp_ioctl(struct socket *so, u_long cmd,
}
static int
+udp_stat(struct socket *so, struct stat *ub)
+{
+ struct inpcb *inp;
+
+ inp = sotoinpcb(so);
+ if (inp == NULL)
+ return EINVAL;
+
+ /* stat: don't bother with a blocksize. */
+ return 0;
+}
+
+static int
udp_usrreq(struct socket *so, int req, struct mbuf *m, struct mbuf *nam,
struct mbuf *control, struct lwp *l)
{
@@ -910,6 +923,7 @@ udp_usrreq(struct socket *so, int req, s
KASSERT(req != PRU_ATTACH);
KASSERT(req != PRU_DETACH);
KASSERT(req != PRU_CONTROL);
+ KASSERT(req != PRU_SENSE);
s = splsoftnet();
if (req == PRU_PURGEIF) {
@@ -1010,13 +1024,6 @@ udp_usrreq(struct socket *so, int req, s
}
break;
- case PRU_SENSE:
- /*
- * stat: don't bother with a blocksize.
- */
- splx(s);
- return (0);
-
case PRU_RCVOOB:
error = EOPNOTSUPP;
break;
@@ -1264,11 +1271,13 @@ PR_WRAP_USRREQS(udp)
#define udp_attach udp_attach_wrapper
#define udp_detach udp_detach_wrapper
#define udp_ioctl udp_ioctl_wrapper
+#define udp_stat udp_stat_wrapper
#define udp_usrreq udp_usrreq_wrapper
const struct pr_usrreqs udp_usrreqs = {
.pr_attach = udp_attach,
.pr_detach = udp_detach,
.pr_ioctl = udp_ioctl,
+ .pr_stat = udp_stat,
.pr_generic = udp_usrreq,
};
Index: src/sys/netinet6/raw_ip6.c
diff -u src/sys/netinet6/raw_ip6.c:1.121 src/sys/netinet6/raw_ip6.c:1.122
--- src/sys/netinet6/raw_ip6.c:1.121 Tue Jul 1 05:49:19 2014
+++ src/sys/netinet6/raw_ip6.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: raw_ip6.c,v 1.121 2014/07/01 05:49:19 rtr Exp $ */
+/* $NetBSD: raw_ip6.c,v 1.122 2014/07/06 03:33:33 rtr Exp $ */
/* $KAME: raw_ip6.c,v 1.82 2001/07/23 18:57:56 jinmei Exp $ */
/*
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: raw_ip6.c,v 1.121 2014/07/01 05:49:19 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: raw_ip6.c,v 1.122 2014/07/06 03:33:33 rtr Exp $");
#include "opt_ipsec.h"
@@ -650,6 +650,13 @@ rip6_ioctl(struct socket *so, u_long cmd
return in6_control(so, cmd, nam, ifp);
}
+static int
+rip6_stat(struct socket *so, struct stat *ub)
+{
+ /* stat: don't bother with a blocksize */
+ return 0;
+}
+
int
rip6_usrreq(struct socket *so, int req, struct mbuf *m,
struct mbuf *nam, struct mbuf *control, struct lwp *l)
@@ -658,6 +665,7 @@ rip6_usrreq(struct socket *so, int req,
int error = 0;
KASSERT(req != PRU_CONTROL);
+ KASSERT(req != PRU_SENSE);
if (req == PRU_PURGEIF) {
mutex_enter(softnet_lock);
@@ -826,11 +834,6 @@ rip6_usrreq(struct socket *so, int req,
break;
}
- case PRU_SENSE:
- /*
- * stat: don't bother with a blocksize
- */
- return 0;
/*
* Not supported.
*/
@@ -901,11 +904,13 @@ PR_WRAP_USRREQS(rip6)
#define rip6_attach rip6_attach_wrapper
#define rip6_detach rip6_detach_wrapper
#define rip6_ioctl rip6_ioctl_wrapper
+#define rip6_stat rip6_stat_wrapper
#define rip6_usrreq rip6_usrreq_wrapper
const struct pr_usrreqs rip6_usrreqs = {
.pr_attach = rip6_attach,
.pr_detach = rip6_detach,
.pr_ioctl = rip6_ioctl,
+ .pr_stat = rip6_stat,
.pr_generic = rip6_usrreq,
};
Index: src/sys/netinet6/udp6_usrreq.c
diff -u src/sys/netinet6/udp6_usrreq.c:1.101 src/sys/netinet6/udp6_usrreq.c:1.102
--- src/sys/netinet6/udp6_usrreq.c:1.101 Tue Jul 1 05:49:19 2014
+++ src/sys/netinet6/udp6_usrreq.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: udp6_usrreq.c,v 1.101 2014/07/01 05:49:19 rtr Exp $ */
+/* $NetBSD: udp6_usrreq.c,v 1.102 2014/07/06 03:33:33 rtr Exp $ */
/* $KAME: udp6_usrreq.c,v 1.86 2001/05/27 17:33:00 itojun Exp $ */
/*
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: udp6_usrreq.c,v 1.101 2014/07/01 05:49:19 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udp6_usrreq.c,v 1.102 2014/07/06 03:33:33 rtr Exp $");
#include "opt_inet.h"
#include "opt_inet_csum.h"
@@ -693,6 +693,18 @@ udp6_ioctl(struct socket *so, u_long cmd
return in6_control(so, cmd, addr6, ifp);
}
+static int
+udp6_stat(struct socket *so, struct stat *ub)
+{
+ struct in6pcb *in6p = sotoin6pcb(so);
+
+ if (in6p == NULL)
+ return EINVAL;
+
+ /* stat: don't bother with a blocksize */
+ return 0;
+}
+
int
udp6_usrreq(struct socket *so, int req, struct mbuf *m, struct mbuf *addr6,
struct mbuf *control, struct lwp *l)
@@ -703,6 +715,7 @@ udp6_usrreq(struct socket *so, int req,
KASSERT(req != PRU_ATTACH);
KASSERT(req != PRU_DETACH);
KASSERT(req != PRU_CONTROL);
+ KASSERT(req != PRU_SENSE);
if (req == PRU_PURGEIF) {
mutex_enter(softnet_lock);
@@ -773,12 +786,6 @@ udp6_usrreq(struct socket *so, int req,
in6_setpeeraddr(in6p, addr6);
break;
- case PRU_SENSE:
- /*
- * stat: don't bother with a blocksize
- */
- return 0;
-
case PRU_LISTEN:
case PRU_CONNECT2:
case PRU_ACCEPT:
@@ -878,11 +885,13 @@ PR_WRAP_USRREQS(udp6)
#define udp6_attach udp6_attach_wrapper
#define udp6_detach udp6_detach_wrapper
#define udp6_ioctl udp6_ioctl_wrapper
+#define udp6_stat udp6_stat_wrapper
#define udp6_usrreq udp6_usrreq_wrapper
const struct pr_usrreqs udp6_usrreqs = {
.pr_attach = udp6_attach,
.pr_detach = udp6_detach,
.pr_ioctl = udp6_ioctl,
+ .pr_stat = udp6_stat,
.pr_generic = udp6_usrreq,
};
Index: src/sys/netipsec/keysock.c
diff -u src/sys/netipsec/keysock.c:1.29 src/sys/netipsec/keysock.c:1.30
--- src/sys/netipsec/keysock.c:1.29 Tue Jul 1 05:49:19 2014
+++ src/sys/netipsec/keysock.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: keysock.c,v 1.29 2014/07/01 05:49:19 rtr Exp $ */
+/* $NetBSD: keysock.c,v 1.30 2014/07/06 03:33:33 rtr Exp $ */
/* $FreeBSD: src/sys/netipsec/keysock.c,v 1.3.2.1 2003/01/24 05:11:36 sam Exp $ */
/* $KAME: keysock.c,v 1.25 2001/08/13 20:07:41 itojun Exp $ */
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: keysock.c,v 1.29 2014/07/01 05:49:19 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: keysock.c,v 1.30 2014/07/06 03:33:33 rtr Exp $");
#include "opt_ipsec.h"
@@ -490,6 +490,12 @@ key_ioctl(struct socket *so, u_long cmd,
return EOPNOTSUPP;
}
+static int
+key_stat(struct socket *so, struct stat *ub)
+{
+ return 0;
+}
+
/*
* key_usrreq()
* derived from net/rtsock.c:route_usrreq()
@@ -503,6 +509,7 @@ key_usrreq(struct socket *so, int req,st
KASSERT(req != PRU_ATTACH);
KASSERT(req != PRU_DETACH);
KASSERT(req != PRU_CONTROL);
+ KASSERT(req != PRU_SENSE);
s = splsoftnet();
error = raw_usrreq(so, req, m, nam, control, l);
@@ -522,12 +529,14 @@ PR_WRAP_USRREQS(key)
#define key_attach key_attach_wrapper
#define key_detach key_detach_wrapper
#define key_ioctl key_ioctl_wrapper
+#define key_stat key_stat_wrapper
#define key_usrreq key_usrreq_wrapper
const struct pr_usrreqs key_usrreqs = {
.pr_attach = key_attach,
.pr_detach = key_detach,
.pr_ioctl = key_ioctl,
+ .pr_stat = key_stat,
.pr_generic = key_usrreq,
};
Index: src/sys/netnatm/natm.c
diff -u src/sys/netnatm/natm.c:1.29 src/sys/netnatm/natm.c:1.30
--- src/sys/netnatm/natm.c:1.29 Tue Jul 1 05:49:19 2014
+++ src/sys/netnatm/natm.c Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: natm.c,v 1.29 2014/07/01 05:49:19 rtr Exp $ */
+/* $NetBSD: natm.c,v 1.30 2014/07/06 03:33:33 rtr Exp $ */
/*
* Copyright (c) 1996 Charles D. Cranor and Washington University.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: natm.c,v 1.29 2014/07/01 05:49:19 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: natm.c,v 1.30 2014/07/06 03:33:33 rtr Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -131,6 +131,19 @@ done:
return(error);
}
+static int
+natm_ioctl(struct socket *so, struct stat *ub)
+{
+ struct natmpcb *npcb;
+
+ npcb = (struct natmpcb *) so->so_pcb;
+
+ if (npcb == NULL)
+ return EINVAL;
+
+ return 0;
+}
+
/*
* user requests
*/
@@ -151,6 +164,7 @@ natm_usrreq(struct socket *so, int req,
KASSERT(req != PRU_ATTACH);
KASSERT(req != PRU_DETACH);
KASSERT(req != PRU_CONTROL);
+ KASSERT(req != PRU_SENSE);
s = SPLSOFTNET();
@@ -287,10 +301,6 @@ natm_usrreq(struct socket *so, int req,
break;
- case PRU_SENSE: /* return status into m */
- /* return zero? */
- break;
-
case PRU_PEERADDR: /* fetch peer's address */
snatm = mtod(nam, struct sockaddr_natm *);
memset(snatm, 0, sizeof(*snatm));
@@ -411,11 +421,13 @@ PR_WRAP_USRREQS(natm)
#define natm_attach natm_attach_wrapper
#define natm_detach natm_detach_wrapper
#define natm_ioctl natm_ioctl_wrapper
+#define natm_stat natm_stat_wrapper
#define natm_usrreq natm_usrreq_wrapper
const struct pr_usrreqs natm_usrreqs = {
.pr_attach = natm_attach,
.pr_detach = natm_detach,
.pr_ioctl = natm_ioctl,
+ .pr_stat = natm_stat,
.pr_generic = natm_usrreq,
};
Index: src/sys/sys/protosw.h
diff -u src/sys/sys/protosw.h:1.49 src/sys/sys/protosw.h:1.50
--- src/sys/sys/protosw.h:1.49 Tue Jul 1 05:49:19 2014
+++ src/sys/sys/protosw.h Sun Jul 6 03:33:33 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: protosw.h,v 1.49 2014/07/01 05:49:19 rtr Exp $ */
+/* $NetBSD: protosw.h,v 1.50 2014/07/06 03:33:33 rtr Exp $ */
/*-
* Copyright (c) 1982, 1986, 1993
@@ -62,6 +62,7 @@ struct ifnet;
struct sockaddr;
struct socket;
struct sockopt;
+struct stat;
struct domain;
struct proc;
struct lwp;
@@ -238,6 +239,7 @@ struct pr_usrreqs {
int (*pr_attach)(struct socket *, int);
void (*pr_detach)(struct socket *);
int (*pr_ioctl)(struct socket *, u_long, void *, struct ifnet *);
+ int (*pr_stat)(struct socket *, struct stat *);
int (*pr_generic)(struct socket *, int, struct mbuf *,
struct mbuf *, struct mbuf *, struct lwp *);
};
@@ -300,6 +302,15 @@ name##_ioctl_wrapper(struct socket *a, u
return rv; \
} \
static int \
+name##_stat_wrapper(struct socket *a, struct stat *b) \
+{ \
+ int rv; \
+ KERNEL_LOCK(1, NULL); \
+ rv = name##_stat(a, b); \
+ KERNEL_UNLOCK_ONE(NULL); \
+ return rv; \
+} \
+static int \
name##_usrreq_wrapper(struct socket *a, int b, \
struct mbuf *c, struct mbuf *d, struct mbuf *e, \
struct lwp *f) \