Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git] / include / linux / smb.h
1 /*
2  *  smb.h
3  *
4  *  Copyright (C) 1995, 1996 by Paal-Kr. Engstad and Volker Lendecke
5  *  Copyright (C) 1997 by Volker Lendecke
6  *
7  */
8
9 #ifndef _LINUX_SMB_H
10 #define _LINUX_SMB_H
11
12 #include <linux/types.h>
13
14 enum smb_protocol { 
15         SMB_PROTOCOL_NONE, 
16         SMB_PROTOCOL_CORE, 
17         SMB_PROTOCOL_COREPLUS, 
18         SMB_PROTOCOL_LANMAN1, 
19         SMB_PROTOCOL_LANMAN2, 
20         SMB_PROTOCOL_NT1 
21 };
22
23 enum smb_case_hndl {
24         SMB_CASE_DEFAULT,
25         SMB_CASE_LOWER,
26         SMB_CASE_UPPER
27 };
28
29 struct smb_dskattr {
30         __u16 total;
31         __u16 allocblocks;
32         __u16 blocksize;
33         __u16 free;
34 };
35
36 struct smb_conn_opt {
37
38         /* The socket */
39         unsigned int fd;
40
41         enum smb_protocol protocol;
42         enum smb_case_hndl case_handling;
43
44         /* Connection-Options */
45
46         __u32              max_xmit;
47         __u16              server_uid;
48         __u16              tid;
49
50         /* The following are LANMAN 1.0 options */
51         __u16              secmode;
52         __u16              maxmux;
53         __u16              maxvcs;
54         __u16              rawmode;
55         __u32              sesskey;
56
57         /* The following are NT LM 0.12 options */
58         __u32              maxraw;
59         __u32              capabilities;
60         __s16              serverzone;
61 };
62
63 #ifdef __KERNEL__
64
65 #define SMB_NLS_MAXNAMELEN 20
66 struct smb_nls_codepage {
67         char local_name[SMB_NLS_MAXNAMELEN];
68         char remote_name[SMB_NLS_MAXNAMELEN];
69 };
70
71
72 #define SMB_MAXNAMELEN 255
73 #define SMB_MAXPATHLEN 1024
74
75 /*
76  * Contains all relevant data on a SMB networked file.
77  */
78 struct smb_fattr {
79         __u16 attr;
80
81         unsigned long   f_ino;
82         umode_t         f_mode;
83         nlink_t         f_nlink;
84         uid_t           f_uid;
85         gid_t           f_gid;
86         dev_t           f_rdev;
87         loff_t          f_size;
88         struct timespec f_atime;
89         struct timespec f_mtime;
90         struct timespec f_ctime;
91         unsigned long   f_blocks;
92         int             f_unix;
93 };
94
95 enum smb_conn_state {
96         CONN_VALID,             /* everything's fine */
97         CONN_INVALID,           /* Something went wrong, but did not
98                                    try to reconnect yet. */
99         CONN_RETRIED,           /* Tried a reconnection, but was refused */
100         CONN_RETRYING           /* Currently trying to reconnect */
101 };
102
103 #define SMB_SUPER_MAGIC               0x517B
104
105 #define SMB_HEADER_LEN   37     /* includes everything up to, but not
106                                  * including smb_bcc */
107
108 #define SMB_INITIAL_PACKET_SIZE         4000
109 #define SMB_MAX_PACKET_SIZE             32768
110
111 /* reserve this much space for trans2 parameters. Shouldn't have to be more
112    than 10 or so, but OS/2 seems happier like this. */
113 #define SMB_TRANS2_MAX_PARAM 64
114
115 #endif
116 #endif