Home | History | Annotate | Line # | Download | only in genfs
genfs.h revision 1.37
      1 /*	$NetBSD: genfs.h,v 1.37 2021/06/29 22:34:08 dholland Exp $	*/
      2 
      3 #ifndef	_MISCFS_GENFS_GENFS_H_
      4 #define	_MISCFS_GENFS_GENFS_H_
      5 
      6 #include <sys/vnode.h>
      7 #include <sys/types.h>
      8 
      9 struct componentname;
     10 struct mount;
     11 struct acl;
     12 
     13 int	genfs_access(void *);
     14 int	genfs_accessx(void *);
     15 int	genfs_badop(void *);
     16 int	genfs_nullop(void *);
     17 int	genfs_enoioctl(void *);
     18 int	genfs_enoextops(void *);
     19 int	genfs_einval(void *);
     20 int	genfs_eopnotsupp(void *);
     21 int	genfs_ebadf(void *);
     22 int	genfs_nolock(void *);
     23 int	genfs_noislocked(void *);
     24 int	genfs_nounlock(void *);
     25 
     26 int	genfs_deadlock(void *);
     27 #define	genfs_deadislocked genfs_islocked
     28 int	genfs_deadunlock(void *);
     29 
     30 int	genfs_parsepath(void *);
     31 int	genfs_poll(void *);
     32 int	genfs_kqfilter(void *);
     33 int	genfs_fcntl(void *);
     34 int	genfs_seek(void *);
     35 int	genfs_abortop(void *);
     36 int	genfs_revoke(void *);
     37 int	genfs_lock(void *);
     38 int	genfs_islocked(void *);
     39 int	genfs_unlock(void *);
     40 int	genfs_mmap(void *);
     41 int	genfs_getpages(void *);
     42 int	genfs_putpages(void *);
     43 int	genfs_null_putpages(void *);
     44 int	genfs_compat_getpages(void *);
     45 int	genfs_pathconf(void *v);
     46 
     47 int	genfs_do_putpages(struct vnode *, off_t, off_t, int, struct vm_page **);
     48 
     49 int	genfs_statvfs(struct mount *, struct statvfs *);
     50 
     51 int	genfs_renamelock_enter(struct mount *);
     52 void	genfs_renamelock_exit(struct mount *);
     53 
     54 int	genfs_suspendctl(struct mount *, int);
     55 
     56 int	genfs_can_access(struct vnode *, kauth_cred_t, uid_t, gid_t, mode_t,
     57     struct acl *, accmode_t);
     58 int	genfs_can_access_acl_posix1e(struct vnode *, kauth_cred_t, uid_t,
     59     gid_t, mode_t, struct acl *, accmode_t);
     60 int	genfs_can_access_acl_nfs4(struct vnode *, kauth_cred_t, uid_t, gid_t,
     61     mode_t, struct acl *, accmode_t);
     62 int	genfs_can_chmod(struct vnode *, kauth_cred_t, uid_t, gid_t, mode_t);
     63 int	genfs_can_chown(struct vnode *, kauth_cred_t, uid_t, gid_t, uid_t,
     64     gid_t);
     65 int	genfs_can_chtimes(struct vnode *, kauth_cred_t, uid_t, u_int);
     66 int	genfs_can_chflags(struct vnode *, kauth_cred_t, uid_t, bool);
     67 int	genfs_can_sticky(struct vnode *, kauth_cred_t, uid_t, uid_t);
     68 int	genfs_can_extattr(struct vnode *, kauth_cred_t, accmode_t, int);
     69 
     70 /*
     71  * Rename is complicated.  Sorry.
     72  */
     73 
     74 struct genfs_rename_ops;
     75 
     76 
     77 int	genfs_insane_rename(void *,
     78 	    int (*)(struct vnode *, struct componentname *,
     79 		struct vnode *, struct componentname *,
     80 		kauth_cred_t, bool));
     81 int	genfs_sane_rename(const struct genfs_rename_ops *,
     82 	    struct vnode *, struct componentname *, void *,
     83 	    struct vnode *, struct componentname *, void *,
     84 	    kauth_cred_t, bool);
     85 
     86 void	genfs_rename_knote(struct vnode *, struct vnode *, struct vnode *,
     87 	    struct vnode *, bool);
     88 void	genfs_rename_cache_purge(struct vnode *, struct vnode *, struct vnode *,
     89 	    struct vnode *);
     90 
     91 int	genfs_ufslike_rename_check_possible(unsigned long, unsigned long,
     92 	    unsigned long, unsigned long, bool,
     93 	    unsigned long, unsigned long);
     94 int	genfs_ufslike_rename_check_permitted(kauth_cred_t,
     95 	    struct vnode *, mode_t, uid_t,
     96 	    struct vnode *, uid_t,
     97 	    struct vnode *, mode_t, uid_t,
     98 	    struct vnode *, uid_t);
     99 int	genfs_ufslike_remove_check_possible(unsigned long, unsigned long,
    100 	    unsigned long, unsigned long);
    101 int	genfs_ufslike_remove_check_permitted(kauth_cred_t,
    102 	    struct vnode *, mode_t, uid_t,
    103 	    struct vnode *, uid_t);
    104 
    105 struct genfs_rename_ops {
    106 	bool (*gro_directory_empty_p)(struct mount *mp, kauth_cred_t cred,
    107 	    struct vnode *vp, struct vnode *dvp);
    108 	int (*gro_rename_check_possible)(struct mount *mp,
    109 	    struct vnode *fdvp, struct vnode *fvp,
    110 	    struct vnode *tdvp, struct vnode *tvp);
    111 	int (*gro_rename_check_permitted)(struct mount *mp, kauth_cred_t cred,
    112 	    struct vnode *fdvp, struct vnode *fvp,
    113 	    struct vnode *tdvp, struct vnode *tvp);
    114 	int (*gro_remove_check_possible)(struct mount *mp,
    115 	    struct vnode *dvp, struct vnode *vp);
    116 	int (*gro_remove_check_permitted)(struct mount *mp, kauth_cred_t cred,
    117 	    struct vnode *dvp, struct vnode *vp);
    118 	int (*gro_rename)(struct mount *mp, kauth_cred_t cred,
    119 	    struct vnode *fdvp, struct componentname *fcnp,
    120 	    void *fde, struct vnode *fvp,
    121 	    struct vnode *tdvp, struct componentname *tcnp,
    122 	    void *tde, struct vnode *tvp);
    123 	int (*gro_remove)(struct mount *mp, kauth_cred_t cred,
    124 	    struct vnode *dvp, struct componentname *cnp, void *de,
    125 	    struct vnode *vp);
    126 	int (*gro_lookup)(struct mount *mp, struct vnode *dvp,
    127 	    struct componentname *cnp, void *de_ret, struct vnode **vp_ret);
    128 	int (*gro_genealogy)(struct mount *mp, kauth_cred_t cred,
    129 	    struct vnode *fdvp, struct vnode *tdvp,
    130 	    struct vnode **intermediate_node_ret);
    131 	int (*gro_lock_directory)(struct mount *mp, struct vnode *vp);
    132 };
    133 
    134 #endif /* !_MISCFS_GENFS_GENFS_H_ */
    135