4 * Copyright (C) 1995 by Paal-Kr. Engstad and Volker Lendecke
5 * Copyright (C) 1997 by Volker Lendecke
12 #include <linux/types.h>
13 #include <linux/smb.h>
16 * Upper limit on the total number of active smb_request structs.
18 #define MAX_REQUEST_HARD 256
20 enum smb_receive_state
{
21 SMB_RECV_START
, /* No data read, looking for length + sig */
22 SMB_RECV_HEADER
, /* Reading the header data */
23 SMB_RECV_HCOMPLETE
, /* Done with the header */
24 SMB_RECV_PARAM
, /* Reading parameter words */
25 SMB_RECV_DATA
, /* Reading data bytes */
26 SMB_RECV_END
, /* End of request */
27 SMB_RECV_DROP
, /* Dropping this SMB */
28 SMB_RECV_REQUEST
, /* Received a request and not a reply */
31 /* structure access macros */
32 #define server_from_inode(inode) SMB_SB((inode)->i_sb)
33 #define server_from_dentry(dentry) SMB_SB((dentry)->d_sb)
34 #define SB_of(server) ((server)->super_block)
37 /* List of all smbfs superblocks */
38 struct list_head entry
;
40 enum smb_conn_state state
;
41 struct file
* sock_file
;
43 enum smb_receive_state rstate
;
46 struct list_head xmitq
;
47 struct list_head recvq
;
50 struct smb_mount_data_kernel
*mnt
;
52 /* Connections are counted. Each time a new socket arrives,
53 * generation is incremented.
55 unsigned int generation
;
57 struct smb_conn_opt opt
;
58 wait_queue_head_t conn_wq
;
62 unsigned char header
[SMB_HEADER_LEN
+ 20*2 + 2];
67 /* We use our own data_ready callback, but need the original one */
70 /* nls pointers for codepage conversions */
71 struct nls_table
*remote_nls
;
72 struct nls_table
*local_nls
;
76 struct super_block
*super_block
;
80 smb_lock_server_interruptible(struct smb_sb_info
*server
)
82 return down_interruptible(&(server
->sem
));
86 smb_lock_server(struct smb_sb_info
*server
)
92 smb_unlock_server(struct smb_sb_info
*server
)