Lines Matching refs:nd
367 static void nfsrvd_compound(struct nfsrv_descript *nd, int isdgram,
475 nfsrvd_dorpc(struct nfsrv_descript *nd, int isdgram, u_char *tag, int taglen,
487 if (!(nd->nd_flag & ND_NFSV4)) {
488 KASSERT(nd->nd_repstat == 0, ("nfsrvd_dorpc"));
493 if ((nd->nd_flag & ND_NFSV3) && nfsrv_mallocmget_limit()) {
494 nd->nd_repstat = NFSERR_DELAY;
497 error = nfsrv_mtofh(nd, &fh);
501 nd->nd_repstat = NFSERR_GARBAGE;
504 if (nd->nd_procnum == NFSPROC_READ ||
505 nd->nd_procnum == NFSPROC_WRITE ||
506 nd->nd_procnum == NFSPROC_READDIR ||
507 nd->nd_procnum == NFSPROC_READDIRPLUS ||
508 nd->nd_procnum == NFSPROC_READLINK ||
509 nd->nd_procnum == NFSPROC_GETATTR ||
510 nd->nd_procnum == NFSPROC_ACCESS ||
511 nd->nd_procnum == NFSPROC_FSSTAT ||
512 nd->nd_procnum == NFSPROC_FSINFO)
516 if (nd->nd_flag & ND_PUBLOOKUP)
517 nfsd_fhtovp(nd, &nfs_pubfh, lktype, &vp, &nes,
518 &mp, nfs_writerpc[nd->nd_procnum], p);
520 nfsd_fhtovp(nd, &fh, lktype, &vp, &nes,
521 &mp, nfs_writerpc[nd->nd_procnum], p);
522 if (nd->nd_repstat == NFSERR_PROGNOTV4)
532 if (!(nd->nd_flag & ND_NFSV4) && nfsrv_nonidempotent[nd->nd_procnum])
533 nd->nd_flag |= ND_SAVEREPLY;
535 nfsrvd_rephead(nd);
541 if (nd->nd_repstat && (nd->nd_flag & ND_NFSV2)) {
542 *nd->nd_errp = nfsd_errmap(nd);
543 nfsrvd_statstart(nfsv3to4op[nd->nd_procnum], /*now*/ NULL);
544 nfsrvd_statend(nfsv3to4op[nd->nd_procnum], /*bytes*/ 0,
546 if (mp != NULL && nfs_writerpc[nd->nd_procnum] != 0)
557 if (nd->nd_flag & ND_NFSV4) {
558 nfsrvd_compound(nd, isdgram, tag, taglen, minorvers, p);
563 nfsrvd_statstart(nfsv3to4op[nd->nd_procnum], &start_time);
565 if (nfs_retfh[nd->nd_procnum] == 1) {
568 error = (*(nfsrv3_procs1[nd->nd_procnum]))(nd, isdgram,
570 } else if (nfs_retfh[nd->nd_procnum] == 2) {
571 error = (*(nfsrv3_procs2[nd->nd_procnum]))(nd, isdgram,
574 error = (*(nfsrv3_procs0[nd->nd_procnum]))(nd, isdgram,
577 if (mp != NULL && nfs_writerpc[nd->nd_procnum] != 0)
580 nfsrvd_statend(nfsv3to4op[nd->nd_procnum], /*bytes*/ 0,
586 nd->nd_repstat = NFSERR_GARBAGE;
588 *nd->nd_errp = nfsd_errmap(nd);
593 if (nd->nd_repstat && (nd->nd_flag & ND_SAVEREPLY) &&
594 (nd->nd_repstat == NFSERR_GARBAGE ||
595 nd->nd_repstat == NFSERR_BADXDR ||
596 nd->nd_repstat == NFSERR_MOVED ||
597 nd->nd_repstat == NFSERR_DELAY ||
598 nd->nd_repstat == NFSERR_BADSEQID ||
599 nd->nd_repstat == NFSERR_RESOURCE ||
600 nd->nd_repstat == NFSERR_SERVERFAULT ||
601 nd->nd_repstat == NFSERR_STALECLIENTID ||
602 nd->nd_repstat == NFSERR_STALESTATEID ||
603 nd->nd_repstat == NFSERR_OLDSTATEID ||
604 nd->nd_repstat == NFSERR_BADSTATEID ||
605 nd->nd_repstat == NFSERR_GRACE ||
606 nd->nd_repstat == NFSERR_NOGRACE))
607 nd->nd_flag &= ~ND_SAVEREPLY;
610 NFSEXITCODE2(0, nd);
620 nfsrvd_compound(struct nfsrv_descript *nd, int isdgram, u_char *tag,
647 nd->nd_compref = compref++;
740 (void) nfsm_strtom(nd, tag, taglen);
744 nd->nd_repstat = NFSERR_MINORVERMISMATCH;
745 if (nd->nd_repstat)
769 (op >= NFSV4OP_NOPS && (nd->nd_flag & ND_NFSV41) == 0) ||
770 (op >= NFSV41_NOPS && (nd->nd_flag & ND_NFSV41) != 0)) {
771 nd->nd_repstat = NFSERR_OPILLEGAL;
773 *repp = nfsd_errmap(nd);
782 nd->nd_flag |= ND_LASTOP;
791 nd->nd_repstat = NFSERR_MOVED;
792 *repp = nfsd_errmap(nd);
801 if ((nd->nd_flag & ND_NFSV41) != 0) {
803 nd->nd_repstat = NFSERR_SEQUENCEPOS;
810 nd->nd_repstat = NFSERR_OPNOTINSESS;
812 nd->nd_repstat = NFSERR_NOTONLYOP;
813 if (nd->nd_repstat != 0) {
814 *repp = nfsd_errmap(nd);
820 nd->nd_procnum = op;
831 if (i == 0 && (nd->nd_rp == NULL ||
832 nd->nd_rp->rc_refcnt == 0) &&
838 nd->nd_repstat = NFSERR_RESOURCE;
839 *repp = nfsd_errmap(nd);
852 nd->nd_flag |= ND_SAVEREPLY;
855 error = nfsrv_mtofh(nd, &fh);
858 if (!nd->nd_repstat)
859 nfsd_fhtovp(nd, &fh, LK_SHARED, &nvp, &nes,
862 if (!nd->nd_repstat) {
873 nfsd_fhtovp(nd, &nfs_pubfh, LK_SHARED, &nvp,
876 nd->nd_repstat = NFSERR_NOFILEHANDLE;
877 if (!nd->nd_repstat) {
888 nfsd_fhtovp(nd, &nfs_rootfh, LK_SHARED, &nvp,
890 if (!nd->nd_repstat) {
899 nd->nd_repstat = NFSERR_NOFILEHANDLE;
903 nd->nd_repstat = 0;
914 nd->nd_repstat = NFSERR_NOFILEHANDLE;
919 nd->nd_repstat = 0;
929 nd->nd_repstat = NFSERR_RESTOREFH;
951 nd->nd_repstat = NFSERR_NOFILEHANDLE;
952 else if (nfsvno_testexp(nd, &vpnes) &&
957 nd->nd_repstat = NFSERR_WRONGSEC;
958 if (nd->nd_repstat) {
973 nd->nd_repstat = NFSERR_NOFILEHANDLE;
979 error = (*(nfsrv4_ops1[op]))(nd, isdgram, vp,
981 if (!error && !nd->nd_repstat) {
989 nd->nd_repstat = nfsvno_checkexp(new_mp,
990 nd->nd_nam, &nes, &credanon);
991 if (!nd->nd_repstat)
992 nd->nd_repstat = nfsd_excred(nd,
996 if (!nd->nd_repstat) {
1004 if (!nd->nd_repstat) {
1014 nd->nd_repstat = NFSERR_NOFILEHANDLE;
1018 nd->nd_repstat = NFSERR_XDEV;
1026 error = (*(nfsrv4_ops2[op]))(nd, isdgram,
1029 nd->nd_repstat = NFSERR_PERM;
1048 nd->nd_repstat = NFSERR_PERM;
1050 nd->nd_repstat = NFSERR_NOFILEHANDLE;
1063 if (nd->nd_repstat == 0)
1064 error = (*(nfsrv4_ops0[op]))(nd,
1069 error = (*(nfsrv4_ops0[op]))(nd, isdgram,
1076 nd->nd_repstat = NFSERR_BADXDR;
1078 nd->nd_repstat = error;
1091 if (nd->nd_repstat) {
1092 *repp = nfsd_errmap(nd);
1106 nd->nd_repstat = NFSERR_BADXDR;
1125 NFSEXITCODE2(0, nd);