projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
u. is gone, pcb is at p_addr; aston => signotify
[unix-history]
/
usr
/
src
/
sys
/
kern
/
uipc_usrreq.c
diff --git
a/usr/src/sys/kern/uipc_usrreq.c
b/usr/src/sys/kern/uipc_usrreq.c
index
280ed80
..
f93a141
100644
(file)
--- a/
usr/src/sys/kern/uipc_usrreq.c
+++ b/
usr/src/sys/kern/uipc_usrreq.c
@@
-2,7
+2,7
@@
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)uipc_usrreq.c 7.2
4
(Berkeley) %G%
+ * @(#)uipc_usrreq.c 7.2
5
(Berkeley) %G%
*/
#include "param.h"
*/
#include "param.h"
@@
-14,6
+14,7
@@
#include "socketvar.h"
#include "unpcb.h"
#include "un.h"
#include "socketvar.h"
#include "unpcb.h"
#include "un.h"
+#include "namei.h"
#include "vnode.h"
#include "file.h"
#include "stat.h"
#include "vnode.h"
#include "file.h"
#include "stat.h"
@@
-39,6
+40,7
@@
uipc_usrreq(so, req, m, nam, control)
struct unpcb *unp = sotounpcb(so);
register struct socket *so2;
register int error = 0;
struct unpcb *unp = sotounpcb(so);
register struct socket *so2;
register int error = 0;
+ struct proc *p = curproc; /* XXX */
if (req == PRU_CONTROL)
return (EOPNOTSUPP);
if (req == PRU_CONTROL)
return (EOPNOTSUPP);
@@
-65,7
+67,7
@@
uipc_usrreq(so, req, m, nam, control)
break;
case PRU_BIND:
break;
case PRU_BIND:
- error = unp_bind(unp, nam);
+ error = unp_bind(unp, nam
, p
);
break;
case PRU_LISTEN:
break;
case PRU_LISTEN:
@@
-74,7
+76,7
@@
uipc_usrreq(so, req, m, nam, control)
break;
case PRU_CONNECT:
break;
case PRU_CONNECT:
- error = unp_connect(so, nam);
+ error = unp_connect(so, nam
, p
);
break;
case PRU_CONNECT2:
break;
case PRU_CONNECT2:
@@
-138,7
+140,7
@@
uipc_usrreq(so, req, m, nam, control)
break;
case PRU_SEND:
break;
case PRU_SEND:
- if (control && (error = unp_internalize(control)))
+ if (control && (error = unp_internalize(control
, p
)))
break;
switch (so->so_type) {
break;
switch (so->so_type) {
@@
-150,7
+152,7
@@
uipc_usrreq(so, req, m, nam, control)
error = EISCONN;
break;
}
error = EISCONN;
break;
}
- error = unp_connect(so, nam);
+ error = unp_connect(so, nam
, p
);
if (error)
break;
} else {
if (error)
break;
} else {
@@
-333,9
+335,10
@@
unp_detach(unp)
unp_gc();
}
unp_gc();
}
-unp_bind(unp, nam)
+unp_bind(unp, nam
, p
)
struct unpcb *unp;
struct mbuf *nam;
struct unpcb *unp;
struct mbuf *nam;
+ struct proc *p;
{
struct sockaddr_un *soun = mtod(nam, struct sockaddr_un *);
register struct vnode *vp;
{
struct sockaddr_un *soun = mtod(nam, struct sockaddr_un *);
register struct vnode *vp;
@@
-356,7
+359,7
@@
unp_bind(unp, nam)
/* SHOULD BE ABLE TO ADOPT EXISTING AND wakeup() ALA FIFO's */
ndp->ni_nameiop = CREATE | FOLLOW | LOCKPARENT;
ndp->ni_segflg = UIO_SYSSPACE;
/* SHOULD BE ABLE TO ADOPT EXISTING AND wakeup() ALA FIFO's */
ndp->ni_nameiop = CREATE | FOLLOW | LOCKPARENT;
ndp->ni_segflg = UIO_SYSSPACE;
- if (error = namei(ndp,
curproc)) /* XXX */
+ if (error = namei(ndp,
p))
return (error);
vp = ndp->ni_vp;
if (vp != NULL) {
return (error);
vp = ndp->ni_vp;
if (vp != NULL) {
@@
-371,7
+374,7
@@
unp_bind(unp, nam)
VATTR_NULL(&vattr);
vattr.va_type = VSOCK;
vattr.va_mode = 0777;
VATTR_NULL(&vattr);
vattr.va_type = VSOCK;
vattr.va_mode = 0777;
- if (error = VOP_CREATE(ndp, &vattr))
+ if (error = VOP_CREATE(ndp, &vattr
, p
))
return (error);
vp = ndp->ni_vp;
vp->v_socket = unp->unp_socket;
return (error);
vp = ndp->ni_vp;
vp->v_socket = unp->unp_socket;
@@
-381,9
+384,10
@@
unp_bind(unp, nam)
return (0);
}
return (0);
}
-unp_connect(so, nam)
+unp_connect(so, nam
, p
)
struct socket *so;
struct mbuf *nam;
struct socket *so;
struct mbuf *nam;
+ struct proc *p;
{
register struct sockaddr_un *soun = mtod(nam, struct sockaddr_un *);
register struct vnode *vp;
{
register struct sockaddr_un *soun = mtod(nam, struct sockaddr_un *);
register struct vnode *vp;
@@
-402,14
+406,14
@@
unp_connect(so, nam)
*(mtod(nam, caddr_t) + nam->m_len) = 0;
ndp->ni_nameiop = LOOKUP | FOLLOW | LOCKLEAF;
ndp->ni_segflg = UIO_SYSSPACE;
*(mtod(nam, caddr_t) + nam->m_len) = 0;
ndp->ni_nameiop = LOOKUP | FOLLOW | LOCKLEAF;
ndp->ni_segflg = UIO_SYSSPACE;
- if (error = namei(ndp,
curproc)) /* XXX */
+ if (error = namei(ndp,
p))
return (error);
vp = ndp->ni_vp;
if (vp->v_type != VSOCK) {
error = ENOTSOCK;
goto bad;
}
return (error);
vp = ndp->ni_vp;
if (vp->v_type != VSOCK) {
error = ENOTSOCK;
goto bad;
}
- if (error = VOP_ACCESS(vp, VWRITE,
curproc->p_ucred
))
+ if (error = VOP_ACCESS(vp, VWRITE,
p->p_ucred, p
))
goto bad;
so2 = vp->v_socket;
if (so2 == 0) {
goto bad;
so2 = vp->v_socket;
if (so2 == 0) {
@@
-579,10
+583,11
@@
unp_externalize(rights)
return (0);
}
return (0);
}
-unp_internalize(control)
+unp_internalize(control
, p
)
struct mbuf *control;
struct mbuf *control;
+ struct proc *p;
{
{
- struct filedesc *fdp =
curproc->p_fd; /* XXX */
+ struct filedesc *fdp =
p->p_fd;
register struct cmsghdr *cm = mtod(control, struct cmsghdr *);
register struct file **rp;
register struct file *fp;
register struct cmsghdr *cm = mtod(control, struct cmsghdr *);
register struct file **rp;
register struct file *fp;