Lines Matching refs:nd
346 nfsvno_namei(struct nfsrv_descript *nd, struct nameidata *ndp,
382 if (nd->nd_flag & ND_PUBLOOKUP) {
401 (nd->nd_flag & ND_NFSV4) == 0) {
453 if (!(nd->nd_flag & ND_PUBLOOKUP)) {
538 NFSEXITCODE2(error, nd);
786 nfsvno_createsub(struct nfsrv_descript *nd, struct nameidata *ndp,
793 error = nd->nd_repstat;
808 &nvap->na_vattr, nd->nd_cred);
825 (error = priv_check_cred(nd->nd_cred,
864 nd->nd_cred, exp, p, NFSACCCHK_NOOVERRIDE,
871 &nvap->na_vattr, nd->nd_cred);
1020 nfsvno_getsymlink(struct nfsrv_descript *nd, struct nfsvattr *nvap,
1030 if ((nd->nd_flag & ND_NFSV3) &&
1031 (error = nfsrv_sattr(nd, NULL, nvap, NULL, NULL, p)))
1040 error = nfsrv_mtostr(nd, pathcp, len);
1043 if (nd->nd_flag & ND_NFSV2) {
1049 NFSEXITCODE2(0, nd);
1054 NFSEXITCODE2(error, nd);
1414 nfsvno_open(struct nfsrv_descript *nd, struct nameidata *ndp,
1425 nd->nd_repstat = nfsrv_opencheck(clientid,
1426 stateidp, stp, NULL, nd, p, nd->nd_repstat);
1427 if (!nd->nd_repstat) {
1430 nd->nd_repstat = VOP_CREATE(ndp->ni_dvp,
1434 if (!nd->nd_repstat) {
1440 nd->nd_repstat = VOP_SETATTR(ndp->ni_vp,
1442 if (nd->nd_repstat != 0) {
1445 nd->nd_repstat = NFSERR_NOTSUPP;
1448 nfsrv_fixattr(nd, ndp->ni_vp, nvap,
1469 nd->nd_repstat = nfsvno_accchk(vp,
1473 nd->nd_repstat = nfsrv_opencheck(clientid,
1474 stateidp, stp, vp, nd, p, nd->nd_repstat);
1475 if (!nd->nd_repstat) {
1479 nd->nd_repstat = VOP_SETATTR(vp,
1483 nd->nd_repstat = nfsrv_opencheck(clientid,
1484 stateidp, stp, vp, nd, p, nd->nd_repstat);
1502 NFSEXITCODE2(0, nd);
1533 nfsvno_fillattr(struct nfsrv_descript *nd, struct mount *mp, struct vnode *vp,
1540 error = nfsv4_fillattr(nd, mp, vp, NULL, &nvap->na_vattr, fhp, rderror,
1543 NFSEXITCODE2(0, nd);
1572 nfsrvd_readdir(struct nfsrv_descript *nd, int isdgram,
1588 if (nd->nd_repstat) {
1589 nfsrv_postopattr(nd, getret, &at);
1592 if (nd->nd_flag & ND_NFSV2) {
1604 if (cnt > NFS_SRVMAXDATA(nd) || cnt < 0)
1605 cnt = NFS_SRVMAXDATA(nd);
1608 if (nd->nd_flag & ND_NFSV3) {
1609 nd->nd_repstat = getret = nfsvno_getattr(vp, &at, nd->nd_cred,
1618 if (!nd->nd_repstat && toff && verf != at.na_filerev)
1619 nd->nd_repstat = NFSERR_BAD_COOKIE;
1622 if (!nd->nd_repstat && vp->v_type != VDIR)
1623 nd->nd_repstat = NFSERR_NOTDIR;
1624 if (nd->nd_repstat == 0 && cnt == 0) {
1625 if (nd->nd_flag & ND_NFSV2)
1627 nd->nd_repstat = EPERM;
1629 nd->nd_repstat = NFSERR_TOOSMALL;
1631 if (!nd->nd_repstat)
1632 nd->nd_repstat = nfsvno_accchk(vp, VEXEC,
1633 nd->nd_cred, exp, p, NFSACCCHK_NOOVERRIDE,
1635 if (nd->nd_repstat) {
1637 if (nd->nd_flag & ND_NFSV3)
1638 nfsrv_postopattr(nd, getret, &at);
1659 nd->nd_repstat = VOP_READDIR(vp, &io, nd->nd_cred, &eofflag, &ncookies,
1665 if (!cookies && !nd->nd_repstat)
1666 nd->nd_repstat = NFSERR_PERM;
1667 if (nd->nd_flag & ND_NFSV3) {
1668 getret = nfsvno_getattr(vp, &at, nd->nd_cred, p, 1);
1669 if (!nd->nd_repstat)
1670 nd->nd_repstat = getret;
1674 * Handles the failed cases. nd->nd_repstat == 0 past here.
1676 if (nd->nd_repstat) {
1681 if (nd->nd_flag & ND_NFSV3)
1682 nfsrv_postopattr(nd, getret, &at);
1691 if (nd->nd_flag & ND_NFSV2) {
1694 nfsrv_postopattr(nd, getret, &at);
1743 if (nd->nd_flag & ND_NFSV3) {
1744 nfsrv_postopattr(nd, getret, &at);
1757 if (nd->nd_flag & ND_NFSV3)
1770 if (nd->nd_flag & ND_NFSV3) {
1779 (void) nfsm_strtom(nd, dp->d_name, nlen);
1780 if (nd->nd_flag & ND_NFSV3) {
1804 NFSEXITCODE2(0, nd);
1808 NFSEXITCODE2(error, nd);
1816 nfsrvd_readdirplus(struct nfsrv_descript *nd, int isdgram,
1841 if (nd->nd_repstat) {
1842 nfsrv_postopattr(nd, getret, &at);
1858 if (cnt > NFS_SRVMAXDATA(nd) || cnt < 0)
1859 cnt = NFS_SRVMAXDATA(nd);
1871 if (nd->nd_flag & ND_NFSV4) {
1872 error = nfsrv_getattrbits(nd, &attrbits, NULL, NULL);
1883 nd->nd_repstat = getret = nfsvno_getattr(vp, &at, nd->nd_cred, p, 1);
1884 if (!nd->nd_repstat) {
1893 if (nd->nd_flag & ND_NFSV4) {
1894 nd->nd_repstat = NFSERR_NOTSAME;
1896 nd->nd_repstat = NFSERR_BAD_COOKIE;
1899 } else if ((nd->nd_flag & ND_NFSV4) && off == 0 && verf != 0) {
1900 nd->nd_repstat = NFSERR_BAD_COOKIE;
1903 if (!nd->nd_repstat && vp->v_type != VDIR)
1904 nd->nd_repstat = NFSERR_NOTDIR;
1905 if (!nd->nd_repstat && cnt == 0)
1906 nd->nd_repstat = NFSERR_TOOSMALL;
1907 if (!nd->nd_repstat)
1908 nd->nd_repstat = nfsvno_accchk(vp, VEXEC,
1909 nd->nd_cred, exp, p, NFSACCCHK_NOOVERRIDE,
1911 if (nd->nd_repstat) {
1913 if (nd->nd_flag & ND_NFSV3)
1914 nfsrv_postopattr(nd, getret, &at);
1937 nd->nd_repstat = VOP_READDIR(vp, &io, nd->nd_cred, &eofflag, &ncookies,
1943 getret = nfsvno_getattr(vp, &at, nd->nd_cred, p, 1);
1945 if (!cookies && !nd->nd_repstat)
1946 nd->nd_repstat = NFSERR_PERM;
1947 if (!nd->nd_repstat)
1948 nd->nd_repstat = getret;
1949 if (nd->nd_repstat) {
1954 if (nd->nd_flag & ND_NFSV3)
1955 nfsrv_postopattr(nd, getret, &at);
1964 if (nd->nd_flag & ND_NFSV3)
1965 nfsrv_postopattr(nd, getret, &at);
1995 ((nd->nd_flag & ND_NFSV4) &&
2016 nd->nd_repstat = vfs_busy(mp, 0);
2018 if (nd->nd_repstat != 0) {
2022 if (nd->nd_flag & ND_NFSV3)
2023 nfsrv_postopattr(nd, getret, &at);
2042 cn.cn_cred = nd->nd_cred;
2052 mb0 = nd->nd_mb;
2053 bpos0 = nd->nd_bpos;
2061 if (nd->nd_flag & ND_NFSV3) {
2063 nfsrv_postopattr(nd, getret, &at);
2073 mb1 = nd->nd_mb;
2074 bpos1 = nd->nd_bpos;
2082 ((nd->nd_flag & ND_NFSV3) || nlen > 2 ||
2089 mb1 = nd->nd_mb;
2090 bpos1 = nd->nd_bpos;
2103 if ((nd->nd_flag & ND_NFSV3) ||
2105 if (nd->nd_flag & ND_NFSV4)
2122 nd->nd_cred;
2136 nd->nd_repstat = EPERM;
2161 (nd->nd_flag & ND_NFSV4) != 0 &&
2179 ((nd->nd_flag & ND_NFSV3) ||
2184 nd->nd_cred, p, 1);
2187 (nd->nd_flag & ND_NFSV4) != 0 &&
2212 nd->nd_repstat = r;
2221 if (nd->nd_flag & ND_NFSV3) {
2226 dirlen += nfsm_strtom(nd, dp->d_name, nlen);
2230 nfsrv_postopattr(nd, 0, nvap);
2231 dirlen += nfsm_fhtom(nd,(u_int8_t *)&nfh,0,1);
2240 dirlen += nfsm_strtom(nd, dp->d_name, nlen);
2248 dirlen += nfsrv_putreferralattr(nd,
2250 &nd->nd_repstat);
2251 if (nd->nd_repstat) {
2259 dirlen += nfsvno_fillattr(nd, new_mp,
2261 nd->nd_cred, p, isdgram, 0,
2265 dirlen += nfsvno_fillattr(nd, new_mp,
2267 nd->nd_cred, p, isdgram, 0,
2292 if (dirlen > cnt || nd->nd_repstat) {
2293 if (!nd->nd_repstat && entrycnt == 0)
2294 nd->nd_repstat = NFSERR_TOOSMALL;
2295 if (nd->nd_repstat) {
2296 newnfs_trimtrailing(nd, mb0, bpos0);
2297 if (nd->nd_flag & ND_NFSV3)
2298 nfsrv_postopattr(nd, getret, &at);
2300 newnfs_trimtrailing(nd, mb1, bpos1);
2304 if (!nd->nd_repstat) {
2316 NFSEXITCODE2(0, nd);
2320 NFSEXITCODE2(error, nd);
2329 nfsrv_sattr(struct nfsrv_descript *nd, vnode_t vp, struct nfsvattr *nvap,
2336 switch (nd->nd_flag & (ND_NFSV2 | ND_NFSV3 | ND_NFSV4)) {
2411 error = nfsv4_sattr(nd, vp, nvap, attrbitp, aclp, p);
2414 NFSEXITCODE2(error, nd);
2423 nfsv4_sattr(struct nfsrv_descript *nd, vnode_t vp, struct nfsvattr *nvap,
2435 error = nfsrv_getattrbits(nd, attrbitp, NULL, &retnotsup);
2446 nd->nd_repstat = NFSERR_ATTRNOTSUPP;
2469 error = nfsrv_dissectacl(nd, aclp, &aceerr, &aclsize,
2473 if (aceerr && !nd->nd_repstat)
2474 nd->nd_repstat = aceerr;
2479 if (!nd->nd_repstat)
2480 nd->nd_repstat = NFSERR_ATTRNOTSUPP;
2485 if (!nd->nd_repstat)
2486 nd->nd_repstat = NFSERR_ATTRNOTSUPP;
2492 error = nfsm_advance(nd, NFSM_RNDUP(i), -1);
2495 if (!nd->nd_repstat)
2496 nd->nd_repstat = NFSERR_ATTRNOTSUPP;
2515 error = nfsrv_mtostr(nd, cp, j);
2521 if (!nd->nd_repstat) {
2522 nd->nd_repstat = nfsv4_strtouid(nd, cp, j, &uid,
2524 if (!nd->nd_repstat)
2542 error = nfsrv_mtostr(nd, cp, j);
2548 if (!nd->nd_repstat) {
2549 nd->nd_repstat = nfsv4_strtogid(nd, cp, j, &gid,
2551 if (!nd->nd_repstat)
2560 if (!nd->nd_repstat)
2561 nd->nd_repstat = NFSERR_ATTRNOTSUPP;
2579 if (!nd->nd_repstat)
2580 nd->nd_repstat = NFSERR_ATTRNOTSUPP;
2585 if (!nd->nd_repstat)
2586 nd->nd_repstat = NFSERR_ATTRNOTSUPP;
2604 nd->nd_repstat = NFSERR_ATTRNOTSUPP;
2622 error = nfsm_advance(nd, attrsize - attrsum, -1);
2625 NFSEXITCODE2(error, nd);
2633 nfsd_excred(struct nfsrv_descript *nd, struct nfsexstuff *exp,
2641 if (nd->nd_flag & ND_GSS)
2650 if (nfsvno_testexp(nd, exp) &&
2651 nd->nd_procnum != NFSV4OP_SECINFO &&
2652 nd->nd_procnum != NFSPROC_FSINFO) {
2653 if (nd->nd_flag & ND_NFSV4)
2663 if (NFSVNO_EXV4ONLY(exp) && !(nd->nd_flag & ND_NFSV4)) {
2675 if (((nd->nd_flag & ND_GSS) == 0 && nd->nd_cred->cr_uid == 0) ||
2677 (nd->nd_flag & ND_AUTHNONE) != 0) {
2678 nd->nd_cred->cr_uid = credanon->cr_uid;
2679 nd->nd_cred->cr_gid = credanon->cr_gid;
2680 crsetgroups(nd->nd_cred, credanon->cr_ngroups,
2682 } else if ((nd->nd_flag & ND_GSS) == 0) {
2690 nd->nd_cred = nfsrv_getgrpscred(nd->nd_cred);
2695 NFSEXITCODE2(error, nd);
2772 nfsd_fhtovp(struct nfsrv_descript *nd, struct nfsrvfh *nfp, int lktype,
2789 nd->nd_repstat = ESTALE;
2798 nd->nd_repstat = nfsvno_fhtovp(mp, fhp, nd->nd_nam, lktype, vpp, exp,
2806 if (!nd->nd_repstat && exp->nes_exflag == 0 &&
2807 !(nd->nd_flag & ND_NFSV4)) {
2809 nd->nd_repstat = EACCES;
2827 if (!nd->nd_repstat) {
2831 saddr = NFSSOCKADDR(nd->nd_nam, struct sockaddr_in *);
2832 saddr6 = NFSSOCKADDR(nd->nd_nam, struct sockaddr_in6 *);
2833 if (!(nd->nd_flag & ND_NFSV4) &&
2839 nd->nd_repstat = (NFSERR_AUTHERR | AUTH_TOOWEAK);
2847 if (!nd->nd_repstat) {
2848 nd->nd_saveduid = nd->nd_cred->cr_uid;
2849 nd->nd_repstat = nfsd_excred(nd, exp, credanon);
2850 if (nd->nd_repstat)
2855 if (nd->nd_repstat) {
2864 NFSEXITCODE2(0, nd);
2900 struct nameidata nd;
2914 NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE,
2916 if ((error = namei(&nd)) != 0)
2918 error = nfsvno_getfh(nd.ni_vp, &fh, p);
2919 vrele(nd.ni_vp);
3051 nfsvno_v4rootexport(struct nfsrv_descript *nd)
3056 error = vfs_stdcheckexp(&nfsv4root_mnt, nd->nd_nam, &exflags,
3066 nd->nd_flag |= ND_EXAUTHSYS;
3068 nd->nd_flag |= ND_EXGSS;
3070 nd->nd_flag |= ND_EXGSSINTEGRITY;
3072 nd->nd_flag |= ND_EXGSSPRIVACY;
3145 struct nameidata nd;
3206 error = nfsrv_lookupfilename(&nd,
3213 nfsrv_dumplocks(nd.ni_vp, dumplocks,
3215 vput(nd.ni_vp);
3259 nfsvno_testexp(struct nfsrv_descript *nd, struct nfsexstuff *exp)
3278 (nd->nd_flag & ND_GSSPRIVACY))
3281 (nd->nd_flag & ND_GSSINTEGRITY))
3284 (nd->nd_flag & ND_GSS))
3287 (nd->nd_flag & ND_GSS) == 0)