int nfs3svc_decode_mkdirargs(struct svc_rqst *rqstp, u32 *p, struct nfsd3_createargs *args) { if (!(p = decode_fh(p, &args->fh)) || !(p = decode_filename(p, &args->name, &args->len)) || !(p = decode_sattr3(p, &args->attrs))) return 0; return xdr_argsize_check(rqstp, p); }
int nfs3svc_decode_symlinkargs(struct svc_rqst *rqstp, u32 *p, struct nfsd3_symlinkargs *args) { if (!(p = decode_fh(p, &args->ffh)) || !(p = decode_filename(p, &args->fname, &args->flen)) || !(p = decode_sattr3(p, &args->attrs)) || !(p = decode_pathname(p, &args->tname, &args->tlen))) return 0; return xdr_argsize_check(rqstp, p); }
int nfs3svc_decode_mkdirargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd3_createargs *args = rqstp->rq_argp; if (!(p = decode_fh(p, &args->fh)) || !(p = decode_filename(p, &args->name, &args->len))) return 0; p = decode_sattr3(p, &args->attrs); return xdr_argsize_check(rqstp, p); }
int nfs3svc_decode_sattrargs(struct svc_rqst *rqstp, u32 *p, struct nfsd3_sattrargs *args) { if (!(p = decode_fh(p, &args->fh)) || !(p = decode_sattr3(p, &args->attrs))) return 0; if ((args->check_guard = ntohl(*p++)) != 0) p = decode_time3(p, &args->guardtime); return xdr_argsize_check(rqstp, p); }
int nfs3svc_decode_sattrargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd3_sattrargs *args = rqstp->rq_argp; p = decode_fh(p, &args->fh); if (!p) return 0; p = decode_sattr3(p, &args->attrs); if ((args->check_guard = ntohl(*p++)) != 0) { struct timespec time; p = decode_time3(p, &time); args->guardtime = time.tv_sec; } return xdr_argsize_check(rqstp, p); }
int nfs3svc_decode_mknodargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd3_mknodargs *args = rqstp->rq_argp; if (!(p = decode_fh(p, &args->fh)) || !(p = decode_filename(p, &args->name, &args->len))) return 0; args->ftype = ntohl(*p++); if (args->ftype == NF3BLK || args->ftype == NF3CHR || args->ftype == NF3SOCK || args->ftype == NF3FIFO) p = decode_sattr3(p, &args->attrs); if (args->ftype == NF3BLK || args->ftype == NF3CHR) { args->major = ntohl(*p++); args->minor = ntohl(*p++); } return xdr_argsize_check(rqstp, p); }
int nfs3svc_decode_createargs(struct svc_rqst *rqstp, u32 *p, struct nfsd3_createargs *args) { if (!(p = decode_fh(p, &args->fh)) || !(p = decode_filename(p, &args->name, &args->len))) return 0; switch (args->createmode = ntohl(*p++)) { case NFS3_CREATE_UNCHECKED: case NFS3_CREATE_GUARDED: if (!(p = decode_sattr3(p, &args->attrs))) return 0; break; case NFS3_CREATE_EXCLUSIVE: args->verf = p; p += 2; break; default: return 0; } return xdr_argsize_check(rqstp, p); }
int nfs3svc_decode_symlinkargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd3_symlinkargs *args = rqstp->rq_argp; char *base = (char *)p; size_t dlen; if (!(p = decode_fh(p, &args->ffh)) || !(p = decode_filename(p, &args->fname, &args->flen))) return 0; p = decode_sattr3(p, &args->attrs); args->tlen = ntohl(*p++); args->first.iov_base = p; args->first.iov_len = rqstp->rq_arg.head[0].iov_len; args->first.iov_len -= (char *)p - base; dlen = args->first.iov_len + rqstp->rq_arg.page_len + rqstp->rq_arg.tail[0].iov_len; if (dlen < XDR_QUADLEN(args->tlen) << 2) return 0; return 1; }