Home | History | Annotate | Download | only in linux
      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
    118