1#include <linux/ncp_fs.h>
2#include "ncp_fs_i.h"
3#include "ncp_fs_sb.h"
4
5#undef NCPFS_PARANOIA
6#ifdef NCPFS_PARANOIA
7#define ncp_vdbg(fmt, ...)					\
8	pr_debug(fmt, ##__VA_ARGS__)
9#else
10#define ncp_vdbg(fmt, ...)					\
11do {								\
12	if (0)							\
13		pr_debug(fmt, ##__VA_ARGS__);			\
14} while (0)
15#endif
16
17#ifndef DEBUG_NCP
18#define DEBUG_NCP 0
19#endif
20
21#if DEBUG_NCP > 0 && !defined(DEBUG)
22#define DEBUG
23#endif
24
25#define ncp_dbg(level, fmt, ...)				\
26do {								\
27	if (level <= DEBUG_NCP)					\
28		pr_debug(fmt, ##__VA_ARGS__);			\
29} while (0)
30
31#define NCP_MAX_RPC_TIMEOUT (6*HZ)
32
33
34struct ncp_entry_info {
35	struct nw_info_struct	i;
36	ino_t			ino;
37	int			opened;
38	int			access;
39	unsigned int		volume;
40	__u8			file_handle[6];
41};
42
43static inline struct ncp_server *NCP_SBP(const struct super_block *sb)
44{
45	return sb->s_fs_info;
46}
47
48#define NCP_SERVER(inode)	NCP_SBP((inode)->i_sb)
49static inline struct ncp_inode_info *NCP_FINFO(const struct inode *inode)
50{
51	return container_of(inode, struct ncp_inode_info, vfs_inode);
52}
53
54/* linux/fs/ncpfs/inode.c */
55int ncp_notify_change(struct dentry *, struct iattr *);
56struct inode *ncp_iget(struct super_block *, struct ncp_entry_info *);
57void ncp_update_inode(struct inode *, struct ncp_entry_info *);
58void ncp_update_inode2(struct inode *, struct ncp_entry_info *);
59
60/* linux/fs/ncpfs/dir.c */
61extern const struct inode_operations ncp_dir_inode_operations;
62extern const struct file_operations ncp_dir_operations;
63extern const struct dentry_operations ncp_dentry_operations;
64int ncp_conn_logged_in(struct super_block *);
65int ncp_date_dos2unix(__le16 time, __le16 date);
66void ncp_date_unix2dos(int unix_date, __le16 * time, __le16 * date);
67
68/* linux/fs/ncpfs/ioctl.c */
69long ncp_ioctl(struct file *, unsigned int, unsigned long);
70long ncp_compat_ioctl(struct file *, unsigned int, unsigned long);
71
72/* linux/fs/ncpfs/sock.c */
73int ncp_request2(struct ncp_server *server, int function,
74	void* reply, int max_reply_size);
75static inline int ncp_request(struct ncp_server *server, int function) {
76	return ncp_request2(server, function, server->packet, server->packet_size);
77}
78int ncp_connect(struct ncp_server *server);
79int ncp_disconnect(struct ncp_server *server);
80void ncp_lock_server(struct ncp_server *server);
81void ncp_unlock_server(struct ncp_server *server);
82
83/* linux/fs/ncpfs/symlink.c */
84#if defined(CONFIG_NCPFS_EXTRAS) || defined(CONFIG_NCPFS_NFS_NS)
85extern const struct address_space_operations ncp_symlink_aops;
86int ncp_symlink(struct inode*, struct dentry*, const char*);
87#endif
88
89/* linux/fs/ncpfs/file.c */
90extern const struct inode_operations ncp_file_inode_operations;
91extern const struct file_operations ncp_file_operations;
92int ncp_make_open(struct inode *, int);
93
94/* linux/fs/ncpfs/mmap.c */
95int ncp_mmap(struct file *, struct vm_area_struct *);
96
97/* linux/fs/ncpfs/ncplib_kernel.c */
98int ncp_make_closed(struct inode *);
99
100#include "ncplib_kernel.h"
101