diff options
Diffstat (limited to 'sys/kern/uipc_syscalls.c')
| -rw-r--r-- | sys/kern/uipc_syscalls.c | 116 |
1 files changed, 80 insertions, 36 deletions
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index cf82c089a5bc..2f7889d060ca 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -31,10 +31,11 @@ * SUCH DAMAGE. * * from: @(#)uipc_syscalls.c 7.24 (Berkeley) 6/3/91 - * $Id: uipc_syscalls.c,v 1.4 1993/10/16 15:25:14 rgrimes Exp $ + * $Id: uipc_syscalls.c,v 1.6 1993/12/19 00:51:48 wollman Exp $ */ #include "param.h" +#include "systm.h" #include "filedesc.h" #include "proc.h" #include "file.h" @@ -48,6 +49,12 @@ #include "ktrace.h" #endif +/* First two also used by NFS, boooo, hiss! */ +int getsock(struct filedesc *, int, struct file **); +int sockargs(struct mbuf **, caddr_t, int, int); +static int sendit(struct proc *, int, struct msghdr *, int, int *); +static int recvit(struct proc *, int, struct msghdr *, caddr_t, int *); + /* * System call interface to the socket abstraction. */ @@ -60,6 +67,7 @@ struct socket_args { int protocol; }; +int socket(p, uap, retval) struct proc *p; register struct socket_args *uap; @@ -92,6 +100,7 @@ struct bind_args { }; /* ARGSUSED */ +int bind(p, uap, retval) struct proc *p; register struct bind_args *uap; @@ -116,6 +125,7 @@ struct listen_args { }; /* ARGSUSED */ +int listen(p, uap, retval) struct proc *p; register struct listen_args *uap; @@ -129,7 +139,18 @@ listen(p, uap, retval) return (solisten((struct socket *)fp->f_data, uap->backlog)); } +struct accept1_args { + int s; + caddr_t name; + int *anamelen; #ifdef COMPAT_43 + int compat_43; +#endif +}; + +#ifdef COMPAT_43 + +int accept1(struct proc *, struct accept1_args *, int *); struct accept_args { int s; @@ -138,6 +159,7 @@ struct accept_args { int compat_43; }; +int accept(p, uap, retval) struct proc *p; struct accept_args *uap; @@ -145,7 +167,7 @@ accept(p, uap, retval) { uap->compat_43 = 0; - return (accept1(p, uap, retval)); + return (accept1(p, (struct accept1_args *)uap, retval)); } struct oaccept_args { @@ -155,6 +177,7 @@ struct oaccept_args { int compat_43; }; +int oaccept(p, uap, retval) struct proc *p; struct oaccept_args *uap; @@ -162,22 +185,14 @@ oaccept(p, uap, retval) { uap->compat_43 = 1; - return (accept1(p, uap, retval)); + return (accept1(p, (struct accept1_args *)uap, retval)); } #else /* COMPAT_43 */ #define accept1 accept #endif -struct accept1_args { - int s; - caddr_t name; - int *anamelen; -#ifdef COMPAT_43 - int compat_43; -#endif -}; - +int accept1(p, uap, retval) struct proc *p; register struct accept1_args *uap; @@ -261,6 +276,7 @@ struct connect_args { }; /* ARGSUSED */ +int connect(p, uap, retval) struct proc *p; register struct connect_args *uap; @@ -310,6 +326,7 @@ struct socketpair_args { int *rsv; }; +int socketpair(p, uap, retval) struct proc *p; register struct socketpair_args *uap; @@ -373,6 +390,7 @@ struct sendto_args { int tolen; }; +int sendto(p, uap, retval) struct proc *p; register struct sendto_args *uap; @@ -404,6 +422,7 @@ struct osend_args { int flags; }; +int osend(p, uap, retval) struct proc *p; register struct osend_args *uap; @@ -431,6 +450,7 @@ struct osendmsg_args { int flags; }; +int osendmsg(p, uap, retval) struct proc *p; register struct osendmsg_args *uap; @@ -469,6 +489,7 @@ struct sendmsg_args { int flags; }; +int sendmsg(p, uap, retval) struct proc *p; register struct sendmsg_args *uap; @@ -503,6 +524,7 @@ done: return (error); } +static int sendit(p, s, mp, flags, retsize) register struct proc *p; int s; @@ -615,6 +637,7 @@ struct orecvfrom_args { int *fromlenaddr; }; +int orecvfrom(p, uap, retval) struct proc *p; struct orecvfrom_args *uap; @@ -635,6 +658,7 @@ struct recvfrom_args { int *fromlenaddr; }; +int recvfrom(p, uap, retval) struct proc *p; register struct recvfrom_args *uap; @@ -669,6 +693,7 @@ struct orecv_args { int flags; }; +int orecv(p, uap, retval) struct proc *p; register struct orecv_args *uap; @@ -700,6 +725,7 @@ struct orecvmsg_args { int flags; }; +int orecvmsg(p, uap, retval) struct proc *p; register struct orecvmsg_args *uap; @@ -743,6 +769,7 @@ struct recvmsg_args { int flags; }; +int recvmsg(p, uap, retval) struct proc *p; register struct recvmsg_args *uap; @@ -782,6 +809,7 @@ done: return (error); } +int recvit(p, s, mp, namelenp, retsize) register struct proc *p; int s; @@ -918,6 +946,7 @@ struct shutdown_args { }; /* ARGSUSED */ +int shutdown(p, uap, retval) struct proc *p; register struct shutdown_args *uap; @@ -940,6 +969,7 @@ struct setsocketopt_args { }; /* ARGSUSED */ +int setsockopt(p, uap, retval) struct proc *p; register struct setsocketopt_args *uap; @@ -977,6 +1007,7 @@ struct getsockopt_args { }; /* ARGSUSED */ +int getsockopt(p, uap, retval) struct proc *p; register struct getsockopt_args *uap; @@ -1009,6 +1040,7 @@ getsockopt(p, uap, retval) } /* ARGSUSED */ +int pipe(p, uap, retval) struct proc *p; struct args *uap; @@ -1056,8 +1088,19 @@ free1: /* * Get socket name. */ +struct getsockname1_args { + int fdes; + caddr_t asa; + int *alen; +#ifdef COMPAT_43 + int compat_43; +#endif +}; + #ifdef COMPAT_43 +int getsockname1(struct proc *, struct getsockname1_args *, int *); + struct getsockname_args { int fdes; caddr_t asa; @@ -1065,6 +1108,7 @@ struct getsockname_args { int compat_43; }; +int getsockname(p, uap, retval) struct proc *p; struct getsockname_args *uap; @@ -1072,7 +1116,7 @@ getsockname(p, uap, retval) { uap->compat_43 = 0; - return (getsockname1(p, uap, retval)); + return (getsockname1(p, (struct getsockname1_args *)uap, retval)); } struct ogetsockname_args { @@ -1082,6 +1126,7 @@ struct ogetsockname_args { int compat_43; }; +int ogetsockname(p, uap, retval) struct proc *p; struct ogetsockname_args *uap; @@ -1089,23 +1134,15 @@ ogetsockname(p, uap, retval) { uap->compat_43 = 1; - return (getsockname1(p, uap, retval)); + return (getsockname1(p, (struct getsockname1_args *)uap, retval)); } #else /* COMPAT_43 */ #define getsockname1 getsockname #endif -struct getsockname1_args { - int fdes; - caddr_t asa; - int *alen; -#ifdef COMPAT_43 - int compat_43; -#endif -}; - /* ARGSUSED */ +int getsockname1(p, uap, retval) struct proc *p; register struct getsockname1_args *uap; @@ -1124,7 +1161,7 @@ getsockname1(p, uap, retval) m = m_getclr(M_WAIT, MT_SONAME); if (m == NULL) return (ENOBUFS); - if (error = (*so->so_proto->pr_usrreq)(so, PRU_SOCKADDR, 0, m, 0)) + if (error = (*so->so_proto->pr_usrreq)(so, PRU_SOCKADDR, 0, m, 0, 0)) goto bad; if (len > m->m_len) len = m->m_len; @@ -1145,8 +1182,19 @@ bad: /* * Get name of peer for connected socket. */ +struct getpeername1_args { + int fdes; + caddr_t asa; + int *alen; +#ifdef COMPAT_43 + int compat_43; +#endif +}; + #ifdef COMPAT_43 +int getpeername1(struct proc *, struct getpeername1_args *, int *); + struct getpeername_args { int fdes; caddr_t asa; @@ -1154,6 +1202,7 @@ struct getpeername_args { int compat_43; }; +int getpeername(p, uap, retval) struct proc *p; struct getpeername_args *uap; @@ -1161,7 +1210,7 @@ getpeername(p, uap, retval) { uap->compat_43 = 0; - return (getpeername1(p, uap, retval)); + return (getpeername1(p, (struct getpeername1_args *)uap, retval)); } struct ogetpeername_args { @@ -1171,6 +1220,7 @@ struct ogetpeername_args { int compat_43; }; +int ogetpeername(p, uap, retval) struct proc *p; struct ogetpeername_args *uap; @@ -1178,23 +1228,15 @@ ogetpeername(p, uap, retval) { uap->compat_43 = 1; - return (getpeername1(p, uap, retval)); + return (getpeername1(p, (struct getpeername1_args *)uap, retval)); } #else /* COMPAT_43 */ #define getpeername1 getpeername #endif -struct getpeername1_args { - int fdes; - caddr_t asa; - int *alen; -#ifdef COMPAT_43 - int compat_43; -#endif -}; - /* ARGSUSED */ +int getpeername1(p, uap, retval) struct proc *p; register struct getpeername1_args *uap; @@ -1215,7 +1257,7 @@ getpeername1(p, uap, retval) return (ENOBUFS); if (error = copyin((caddr_t)uap->alen, (caddr_t)&len, sizeof (len))) return (error); - if (error = (*so->so_proto->pr_usrreq)(so, PRU_PEERADDR, 0, m, 0)) + if (error = (*so->so_proto->pr_usrreq)(so, PRU_PEERADDR, 0, m, 0, 0)) goto bad; if (len > m->m_len) len = m->m_len; @@ -1232,6 +1274,7 @@ bad: return (error); } +int sockargs(mp, buf, buflen, type) struct mbuf **mp; caddr_t buf; @@ -1270,6 +1313,7 @@ sockargs(mp, buf, buflen, type) return (0); } +int getsock(fdp, fdes, fpp) struct filedesc *fdp; int fdes; |
