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_linkargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd3_linkargs *args = rqstp->rq_argp; if (!(p = decode_fh(p, &args->ffh)) || !(p = decode_fh(p, &args->tfh)) || !(p = decode_filename(p, &args->tname, &args->tlen))) return 0; return xdr_argsize_check(rqstp, p); }
int nfs3svc_decode_commitargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd3_commitargs *args = rqstp->rq_argp; p = decode_fh(p, &args->fh); if (!p) return 0; p = xdr_decode_hyper(p, &args->offset); args->count = ntohl(*p++); return xdr_argsize_check(rqstp, p); }
int nfs3svc_decode_accessargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd3_accessargs *args = rqstp->rq_argp; p = decode_fh(p, &args->fh); if (!p) return 0; args->access = ntohl(*p++); return xdr_argsize_check(rqstp, p); }
int nfssvc_decode_symlinkargs(struct svc_rqst *rqstp, u32 *p, struct nfsd_symlinkargs *args) { if (!(p = decode_fh(p, &args->ffh)) || !(p = decode_filename(p, &args->fname, &args->flen)) || !(p = decode_pathname(p, &args->tname, &args->tlen)) || !(p = decode_sattr(p, &args->attrs))) return 0; return xdr_argsize_check(rqstp, p); }
int nlm4svc_decode_reboot(struct svc_rqst *rqstp, __be32 *p, struct nlm_reboot *argp) { if (!(p = xdr_decode_string_inplace(p, &argp->mon, &argp->len, SM_MAXSTRLEN))) return 0; argp->state = ntohl(*p++); /* Preserve the address in network byte order */ argp->addr = *p++; argp->vers = *p++; argp->proto = *p++; return xdr_argsize_check(rqstp, p); }
int nfs3svc_decode_readlinkargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd3_readlinkargs *args = rqstp->rq_argp; p = decode_fh(p, &args->fh); if (!p) return 0; args->buffer = page_address(*(rqstp->rq_next_page++)); return xdr_argsize_check(rqstp, p); }
int nfssvc_decode_renameargs(struct svc_rqst *rqstp, u32 *p, struct nfsd_renameargs *args) { if (!(p = decode_fh(p, &args->ffh)) || !(p = decode_filename(p, &args->fname, &args->flen)) || !(p = decode_fh(p, &args->tfh)) || !(p = decode_filename(p, &args->tname, &args->tlen))) return 0; return xdr_argsize_check(rqstp, p); }
int nfssvc_decode_readargs(struct svc_rqst *rqstp, u32 *p, struct nfsd_readargs *args) { if (!(p = decode_fh(p, &args->fh))) return 0; args->offset = ntohl(*p++); args->count = ntohl(*p++); args->totalsize = ntohl(*p++); return xdr_argsize_check(rqstp, p); }
int nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, u32 *p, struct nfsd3_readdirargs *args) { if (!(p = decode_fh(p, &args->fh))) return 0; p = xdr_decode_hyper(p, &args->cookie); args->verf = p; p += 2; args->dircount = ntohl(*p++); args->count = ntohl(*p++); 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 nfssvc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p, struct nfsd_readdirargs *args) { p = decode_fh(p, &args->fh); if (!p) return 0; args->cookie = ntohl(*p++); args->count = ntohl(*p++); args->count = min_t(u32, args->count, PAGE_SIZE); args->buffer = page_address(*(rqstp->rq_next_page++)); return xdr_argsize_check(rqstp, p); }
int nfssvc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p, struct nfsd_readdirargs *args) { if (!(p = decode_fh(p, &args->fh))) return 0; args->cookie = ntohl(*p++); args->count = ntohl(*p++); if (args->count > PAGE_SIZE) args->count = PAGE_SIZE; args->buffer = page_address(rqstp->rq_respages[rqstp->rq_resused++]); return xdr_argsize_check(rqstp, p); }
int nlmsvc_decode_cancargs(struct svc_rqst *rqstp, __be32 *p, nlm_args *argp) { u32 exclusive; if (!(p = nlm_decode_cookie(p, &argp->cookie))) return 0; argp->block = ntohl(*p++); exclusive = ntohl(*p++); if (!(p = nlm_decode_lock(p, &argp->lock))) return 0; if (exclusive) argp->lock.fl.fl_type = F_WRLCK; return xdr_argsize_check(rqstp, p); }
int nfs3svc_decode_writeargs(struct svc_rqst *rqstp, u32 *p, struct nfsd3_writeargs *args) { if (!(p = decode_fh(p, &args->fh)) || !(p = xdr_decode_hyper(p, &args->offset))) return 0; args->count = ntohl(*p++); args->stable = ntohl(*p++); args->len = ntohl(*p++); args->data = (char *) p; p += XDR_QUADLEN(args->len); return xdr_argsize_check(rqstp, p); }
int nfssvc_decode_writeargs(struct svc_rqst *rqstp, u32 *p, struct nfsd_writeargs *args) { if (!(p = decode_fh(p, &args->fh))) return 0; p++; /* beginoffset */ args->offset = ntohl(*p++); /* offset */ p++; /* totalcount */ args->len = ntohl(*p++); args->data = (char *) p; p += XDR_QUADLEN(args->len); return xdr_argsize_check(rqstp, p); }
/* * First, the server side XDR functions */ int nlm4svc_decode_testargs(struct svc_rqst *rqstp, __be32 *p) { struct nlm_args *argp = rqstp->rq_argp; u32 exclusive; if (!(p = nlm4_decode_cookie(p, &argp->cookie))) return 0; exclusive = ntohl(*p++); if (!(p = nlm4_decode_lock(p, &argp->lock))) return 0; if (exclusive) argp->lock.fl.fl_type = F_WRLCK; 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_readdirargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd3_readdirargs *args = rqstp->rq_argp; u32 max_blocksize = svc_max_payload(rqstp); p = decode_fh(p, &args->fh); if (!p) return 0; p = xdr_decode_hyper(p, &args->cookie); args->verf = p; p += 2; args->dircount = ~0; args->count = ntohl(*p++); args->count = min_t(u32, args->count, max_blocksize); args->buffer = page_address(*(rqstp->rq_next_page++)); return xdr_argsize_check(rqstp, p); }
int nlmsvc_decode_lockargs(struct svc_rqst *rqstp, __be32 *p, nlm_args *argp) { u32 exclusive; if (!(p = nlm_decode_cookie(p, &argp->cookie))) return 0; argp->block = ntohl(*p++); exclusive = ntohl(*p++); if (!(p = nlm_decode_lock(p, &argp->lock))) return 0; if (exclusive) argp->lock.fl.fl_type = F_WRLCK; argp->reclaim = ntohl(*p++); argp->state = ntohl(*p++); argp->monitor = 1; /* monitor client by default */ return xdr_argsize_check(rqstp, p); }
int nlm4svc_decode_shareargs(struct svc_rqst *rqstp, u32 *p, nlm_args *argp) { struct nlm_lock *lock = &argp->lock; memset(lock, 0, sizeof(*lock)); locks_init_lock(&lock->fl); lock->fl.fl_pid = ~(u32) 0; if (!(p = nlm4_decode_cookie(p, &argp->cookie)) || !(p = xdr_decode_string_inplace(p, &lock->caller, &lock->len, NLM_MAXSTRLEN)) || !(p = nlm4_decode_fh(p, &lock->fh)) || !(p = nlm4_decode_oh(p, &lock->oh))) return 0; argp->fsm_mode = ntohl(*p++); argp->fsm_access = ntohl(*p++); 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); }
static void test_sunrpc_svc(void){ u32 val; struct svc_rqst rqstp; char name[50]; struct iovec iov; int bits=0, bits2=0; rqstp.rq_resused=1; svc_getu32(&iov); // svc_putu32(&iov, val); xdr_argsize_check(&rqstp,&val); xdr_ressize_check(&rqstp,&val); svc_take_page(&rqstp); svc_pushback_allpages(&rqstp); svc_pushback_unused_pages(&rqstp); svc_free_allpages(&rqstp); hash_str(name, bits); hash_mem(name, bits, bits2); printk("finished svc test\n"); }
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); }
static int nfs3svc_decode_setaclargs(struct svc_rqst *rqstp, __be32 *p, struct nfsd3_setaclargs *args) { struct kvec *head = rqstp->rq_arg.head; unsigned int base; int n; if (!(p = nfs3svc_decode_fh(p, &args->fh))) return 0; args->mask = ntohl(*p++); if (args->mask & ~(NFS_ACL|NFS_ACLCNT|NFS_DFACL|NFS_DFACLCNT) || !xdr_argsize_check(rqstp, p)) return 0; base = (char *)p - (char *)head->iov_base; n = nfsacl_decode(&rqstp->rq_arg, base, NULL, (args->mask & NFS_ACL) ? &args->acl_access : NULL); if (n > 0) n = nfsacl_decode(&rqstp->rq_arg, base + n, NULL, (args->mask & NFS_DFACL) ? &args->acl_default : NULL); return (n > 0); }
int nlmsvc_decode_void(struct svc_rqst *rqstp, __be32 *p) { return xdr_argsize_check(rqstp, p); }
static int nfs4_decode_void(struct svc_rqst *rqstp, uint32_t *p, void *dummy) { return xdr_argsize_check(rqstp, p); }
/* * XDR decode functions */ int nfssvc_decode_void(struct svc_rqst *rqstp, __be32 *p, void *dummy) { return xdr_argsize_check(rqstp, p); }