Lines Matching refs:nd

365 static void nfsrvd_compound(struct nfsrv_descript *nd, int isdgram,
411 nfsrvd_dorpc(struct nfsrv_descript *nd, int isdgram, u_char *tag, int taglen,
423 if (!(nd->nd_flag & ND_NFSV4)) {
424 KASSERT(nd->nd_repstat == 0, ("nfsrvd_dorpc"));
429 if ((nd->nd_flag & ND_NFSV3) && nfsrv_mallocmget_limit()) {
430 nd->nd_repstat = NFSERR_DELAY;
433 error = nfsrv_mtofh(nd, &fh);
437 nd->nd_repstat = NFSERR_GARBAGE;
440 if (nd->nd_procnum == NFSPROC_READ ||
441 nd->nd_procnum == NFSPROC_WRITE ||
442 nd->nd_procnum == NFSPROC_READDIR ||
443 nd->nd_procnum == NFSPROC_READDIRPLUS ||
444 nd->nd_procnum == NFSPROC_READLINK ||
445 nd->nd_procnum == NFSPROC_GETATTR ||
446 nd->nd_procnum == NFSPROC_ACCESS ||
447 nd->nd_procnum == NFSPROC_FSSTAT ||
448 nd->nd_procnum == NFSPROC_FSINFO)
452 if (nd->nd_flag & ND_PUBLOOKUP)
453 nfsd_fhtovp(nd, &nfs_pubfh, lktype, &vp, &nes,
454 &mp, nfs_writerpc[nd->nd_procnum], p);
456 nfsd_fhtovp(nd, &fh, lktype, &vp, &nes,
457 &mp, nfs_writerpc[nd->nd_procnum], p);
458 if (nd->nd_repstat == NFSERR_PROGNOTV4)
468 if (!(nd->nd_flag & ND_NFSV4) && nfsrv_nonidempotent[nd->nd_procnum])
469 nd->nd_flag |= ND_SAVEREPLY;
471 nfsrvd_rephead(nd);
477 if (nd->nd_repstat && (nd->nd_flag & ND_NFSV2)) {
478 *nd->nd_errp = nfsd_errmap(nd);
479 NFSINCRGLOBAL(newnfsstats.srvrpccnt[nfsv3to4op[nd->nd_procnum]]);
480 if (mp != NULL && nfs_writerpc[nd->nd_procnum] != 0)
491 if (nd->nd_flag & ND_NFSV4) {
492 nfsrvd_compound(nd, isdgram, tag, taglen, minorvers, p);
494 if (nfs_retfh[nd->nd_procnum] == 1) {
497 error = (*(nfsrv3_procs1[nd->nd_procnum]))(nd, isdgram,
499 } else if (nfs_retfh[nd->nd_procnum] == 2) {
500 error = (*(nfsrv3_procs2[nd->nd_procnum]))(nd, isdgram,
503 error = (*(nfsrv3_procs0[nd->nd_procnum]))(nd, isdgram,
506 if (mp != NULL && nfs_writerpc[nd->nd_procnum] != 0)
508 NFSINCRGLOBAL(newnfsstats.srvrpccnt[nfsv3to4op[nd->nd_procnum]]);
513 nd->nd_repstat = NFSERR_GARBAGE;
515 *nd->nd_errp = nfsd_errmap(nd);
520 if (nd->nd_repstat && (nd->nd_flag & ND_SAVEREPLY) &&
521 (nd->nd_repstat == NFSERR_GARBAGE ||
522 nd->nd_repstat == NFSERR_BADXDR ||
523 nd->nd_repstat == NFSERR_MOVED ||
524 nd->nd_repstat == NFSERR_DELAY ||
525 nd->nd_repstat == NFSERR_BADSEQID ||
526 nd->nd_repstat == NFSERR_RESOURCE ||
527 nd->nd_repstat == NFSERR_SERVERFAULT ||
528 nd->nd_repstat == NFSERR_STALECLIENTID ||
529 nd->nd_repstat == NFSERR_STALESTATEID ||
530 nd->nd_repstat == NFSERR_OLDSTATEID ||
531 nd->nd_repstat == NFSERR_BADSTATEID ||
532 nd->nd_repstat == NFSERR_GRACE ||
533 nd->nd_repstat == NFSERR_NOGRACE))
534 nd->nd_flag &= ~ND_SAVEREPLY;
537 NFSEXITCODE2(0, nd);
547 nfsrvd_compound(struct nfsrv_descript *nd, int isdgram, u_char *tag,
573 nd->nd_compref = compref++;
666 (void) nfsm_strtom(nd, tag, taglen);
670 nd->nd_repstat = NFSERR_MINORVERMISMATCH;
671 if (nd->nd_repstat)
690 (op >= NFSV4OP_NOPS && (nd->nd_flag & ND_NFSV41) == 0) ||
691 (op >= NFSV41_NOPS && (nd->nd_flag & ND_NFSV41) != 0)) {
692 nd->nd_repstat = NFSERR_OPILLEGAL;
694 *repp = nfsd_errmap(nd);
703 nd->nd_flag |= ND_LASTOP;
712 nd->nd_repstat = NFSERR_MOVED;
713 *repp = nfsd_errmap(nd);
722 if ((nd->nd_flag & ND_NFSV41) != 0) {
724 nd->nd_repstat = NFSERR_SEQUENCEPOS;
731 nd->nd_repstat = NFSERR_OPNOTINSESS;
733 nd->nd_repstat = NFSERR_NOTONLYOP;
734 if (nd->nd_repstat != 0) {
735 *repp = nfsd_errmap(nd);
741 nd->nd_procnum = op;
752 if (i == 0 && (nd->nd_rp == NULL ||
753 nd->nd_rp->rc_refcnt == 0) &&
759 nd->nd_repstat = NFSERR_RESOURCE;
760 *repp = nfsd_errmap(nd);
773 nd->nd_flag |= ND_SAVEREPLY;
778 if (nd->nd_procnum < NFSV4OP_NOPS)
779 NFSINCRGLOBAL(newnfsstats.srvrpccnt[nd->nd_procnum]);
782 error = nfsrv_mtofh(nd, &fh);
785 if (!nd->nd_repstat)
786 nfsd_fhtovp(nd, &fh, LK_SHARED, &nvp, &nes,
789 if (!nd->nd_repstat) {
800 nfsd_fhtovp(nd, &nfs_pubfh, LK_SHARED, &nvp,
803 nd->nd_repstat = NFSERR_NOFILEHANDLE;
804 if (!nd->nd_repstat) {
815 nfsd_fhtovp(nd, &nfs_rootfh, LK_SHARED, &nvp,
817 if (!nd->nd_repstat) {
826 nd->nd_repstat = NFSERR_NOFILEHANDLE;
830 nd->nd_repstat = 0;
841 nd->nd_repstat = NFSERR_NOFILEHANDLE;
846 nd->nd_repstat = 0;
856 nd->nd_repstat = NFSERR_RESTOREFH;
878 nd->nd_repstat = NFSERR_NOFILEHANDLE;
879 else if (nfsvno_testexp(nd, &vpnes) &&
884 nd->nd_repstat = NFSERR_WRONGSEC;
885 if (nd->nd_repstat) {
900 nd->nd_repstat = NFSERR_NOFILEHANDLE;
906 error = (*(nfsrv4_ops1[op]))(nd, isdgram, vp,
908 if (!error && !nd->nd_repstat) {
916 nd->nd_repstat = nfsvno_checkexp(new_mp,
917 nd->nd_nam, &nes, &credanon);
918 if (!nd->nd_repstat)
919 nd->nd_repstat = nfsd_excred(nd,
923 if (!nd->nd_repstat) {
931 if (!nd->nd_repstat) {
941 nd->nd_repstat = NFSERR_NOFILEHANDLE;
945 nd->nd_repstat = NFSERR_XDEV;
953 error = (*(nfsrv4_ops2[op]))(nd, isdgram,
956 nd->nd_repstat = NFSERR_PERM;
975 nd->nd_repstat = NFSERR_PERM;
977 nd->nd_repstat = NFSERR_NOFILEHANDLE;
990 if (nd->nd_repstat == 0)
991 error = (*(nfsrv4_ops0[op]))(nd,
996 error = (*(nfsrv4_ops0[op]))(nd, isdgram,
1003 nd->nd_repstat = NFSERR_BADXDR;
1005 nd->nd_repstat = error;
1011 if (nd->nd_repstat) {
1012 *repp = nfsd_errmap(nd);
1021 nd->nd_repstat = NFSERR_BADXDR;
1040 NFSEXITCODE2(0, nd);