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 
80 	__u16 attr;
81 
82 	unsigned long	f_ino;
83 	umode_t		f_mode;
84 	nlink_t		f_nlink;
85 	uid_t		f_uid;
86 	gid_t		f_gid;
87 	kdev_t		f_rdev;
88 	loff_t		f_size;
89 	time_t		f_atime;
90 	time_t		f_mtime;
91 	time_t		f_ctime;
92 	unsigned long	f_blksize;
93 	unsigned long	f_blocks;
94 	int		f_unix;
95 };
96 
97 enum smb_conn_state {
98 	CONN_VALID,		/* everything's fine */
99 	CONN_INVALID,		/* Something went wrong, but did not
100 				   try to reconnect yet. */
101 	CONN_RETRIED,		/* Tried a reconnection, but was refused */
102 	CONN_RETRYING		/* Currently trying to reconnect */
103 };
104 
105 #define SMB_SUPER_MAGIC               0x517B
106 
107 #define SMB_HEADER_LEN   37     /* includes everything up to, but not
108                                  * including smb_bcc */
109 
110 #define SMB_INITIAL_PACKET_SIZE		4000
111 #define SMB_MAX_PACKET_SIZE		32768
112 
113 /* reserve this much space for trans2 parameters. Shouldn't have to be more
114    than 10 or so, but OS/2 seems happier like this. */
115 #define SMB_TRANS2_MAX_PARAM 64
116 
117 #endif
118 #endif
119