Lines Matching refs:nd
429 static void nfsrvd_compound(struct nfsrv_descript *nd, int isdgram,
539 nfsrvd_dorpc(struct nfsrv_descript *nd, int isdgram, u_char *tag, int taglen, in nfsrvd_dorpc() argument
555 md = nd->nd_md; in nfsrvd_dorpc()
556 dpos = nd->nd_dpos; in nfsrvd_dorpc()
563 if (!(nd->nd_flag & ND_NFSV4)) { in nfsrvd_dorpc()
564 KASSERT(nd->nd_repstat == 0, ("nfsrvd_dorpc")); in nfsrvd_dorpc()
569 if ((nd->nd_flag & ND_NFSV3) && nfsrv_mallocmget_limit()) { in nfsrvd_dorpc()
570 nd->nd_repstat = NFSERR_DELAY; in nfsrvd_dorpc()
573 error = nfsrv_mtofh(nd, &fh); in nfsrvd_dorpc()
577 nd->nd_repstat = NFSERR_GARBAGE; in nfsrvd_dorpc()
580 if (nd->nd_procnum == NFSPROC_READ || in nfsrvd_dorpc()
581 nd->nd_procnum == NFSPROC_WRITE || in nfsrvd_dorpc()
582 nd->nd_procnum == NFSPROC_READDIR || in nfsrvd_dorpc()
583 nd->nd_procnum == NFSPROC_READDIRPLUS || in nfsrvd_dorpc()
584 nd->nd_procnum == NFSPROC_READLINK || in nfsrvd_dorpc()
585 nd->nd_procnum == NFSPROC_GETATTR || in nfsrvd_dorpc()
586 nd->nd_procnum == NFSPROC_ACCESS || in nfsrvd_dorpc()
587 nd->nd_procnum == NFSPROC_FSSTAT || in nfsrvd_dorpc()
588 nd->nd_procnum == NFSPROC_FSINFO) in nfsrvd_dorpc()
592 if (nd->nd_flag & ND_PUBLOOKUP) in nfsrvd_dorpc()
593 nfsd_fhtovp(nd, &nfs_pubfh, lktype, &vp, &nes, in nfsrvd_dorpc()
594 &mp, nfsrv_writerpc[nd->nd_procnum], -1); in nfsrvd_dorpc()
596 nfsd_fhtovp(nd, &fh, lktype, &vp, &nes, in nfsrvd_dorpc()
597 &mp, nfsrv_writerpc[nd->nd_procnum], -1); in nfsrvd_dorpc()
598 if (nd->nd_repstat == NFSERR_PROGNOTV4) in nfsrvd_dorpc()
608 if (!(nd->nd_flag & ND_NFSV4) && nfsrv_nonidempotent[nd->nd_procnum]) in nfsrvd_dorpc()
609 nd->nd_flag |= ND_SAVEREPLY; in nfsrvd_dorpc()
611 nfsrvd_rephead(nd); in nfsrvd_dorpc()
617 if (nd->nd_repstat && (nd->nd_flag & ND_NFSV2)) { in nfsrvd_dorpc()
618 *nd->nd_errp = nfsd_errmap(nd); in nfsrvd_dorpc()
619 nfsrvd_statstart(nfsv3to4op[nd->nd_procnum], /*now*/ NULL); in nfsrvd_dorpc()
620 nfsrvd_statend(nfsv3to4op[nd->nd_procnum], /*bytes*/ 0, in nfsrvd_dorpc()
632 if (nd->nd_flag & ND_NFSV4) { in nfsrvd_dorpc()
633 nfsrvd_compound(nd, isdgram, tag, taglen, minorvers); in nfsrvd_dorpc()
638 nfsrvd_statstart(nfsv3to4op[nd->nd_procnum], &start_time); in nfsrvd_dorpc()
640 if (nfs_retfh[nd->nd_procnum] == 1) { in nfsrvd_dorpc()
643 error = (*(nfsrv3_procs1[nd->nd_procnum]))(nd, isdgram, in nfsrvd_dorpc()
645 } else if (nfs_retfh[nd->nd_procnum] == 2) { in nfsrvd_dorpc()
646 error = (*(nfsrv3_procs2[nd->nd_procnum]))(nd, isdgram, in nfsrvd_dorpc()
649 error = (*(nfsrv3_procs0[nd->nd_procnum]))(nd, isdgram, in nfsrvd_dorpc()
654 if (error == 0 && nd->nd_repstat == ERELOOKUP) { in nfsrvd_dorpc()
659 nd->nd_md = md; in nfsrvd_dorpc()
660 nd->nd_dpos = dpos; in nfsrvd_dorpc()
663 m_freem(nd->nd_mreq); in nfsrvd_dorpc()
664 nd->nd_mreq = nd->nd_mb = NULL; in nfsrvd_dorpc()
665 nd->nd_repstat = 0; in nfsrvd_dorpc()
669 nfsrvd_statend(nfsv3to4op[nd->nd_procnum], /*bytes*/ 0, in nfsrvd_dorpc()
675 nd->nd_repstat = NFSERR_GARBAGE; in nfsrvd_dorpc()
677 *nd->nd_errp = nfsd_errmap(nd); in nfsrvd_dorpc()
682 if (nd->nd_repstat && (nd->nd_flag & ND_SAVEREPLY) && in nfsrvd_dorpc()
683 (nd->nd_repstat == NFSERR_GARBAGE || in nfsrvd_dorpc()
684 nd->nd_repstat == NFSERR_BADXDR || in nfsrvd_dorpc()
685 nd->nd_repstat == NFSERR_MOVED || in nfsrvd_dorpc()
686 nd->nd_repstat == NFSERR_DELAY || in nfsrvd_dorpc()
687 nd->nd_repstat == NFSERR_BADSEQID || in nfsrvd_dorpc()
688 nd->nd_repstat == NFSERR_RESOURCE || in nfsrvd_dorpc()
689 nd->nd_repstat == NFSERR_SERVERFAULT || in nfsrvd_dorpc()
690 nd->nd_repstat == NFSERR_STALECLIENTID || in nfsrvd_dorpc()
691 nd->nd_repstat == NFSERR_STALESTATEID || in nfsrvd_dorpc()
692 nd->nd_repstat == NFSERR_OLDSTATEID || in nfsrvd_dorpc()
693 nd->nd_repstat == NFSERR_BADSTATEID || in nfsrvd_dorpc()
694 nd->nd_repstat == NFSERR_GRACE || in nfsrvd_dorpc()
695 nd->nd_repstat == NFSERR_NOGRACE)) in nfsrvd_dorpc()
696 nd->nd_flag &= ~ND_SAVEREPLY; in nfsrvd_dorpc()
699 NFSEXITCODE2(0, nd); in nfsrvd_dorpc()
709 nfsrvd_compound(struct nfsrv_descript *nd, int isdgram, u_char *tag, in nfsrvd_compound() argument
746 nd->nd_compref = compref++; in nfsrvd_compound()
847 (void) nfsm_strtom(nd, tag, taglen); in nfsrvd_compound()
854 nd->nd_repstat = NFSERR_MINORVERMISMATCH; in nfsrvd_compound()
855 if (nd->nd_repstat) in nfsrvd_compound()
884 (op >= NFSV4OP_NOPS && (nd->nd_flag & ND_NFSV41) == 0) || in nfsrvd_compound()
885 (op >= NFSV41_NOPS && (nd->nd_flag & ND_NFSV42) == 0)) { in nfsrvd_compound()
886 nd->nd_repstat = NFSERR_OPILLEGAL; in nfsrvd_compound()
888 *repp = nfsd_errmap(nd); in nfsrvd_compound()
902 nd->nd_flag |= ND_LASTOP; in nfsrvd_compound()
911 nd->nd_repstat = NFSERR_MOVED; in nfsrvd_compound()
912 *repp = nfsd_errmap(nd); in nfsrvd_compound()
921 if ((nd->nd_flag & ND_NFSV41) != 0) { in nfsrvd_compound()
923 nd->nd_repstat = NFSERR_SEQUENCEPOS; in nfsrvd_compound()
930 nd->nd_repstat = NFSERR_OPNOTINSESS; in nfsrvd_compound()
932 nd->nd_repstat = NFSERR_NOTONLYOP; in nfsrvd_compound()
933 if (nd->nd_repstat != 0) { in nfsrvd_compound()
934 *repp = nfsd_errmap(nd); in nfsrvd_compound()
940 nd->nd_procnum = op; in nfsrvd_compound()
951 if (i == 0 && (nd->nd_rp == NULL || in nfsrvd_compound()
952 nd->nd_rp->rc_refcnt == 0) && in nfsrvd_compound()
960 nd->nd_repstat = NFSERR_RESOURCE; in nfsrvd_compound()
961 *repp = nfsd_errmap(nd); in nfsrvd_compound()
983 if ((nd->nd_flag & ND_MACHCRED) != 0) { in nfsrvd_compound()
984 if (NFSISSET_OPBIT(&nd->nd_allowops, op)) { in nfsrvd_compound()
989 savecred = nd->nd_cred; in nfsrvd_compound()
990 nd->nd_cred = rootcred; in nfsrvd_compound()
992 nd->nd_cred = savecred; in nfsrvd_compound()
998 nd->nd_flag |= ND_SAVEREPLY; in nfsrvd_compound()
1001 error = nfsrv_mtofh(nd, &fh); in nfsrvd_compound()
1004 if ((nd->nd_flag & ND_LASTOP) == 0) { in nfsrvd_compound()
1023 if (!nd->nd_repstat) in nfsrvd_compound()
1024 nfsd_fhtovp(nd, &fh, LK_SHARED, &nvp, &nes, in nfsrvd_compound()
1027 if (!nd->nd_repstat) { in nfsrvd_compound()
1038 if ((nd->nd_flag & ND_LASTOP) == 0) { in nfsrvd_compound()
1058 nfsd_fhtovp(nd, &nfs_pubfh, LK_SHARED, &nvp, in nfsrvd_compound()
1061 nd->nd_repstat = NFSERR_NOFILEHANDLE; in nfsrvd_compound()
1062 if (!nd->nd_repstat) { in nfsrvd_compound()
1073 if ((nd->nd_flag & ND_LASTOP) == 0) { in nfsrvd_compound()
1093 nfsd_fhtovp(nd, &NFSD_VNET(nfs_rootfh), in nfsrvd_compound()
1095 if (!nd->nd_repstat) { in nfsrvd_compound()
1104 nd->nd_repstat = NFSERR_NOFILEHANDLE; in nfsrvd_compound()
1108 nd->nd_repstat = 0; in nfsrvd_compound()
1118 if ((nd->nd_flag & ND_CURSTATEID) != 0) { in nfsrvd_compound()
1119 nd->nd_savedcurstateid = in nfsrvd_compound()
1120 nd->nd_curstateid; in nfsrvd_compound()
1121 nd->nd_flag |= ND_SAVEDCURSTATEID; in nfsrvd_compound()
1124 nd->nd_repstat = NFSERR_NOFILEHANDLE; in nfsrvd_compound()
1129 if ((nd->nd_flag & ND_LASTOP) == 0) { in nfsrvd_compound()
1149 nd->nd_repstat = 0; in nfsrvd_compound()
1152 if (nfsrv_checkwrongsec(nd, nextop, in nfsrvd_compound()
1154 nd->nd_repstat = in nfsrvd_compound()
1155 nfsvno_testexp(nd, in nfsrvd_compound()
1157 if (nd->nd_repstat == 0) { in nfsrvd_compound()
1165 if (nd->nd_repstat == 0 && in nfsrvd_compound()
1166 (nd->nd_flag & ND_SAVEDCURSTATEID) != 0) { in nfsrvd_compound()
1167 nd->nd_curstateid = in nfsrvd_compound()
1168 nd->nd_savedcurstateid; in nfsrvd_compound()
1169 nd->nd_flag |= ND_CURSTATEID; in nfsrvd_compound()
1172 nd->nd_repstat = NFSERR_RESTOREFH; in nfsrvd_compound()
1195 nd->nd_repstat = NFSERR_NOFILEHANDLE; in nfsrvd_compound()
1196 if (nd->nd_repstat) { in nfsrvd_compound()
1215 mb = nd->nd_mb; in nfsrvd_compound()
1216 bpos = nd->nd_bpos; in nfsrvd_compound()
1217 bextpg = nd->nd_bextpg; in nfsrvd_compound()
1218 bextpgsiz = nd->nd_bextpgsiz; in nfsrvd_compound()
1219 md = nd->nd_md; in nfsrvd_compound()
1220 dpos = nd->nd_dpos; in nfsrvd_compound()
1225 nd->nd_repstat = NFSERR_NOFILEHANDLE; in nfsrvd_compound()
1232 rstat = nfsvno_testexp(nd, &vpnes); in nfsrvd_compound()
1234 nd->nd_repstat = rstat; in nfsrvd_compound()
1241 error = (*(nfsrv4_ops1[op]))(nd, isdgram, vp, in nfsrvd_compound()
1243 if (!error && !nd->nd_repstat) { in nfsrvd_compound()
1248 nd->nd_repstat = nfsvno_checkexp(new_mp, in nfsrvd_compound()
1249 nd->nd_nam, &nes, &credanon); in nfsrvd_compound()
1250 if (!nd->nd_repstat) in nfsrvd_compound()
1251 nd->nd_repstat = nfsd_excred(nd, in nfsrvd_compound()
1255 if (!nd->nd_repstat) { in nfsrvd_compound()
1263 if (!nd->nd_repstat) { in nfsrvd_compound()
1273 nd->nd_repstat = NFSERR_NOFILEHANDLE; in nfsrvd_compound()
1276 nd->nd_repstat = NFSERR_XDEV; in nfsrvd_compound()
1284 error = (*(nfsrv4_ops2[op]))(nd, isdgram, in nfsrvd_compound()
1287 nd->nd_repstat = NFSERR_PERM; in nfsrvd_compound()
1306 nd->nd_repstat = NFSERR_PERM; in nfsrvd_compound()
1308 nd->nd_repstat = NFSERR_NOFILEHANDLE; in nfsrvd_compound()
1321 if (nd->nd_repstat == 0) { in nfsrvd_compound()
1322 error = (*(nfsrv4_ops0[op]))(nd, in nfsrvd_compound()
1326 error == 0 && nd->nd_repstat == 0) { in nfsrvd_compound()
1338 error = (*(nfsrv4_ops0[op]))(nd, isdgram, in nfsrvd_compound()
1345 nd->nd_repstat = NFSERR_BADXDR; in nfsrvd_compound()
1347 nd->nd_repstat = error; in nfsrvd_compound()
1353 if (nd->nd_repstat == ERELOOKUP) { in nfsrvd_compound()
1358 nd->nd_md = md; in nfsrvd_compound()
1359 nd->nd_dpos = dpos; in nfsrvd_compound()
1365 nfsm_trimtrailing(nd, mb, bpos, bextpg, bextpgsiz); in nfsrvd_compound()
1366 nd->nd_repstat = 0; in nfsrvd_compound()
1367 nd->nd_flag |= ND_ERELOOKUP; in nfsrvd_compound()
1370 nd->nd_flag &= ~ND_ERELOOKUP; in nfsrvd_compound()
1379 if (nd->nd_repstat) { in nfsrvd_compound()
1380 *repp = nfsd_errmap(nd); in nfsrvd_compound()
1394 nd->nd_repstat = NFSERR_BADXDR; in nfsrvd_compound()
1410 nd->nd_cred = savecred; in nfsrvd_compound()
1417 NFSEXITCODE2(0, nd); in nfsrvd_compound()