summaryrefslogtreecommitdiffstats
path: root/sys/nfs/nfs_subs.c
diff options
context:
space:
mode:
authorniklas <niklas@openbsd.org>1996-02-29 09:24:48 +0000
committerniklas <niklas@openbsd.org>1996-02-29 09:24:48 +0000
commit370decb4f90ba4ab7a06fadca01c1ba8dd702c76 (patch)
treebd8baf8fb15ded48bc10cee74fed8feb5bc82292 /sys/nfs/nfs_subs.c
parentSupplement the known PCI Vendor list (diff)
downloadwireguard-openbsd-370decb4f90ba4ab7a06fadca01c1ba8dd702c76.tar.xz
wireguard-openbsd-370decb4f90ba4ab7a06fadca01c1ba8dd702c76.zip
From NetBSD: merge with 960217 (still NFSv2)
Diffstat (limited to 'sys/nfs/nfs_subs.c')
-rw-r--r--sys/nfs/nfs_subs.c63
1 files changed, 41 insertions, 22 deletions
diff --git a/sys/nfs/nfs_subs.c b/sys/nfs/nfs_subs.c
index 1322229fe51..305f23df96e 100644
--- a/sys/nfs/nfs_subs.c
+++ b/sys/nfs/nfs_subs.c
@@ -1,4 +1,5 @@
-/* $NetBSD: nfs_subs.c,v 1.22 1995/12/19 23:07:43 cgd Exp $ */
+/* $OpenBSD: nfs_subs.c,v 1.4 1996/02/29 09:24:56 niklas Exp $ */
+/* $NetBSD: nfs_subs.c,v 1.24 1996/02/09 21:48:34 christos Exp $ */
/*
* Copyright (c) 1989, 1993
@@ -63,9 +64,12 @@
#include <nfs/nfsmount.h>
#include <nfs/nqnfs.h>
#include <nfs/nfsrtt.h>
+#include <nfs/nfs_var.h>
#include <miscfs/specfs/specdev.h>
+#include <vm/vm.h>
+
#include <netinet/in.h>
#ifdef ISO
#include <netiso/iso.h>
@@ -266,6 +270,7 @@ nfsm_rpchead(cr, nqnfs, procid, auth_type, auth_len, auth_str, mrest,
/*
* copies mbuf chain to the uio scatter/gather list
*/
+int
nfsm_mbuftouio(mrep, uiop, siz, dpos)
struct mbuf **mrep;
register struct uio *uiop;
@@ -340,6 +345,7 @@ nfsm_mbuftouio(mrep, uiop, siz, dpos)
/*
* copies a uio scatter/gather list to an mbuf chain...
*/
+int
nfsm_uiotombuf(uiop, mq, siz, bpos)
register struct uio *uiop;
struct mbuf **mq;
@@ -427,6 +433,7 @@ nfsm_uiotombuf(uiop, mq, siz, bpos)
* This is used by the macros nfsm_dissect and nfsm_dissecton for tough
* cases. (The macros use the vars. dpos and dpos2)
*/
+int
nfsm_disct(mdp, dposp, siz, left, cp2)
struct mbuf **mdp;
caddr_t *dposp;
@@ -489,6 +496,7 @@ nfsm_disct(mdp, dposp, siz, left, cp2)
/*
* Advance the position in the mbuf chain.
*/
+int
nfs_adv(mdp, dposp, offs, left)
struct mbuf **mdp;
caddr_t *dposp;
@@ -515,13 +523,14 @@ nfs_adv(mdp, dposp, offs, left)
/*
* Copy a string into mbufs for the hard cases...
*/
+int
nfsm_strtmbuf(mb, bpos, cp, siz)
struct mbuf **mb;
char **bpos;
char *cp;
long siz;
{
- register struct mbuf *m1, *m2;
+ register struct mbuf *m1 = NULL, *m2;
long left, xfer, len, tlen;
u_int32_t *tl;
int putsize;
@@ -580,6 +589,7 @@ nfsm_strtmbuf(mb, bpos, cp, siz)
/*
* Called once to initialize data structures...
*/
+void
nfs_init()
{
register int i;
@@ -632,7 +642,7 @@ nfs_init()
* Initialize reply list and start timer
*/
TAILQ_INIT(&nfs_reqq);
- nfs_timer();
+ nfs_timer(NULL);
}
#ifdef NFSCLIENT
@@ -650,6 +660,7 @@ nfs_init()
* Iff vap not NULL
* copy the attributes to *vaper
*/
+int
nfs_loadattrcache(vpp, mdp, dposp, vaper)
struct vnode **vpp;
struct mbuf **mdp;
@@ -659,7 +670,7 @@ nfs_loadattrcache(vpp, mdp, dposp, vaper)
register struct vnode *vp = *vpp;
register struct vattr *vap;
register struct nfsv2_fattr *fp;
- extern int (**spec_nfsv2nodeop_p)();
+ extern int (**spec_nfsv2nodeop_p) __P((void *));
register struct nfsnode *np;
register struct nfsnodehashhead *nhpp;
register int32_t t1;
@@ -676,7 +687,8 @@ nfs_loadattrcache(vpp, mdp, dposp, vaper)
dpos = *dposp;
t1 = (mtod(md, caddr_t) + md->m_len) - dpos;
isnq = (VFSTONFS(vp->v_mount)->nm_flag & NFSMNT_NQNFS);
- if (error = nfsm_disct(&md, &dpos, NFSX_FATTR(isnq), t1, &cp2))
+ error = nfsm_disct(&md, &dpos, NFSX_FATTR(isnq), t1, &cp2);
+ if (error)
return (error);
fp = (struct nfsv2_fattr *)cp2;
vtyp = nfstov_type(fp->fa_type);
@@ -705,7 +717,7 @@ nfs_loadattrcache(vpp, mdp, dposp, vaper)
vp->v_type = vtyp;
if (vp->v_type == VFIFO) {
#ifdef FIFO
- extern int (**fifo_nfsv2nodeop_p)();
+ extern int (**fifo_nfsv2nodeop_p) __P((void *));
vp->v_op = fifo_nfsv2nodeop_p;
#else
return (EOPNOTSUPP);
@@ -713,7 +725,8 @@ nfs_loadattrcache(vpp, mdp, dposp, vaper)
}
if (vp->v_type == VCHR || vp->v_type == VBLK) {
vp->v_op = spec_nfsv2nodeop_p;
- if (nvp = checkalias(vp, (dev_t)rdev, vp->v_mount)) {
+ nvp = checkalias(vp, (dev_t)rdev, vp->v_mount);
+ if (nvp) {
/*
* Discard unneeded vnode, but save its nfsnode.
*/
@@ -732,7 +745,7 @@ nfs_loadattrcache(vpp, mdp, dposp, vaper)
*vpp = vp = nvp;
}
}
- np->n_mtime = mtime.ts_sec;
+ np->n_mtime = mtime.tv_sec;
}
vap = &np->n_vattr;
vap->va_type = vtyp;
@@ -789,13 +802,13 @@ nfs_loadattrcache(vpp, mdp, dposp, vaper)
#endif
if (np->n_flag & NCHG) {
if (np->n_flag & NACC) {
- vaper->va_atime.ts_sec = np->n_atim.tv_sec;
- vaper->va_atime.ts_nsec =
+ vaper->va_atime.tv_sec = np->n_atim.tv_sec;
+ vaper->va_atime.tv_nsec =
np->n_atim.tv_usec * 1000;
}
if (np->n_flag & NUPD) {
- vaper->va_mtime.ts_sec = np->n_mtim.tv_sec;
- vaper->va_mtime.ts_nsec =
+ vaper->va_mtime.tv_sec = np->n_mtim.tv_sec;
+ vaper->va_mtime.tv_nsec =
np->n_mtim.tv_usec * 1000;
}
}
@@ -808,6 +821,7 @@ nfs_loadattrcache(vpp, mdp, dposp, vaper)
* If the cache is valid, copy contents to *vap and return 0
* otherwise return an error
*/
+int
nfs_getattrcache(vp, vaper)
register struct vnode *vp;
struct vattr *vaper;
@@ -850,12 +864,12 @@ nfs_getattrcache(vp, vaper)
#endif
if (np->n_flag & NCHG) {
if (np->n_flag & NACC) {
- vaper->va_atime.ts_sec = np->n_atim.tv_sec;
- vaper->va_atime.ts_nsec = np->n_atim.tv_usec * 1000;
+ vaper->va_atime.tv_sec = np->n_atim.tv_sec;
+ vaper->va_atime.tv_nsec = np->n_atim.tv_usec * 1000;
}
if (np->n_flag & NUPD) {
- vaper->va_mtime.ts_sec = np->n_mtim.tv_sec;
- vaper->va_mtime.ts_nsec = np->n_mtim.tv_usec * 1000;
+ vaper->va_mtime.tv_sec = np->n_mtim.tv_sec;
+ vaper->va_mtime.tv_nsec = np->n_mtim.tv_usec * 1000;
}
}
return (0);
@@ -865,6 +879,7 @@ nfs_getattrcache(vp, vaper)
/*
* Set up nameidata for a lookup() call and do it
*/
+int
nfs_namei(ndp, fhp, len, slp, nam, mdp, dposp, p)
register struct nameidata *ndp;
fhandle_t *fhp;
@@ -915,7 +930,7 @@ nfs_namei(ndp, fhp, len, slp, nam, mdp, dposp, p)
if (len > 0) {
if (rem >= len)
*dposp += len;
- else if (error = nfs_adv(mdp, dposp, len, rem))
+ else if ((error = nfs_adv(mdp, dposp, len, rem)) != 0)
goto out;
}
ndp->ni_pathlen = tocp - cnp->cn_pnbuf;
@@ -923,8 +938,9 @@ nfs_namei(ndp, fhp, len, slp, nam, mdp, dposp, p)
/*
* Extract and set starting directory.
*/
- if (error = nfsrv_fhtovp(fhp, FALSE, &dp, ndp->ni_cnd.cn_cred, slp,
- nam, &rdonly))
+ error = nfsrv_fhtovp(fhp, FALSE, &dp, ndp->ni_cnd.cn_cred, slp,
+ nam, &rdonly);
+ if (error)
goto out;
if (dp->v_type != VDIR) {
vrele(dp);
@@ -940,7 +956,7 @@ nfs_namei(ndp, fhp, len, slp, nam, mdp, dposp, p)
* And call lookup() to do the real work
*/
cnp->cn_proc = p;
- if (error = lookup(ndp))
+ if ((error = lookup(ndp)) != 0)
goto out;
/*
* Check for encountering a symbolic link
@@ -1025,7 +1041,7 @@ nfsm_adj(mp, len, nul)
}
count -= m->m_len;
}
- while (m = m->m_next)
+ while ((m = m->m_next) != NULL)
m->m_len = 0;
}
@@ -1036,6 +1052,7 @@ nfsm_adj(mp, len, nul)
* - if cred->cr_uid == 0 or MNT_EXPORTANON set it to credanon
* - if not lockflag unlock it with VOP_UNLOCK()
*/
+int
nfsrv_fhtovp(fhp, lockflag, vpp, cred, slp, nam, rdonlyp)
fhandle_t *fhp;
int lockflag;
@@ -1054,7 +1071,8 @@ nfsrv_fhtovp(fhp, lockflag, vpp, cred, slp, nam, rdonlyp)
*vpp = (struct vnode *)0;
if ((mp = getvfs(&fhp->fh_fsid)) == NULL)
return (ESTALE);
- if (error = VFS_FHTOVP(mp, &fhp->fh_fid, nam, vpp, &exflags, &credanon))
+ error = VFS_FHTOVP(mp, &fhp->fh_fid, nam, vpp, &exflags, &credanon);
+ if (error)
return (error);
/*
* Check/setup credentials.
@@ -1097,6 +1115,7 @@ nfsrv_fhtovp(fhp, lockflag, vpp, cred, slp, nam, rdonlyp)
* The AF_INET family is handled as a special case so that address mbufs
* don't need to be saved to store "struct in_addr", which is only 4 bytes.
*/
+int
netaddr_match(family, haddr, nam)
int family;
union nethostaddr *haddr;