Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
422 giacomo 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_blksize;
92
        unsigned long   f_blocks;
93
        int             f_unix;
94
};
95
 
96
enum 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