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