Lines Matching refs:nd
306 static void nfsrvd_compound(struct nfsrv_descript *nd, int isdgram,
352 nfsrvd_dorpc(struct nfsrv_descript *nd, int isdgram, in nfsrvd_dorpc() argument
364 if (!(nd->nd_flag & ND_NFSV4)) { in nfsrvd_dorpc()
365 KASSERT(nd->nd_repstat == 0, ("nfsrvd_dorpc")); in nfsrvd_dorpc()
370 if ((nd->nd_flag & ND_NFSV3) && nfsrv_mallocmget_limit()) { in nfsrvd_dorpc()
371 nd->nd_repstat = NFSERR_DELAY; in nfsrvd_dorpc()
374 error = nfsrv_mtofh(nd, &fh); in nfsrvd_dorpc()
378 nd->nd_repstat = NFSERR_GARBAGE; in nfsrvd_dorpc()
381 if (nd->nd_procnum == NFSPROC_READ || in nfsrvd_dorpc()
382 nd->nd_procnum == NFSPROC_WRITE || in nfsrvd_dorpc()
383 nd->nd_procnum == NFSPROC_READDIR || in nfsrvd_dorpc()
384 nd->nd_procnum == NFSPROC_READLINK || in nfsrvd_dorpc()
385 nd->nd_procnum == NFSPROC_GETATTR || in nfsrvd_dorpc()
386 nd->nd_procnum == NFSPROC_ACCESS) in nfsrvd_dorpc()
390 if (nd->nd_flag & ND_PUBLOOKUP) in nfsrvd_dorpc()
391 nfsd_fhtovp(nd, &nfs_pubfh, lktype, &vp, &nes, in nfsrvd_dorpc()
392 &mp, nfs_writerpc[nd->nd_procnum], p); in nfsrvd_dorpc()
394 nfsd_fhtovp(nd, &fh, lktype, &vp, &nes, in nfsrvd_dorpc()
395 &mp, nfs_writerpc[nd->nd_procnum], p); in nfsrvd_dorpc()
396 if (nd->nd_repstat == NFSERR_PROGNOTV4) in nfsrvd_dorpc()
406 if (!(nd->nd_flag & ND_NFSV4) && nfsrv_nonidempotent[nd->nd_procnum]) in nfsrvd_dorpc()
407 nd->nd_flag |= ND_SAVEREPLY; in nfsrvd_dorpc()
409 nfsrvd_rephead(nd); in nfsrvd_dorpc()
415 if (nd->nd_repstat && (nd->nd_flag & ND_NFSV2)) { in nfsrvd_dorpc()
416 *nd->nd_errp = nfsd_errmap(nd); in nfsrvd_dorpc()
417 NFSINCRGLOBAL(newnfsstats.srvrpccnt[nfsv3to4op[nd->nd_procnum]]); in nfsrvd_dorpc()
418 if (mp != NULL && nfs_writerpc[nd->nd_procnum] != 0) in nfsrvd_dorpc()
429 if (nd->nd_flag & ND_NFSV4) { in nfsrvd_dorpc()
430 nfsrvd_compound(nd, isdgram, p); in nfsrvd_dorpc()
432 if (nfs_retfh[nd->nd_procnum] == 1) { in nfsrvd_dorpc()
435 error = (*(nfsrv3_procs1[nd->nd_procnum]))(nd, isdgram, in nfsrvd_dorpc()
437 } else if (nfs_retfh[nd->nd_procnum] == 2) { in nfsrvd_dorpc()
438 error = (*(nfsrv3_procs2[nd->nd_procnum]))(nd, isdgram, in nfsrvd_dorpc()
441 error = (*(nfsrv3_procs0[nd->nd_procnum]))(nd, isdgram, in nfsrvd_dorpc()
444 if (mp != NULL && nfs_writerpc[nd->nd_procnum] != 0) in nfsrvd_dorpc()
446 NFSINCRGLOBAL(newnfsstats.srvrpccnt[nfsv3to4op[nd->nd_procnum]]); in nfsrvd_dorpc()
451 nd->nd_repstat = NFSERR_GARBAGE; in nfsrvd_dorpc()
453 *nd->nd_errp = nfsd_errmap(nd); in nfsrvd_dorpc()
458 if (nd->nd_repstat && (nd->nd_flag & ND_SAVEREPLY) && in nfsrvd_dorpc()
459 (nd->nd_repstat == NFSERR_GARBAGE || in nfsrvd_dorpc()
460 nd->nd_repstat == NFSERR_BADXDR || in nfsrvd_dorpc()
461 nd->nd_repstat == NFSERR_MOVED || in nfsrvd_dorpc()
462 nd->nd_repstat == NFSERR_DELAY || in nfsrvd_dorpc()
463 nd->nd_repstat == NFSERR_BADSEQID || in nfsrvd_dorpc()
464 nd->nd_repstat == NFSERR_RESOURCE || in nfsrvd_dorpc()
465 nd->nd_repstat == NFSERR_SERVERFAULT || in nfsrvd_dorpc()
466 nd->nd_repstat == NFSERR_STALECLIENTID || in nfsrvd_dorpc()
467 nd->nd_repstat == NFSERR_STALESTATEID || in nfsrvd_dorpc()
468 nd->nd_repstat == NFSERR_OLDSTATEID || in nfsrvd_dorpc()
469 nd->nd_repstat == NFSERR_BADSTATEID || in nfsrvd_dorpc()
470 nd->nd_repstat == NFSERR_GRACE || in nfsrvd_dorpc()
471 nd->nd_repstat == NFSERR_NOGRACE)) in nfsrvd_dorpc()
472 nd->nd_flag &= ~ND_SAVEREPLY; in nfsrvd_dorpc()
475 NFSEXITCODE2(0, nd); in nfsrvd_dorpc()
485 nfsrvd_compound(struct nfsrv_descript *nd, int isdgram, in nfsrvd_compound() argument
512 nd->nd_compref = compref++; in nfsrvd_compound()
608 error = nfsrv_mtostr(nd, tagstr, taglen); in nfsrvd_compound()
615 (void) nfsm_strtom(nd, tag, taglen); in nfsrvd_compound()
623 nd->nd_repstat = NFSERR_MINORVERMISMATCH; in nfsrvd_compound()
624 if (nd->nd_repstat) in nfsrvd_compound()
642 nd->nd_repstat = NFSERR_OPILLEGAL; in nfsrvd_compound()
644 *repp = nfsd_errmap(nd); in nfsrvd_compound()
658 nd->nd_repstat = NFSERR_MOVED; in nfsrvd_compound()
659 *repp = nfsd_errmap(nd); in nfsrvd_compound()
664 nd->nd_procnum = op; in nfsrvd_compound()
675 if (i == 0 && nd->nd_rp->rc_refcnt == 0 && in nfsrvd_compound()
681 nd->nd_repstat = NFSERR_RESOURCE; in nfsrvd_compound()
682 *repp = nfsd_errmap(nd); in nfsrvd_compound()
695 nd->nd_flag |= ND_SAVEREPLY; in nfsrvd_compound()
696 NFSINCRGLOBAL(newnfsstats.srvrpccnt[nd->nd_procnum]); in nfsrvd_compound()
699 error = nfsrv_mtofh(nd, &fh); in nfsrvd_compound()
702 if (!nd->nd_repstat) in nfsrvd_compound()
703 nfsd_fhtovp(nd, &fh, LK_SHARED, &nvp, &nes, in nfsrvd_compound()
706 if (!nd->nd_repstat) { in nfsrvd_compound()
717 nfsd_fhtovp(nd, &nfs_pubfh, LK_SHARED, &nvp, in nfsrvd_compound()
720 nd->nd_repstat = NFSERR_NOFILEHANDLE; in nfsrvd_compound()
721 if (!nd->nd_repstat) { in nfsrvd_compound()
732 nfsd_fhtovp(nd, &nfs_rootfh, LK_SHARED, &nvp, in nfsrvd_compound()
734 if (!nd->nd_repstat) { in nfsrvd_compound()
743 nd->nd_repstat = NFSERR_NOFILEHANDLE; in nfsrvd_compound()
747 nd->nd_repstat = 0; in nfsrvd_compound()
758 nd->nd_repstat = NFSERR_NOFILEHANDLE; in nfsrvd_compound()
763 nd->nd_repstat = 0; in nfsrvd_compound()
773 nd->nd_repstat = NFSERR_RESTOREFH; in nfsrvd_compound()
795 nd->nd_repstat = NFSERR_NOFILEHANDLE; in nfsrvd_compound()
796 else if (nfsvno_testexp(nd, &vpnes) && in nfsrvd_compound()
801 nd->nd_repstat = NFSERR_WRONGSEC; in nfsrvd_compound()
802 if (nd->nd_repstat) { in nfsrvd_compound()
817 nd->nd_repstat = NFSERR_NOFILEHANDLE; in nfsrvd_compound()
823 error = (*(nfsrv4_ops1[op]))(nd, isdgram, vp, in nfsrvd_compound()
825 if (!error && !nd->nd_repstat) { in nfsrvd_compound()
833 nd->nd_repstat = nfsvno_checkexp(new_mp, in nfsrvd_compound()
834 nd->nd_nam, &nes, &credanon); in nfsrvd_compound()
835 if (!nd->nd_repstat) in nfsrvd_compound()
836 nd->nd_repstat = nfsd_excred(nd, in nfsrvd_compound()
840 if (!nd->nd_repstat) { in nfsrvd_compound()
848 if (!nd->nd_repstat) { in nfsrvd_compound()
858 nd->nd_repstat = NFSERR_NOFILEHANDLE; in nfsrvd_compound()
862 nd->nd_repstat = NFSERR_XDEV; in nfsrvd_compound()
870 error = (*(nfsrv4_ops2[op]))(nd, isdgram, in nfsrvd_compound()
873 nd->nd_repstat = NFSERR_PERM; in nfsrvd_compound()
888 nd->nd_repstat = NFSERR_PERM; in nfsrvd_compound()
890 nd->nd_repstat = NFSERR_NOFILEHANDLE; in nfsrvd_compound()
903 if (nd->nd_repstat == 0) in nfsrvd_compound()
904 error = (*(nfsrv4_ops0[op]))(nd, in nfsrvd_compound()
909 error = (*(nfsrv4_ops0[op]))(nd, isdgram, in nfsrvd_compound()
916 nd->nd_repstat = NFSERR_BADXDR; in nfsrvd_compound()
918 nd->nd_repstat = error; in nfsrvd_compound()
924 if (nd->nd_repstat) { in nfsrvd_compound()
925 *repp = nfsd_errmap(nd); in nfsrvd_compound()
934 nd->nd_repstat = NFSERR_BADXDR; in nfsrvd_compound()
953 NFSEXITCODE2(0, nd); in nfsrvd_compound()