diff options
Diffstat (limited to 'sys/nfs')
-rw-r--r-- | sys/nfs/bootp_subr.c | 46 | ||||
-rw-r--r-- | sys/nfs/krpc_subr.c | 40 | ||||
-rw-r--r-- | sys/nfs/nfs.h | 4 | ||||
-rw-r--r-- | sys/nfs/nfs_socket.c | 32 | ||||
-rw-r--r-- | sys/nfs/nfs_syscalls.c | 30 |
5 files changed, 81 insertions, 71 deletions
diff --git a/sys/nfs/bootp_subr.c b/sys/nfs/bootp_subr.c index 459af38..c66e384 100644 --- a/sys/nfs/bootp_subr.c +++ b/sys/nfs/bootp_subr.c @@ -1,4 +1,4 @@ -/* $Id: bootp_subr.c,v 1.13 1998/03/30 09:53:38 phk Exp $ */ +/* $Id: bootp_subr.c,v 1.14 1998/08/18 00:32:47 bde Exp $ */ /* * Copyright (c) 1995 Gordon Ross, Adam Glass @@ -264,8 +264,10 @@ bootpc_call(call,reply,procp) struct sockaddr_in *sin, sa; struct mbuf *m; struct uio auio; + struct sockopt sopt; struct iovec aio; - int error, rcvflg, timo, secs, len; + struct timeval tv; + int error, on, len, rcvflg, secs, timo; u_int tport; /* @@ -274,36 +276,26 @@ bootpc_call(call,reply,procp) if ((error = socreate(AF_INET, &so, SOCK_DGRAM, 0,procp))) goto out; - m = m_get(M_WAIT, MT_SOOPTS); - if (m == NULL) { - error = ENOBUFS; + tv.tv_sec = 1; + tv.tv_usec = 0; + bzero(&sopt, sizeof sopt); + sopt.sopt_level = SOL_SOCKET; + sopt.sopt_name = SO_RCVTIMEO; + sopt.sopt_val = &tv; + sopt.sopt_valsize = sizeof tv; + + if (error = sosetopt(so, &sopt)) goto out; - } else { - struct timeval *tv; - tv = mtod(m, struct timeval *); - m->m_len = sizeof(*tv); - tv->tv_sec = 1; - tv->tv_usec = 0; - if ((error = sosetopt(so, SOL_SOCKET, SO_RCVTIMEO, m, procp))) - goto out; - } /* * Enable broadcast. */ - { - int *on; - m = m_get(M_WAIT, MT_SOOPTS); - if (m == NULL) { - error = ENOBUFS; - goto out; - } - on = mtod(m, int *); - m->m_len = sizeof(*on); - *on = 1; - if ((error = sosetopt(so, SOL_SOCKET, SO_BROADCAST, m, procp))) - goto out; - } + on = 1; + sopt.sopt_val = &on; + sopt.sopt_valsize = sizeof on; + sopt.sopt_name = SO_BROADCAST; + if (error = sosetopt(so, &sopt)) + goto out; /* * Bind the local endpoint to a bootp client port. diff --git a/sys/nfs/krpc_subr.c b/sys/nfs/krpc_subr.c index c77a5f5..ad01edb 100644 --- a/sys/nfs/krpc_subr.c +++ b/sys/nfs/krpc_subr.c @@ -1,5 +1,5 @@ /* $NetBSD: krpc_subr.c,v 1.12.4.1 1996/06/07 00:52:26 cgd Exp $ */ -/* $Id: krpc_subr.c,v 1.9 1998/03/28 10:33:15 bde Exp $ */ +/* $Id: krpc_subr.c,v 1.10 1998/08/18 00:32:48 bde Exp $ */ /* * Copyright (c) 1995 Gordon Ross, Adam Glass @@ -198,6 +198,8 @@ krpc_call(sa, prog, vers, func, data, from_p, procp) struct mbuf *m, *nam, *mhead; struct rpc_call *call; struct rpc_reply *reply; + struct sockopt sopt; + struct timeval tv; struct uio auio; int error, rcvflg, timo, secs, len; static u_int32_t xid = ~0xFF; @@ -220,34 +222,26 @@ krpc_call(sa, prog, vers, func, data, from_p, procp) if ((error = socreate(AF_INET, &so, SOCK_DGRAM, 0, procp))) goto out; - m = m_get(M_WAIT, MT_SOOPTS); - if (m == NULL) { - error = ENOBUFS; + tv.tv_sec = 1; + tv.tv_usec = 0; + bzero(&sopt, sizeof sopt); + sopt.sopt_level = SOL_SOCKET; + sopt.sopt_name = SO_RCVTIMEO; + sopt.sopt_val = &tv; + sopt.sopt_valsize = sizeof tv; + + if (error = sosetopt(so, &sopt)) goto out; - } else { - struct timeval *tv; - tv = mtod(m, struct timeval *); - m->m_len = sizeof(*tv); - tv->tv_sec = 1; - tv->tv_usec = 0; - if ((error = sosetopt(so, SOL_SOCKET, SO_RCVTIMEO, m, procp))) - goto out; - } /* * Enable broadcast if necessary. */ if (from_p) { - int32_t *on; - m = m_get(M_WAIT, MT_SOOPTS); - if (m == NULL) { - error = ENOBUFS; - goto out; - } - on = mtod(m, int32_t *); - m->m_len = sizeof(*on); - *on = 1; - if ((error = sosetopt(so, SOL_SOCKET, SO_BROADCAST, m, procp))) + int on = 1; + sopt.sopt_name = SO_BROADCAST; + sopt.sopt_val = &on; + sopt.sopt_valsize = sizeof on; + if (error = sosetopt(so, &sopt)) goto out; } diff --git a/sys/nfs/nfs.h b/sys/nfs/nfs.h index e5be581..885a2c1 100644 --- a/sys/nfs/nfs.h +++ b/sys/nfs/nfs.h @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfs.h 8.4 (Berkeley) 5/1/95 - * $Id: nfs.h,v 1.41 1998/06/30 03:01:37 jmg Exp $ + * $Id: nfs.h,v 1.42 1998/06/30 11:19:22 jmg Exp $ */ #ifndef _NFS_NFS_H_ @@ -722,7 +722,7 @@ int nfsrv_symlink __P((struct nfsrv_descript *nfsd, struct proc *procp, struct mbuf **mrq)); int nfsrv_write __P((struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, struct proc *procp, struct mbuf **mrq)); -void nfsrv_rcv __P((struct socket *so, caddr_t arg, int waitflag)); +void nfsrv_rcv __P((struct socket *so, void *arg, int waitflag)); void nfsrv_slpderef __P((struct nfssvc_sock *slp)); #endif /* KERNEL */ diff --git a/sys/nfs/nfs_socket.c b/sys/nfs/nfs_socket.c index d4e1a04..693899f 100644 --- a/sys/nfs/nfs_socket.c +++ b/sys/nfs/nfs_socket.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfs_socket.c 8.5 (Berkeley) 3/30/95 - * $Id: nfs_socket.c,v 1.42 1998/07/15 02:32:24 bde Exp $ + * $Id: nfs_socket.c,v 1.43 1998/08/01 09:04:02 peter Exp $ */ /* @@ -282,16 +282,28 @@ nfs_connect(nmp, rep) if (nmp->nm_sotype != SOCK_STREAM) panic("nfscon sotype"); if (so->so_proto->pr_flags & PR_CONNREQUIRED) { - MGET(m, M_WAIT, MT_SOOPTS); - *mtod(m, int32_t *) = 1; - m->m_len = sizeof(int32_t); - sosetopt(so, SOL_SOCKET, SO_KEEPALIVE, m, p); + struct sockopt sopt; + int val; + + bzero(&sopt, sizeof sopt); + sopt.sopt_level = SOL_SOCKET; + sopt.sopt_name = SO_KEEPALIVE; + sopt.sopt_val = &val; + sopt.sopt_valsize = sizeof val; + val = 1; + sosetopt(so, &sopt); } if (so->so_proto->pr_protocol == IPPROTO_TCP) { - MGET(m, M_WAIT, MT_SOOPTS); - *mtod(m, int32_t *) = 1; - m->m_len = sizeof(int32_t); - sosetopt(so, IPPROTO_TCP, TCP_NODELAY, m, p); + struct sockopt sopt; + int val; + + bzero(&sopt, sizeof sopt); + sopt.sopt_level = IPPROTO_TCP; + sopt.sopt_name = TCP_NODELAY; + sopt.sopt_val = &val; + sopt.sopt_valsize = sizeof val; + val = 1; + sosetopt(so, &sopt); } sndreserve = (nmp->nm_wsize + NFS_MAXPKTHDR + sizeof (u_int32_t)) * 2; @@ -1952,7 +1964,7 @@ nfs_msg(p, server, msg) void nfsrv_rcv(so, arg, waitflag) struct socket *so; - caddr_t arg; + void *arg; int waitflag; { register struct nfssvc_sock *slp = (struct nfssvc_sock *)arg; diff --git a/sys/nfs/nfs_syscalls.c b/sys/nfs/nfs_syscalls.c index 08a1f13..c6b92d5 100644 --- a/sys/nfs/nfs_syscalls.c +++ b/sys/nfs/nfs_syscalls.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfs_syscalls.c 8.5 (Berkeley) 3/30/95 - * $Id: nfs_syscalls.c,v 1.40 1998/05/31 18:46:06 peter Exp $ + * $Id: nfs_syscalls.c,v 1.41 1998/05/31 20:08:55 peter Exp $ */ #include <sys/param.h> @@ -400,17 +400,29 @@ nfssvc_addsock(fp, mynam, p) * repeatedly for the same socket, but that isn't harmful. */ if (so->so_type == SOCK_STREAM) { - MGET(m, M_WAIT, MT_SOOPTS); - *mtod(m, int32_t *) = 1; - m->m_len = sizeof(int32_t); - sosetopt(so, SOL_SOCKET, SO_KEEPALIVE, m, p); + struct sockopt sopt; + int val; + + bzero(&sopt, sizeof sopt); + sopt.sopt_level = SOL_SOCKET; + sopt.sopt_name = SO_KEEPALIVE; + sopt.sopt_val = &val; + sopt.sopt_valsize = sizeof val; + val = 1; + sosetopt(so, &sopt); } if (so->so_proto->pr_domain->dom_family == AF_INET && so->so_proto->pr_protocol == IPPROTO_TCP) { - MGET(m, M_WAIT, MT_SOOPTS); - *mtod(m, int32_t *) = 1; - m->m_len = sizeof(int32_t); - sosetopt(so, IPPROTO_TCP, TCP_NODELAY, m, p); + struct sockopt sopt; + int val; + + bzero(&sopt, sizeof sopt); + sopt.sopt_level = IPPROTO_TCP; + sopt.sopt_name = TCP_NODELAY; + sopt.sopt_val = &val; + sopt.sopt_valsize = sizeof val; + val = 1; + sosetopt(so, &sopt); } so->so_rcv.sb_flags &= ~SB_NOINTR; so->so_rcv.sb_timeo = 0; |