1 /*
2  * This file and its contents are supplied under the terms of the
3  * Common Development and Distribution License ("CDDL"), version 1.0.
4  * You may only use this file in accordance with the terms of version
5  * 1.0 of the CDDL.
6  *
7  * A full copy of the text of the CDDL should have accompanied this
8  * source.  A copy of the CDDL is also available via the Internet at
9  * http://www.illumos.org/license/CDDL.
10  */
11 
12 /*
13  * Copyright 2017 Nexenta Systems, Inc.  All rights reserved.
14  */
15 
16 #ifndef _LIBFKSMBFS_H_
17 #define	_LIBFKSMBFS_H_
18 
19 /*
20  * Declarations for exports in fake_vfs.c
21  */
22 
23 #include <sys/types.h>
24 #include <sys/cred.h>
25 #include <sys/vnode.h>
26 #include <sys/vfs.h>
27 
28 #ifndef	MAXOFF32_T
29 #define	MAXOFF32_T	0x7fffffff
30 #endif
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 /*
37  * Need these visible outside _FAKE_KERNEL for the test CLI.
38  * In the kmod/lib build these duplicate declarations in vfs.h or
39  * vnode.h but that's OK as long as the declarations are identical.
40  */
41 struct mounta;
42 struct stat64;
43 int	fake_installfs(vfsdef_t *);
44 int	fake_removefs(vfsdef_t *);
45 int	fake_domount(char *, struct mounta *, struct vfs **);
46 int	fake_dounmount(struct vfs *, int);
47 int	fake_lookup(vnode_t *, char *, vnode_t **);
48 int	fake_lookup_dir(char *, vnode_t **, char **);
49 int	fake_stat(vnode_t *, struct stat64 *, int);
50 int	fake_getdents(vnode_t *, offset_t *, void *, size_t);
51 ssize_t	fake_pread(vnode_t *, void *, size_t, off_t);
52 ssize_t	fake_pwrite(vnode_t *, void *, size_t, off_t);
53 int	fake_unlink(char *, int);
54 int	fake_rename(char *, char *);
55 
56 int	vn_close_rele(vnode_t *vp, int flag);
57 int	vn_open(char *pnamep, enum uio_seg seg, int filemode, int createmode,
58 		struct vnode **vpp, enum create crwhy, mode_t umask);
59 int	vn_create(char *pnamep, enum uio_seg seg, struct vattr *vap,
60 		enum vcexcl excl, int mode, struct vnode **vpp,
61 		enum create why, int flag, mode_t umask);
62 
63 void	vn_rele(struct vnode *vp);
64 
65 /* In the real smbfs, these are _init(), _fini() */
66 int fksmbfs_init(void);
67 int fksmbfs_fini(void);
68 
69 #ifdef __cplusplus
70 }
71 #endif
72 
73 #endif /* _LIBFKSMBFS_H_ */
74