summaryrefslogtreecommitdiff
path: root/sys/nfs/krpc_subr.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/nfs/krpc_subr.c')
-rw-r--r--sys/nfs/krpc_subr.c40
1 files changed, 17 insertions, 23 deletions
diff --git a/sys/nfs/krpc_subr.c b/sys/nfs/krpc_subr.c
index c77a5f52b1f5..ad01edb20db2 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;
}