596 #define rdonly4(req, cs) \
597 (vn_is_readonly((cs)->vp) || \
598 (nfsauth4_access((cs)->exi, (cs)->vp, (req), (cs)->basecr, NULL, \
599 NULL, NULL, NULL) & (NFSAUTH_RO | NFSAUTH_LIMITED)))
600
601 extern int nfsauth4_access(struct exportinfo *, vnode_t *,
602 struct svc_req *, cred_t *, uid_t *, gid_t *, uint_t *, gid_t **);
603 extern int nfsauth4_secinfo_access(struct exportinfo *,
604 struct svc_req *, int, int, cred_t *);
605 extern int nfsauth_cache_clnt_compar(const void *, const void *);
606 extern int nfs_fhbcmp(char *, char *, int);
607 extern int nfs_exportinit(void);
608 extern void nfs_exportfini(void);
609 extern int chk_clnt_sec(struct exportinfo *, struct svc_req *);
610 extern int makefh(fhandle_t *, struct vnode *, struct exportinfo *);
611 extern int makefh_ol(fhandle_t *, struct exportinfo *, uint_t);
612 extern int makefh3(nfs_fh3 *, struct vnode *, struct exportinfo *);
613 extern int makefh3_ol(nfs_fh3 *, struct exportinfo *, uint_t);
614 extern vnode_t *nfs_fhtovp(fhandle_t *, struct exportinfo *);
615 extern vnode_t *nfs3_fhtovp(nfs_fh3 *, struct exportinfo *);
616 extern struct exportinfo *checkexport(fsid_t *, struct fid *);
617 extern struct exportinfo *checkexport4(fsid_t *, struct fid *, vnode_t *);
618 extern void exi_hold(struct exportinfo *);
619 extern void exi_rele(struct exportinfo *);
620 extern struct exportinfo *nfs_vptoexi(vnode_t *, vnode_t *, cred_t *, int *,
621 int *, bool_t);
622 extern int nfs_check_vpexi(vnode_t *, vnode_t *, cred_t *,
623 struct exportinfo **);
624 extern void export_link(struct exportinfo *);
625 extern void export_unlink(struct exportinfo *);
626 extern vnode_t *untraverse(vnode_t *);
627 extern int vn_is_nfs_reparse(vnode_t *, cred_t *);
628 extern int client_is_downrev(struct svc_req *);
629 extern char *build_symlink(vnode_t *, cred_t *, size_t *);
630
631 /*
632 * Functions that handle the NFSv4 server namespace
633 */
634 extern exportinfo_t *vis2exi(treenode_t *);
635 extern int treeclimb_export(struct exportinfo *);
636 extern void treeclimb_unexport(struct exportinfo *);
637 extern int nfs_visible(struct exportinfo *, vnode_t *, int *);
|
596 #define rdonly4(req, cs) \
597 (vn_is_readonly((cs)->vp) || \
598 (nfsauth4_access((cs)->exi, (cs)->vp, (req), (cs)->basecr, NULL, \
599 NULL, NULL, NULL) & (NFSAUTH_RO | NFSAUTH_LIMITED)))
600
601 extern int nfsauth4_access(struct exportinfo *, vnode_t *,
602 struct svc_req *, cred_t *, uid_t *, gid_t *, uint_t *, gid_t **);
603 extern int nfsauth4_secinfo_access(struct exportinfo *,
604 struct svc_req *, int, int, cred_t *);
605 extern int nfsauth_cache_clnt_compar(const void *, const void *);
606 extern int nfs_fhbcmp(char *, char *, int);
607 extern int nfs_exportinit(void);
608 extern void nfs_exportfini(void);
609 extern int chk_clnt_sec(struct exportinfo *, struct svc_req *);
610 extern int makefh(fhandle_t *, struct vnode *, struct exportinfo *);
611 extern int makefh_ol(fhandle_t *, struct exportinfo *, uint_t);
612 extern int makefh3(nfs_fh3 *, struct vnode *, struct exportinfo *);
613 extern int makefh3_ol(nfs_fh3 *, struct exportinfo *, uint_t);
614 extern vnode_t *nfs_fhtovp(fhandle_t *, struct exportinfo *);
615 extern vnode_t *nfs3_fhtovp(nfs_fh3 *, struct exportinfo *);
616 extern struct exportinfo *checkexport(fsid_t *, struct fid *, vnode_t *);
617 extern struct exportinfo *checkexport_nohold(fsid_t *, struct fid *,
618 vnode_t *);
619 extern void exi_hold(struct exportinfo *);
620 extern void exi_rele(struct exportinfo *);
621 extern struct exportinfo *nfs_vptoexi(vnode_t *, vnode_t *, cred_t *, int *,
622 int *, bool_t);
623 extern int nfs_check_vpexi(vnode_t *, vnode_t *, cred_t *,
624 struct exportinfo **);
625 extern void export_link(struct exportinfo *);
626 extern void export_unlink(struct exportinfo *);
627 extern vnode_t *untraverse(vnode_t *);
628 extern int vn_is_nfs_reparse(vnode_t *, cred_t *);
629 extern int client_is_downrev(struct svc_req *);
630 extern char *build_symlink(vnode_t *, cred_t *, size_t *);
631
632 /*
633 * Functions that handle the NFSv4 server namespace
634 */
635 extern exportinfo_t *vis2exi(treenode_t *);
636 extern int treeclimb_export(struct exportinfo *);
637 extern void treeclimb_unexport(struct exportinfo *);
638 extern int nfs_visible(struct exportinfo *, vnode_t *, int *);
|