Lines Matching +full:2 +full:nd

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