Tidy up nfsm_build usage. This is only partially finished.

This commit is contained in:
peter 2001-09-27 02:33:36 +00:00
parent 4e88440bcf
commit 0bcf1fda54
7 changed files with 81 additions and 80 deletions

View File

@ -245,10 +245,11 @@ nfs_adv(struct mbuf **mdp, caddr_t *dposp, int offs, int left)
return (0);
}
void
nfsm_build_xx(void **a, int s, struct mbuf **mb, caddr_t *bpos)
void *
nfsm_build_xx(int s, struct mbuf **mb, caddr_t *bpos)
{
struct mbuf *mb2;
void *ret;
if (s > M_TRAILINGSPACE(*mb)) {
MGET(mb2, M_TRYWAIT, MT_DATA);
@ -259,9 +260,10 @@ nfsm_build_xx(void **a, int s, struct mbuf **mb, caddr_t *bpos)
(*mb)->m_len = 0;
*bpos = mtod(*mb, caddr_t);
}
*a = *bpos;
ret = *bpos;
(*mb)->m_len += s;
*bpos += s;
return ret;
}
int

View File

@ -56,7 +56,7 @@ extern nfstype nfsv3_type[];
} while (0)
int nfs_adv(struct mbuf **, caddr_t *, int, int);
void nfsm_build_xx(void **a, int s, struct mbuf **mb, caddr_t *bpos);
void *nfsm_build_xx(int s, struct mbuf **mb, caddr_t *bpos);
int nfsm_dissect_xx(void **a, int s, struct mbuf **md, caddr_t *dpos);
int nfsm_strsiz_xx(int *s, int m, u_int32_t **tl, struct mbuf **mb,
caddr_t *bpos);
@ -64,11 +64,8 @@ int nfsm_adv_xx(int s, u_int32_t **tl, struct mbuf **md, caddr_t *dpos);
u_quad_t nfs_curusec(void);
int nfsm_disct(struct mbuf **, caddr_t *, int, int, caddr_t *);
#define nfsm_build(a, c, s) \
do { \
nfsm_build_xx((void **)&(a), (s), &mb, &bpos); \
} while (0)
#define nfsm_build(c, s) \
(c)nfsm_build_xx((s), &mb, &bpos); \
/* XXX 'c' arg (type) is not used */
#define nfsm_dissect(a, c, s) \

View File

@ -183,7 +183,7 @@ nfsm_rpchead(struct ucred *cr, int nmflag, int procid, int auth_type,
/*
* First the RPC header.
*/
nfsm_build(tl, u_int32_t *, 8 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 8 * NFSX_UNSIGNED);
/* Get a pretty random xid to start with */
if (!nfs_xid)
@ -213,7 +213,7 @@ nfsm_rpchead(struct ucred *cr, int nmflag, int procid, int auth_type,
*tl = txdr_unsigned(authsiz);
switch (auth_type) {
case RPCAUTH_UNIX:
nfsm_build(tl, u_int32_t *, auth_len);
tl = nfsm_build(u_int32_t *, auth_len);
*tl++ = 0; /* stamp ?? */
*tl++ = 0; /* NULL hostname */
*tl++ = txdr_unsigned(cr->cr_uid);
@ -228,7 +228,7 @@ nfsm_rpchead(struct ucred *cr, int nmflag, int procid, int auth_type,
/*
* And the verifier...
*/
nfsm_build(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 2 * NFSX_UNSIGNED);
*tl++ = txdr_unsigned(RPCAUTH_NULL);
*tl = 0;
mb->m_next = mrest;
@ -948,7 +948,7 @@ nfsm_strtom_xx(const char *a, int s, int m,
return ENAMETOOLONG;
t1 = nfsm_rndup(s) + NFSX_UNSIGNED;
if (t1 <= M_TRAILINGSPACE(*mb)) {
nfsm_build_xx((void **)tl, t1, mb, bpos);
*tl = nfsm_build_xx(t1, mb, bpos);
*(*tl)++ = txdr_unsigned(s);
*((*tl) + ((t1 >> 2) - 2)) = 0;
bcopy(a, *tl, s);
@ -970,7 +970,7 @@ nfsm_fhtom_xx(struct vnode *v, int v3,
if (v3) {
t1 = nfsm_rndup(VTONFS(v)->n_fhsize) + NFSX_UNSIGNED;
if (t1 < M_TRAILINGSPACE(*mb)) {
nfsm_build_xx((void **)tl, t1, mb, bpos);
*tl = nfsm_build_xx(t1, mb, bpos);
*(*tl)++ = txdr_unsigned(VTONFS(v)->n_fhsize);
*((*tl) + ((t1 >> 2) - 2)) = 0;
bcopy(VTONFS(v)->n_fhp, *tl, VTONFS(v)->n_fhsize);
@ -982,7 +982,7 @@ nfsm_fhtom_xx(struct vnode *v, int v3,
return t1;
}
} else {
nfsm_build_xx((void **)&cp, NFSX_V2FH, mb, bpos);
cp = nfsm_build_xx(NFSX_V2FH, mb, bpos);
bcopy(VTONFS(v)->n_fhp, cp, NFSX_V2FH);
}
return 0;
@ -994,61 +994,61 @@ nfsm_v3attrbuild_xx(struct vattr *va, int full,
{
if (va->va_mode != (mode_t)VNOVAL) {
nfsm_build_xx((void **)tl, 2 * NFSX_UNSIGNED, mb, bpos);
*tl = nfsm_build_xx(2 * NFSX_UNSIGNED, mb, bpos);
*(*tl)++ = nfs_true;
**tl = txdr_unsigned(va->va_mode);
} else {
nfsm_build_xx((void **)tl, NFSX_UNSIGNED, mb, bpos);
*tl = nfsm_build_xx(NFSX_UNSIGNED, mb, bpos);
**tl = nfs_false;
}
if (full && va->va_uid != (uid_t)VNOVAL) {
nfsm_build_xx((void **)tl, 2 * NFSX_UNSIGNED, mb, bpos);
*tl = nfsm_build_xx(2 * NFSX_UNSIGNED, mb, bpos);
*(*tl)++ = nfs_true;
**tl = txdr_unsigned(va->va_uid);
} else {
nfsm_build_xx((void **)tl, NFSX_UNSIGNED, mb, bpos);
*tl = nfsm_build_xx(NFSX_UNSIGNED, mb, bpos);
**tl = nfs_false;
}
if (full && va->va_gid != (gid_t)VNOVAL) {
nfsm_build_xx((void **)tl, 2 * NFSX_UNSIGNED, mb, bpos);
*tl = nfsm_build_xx(2 * NFSX_UNSIGNED, mb, bpos);
*(*tl)++ = nfs_true;
**tl = txdr_unsigned(va->va_gid);
} else {
nfsm_build_xx((void **)tl, NFSX_UNSIGNED, mb, bpos);
*tl = nfsm_build_xx(NFSX_UNSIGNED, mb, bpos);
**tl = nfs_false;
}
if (full && va->va_size != VNOVAL) {
nfsm_build_xx((void **)tl, 3 * NFSX_UNSIGNED, mb, bpos);
*tl = nfsm_build_xx(3 * NFSX_UNSIGNED, mb, bpos);
*(*tl)++ = nfs_true;
txdr_hyper(va->va_size, *tl);
} else {
nfsm_build_xx((void **)tl, NFSX_UNSIGNED, mb, bpos);
*tl = nfsm_build_xx(NFSX_UNSIGNED, mb, bpos);
**tl = nfs_false;
}
if (va->va_atime.tv_sec != VNOVAL) {
if (va->va_atime.tv_sec != time_second) {
nfsm_build_xx((void **)tl, 3 * NFSX_UNSIGNED, mb, bpos);
*tl = nfsm_build_xx(3 * NFSX_UNSIGNED, mb, bpos);
*(*tl)++ = txdr_unsigned(NFSV3SATTRTIME_TOCLIENT);
txdr_nfsv3time(&va->va_atime, *tl);
} else {
nfsm_build_xx((void **)tl, NFSX_UNSIGNED, mb, bpos);
*tl = nfsm_build_xx(NFSX_UNSIGNED, mb, bpos);
**tl = txdr_unsigned(NFSV3SATTRTIME_TOSERVER);
}
} else {
nfsm_build_xx((void **)tl, NFSX_UNSIGNED, mb, bpos);
*tl = nfsm_build_xx(NFSX_UNSIGNED, mb, bpos);
**tl = txdr_unsigned(NFSV3SATTRTIME_DONTCHANGE);
}
if (va->va_mtime.tv_sec != VNOVAL) {
if (va->va_mtime.tv_sec != time_second) {
nfsm_build_xx((void **)tl, 3 * NFSX_UNSIGNED, mb, bpos);
*tl = nfsm_build_xx(3 * NFSX_UNSIGNED, mb, bpos);
*(*tl)++ = txdr_unsigned(NFSV3SATTRTIME_TOCLIENT);
txdr_nfsv3time(&va->va_mtime, *tl);
} else {
nfsm_build_xx((void **)tl, NFSX_UNSIGNED, mb, bpos);
*tl = nfsm_build_xx(NFSX_UNSIGNED, mb, bpos);
**tl = txdr_unsigned(NFSV3SATTRTIME_TOSERVER);
}
} else {
nfsm_build_xx((void **)tl, NFSX_UNSIGNED, mb, bpos);
*tl = nfsm_build_xx(NFSX_UNSIGNED, mb, bpos);
**tl = txdr_unsigned(NFSV3SATTRTIME_DONTCHANGE);
}
}

View File

@ -278,7 +278,7 @@ nfs3_access_otw(struct vnode *vp, int wmode, struct thread *td,
mb = mreq;
bpos = mtod(mb, caddr_t);
nfsm_fhtom(vp, v3);
nfsm_build(tl, u_int32_t *, NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, NFSX_UNSIGNED);
*tl = txdr_unsigned(wmode);
nfsm_request(vp, NFSPROC_ACCESS, td, cred);
nfsm_postop_attr(vp, attrflag);
@ -694,10 +694,10 @@ nfs_setattrrpc(struct vnode *vp, struct vattr *vap, struct ucred *cred,
nfsm_fhtom(vp, v3);
if (v3) {
nfsm_v3attrbuild(vap, TRUE);
nfsm_build(tl, u_int32_t *, NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, NFSX_UNSIGNED);
*tl = nfs_false;
} else {
nfsm_build(sp, struct nfsv2_sattr *, NFSX_V2SATTR);
sp = nfsm_build(struct nfsv2_sattr *, NFSX_V2SATTR);
if (vap->va_mode == (mode_t)VNOVAL)
sp->sa_mode = nfs_xdrneg1;
else
@ -1024,7 +1024,7 @@ nfs_readrpc(struct vnode *vp, struct uio *uiop, struct ucred *cred)
mb = mreq;
bpos = mtod(mb, caddr_t);
nfsm_fhtom(vp, v3);
nfsm_build(tl, u_int32_t *, NFSX_UNSIGNED * 3);
tl = nfsm_build(u_int32_t *, NFSX_UNSIGNED * 3);
if (v3) {
txdr_hyper(uiop->uio_offset, tl);
*(tl + 2) = txdr_unsigned(len);
@ -1090,7 +1090,7 @@ nfs_writerpc(struct vnode *vp, struct uio *uiop, struct ucred *cred,
bpos = mtod(mb, caddr_t);
nfsm_fhtom(vp, v3);
if (v3) {
nfsm_build(tl, u_int32_t *, 5 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 5 * NFSX_UNSIGNED);
txdr_hyper(uiop->uio_offset, tl);
tl += 2;
*tl++ = txdr_unsigned(len);
@ -1099,7 +1099,7 @@ nfs_writerpc(struct vnode *vp, struct uio *uiop, struct ucred *cred,
} else {
u_int32_t x;
nfsm_build(tl, u_int32_t *, 4 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 4 * NFSX_UNSIGNED);
/* Set both "begin" and "current" to non-garbage. */
x = txdr_unsigned((u_int32_t)uiop->uio_offset);
*tl++ = x; /* "begin offset" */
@ -1207,16 +1207,16 @@ nfs_mknodrpc(struct vnode *dvp, struct vnode **vpp, struct componentname *cnp,
nfsm_fhtom(dvp, v3);
nfsm_strtom(cnp->cn_nameptr, cnp->cn_namelen, NFS_MAXNAMLEN);
if (v3) {
nfsm_build(tl, u_int32_t *, NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, NFSX_UNSIGNED);
*tl++ = vtonfsv3_type(vap->va_type);
nfsm_v3attrbuild(vap, FALSE);
if (vap->va_type == VCHR || vap->va_type == VBLK) {
nfsm_build(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 2 * NFSX_UNSIGNED);
*tl++ = txdr_unsigned(umajor(vap->va_rdev));
*tl = txdr_unsigned(uminor(vap->va_rdev));
}
} else {
nfsm_build(sp, struct nfsv2_sattr *, NFSX_V2SATTR);
sp = nfsm_build(struct nfsv2_sattr *, NFSX_V2SATTR);
sp->sa_mode = vtonfsv2_mode(vap->va_type, vap->va_mode);
sp->sa_uid = nfs_xdrneg1;
sp->sa_gid = nfs_xdrneg1;
@ -1308,10 +1308,10 @@ nfs_create(struct vop_create_args *ap)
nfsm_fhtom(dvp, v3);
nfsm_strtom(cnp->cn_nameptr, cnp->cn_namelen, NFS_MAXNAMLEN);
if (v3) {
nfsm_build(tl, u_int32_t *, NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, NFSX_UNSIGNED);
if (fmode & O_EXCL) {
*tl = txdr_unsigned(NFSV3CREATE_EXCLUSIVE);
nfsm_build(tl, u_int32_t *, NFSX_V3CREATEVERF);
tl = nfsm_build(u_int32_t *, NFSX_V3CREATEVERF);
#ifdef INET
if (!TAILQ_EMPTY(&in_ifaddrhead))
*tl++ = IA_SIN(TAILQ_FIRST(&in_ifaddrhead))->sin_addr.s_addr;
@ -1324,7 +1324,7 @@ nfs_create(struct vop_create_args *ap)
nfsm_v3attrbuild(vap, FALSE);
}
} else {
nfsm_build(sp, struct nfsv2_sattr *, NFSX_V2SATTR);
sp = nfsm_build(struct nfsv2_sattr *, NFSX_V2SATTR);
sp->sa_mode = vtonfsv2_mode(vap->va_type, vap->va_mode);
sp->sa_uid = nfs_xdrneg1;
sp->sa_gid = nfs_xdrneg1;
@ -1702,7 +1702,7 @@ nfs_symlink(struct vop_symlink_args *ap)
}
nfsm_strtom(ap->a_target, slen, NFS_MAXPATHLEN);
if (!v3) {
nfsm_build(sp, struct nfsv2_sattr *, NFSX_V2SATTR);
sp = nfsm_build(struct nfsv2_sattr *, NFSX_V2SATTR);
sp->sa_mode = vtonfsv2_mode(VLNK, vap->va_mode);
sp->sa_uid = nfs_xdrneg1;
sp->sa_gid = nfs_xdrneg1;
@ -1800,7 +1800,7 @@ nfs_mkdir(struct vop_mkdir_args *ap)
if (v3) {
nfsm_v3attrbuild(vap, FALSE);
} else {
nfsm_build(sp, struct nfsv2_sattr *, NFSX_V2SATTR);
sp = nfsm_build(struct nfsv2_sattr *, NFSX_V2SATTR);
sp->sa_mode = vtonfsv2_mode(VDIR, vap->va_mode);
sp->sa_uid = nfs_xdrneg1;
sp->sa_gid = nfs_xdrneg1;
@ -1971,13 +1971,13 @@ nfs_readdirrpc(struct vnode *vp, struct uio *uiop, struct ucred *cred)
bpos = mtod(mb, caddr_t);
nfsm_fhtom(vp, v3);
if (v3) {
nfsm_build(tl, u_int32_t *, 5 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 5 * NFSX_UNSIGNED);
*tl++ = cookie.nfsuquad[0];
*tl++ = cookie.nfsuquad[1];
*tl++ = dnp->n_cookieverf.nfsuquad[0];
*tl++ = dnp->n_cookieverf.nfsuquad[1];
} else {
nfsm_build(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 2 * NFSX_UNSIGNED);
*tl++ = cookie.nfsuquad[0];
}
*tl = txdr_unsigned(nmp->nm_readdirsize);
@ -2162,7 +2162,7 @@ nfs_readdirplusrpc(struct vnode *vp, struct uio *uiop, struct ucred *cred)
mb = mreq;
bpos = mtod(mb, caddr_t);
nfsm_fhtom(vp, 1);
nfsm_build(tl, u_int32_t *, 6 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 6 * NFSX_UNSIGNED);
*tl++ = cookie.nfsuquad[0];
*tl++ = cookie.nfsuquad[1];
*tl++ = dnp->n_cookieverf.nfsuquad[0];
@ -2493,7 +2493,7 @@ nfs_commit(struct vnode *vp, u_quad_t offset, int cnt, struct ucred *cred,
mb = mreq;
bpos = mtod(mb, caddr_t);
nfsm_fhtom(vp, 1);
nfsm_build(tl, u_int32_t *, 3 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 3 * NFSX_UNSIGNED);
txdr_hyper(offset, tl);
tl += 2;
*tl = txdr_unsigned(cnt);

View File

@ -219,7 +219,7 @@ nfsrv3_access(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
vp = NULL;
nfsm_reply(NFSX_POSTOPATTR(1) + NFSX_UNSIGNED);
nfsm_srvpostop_attr(getret, vap);
nfsm_build(tl, u_int32_t *, NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, NFSX_UNSIGNED);
*tl = txdr_unsigned(nfsmode);
nfsmout:
if (vp)
@ -266,7 +266,8 @@ nfsrv_getattr(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
error = 0;
goto nfsmout;
}
nfsm_build(fp, struct nfs_fattr *, NFSX_FATTR(nfsd->nd_flag & ND_NFSV3));
fp = nfsm_build(struct nfs_fattr *,
NFSX_FATTR(nfsd->nd_flag & ND_NFSV3));
nfsm_srvfillattr(vap, fp);
/* fall through */
@ -420,7 +421,7 @@ nfsrv_setattr(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
goto nfsmout;
} else {
/* v2 non-error case (see nfsm_reply). */
nfsm_build(fp, struct nfs_fattr *, NFSX_V2FATTR);
fp = nfsm_build(struct nfs_fattr *, NFSX_V2FATTR);
nfsm_srvfillattr(vap, fp);
}
/* fall through */
@ -607,7 +608,7 @@ nfsrv_lookup(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
nfsm_srvpostop_attr(0, vap);
nfsm_srvpostop_attr(dirattr_ret, &dirattr);
} else {
nfsm_build(fp, struct nfs_fattr *, NFSX_V2FATTR);
fp = nfsm_build(struct nfs_fattr *, NFSX_V2FATTR);
nfsm_srvfillattr(vap, fp);
}
@ -716,7 +717,7 @@ nfsrv_readlink(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
tlen = nfsm_rndup(len);
nfsm_adj(mp3, NFS_MAXPATHLEN-tlen, tlen-len);
}
nfsm_build(tl, u_int32_t *, NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, NFSX_UNSIGNED);
*tl = txdr_unsigned(len);
mb->m_next = mp3;
mp3 = NULL;
@ -878,12 +879,12 @@ nfsrv_read(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
nfsm_reply(NFSX_POSTOPORFATTR(v3) + 3 * NFSX_UNSIGNED+nfsm_rndup(cnt));
if (v3) {
nfsm_build(tl, u_int32_t *, NFSX_V3FATTR + 4 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, NFSX_V3FATTR + 4 * NFSX_UNSIGNED);
*tl++ = nfs_true;
fp = (struct nfs_fattr *)tl;
tl += (NFSX_V3FATTR / sizeof (u_int32_t));
} else {
nfsm_build(tl, u_int32_t *, NFSX_V2FATTR + NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, NFSX_V2FATTR + NFSX_UNSIGNED);
fp = (struct nfs_fattr *)tl;
tl += (NFSX_V2FATTR / sizeof (u_int32_t));
}
@ -1158,7 +1159,7 @@ nfsrv_write(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
error = 0;
goto nfsmout;
}
nfsm_build(tl, u_int32_t *, 4 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 4 * NFSX_UNSIGNED);
*tl++ = txdr_unsigned(retlen);
/*
* If nfs_async is set, then pretend the write was FILESYNC.
@ -1178,7 +1179,7 @@ nfsrv_write(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
*tl = txdr_unsigned(nfsver.tv_usec);
} else {
/* v2, non-error case (see nfsm_reply). */
nfsm_build(fp, struct nfs_fattr *, NFSX_V2FATTR);
fp = nfsm_build(struct nfs_fattr *, NFSX_V2FATTR);
nfsm_srvfillattr(vap, fp);
}
nfsmout:
@ -1455,7 +1456,7 @@ nfsrv_writegather(struct nfsrv_descript **ndp, struct nfssvc_sock *slp,
NFSX_WRITEVERF(v3));
if (v3) {
nfsm_srvwcc_data(forat_ret, &forat, aftat_ret, &va);
nfsm_build(tl, u_int32_t *, 4 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 4 * NFSX_UNSIGNED);
*tl++ = txdr_unsigned(nfsd->nd_len);
*tl++ = txdr_unsigned(swp->nd_stable);
/*
@ -1468,7 +1469,7 @@ nfsrv_writegather(struct nfsrv_descript **ndp, struct nfssvc_sock *slp,
*tl++ = txdr_unsigned(nfsver.tv_sec);
*tl = txdr_unsigned(nfsver.tv_usec);
} else {
nfsm_build(fp, struct nfs_fattr *, NFSX_V2FATTR);
fp = nfsm_build(struct nfs_fattr *, NFSX_V2FATTR);
nfsm_srvfillattr(&va, fp);
}
}
@ -1828,7 +1829,7 @@ nfsrv_create(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
} else {
/* v2 non-error case (see nfsm_reply). */
nfsm_srvfhtom(fhp, v3);
nfsm_build(fp, struct nfs_fattr *, NFSX_V2FATTR);
fp = nfsm_build(struct nfs_fattr *, NFSX_V2FATTR);
nfsm_srvfillattr(vap, fp);
}
goto nfsmout;
@ -2793,7 +2794,7 @@ nfsrv_mkdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
} else {
/* v2, non-error case (see nfsm_reply) */
nfsm_srvfhtom(fhp, v3);
nfsm_build(fp, struct nfs_fattr *, NFSX_V2FATTR);
fp = nfsm_build(struct nfs_fattr *, NFSX_V2FATTR);
nfsm_srvfillattr(vap, fp);
}
error = 0;
@ -3115,11 +3116,11 @@ nfsrv_readdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
2 * NFSX_UNSIGNED);
if (v3) {
nfsm_srvpostop_attr(getret, &at);
nfsm_build(tl, u_int32_t *, 4 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 4 * NFSX_UNSIGNED);
txdr_hyper(at.va_filerev, tl);
tl += 2;
} else
nfsm_build(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 2 * NFSX_UNSIGNED);
*tl++ = nfs_false;
*tl = nfs_true;
FREE((caddr_t)rbuf, M_TEMP);
@ -3162,7 +3163,7 @@ nfsrv_readdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
nfsm_reply(NFSX_POSTOPATTR(v3) + NFSX_COOKIEVERF(v3) + siz);
if (v3) {
nfsm_srvpostop_attr(getret, &at);
nfsm_build(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 2 * NFSX_UNSIGNED);
txdr_hyper(at.va_filerev, tl);
}
mp = mb;
@ -3387,7 +3388,7 @@ nfsrv_readdirplus(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
nfsm_reply(NFSX_V3POSTOPATTR + NFSX_V3COOKIEVERF +
2 * NFSX_UNSIGNED);
nfsm_srvpostop_attr(getret, &at);
nfsm_build(tl, u_int32_t *, 4 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 4 * NFSX_UNSIGNED);
txdr_hyper(at.va_filerev, tl);
tl += 2;
*tl++ = nfs_false;
@ -3446,10 +3447,11 @@ nfsrv_readdirplus(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
vput(nvp);
nvp = NULL;
dirlen = len = NFSX_V3POSTOPATTR + NFSX_V3COOKIEVERF + 2 * NFSX_UNSIGNED;
dirlen = len = NFSX_V3POSTOPATTR + NFSX_V3COOKIEVERF +
2 * NFSX_UNSIGNED;
nfsm_reply(cnt);
nfsm_srvpostop_attr(getret, &at);
nfsm_build(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 2 * NFSX_UNSIGNED);
txdr_hyper(at.va_filerev, tl);
mp = mb;
bp = bpos;
@ -3719,7 +3721,7 @@ nfsrv_commit(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
nfsm_reply(NFSX_V3WCCDATA + NFSX_V3WRITEVERF);
nfsm_srvwcc_data(for_ret, &bfor, aft_ret, &aft);
if (!error) {
nfsm_build(tl, u_int32_t *, NFSX_V3WRITEVERF);
tl = nfsm_build(u_int32_t *, NFSX_V3WRITEVERF);
if (nfsver.tv_sec == 0)
nfsver = boottime;
*tl++ = txdr_unsigned(nfsver.tv_sec);
@ -3782,7 +3784,7 @@ nfsrv_statfs(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
error = 0;
goto nfsmout;
}
nfsm_build(sfp, struct nfs_statfs *, NFSX_STATFS(v3));
sfp = nfsm_build(struct nfs_statfs *, NFSX_STATFS(v3));
if (v3) {
tval = (u_quad_t)sf->f_blocks;
tval *= (u_quad_t)sf->f_bsize;
@ -3859,7 +3861,7 @@ nfsrv_fsinfo(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
vp = NULL;
nfsm_reply(NFSX_V3POSTOPATTR + NFSX_V3FSINFO);
nfsm_srvpostop_attr(getret, &at);
nfsm_build(sip, struct nfsv3_fsinfo *, NFSX_V3FSINFO);
sip = nfsm_build(struct nfsv3_fsinfo *, NFSX_V3FSINFO);
/*
* XXX
@ -3940,7 +3942,7 @@ nfsrv_pathconf(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
error = 0;
goto nfsmout;
}
nfsm_build(pc, struct nfsv3_pathconf *, NFSX_V3PATHCONF);
pc = nfsm_build(struct nfsv3_pathconf *, NFSX_V3PATHCONF);
pc->pc_linkmax = txdr_unsigned(linkmax);
pc->pc_namemax = txdr_unsigned(namemax);

View File

@ -191,7 +191,7 @@ nfs_rephead(int siz, struct nfsrv_descript *nd, struct nfssvc_sock *slp,
break;
case EPROGMISMATCH:
*tl = txdr_unsigned(RPC_PROGMISMATCH);
nfsm_build(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 2 * NFSX_UNSIGNED);
*tl++ = txdr_unsigned(2);
*tl = txdr_unsigned(3);
break;
@ -204,7 +204,7 @@ nfs_rephead(int siz, struct nfsrv_descript *nd, struct nfssvc_sock *slp,
default:
*tl = 0;
if (err != NFSERR_RETVOID) {
nfsm_build(tl, u_int32_t *, NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, NFSX_UNSIGNED);
if (err)
*tl = txdr_unsigned(nfsrv_errmap(nd, err));
else

View File

@ -931,10 +931,10 @@ nfsm_srvwcc(struct nfsrv_descript *nfsd, int before_ret,
u_int32_t *tl;
if (before_ret) {
nfsm_build(tl, u_int32_t *, NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, NFSX_UNSIGNED);
*tl = nfs_false;
} else {
nfsm_build(tl, u_int32_t *, 7 * NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, 7 * NFSX_UNSIGNED);
*tl++ = nfs_true;
txdr_hyper(before_vap->va_size, tl);
tl += 2;
@ -957,10 +957,10 @@ nfsm_srvpostopattr(struct nfsrv_descript *nfsd, int after_ret,
struct nfs_fattr *fp;
if (after_ret) {
nfsm_build(tl, u_int32_t *, NFSX_UNSIGNED);
tl = nfsm_build(u_int32_t *, NFSX_UNSIGNED);
*tl = nfs_false;
} else {
nfsm_build(tl, u_int32_t *, NFSX_UNSIGNED + NFSX_V3FATTR);
tl = nfsm_build(u_int32_t *, NFSX_UNSIGNED + NFSX_V3FATTR);
*tl++ = nfs_true;
fp = (struct nfs_fattr *)tl;
nfsm_srvfattr(nfsd, after_vap, fp);
@ -1208,12 +1208,11 @@ nfsm_srvfhtom_xx(fhandle_t *f, int v3,
u_int32_t *cp;
if (v3) {
nfsm_build_xx((void **)tl, NFSX_UNSIGNED + NFSX_V3FH, mb,
bpos);
*tl = nfsm_build_xx(NFSX_UNSIGNED + NFSX_V3FH, mb, bpos);
*(*tl)++ = txdr_unsigned(NFSX_V3FH);
bcopy(f, (*tl), NFSX_V3FH);
} else {
nfsm_build_xx((void **)&cp, NFSX_V2FH, mb, bpos);
cp = nfsm_build_xx(NFSX_V2FH, mb, bpos);
bcopy(f, cp, NFSX_V2FH);
}
}
@ -1222,7 +1221,8 @@ void
nfsm_srvpostop_fh_xx(fhandle_t *f,
u_int32_t **tl, struct mbuf **mb, caddr_t *bpos)
{
nfsm_build_xx((void **)tl, 2 * NFSX_UNSIGNED + NFSX_V3FH, mb, bpos);
*tl = nfsm_build_xx(2 * NFSX_UNSIGNED + NFSX_V3FH, mb, bpos);
*(*tl)++ = nfs_true;
*(*tl)++ = txdr_unsigned(NFSX_V3FH);
bcopy(f, (*tl), NFSX_V3FH);