summaryrefslogtreecommitdiffstats
path: root/sys/nfs
diff options
context:
space:
mode:
Diffstat (limited to 'sys/nfs')
-rw-r--r--sys/nfs/bootp_subr.c46
-rw-r--r--sys/nfs/krpc_subr.c40
-rw-r--r--sys/nfs/nfs.h4
-rw-r--r--sys/nfs/nfs_socket.c32
-rw-r--r--sys/nfs/nfs_syscalls.c30
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;
OpenPOWER on IntegriCloud