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
14enum 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
23enum smb_case_hndl {
24	SMB_CASE_DEFAULT,
25	SMB_CASE_LOWER,
26	SMB_CASE_UPPER
27};
28
29struct smb_dskattr {
30        __u16 total;
31        __u16 allocblocks;
32        __u16 blocksize;
33        __u16 free;
34};
35
36struct 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
66struct 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 */
78struct 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	off_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};
95
96enum smb_conn_state {
97	CONN_VALID,		/* everything's fine */
98	CONN_INVALID,		/* Something went wrong, but did not
99				   try to reconnect yet. */
100	CONN_RETRIED,		/* Tried a reconnection, but was refused */
101	CONN_RETRYING		/* Currently trying to reconnect */
102};
103
104#define SMB_SUPER_MAGIC               0x517B
105
106#define SMB_HEADER_LEN   37     /* includes everything up to, but not
107                                 * including smb_bcc */
108
109#define SMB_INITIAL_PACKET_SIZE		4000
110#define SMB_MAX_PACKET_SIZE		32768
111
112/* reserve this much space for trans2 parameters. Shouldn't have to be more
113   than 10 or so, but OS/2 seems happier like this. */
114#define SMB_TRANS2_MAX_PARAM 64
115
116#endif
117#endif
118