1 /*	$NetBSD: smbfs.h,v 1.18 2014/12/21 10:48:53 hannken Exp $	*/
2 
3 /*
4  * Copyright (c) 2000-2001, Boris Popov
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  * 3. All advertising materials mentioning features or use of this software
16  *    must display the following acknowledgement:
17  *    This product includes software developed by Boris Popov.
18  * 4. Neither the name of the author nor the names of any co-contributors
19  *    may be used to endorse or promote products derived from this software
20  *    without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32  * SUCH DAMAGE.
33  *
34  * FreeBSD: src/sys/fs/smbfs/smbfs.h,v 1.3 2001/12/02 08:56:58 bp Exp
35  */
36 #ifndef _FS_SMBFS_SMBFS_H_
37 #define _FS_SMBFS_SMBFS_H_
38 
39 #define SMBFS_VERMAJ	1
40 #define SMBFS_VERMIN	1013
41 #define SMBFS_VERSION	(SMBFS_VERMAJ*100000 + SMBFS_VERMIN)
42 #define	SMBFS_VFSNAME	"smbfs"
43 
44 /* Values for flags */
45 #define SMBFS_MOUNT_SOFT	0x0001
46 #define SMBFS_MOUNT_INTR	0x0002
47 #define SMBFS_MOUNT_STRONG	0x0004
48 #define	SMBFS_MOUNT_HAVE_NLS	0x0008
49 #define	SMBFS_MOUNT_NO_LONG	0x0010
50 
51 #define	SMBFS_MAXPATHCOMP	256	/* maximum number of path components */
52 
53 
54 /* Layout of the mount control block for a netware file system. */
55 struct smbfs_args {
56 	int		version;
57 	int		dev_fd;		/* descriptor of open nsmb device */
58 	u_int		flags;
59 	uid_t		uid;
60 	gid_t 		gid;
61 	mode_t 		file_mode;
62 	mode_t 		dir_mode;
63 	int		caseopt;
64 };
65 
66 #ifdef _KERNEL
67 
68 struct smbnode;
69 struct smb_share;
70 struct u_cred;
71 struct vop_ioctl_args;
72 struct buf;
73 struct pool;
74 
75 struct smbmount {
76 	struct smbfs_args	sm_args;
77 	struct mount * 		sm_mp;
78 	struct smbnode *	sm_root;
79 	kauth_cred_t		sm_owner;
80 	int			sm_flags;
81 	long			sm_nextino;
82 	struct smb_share * 	sm_share;
83 	struct smbnode *	sm_npstack[SMBFS_MAXPATHCOMP];
84 	int			sm_caseopt;
85 	int			sm_didrele;
86 };
87 
88 #define VFSTOSMBFS(mp)		((struct smbmount *)((mp)->mnt_data))
89 #define SMBFSTOVFS(smp)		((struct mount *)((smp)->sm_mp))
90 #define VTOVFS(vp)		((vp)->v_mount)
91 #define	VTOSMBFS(vp)		(VFSTOSMBFS(VTOVFS(vp)))
92 
93 int smbfs_doio(struct buf *, kauth_cred_t, struct lwp *);
94 int smbfs_vinvalbuf(struct vnode *, int, kauth_cred_t, struct lwp *, int);
95 int smbfs_kqfilter(void *);
96 
97 extern struct pool smbfs_node_pool;
98 
99 #endif	/* KERNEL */
100 
101 #endif /* _FS_SMBFS_SMBFS_H_ */
102