OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [ncp_fs.h] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 *  ncp_fs.h
3
 *
4
 *  Copyright (C) 1995, 1996 by Volker Lendecke
5
 *
6
 */
7
 
8
#ifndef _LINUX_NCP_FS_H
9
#define _LINUX_NCP_FS_H
10
 
11
#include <linux/fs.h>
12
#include <linux/in.h>
13
#include <linux/types.h>
14
#include <linux/magic.h>
15
 
16
#include <linux/ipx.h>
17
#include <linux/ncp_no.h>
18
 
19
/*
20
 * ioctl commands
21
 */
22
 
23
struct ncp_ioctl_request {
24
        unsigned int function;
25
        unsigned int size;
26
        char __user *data;
27
};
28
 
29
struct ncp_fs_info {
30
        int version;
31
        struct sockaddr_ipx addr;
32
        __kernel_uid_t mounted_uid;
33
        int connection;         /* Connection number the server assigned us */
34
        int buffer_size;        /* The negotiated buffer size, to be
35
                                   used for read/write requests! */
36
 
37
        int volume_number;
38
        __le32 directory_id;
39
};
40
 
41
struct ncp_fs_info_v2 {
42
        int version;
43
        unsigned long mounted_uid;
44
        unsigned int connection;
45
        unsigned int buffer_size;
46
 
47
        unsigned int volume_number;
48
        __le32 directory_id;
49
 
50
        __u32 dummy1;
51
        __u32 dummy2;
52
        __u32 dummy3;
53
};
54
 
55
struct ncp_sign_init
56
{
57
        char sign_root[8];
58
        char sign_last[16];
59
};
60
 
61
struct ncp_lock_ioctl
62
{
63
#define NCP_LOCK_LOG    0
64
#define NCP_LOCK_SH     1
65
#define NCP_LOCK_EX     2
66
#define NCP_LOCK_CLEAR  256
67
        int             cmd;
68
        int             origin;
69
        unsigned int    offset;
70
        unsigned int    length;
71
#define NCP_LOCK_DEFAULT_TIMEOUT        18
72
#define NCP_LOCK_MAX_TIMEOUT            180
73
        int             timeout;
74
};
75
 
76
struct ncp_setroot_ioctl
77
{
78
        int             volNumber;
79
        int             namespace;
80
        __le32          dirEntNum;
81
};
82
 
83
struct ncp_objectname_ioctl
84
{
85
#define NCP_AUTH_NONE   0x00
86
#define NCP_AUTH_BIND   0x31
87
#define NCP_AUTH_NDS    0x32
88
        int             auth_type;
89
        size_t          object_name_len;
90
        void __user *   object_name;    /* an userspace data, in most cases user name */
91
};
92
 
93
struct ncp_privatedata_ioctl
94
{
95
        size_t          len;
96
        void __user *   data;           /* ~1000 for NDS */
97
};
98
 
99
/* NLS charsets by ioctl */
100
#define NCP_IOCSNAME_LEN 20
101
struct ncp_nls_ioctl
102
{
103
        unsigned char codepage[NCP_IOCSNAME_LEN+1];
104
        unsigned char iocharset[NCP_IOCSNAME_LEN+1];
105
};
106
 
107
#define NCP_IOC_NCPREQUEST              _IOR('n', 1, struct ncp_ioctl_request)
108
#define NCP_IOC_GETMOUNTUID             _IOW('n', 2, __kernel_old_uid_t)
109
#define NCP_IOC_GETMOUNTUID2            _IOW('n', 2, unsigned long)
110
 
111
#define NCP_IOC_CONN_LOGGED_IN          _IO('n', 3)
112
 
113
#define NCP_GET_FS_INFO_VERSION    (1)
114
#define NCP_IOC_GET_FS_INFO             _IOWR('n', 4, struct ncp_fs_info)
115
#define NCP_GET_FS_INFO_VERSION_V2 (2)
116
#define NCP_IOC_GET_FS_INFO_V2          _IOWR('n', 4, struct ncp_fs_info_v2)
117
 
118
#define NCP_IOC_SIGN_INIT               _IOR('n', 5, struct ncp_sign_init)
119
#define NCP_IOC_SIGN_WANTED             _IOR('n', 6, int)
120
#define NCP_IOC_SET_SIGN_WANTED         _IOW('n', 6, int)
121
 
122
#define NCP_IOC_LOCKUNLOCK              _IOR('n', 7, struct ncp_lock_ioctl)
123
 
124
#define NCP_IOC_GETROOT                 _IOW('n', 8, struct ncp_setroot_ioctl)
125
#define NCP_IOC_SETROOT                 _IOR('n', 8, struct ncp_setroot_ioctl)
126
 
127
#define NCP_IOC_GETOBJECTNAME           _IOWR('n', 9, struct ncp_objectname_ioctl)
128
#define NCP_IOC_SETOBJECTNAME           _IOR('n', 9, struct ncp_objectname_ioctl)
129
#define NCP_IOC_GETPRIVATEDATA          _IOWR('n', 10, struct ncp_privatedata_ioctl)
130
#define NCP_IOC_SETPRIVATEDATA          _IOR('n', 10, struct ncp_privatedata_ioctl)
131
 
132
#define NCP_IOC_GETCHARSETS             _IOWR('n', 11, struct ncp_nls_ioctl)
133
#define NCP_IOC_SETCHARSETS             _IOR('n', 11, struct ncp_nls_ioctl)
134
 
135
#define NCP_IOC_GETDENTRYTTL            _IOW('n', 12, __u32)
136
#define NCP_IOC_SETDENTRYTTL            _IOR('n', 12, __u32)
137
 
138
/*
139
 * The packet size to allocate. One page should be enough.
140
 */
141
#define NCP_PACKET_SIZE 4070
142
 
143
#define NCP_MAXPATHLEN 255
144
#define NCP_MAXNAMELEN 14
145
 
146
#ifdef __KERNEL__
147
 
148
#include <linux/ncp_fs_i.h>
149
#include <linux/ncp_fs_sb.h>
150
 
151
/* define because it is easy to change PRINTK to {*}PRINTK */
152
#define PRINTK(format, args...) printk(KERN_DEBUG format , ## args)
153
 
154
#undef NCPFS_PARANOIA
155
#ifdef NCPFS_PARANOIA
156
#define PPRINTK(format, args...) PRINTK(format , ## args)
157
#else
158
#define PPRINTK(format, args...)
159
#endif
160
 
161
#ifndef DEBUG_NCP
162
#define DEBUG_NCP 0
163
#endif
164
#if DEBUG_NCP > 0
165
#define DPRINTK(format, args...) PRINTK(format , ## args)
166
#else
167
#define DPRINTK(format, args...)
168
#endif
169
#if DEBUG_NCP > 1
170
#define DDPRINTK(format, args...) PRINTK(format , ## args)
171
#else
172
#define DDPRINTK(format, args...)
173
#endif
174
 
175
#define NCP_MAX_RPC_TIMEOUT (6*HZ)
176
 
177
 
178
struct ncp_entry_info {
179
        struct nw_info_struct   i;
180
        ino_t                   ino;
181
        int                     opened;
182
        int                     access;
183
        unsigned int            volume;
184
        __u8                    file_handle[6];
185
};
186
 
187
static inline struct ncp_server *NCP_SBP(struct super_block *sb)
188
{
189
        return sb->s_fs_info;
190
}
191
 
192
#define NCP_SERVER(inode)       NCP_SBP((inode)->i_sb)
193
static inline struct ncp_inode_info *NCP_FINFO(struct inode *inode)
194
{
195
        return container_of(inode, struct ncp_inode_info, vfs_inode);
196
}
197
 
198
/* linux/fs/ncpfs/inode.c */
199
int ncp_notify_change(struct dentry *, struct iattr *);
200
struct inode *ncp_iget(struct super_block *, struct ncp_entry_info *);
201
void ncp_update_inode(struct inode *, struct ncp_entry_info *);
202
void ncp_update_inode2(struct inode *, struct ncp_entry_info *);
203
 
204
/* linux/fs/ncpfs/dir.c */
205
extern const struct inode_operations ncp_dir_inode_operations;
206
extern const struct file_operations ncp_dir_operations;
207
int ncp_conn_logged_in(struct super_block *);
208
int ncp_date_dos2unix(__le16 time, __le16 date);
209
void ncp_date_unix2dos(int unix_date, __le16 * time, __le16 * date);
210
 
211
/* linux/fs/ncpfs/ioctl.c */
212
int ncp_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
213
long ncp_compat_ioctl(struct file *, unsigned int, unsigned long);
214
 
215
/* linux/fs/ncpfs/sock.c */
216
int ncp_request2(struct ncp_server *server, int function,
217
        void* reply, int max_reply_size);
218
static inline int ncp_request(struct ncp_server *server, int function) {
219
        return ncp_request2(server, function, server->packet, server->packet_size);
220
}
221
int ncp_connect(struct ncp_server *server);
222
int ncp_disconnect(struct ncp_server *server);
223
void ncp_lock_server(struct ncp_server *server);
224
void ncp_unlock_server(struct ncp_server *server);
225
 
226
/* linux/fs/ncpfs/file.c */
227
extern const struct inode_operations ncp_file_inode_operations;
228
extern const struct file_operations ncp_file_operations;
229
int ncp_make_open(struct inode *, int);
230
 
231
/* linux/fs/ncpfs/mmap.c */
232
int ncp_mmap(struct file *, struct vm_area_struct *);
233
 
234
/* linux/fs/ncpfs/ncplib_kernel.c */
235
int ncp_make_closed(struct inode *);
236
 
237
#define ncp_namespace(i)        (NCP_SERVER(i)->name_space[NCP_FINFO(i)->volNumber])
238
 
239
static inline int ncp_preserve_entry_case(struct inode *i, __u32 nscreator)
240
{
241
#ifdef CONFIG_NCPFS_SMALLDOS
242
        int ns = ncp_namespace(i);
243
 
244
        if ((ns == NW_NS_DOS)
245
#ifdef CONFIG_NCPFS_OS2_NS
246
                || ((ns == NW_NS_OS2) && (nscreator == NW_NS_DOS))
247
#endif /* CONFIG_NCPFS_OS2_NS */
248
                                )
249
                return 0;
250
#endif /* CONFIG_NCPFS_SMALLDOS */
251
        return 1;
252
}
253
 
254
#define ncp_preserve_case(i)    (ncp_namespace(i) != NW_NS_DOS)
255
 
256
static inline int ncp_case_sensitive(struct inode *i)
257
{
258
#ifdef CONFIG_NCPFS_NFS_NS
259
        return ncp_namespace(i) == NW_NS_NFS;
260
#else
261
        return 0;
262
#endif  /* CONFIG_NCPFS_NFS_NS */
263
}
264
 
265
#endif                          /* __KERNEL__ */
266
 
267
#endif                          /* _LINUX_NCP_FS_H */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.