⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cifspdu.h

📁 Linux Kernel 2.6.9 for OMAP1710
💻 H
📖 第 1 页 / 共 4 页
字号:
/* *   fs/cifs/cifspdu.h * *   Copyright (c) International Business Machines  Corp., 2002 *   Author(s): Steve French (sfrench@us.ibm.com) * *   This library is free software; you can redistribute it and/or modify *   it under the terms of the GNU Lesser General Public License as published *   by the Free Software Foundation; either version 2.1 of the License, or *   (at your option) any later version. * *   This library is distributed in the hope that it will be useful, *   but WITHOUT ANY WARRANTY; without even the implied warranty of *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See *   the GNU Lesser General Public License for more details. * *   You should have received a copy of the GNU Lesser General Public License *   along with this library; if not, write to the Free Software *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  */#ifndef _CIFSPDU_H#define _CIFSPDU_H#include <net/sock.h>#define CIFS_PROT   0#define BAD_PROT    CIFS_PROT+1/* SMB command codes */#define SMB_COM_CREATE_DIRECTORY      0x00#define SMB_COM_DELETE_DIRECTORY      0x01#define SMB_COM_CLOSE                 0x04#define SMB_COM_DELETE                0x06#define SMB_COM_RENAME                0x07#define SMB_COM_LOCKING_ANDX          0x24#define SMB_COM_COPY                  0x29#define SMB_COM_READ_ANDX             0x2E#define SMB_COM_WRITE_ANDX            0x2F#define SMB_COM_TRANSACTION2          0x32#define SMB_COM_TRANSACTION2_SECONDARY 0x33#define SMB_COM_FIND_CLOSE2           0x34#define SMB_COM_TREE_DISCONNECT       0x71#define SMB_COM_NEGOTIATE             0x72#define SMB_COM_SESSION_SETUP_ANDX    0x73#define SMB_COM_LOGOFF_ANDX           0x74#define SMB_COM_TREE_CONNECT_ANDX     0x75#define SMB_COM_NT_TRANSACT           0xA0#define SMB_COM_NT_TRANSACT_SECONDARY 0xA1#define SMB_COM_NT_CREATE_ANDX        0xA2#define SMB_COM_NT_RENAME             0xA5/* Transact2 subcommand codes */#define TRANS2_OPEN                   0x00#define TRANS2_FIND_FIRST             0x01#define TRANS2_FIND_NEXT              0x02#define TRANS2_QUERY_FS_INFORMATION   0x03#define TRANS2_QUERY_PATH_INFORMATION 0x05#define TRANS2_SET_PATH_INFORMATION   0x06#define TRANS2_QUERY_FILE_INFORMATION 0x07#define TRANS2_SET_FILE_INFORMATION   0x08#define TRANS2_GET_DFS_REFERRAL       0x10#define TRANS2_REPORT_DFS_INCOSISTENCY 0x11/* NT Transact subcommand codes */#define NT_TRANSACT_CREATE            0x01#define NT_TRANSACT_IOCTL             0x02#define NT_TRANSACT_SET_SECURITY_DESC 0x03#define NT_TRANSACT_NOTIFY_CHANGE     0x04#define NT_TRANSACT_RENAME            0x05#define NT_TRANSACT_QUERY_SECURITY_DESC 0x06#define NT_TRANSACT_GET_USER_QUOTA    0x07#define NT_TRANSACT_SET_USER_QUOTA    0x08#define MAX_CIFS_HDR_SIZE 256	/* chained NTCreateXReadX will probably be biggest *//* internal cifs vfs structures *//***************************************************************** * All constants go here ***************************************************************** *//* * Starting value for maximum SMB size negotiation */#define CIFS_MAX_MSGSIZE (4*4096)/* * Size of encrypted user password in bytes */#define CIFS_ENCPWD_SIZE (16)/* * Size of the crypto key returned on the negotiate SMB in bytes */#define CIFS_CRYPTO_KEY_SIZE (8)/* * Size of the session key (crypto key encrypted with the password */#define CIFS_SESSION_KEY_SIZE (24)/* * Maximum user name length */#define CIFS_UNLEN (20)/* * Flags on SMB open */#define SMBOPEN_WRITE_THROUGH 0x4000#define SMBOPEN_DENY_ALL      0x0010#define SMBOPEN_DENY_WRITE    0x0020#define SMBOPEN_DENY_READ     0x0030#define SMBOPEN_DENY_NONE     0x0040#define SMBOPEN_READ          0x0000#define SMBOPEN_WRITE         0x0001#define SMBOPEN_READWRITE     0x0002#define SMBOPEN_EXECUTE       0x0003#define SMBOPEN_OCREATE       0x0010#define SMBOPEN_OTRUNC        0x0002#define SMBOPEN_OAPPEND       0x0001/* * SMB flag definitions  */#define SMBFLG_EXTD_LOCK 0x01	/* server supports lock-read write-unlock primitives */#define SMBFLG_RCV_POSTED 0x02	/* obsolete */#define SMBFLG_RSVD 0x04#define SMBFLG_CASELESS 0x08	/* all pathnames treated as caseless (off implies case sensitive file handling requested) */#define SMBFLG_CANONICAL_PATH_FORMAT 0x10	/* obsolete */#define SMBFLG_OLD_OPLOCK 0x20	/* obsolete */#define SMBFLG_OLD_OPLOCK_NOTIFY 0x40	/* obsolete */#define SMBFLG_RESPONSE 0x80	/* this PDU is a response from server *//* * SMB flag2 definitions  */#define SMBFLG2_KNOWS_LONG_NAMES cpu_to_le16(1)	/* can send long (non-8.3) path names in response */#define SMBFLG2_KNOWS_EAS cpu_to_le16(2)#define SMBFLG2_SECURITY_SIGNATURE cpu_to_le16(4)#define SMBFLG2_IS_LONG_NAME cpu_to_le16(0x40)#define SMBFLG2_EXT_SEC cpu_to_le16(0x80)#define SMBFLG2_DFS cpu_to_le16(0x1000)#define SMBFLG2_PAGING_IO cpu_to_le16(0x2000)#define SMBFLG2_ERR_STATUS cpu_to_le16(0x4000)#define SMBFLG2_UNICODE cpu_to_le16(0x8000)/* * These are the file access permission bits defined in CIFS for the * NTCreateAndX as well as the level 0x107 * TRANS2_QUERY_PATH_INFORMATION API.  The level 0x107, SMB_QUERY_FILE_ALL_INFO * responds with the AccessFlags. * The AccessFlags specifies the access permissions a caller has to the * file and can have any suitable combination of the following values: */#define FILE_READ_DATA        0x00000001	/* Data can be read from the file   */#define FILE_WRITE_DATA       0x00000002	/* Data can be written to the file  */#define FILE_APPEND_DATA      0x00000004	/* Data can be appended to the file */#define FILE_READ_EA          0x00000008	/* Extended attributes associated   */					 /* with the file can be read        */#define FILE_WRITE_EA         0x00000010	/* Extended attributes associated   */					 /* with the file can be written     */#define FILE_EXECUTE          0x00000020	/*Data can be read into memory from */					 /* the file using system paging I/O */#define FILE_DELETE_CHILD     0x00000040#define FILE_READ_ATTRIBUTES  0x00000080	/* Attributes associated with the   */					 /* file can be read                 */#define FILE_WRITE_ATTRIBUTES 0x00000100	/* Attributes associated with the   */					 /* file can be written              */#define DELETE                0x00010000	/* The file can be deleted          */#define READ_CONTROL          0x00020000	/* The access control list and      */					 /* ownership associated with the    */					 /* file can be read                 */#define WRITE_DAC             0x00040000	/* The access control list and      */					 /* ownership associated with the    */					 /* file can be written.             */#define WRITE_OWNER           0x00080000	/* Ownership information associated */					 /* with the file can be written     */#define SYNCHRONIZE           0x00100000	/* The file handle can waited on to */					 /* synchronize with the completion  */					 /* of an input/output request       */#define GENERIC_ALL           0x10000000#define GENERIC_EXECUTE       0x20000000#define GENERIC_WRITE         0x40000000#define GENERIC_READ          0x80000000					 /* In summary - Relevant file       */					 /* access flags from CIFS are       */					 /* file_read_data, file_write_data  */					 /* file_execute, file_read_attributes */					 /* write_dac, and delete.           *//* * Invalid readdir handle */#define CIFS_NO_HANDLE        0xFFFF/* IPC$ in ASCII */#define CIFS_IPC_RESOURCE "\x49\x50\x43\x24"/* IPC$ in Unicode */#define CIFS_IPC_UNICODE_RESOURCE "\x00\x49\x00\x50\x00\x43\x00\x24\x00\x00"/* Unicode Null terminate 2 bytes of 0 */#define UNICODE_NULL "\x00\x00"#define ASCII_NULL 0x00/* * Server type values (returned on EnumServer API */#define CIFS_SV_TYPE_DC     0x00000008#define CIFS_SV_TYPE_BACKDC 0x00000010/* * Alias type flags (From EnumAlias API call */#define CIFS_ALIAS_TYPE_FILE 0x0001#define CIFS_SHARE_TYPE_FILE 0x0000/* * File Attribute flags */#define ATTR_READONLY  0x0001#define ATTR_HIDDEN    0x0002#define ATTR_SYSTEM    0x0004#define ATTR_VOLUME    0x0008#define ATTR_DIRECTORY 0x0010#define ATTR_ARCHIVE   0x0020#define ATTR_DEVICE    0x0040#define ATTR_NORMAL    0x0080#define ATTR_TEMPORARY 0x0100#define ATTR_SPARSE    0x0200#define ATTR_REPARSE   0x0400#define ATTR_COMPRESSED 0x0800#define ATTR_OFFLINE    0x1000	/* ie file not immediately available - offline storage */#define ATTR_NOT_CONTENT_INDEXED 0x2000#define ATTR_ENCRYPTED  0x4000#define ATTR_POSIX_SEMANTICS 0x01000000#define ATTR_BACKUP_SEMANTICS 0x02000000#define ATTR_DELETE_ON_CLOSE 0x04000000#define ATTR_SEQUENTIAL_SCAN 0x08000000#define ATTR_RANDOM_ACCESS   0x10000000#define ATTR_NO_BUFFERING    0x20000000#define ATTR_WRITE_THROUGH   0x80000000/* ShareAccess flags */#define FILE_NO_SHARE     0x00000000#define FILE_SHARE_READ   0x00000001#define FILE_SHARE_WRITE  0x00000002#define FILE_SHARE_DELETE 0x00000004#define FILE_SHARE_ALL    0x00000007/* CreateDisposition flags */#define FILE_SUPERSEDE    0x00000000#define FILE_OPEN         0x00000001#define FILE_CREATE       0x00000002#define FILE_OPEN_IF      0x00000003#define FILE_OVERWRITE    0x00000004#define FILE_OVERWRITE_IF 0x00000005/* CreateOptions */#define CREATE_NOT_FILE		0x00000001	/* if set must not be file */#define CREATE_WRITE_THROUGH	0x00000002#define CREATE_NOT_DIR		0x00000040	/* if set must not be directory */#define CREATE_RANDOM_ACCESS	0x00000800#define CREATE_DELETE_ON_CLOSE	0x00001000#define OPEN_REPARSE_POINT	0x00200000/* ImpersonationLevel flags */#define SECURITY_ANONYMOUS      0#define SECURITY_IDENTIFICATION 1#define SECURITY_IMPERSONATION  2#define SECURITY_DELEGATION     3/* SecurityFlags */#define SECURITY_CONTEXT_TRACKING 0x01#define SECURITY_EFFECTIVE_ONLY   0x02/* * Default PID value, used in all SMBs where the PID is not important */#define CIFS_DFT_PID  0x1234/* * We use the same routine for Copy and Move SMBs.  This flag is used to * distinguish */#define CIFS_COPY_OP 1#define CIFS_RENAME_OP 2#define GETU16(var)  (*((__u16 *)var))	/* BB check for endian issues */#define GETU32(var)  (*((__u32 *)var))	/* BB check for endian issues */#pragma pack(1)struct smb_hdr {	__u32 smb_buf_length;	/* big endian on wire *//* BB length is only two or three bytes - with one or two byte type preceding it but that is always zero - we could mask the type byte off just in case BB */	__u8 Protocol[4];	__u8 Command;	union {		struct {			__u8 ErrorClass;			__u8 Reserved;			__le16 Error;		} DosError;		__le32 CifsError;	} Status;	__u8 Flags;	__le16 Flags2;		/* note: le */	__le16 PidHigh;	union {		struct {			__le32 SequenceNumber;  /* le */			__u32 Reserved; /* zero */		} Sequence;		__u8 SecuritySignature[8];	/* le */	} Signature;	__u8 pad[2];	__u16 Tid;	__le16 Pid;	__u16 Uid;	__u16 Mid;	__u8 WordCount;};/* given a pointer to an smb_hdr retrieve the value of byte count */#define BCC(smb_var) ( *(__u16 *)((char *)smb_var + sizeof(struct smb_hdr) + (2* smb_var->WordCount) ) )/* given a pointer to an smb_hdr retrieve the pointer to the byte area */#define pByteArea(smb_var) ((unsigned char *)smb_var + sizeof(struct smb_hdr) + (2* smb_var->WordCount) + 2 )/* * Computer Name Length */#define CNLEN 15/* * Share Name Length					  @S8A * Note:  This length is limited by the SMB used to get   @S8A *        the Share info.   NetShareEnum only returns 13  @S8A *        chars, including the null termination.          @S8A  */#define SNLEN 12		/*@S8A *//* * Comment Length */#define MAXCOMMENTLEN 40/* * The OS/2 maximum path name */#define MAX_PATHCONF 256/* *  SMB frame definitions  (following must be packed structs) *  See the SNIA CIFS Specification for details. * *  The Naming convention is the lower case version of the *  smb command code name for the struct and this is typedef to the *  uppercase version of the same name with the prefix SMB_ removed  *  for brevity.  Although typedefs are not commonly used for  *  structure definitions in the Linux kernel, their use in the *  CIFS standards document, which this code is based on, may *  make this one of the cases where typedefs for structures make *  sense to improve readability for readers of the standards doc. *  Typedefs can always be removed later if they are too distracting *  and they are only used for the CIFSs PDUs themselves, not *  internal cifs vfs structures *   */typedef struct negotiate_req {	struct smb_hdr hdr;	/* wct = 0 */	__le16 ByteCount;	unsigned char DialectsArray[1];} NEGOTIATE_REQ;typedef struct negotiate_rsp {	struct smb_hdr hdr;	/* wct = 17 */	__le16 DialectIndex;	__u8 SecurityMode;	__le16 MaxMpxCount;	__le16 MaxNumberVcs;	__le32 MaxBufferSize;	__le32 MaxRawSize;	__le32 SessionKey;	__le32 Capabilities;	/* see below */	__le32 SystemTimeLow;	__le32 SystemTimeHigh;	__le16 ServerTimeZone;	__u8 EncryptionKeyLength;	__u16 ByteCount;	union {		unsigned char EncryptionKey[1];	/* if cap extended security is off */		/* followed by Domain name - if extended security is off */		/* followed by 16 bytes of server GUID */		/* followed by security blob if cap_extended_security negotiated */		struct {			unsigned char GUID[16];			unsigned char SecurityBlob[1];		} extended_response;	} u;} NEGOTIATE_RSP;/* SecurityMode bits */#define SECMODE_USER          0x01	/* off indicates share level security */#define SECMODE_PW_ENCRYPT    0x02#define SECMODE_SIGN_ENABLED  0x04	/* SMB security signatures enabled */#define SECMODE_SIGN_REQUIRED 0x08	/* SMB security signatures required *//* Negotiate response Capabilities */#define CAP_RAW_MODE           0x00000001#define CAP_MPX_MODE           0x00000002#define CAP_UNICODE            0x00000004#define CAP_LARGE_FILES        0x00000008#define CAP_NT_SMBS            0x00000010	/* implies CAP_NT_FIND */#define CAP_RPC_REMOTE_APIS    0x00000020#define CAP_STATUS32           0x00000040#define CAP_LEVEL_II_OPLOCKS   0x00000080#define CAP_LOCK_AND_READ      0x00000100#define CAP_NT_FIND            0x00000200#define CAP_DFS                0x00001000#define CAP_INFOLEVEL_PASSTHRU 0x00002000#define CAP_LARGE_READ_X       0x00004000#define CAP_LARGE_WRITE_X      0x00008000#define CAP_UNIX               0x00800000#define CAP_RESERVED           0x02000000#define CAP_BULK_TRANSFER      0x20000000#define CAP_COMPRESSED_DATA    0x40000000#define CAP_EXTENDED_SECURITY  0x80000000typedef union smb_com_session_setup_andx {	struct {		/* request format */		struct smb_hdr hdr;	/* wct = 12 */		__u8 AndXCommand;		__u8 AndXReserved;		__le16 AndXOffset;		__le16 MaxBufferSize;		__le16 MaxMpxCount;		__le16 VcNumber;		__u32 SessionKey;		__le16 SecurityBlobLength;		__u32 Reserved;		__le32 Capabilities;	/* see below */		__le16 ByteCount;		unsigned char SecurityBlob[1];	/* followed by */		/* STRING NativeOS */		/* STRING NativeLanMan */	} req;			/* NTLM request format (with extended security */	struct {		/* request format */		struct smb_hdr hdr;	/* wct = 13 */		__u8 AndXCommand;		__u8 AndXReserved;		__le16 AndXOffset;		__le16 MaxBufferSize;		__le16 MaxMpxCount;		__le16 VcNumber;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -