diff options
Diffstat (limited to 'source3/aparser/cifs.struct')
-rw-r--r-- | source3/aparser/cifs.struct | 1029 |
1 files changed, 0 insertions, 1029 deletions
diff --git a/source3/aparser/cifs.struct b/source3/aparser/cifs.struct deleted file mode 100644 index 202f0d7e61..0000000000 --- a/source3/aparser/cifs.struct +++ /dev/null @@ -1,1029 +0,0 @@ -module cifs - -option autoalign False - - -#define BOOL uint32 -#define UCHAR uint8 -#define WCHAR uint16 -#define USHORT uint16 -#define LONG uint32 -#define ULONG uint32 -#define DWORD uint32 -#define SMB_TIME uint16 -#define SMB_DATE uint16 - -typedef struct { - ULONG low; - LONG high; -} TIME; - -typedef struct { - ULONG low; - ULONG high; -} hyper; - -typedef struct { - uint8 cmd; - uint8 reserved; - uint16 offset; -} ANDX_INFO; - - -typedef struct { - uint8 tag2; - STRING protocol; -} BUF2; - -typedef struct { - uint16 bcount; - BUF2 protocol[*]; -} Q_NEGPROT_0; - -typedef struct { - uint8 wcount; - union ctr[wcount] { - case 0 Q_NEGPROT_0 q0; - } -} Q_NEGPROT; - -typedef struct { - USHORT DialectIndex; /* Index of selected dialect */ - USHORT SecurityMode; /* Security mode: */ - /* bit 0: 0 = share, 1 = user */ - /* bit 1: 1 = use challenge/response */ - /* authentication */ - USHORT MaxBufferSize; /* Max transmit buffer size (>= 1024) */ - USHORT MaxMpxCount; /* Max pending multiplexed requests */ - USHORT MaxNumberVcs; /* Max VCs between client and server */ - USHORT RawMode; /* Raw modes supported: */ - /* bit 0: 1 = Read Raw supported */ - /* bit 1: 1 = Write Raw supported */ - ULONG SessionKey; /* Unique token identifying this session */ - SMB_TIME ServerTime; /* Current time at server */ - SMB_DATE ServerDate; /* Current date at server */ - USHORT ServerTimeZone; /* Current time zone at server */ - USHORT ChallengeLength; /* Length of Challenge; MBZ if not LM2.1 - /* dialect or later */ - USHORT Reserved; /* MBZ */ - USHORT ByteCount; /* Count of data bytes */ - UCHAR Challenge[ChallengeLength]; /* The challenge */ - STRING PrimaryDomain; /* The server's primary domain */ - -} R_NEGPROT_12; - -typedef struct { - USHORT DialectIndex; /*Index of selected dialect */ - UCHAR SecurityMode; /*Security mode: */ - /* bit 0: 0 = share, 1 = user */ - /* bit 1: 1 = use challenge/response */ - /* authentication */ - /* bit 2: 1 = Security Signatures (SMB integrity */ - /* check) enabled */ - /* bit 3: 1 = Security Signatures (SMB integrity */ - /* check) required */ - USHORT MaxMpxCount; /*Max pending outstanding requests */ - USHORT MaxNumberVcs; /*Max VCs between client and server */ - ULONG MaxBufferSize; /*Max transmit buffer size */ - ULONG MaxRawSize; /*Maximum raw buffer size */ - ULONG SessionKey; /*Unique token identifying this session */ - ULONG Capabilities; /*Server capabilities */ - ULONG SystemTimeLow; /*System (UTC) time of the server (low). */ - ULONG SystemTimeHigh; /*System (UTC) time of the server (high). */ - USHORT ServerTimeZone;/*Time zone of server (minutes from UTC) */ - UCHAR SecurityBlobLength;/*Length of SecurityBlob */ - - USHORT bcount; /*Count of data bytes */ - /*UCHAR GUID[16]; A globally unique identifier assigned to the */ - /* server; present only when */ - /* CAP_EXTENDED_SECURITY is on in the */ - /* Capabilities field. */ - UCHAR SecurityBlob[SecurityBlobLength]; /*Opaque Security Blob associated with the */ - /* security package if CAP_EXTENDED_SECURITY is */ - /* on in the Capabilities field; else challenge */ - /* for CIFS challenge/response authentication. */ - STRING OemDomainName[+]; /*The name of the domain (in OEM chars); not */ - /* present if CAP_EXTENDED_SECURITY is on in the */ - /* Capabilities field */ -} R_NEGPROT_17; - - -typedef struct { - uint8 wcount; - union ctr[wcount] { - case 17 R_NEGPROT_17 r17; - } -} R_NEGPROT; - -typedef struct { - uint8 wcount; - uint16 vwv[wcount]; - uint16 bcount; - uint8 none[bcount]; -} Q_TDIS; - -typedef struct { - uint8 wcount; - uint16 vwv[wcount]; - uint16 bcount; - uint8 none[bcount]; -} R_TDIS; - -typedef struct { - ANDX_INFO andx; - uint16 bcount; - uint8 none[bcount]; -} R_ULOGOFF_ANDX_2; - -typedef struct { - uint8 wcount; - union ctr[wcount] { - case 2 R_ULOGOFF_ANDX_2 q2; - } -} R_ULOGOFF_ANDX; - -typedef struct { - ANDX_INFO andx; - uint16 bcount; - uint8 none[bcount]; -} Q_ULOGOFF_ANDX_2; - -typedef struct { - uint8 wcount; - union ctr[wcount] { - case 2 Q_ULOGOFF_ANDX_2 q2; - } -} Q_ULOGOFF_ANDX; - -typedef struct { - ANDX_INFO andx; - uint16 bufsize; - uint16 max_mpx; - uint16 vc; - ULONG sess_key; - uint16 pwlen; - ULONG reserved; - - uint16 bcount; - uint8 password[pwlen]; - STRING domain; - STRING os; - STRING server; - -} Q_SESSION_SETUP_ANDX_10; - -typedef struct { - ANDX_INFO andx; - uint16 bufsize; - uint16 max_mpx; - uint16 vc; - ULONG sess_key; - uint16 pwlen; - uint16 upwlen; - ULONG capabilities; - ULONG reserved; - - uint16 bcount; - uint8 password[pwlen]; - uint8 upassword[upwlen]; - STRING user; - STRING domain; - STRING os; - STRING server; - -} Q_SESSION_SETUP_ANDX_13; - -typedef struct _Q_SESSION_SETUP_ANDX { - uint8 wcount; - union ctr[wcount] { - case 10 Q_SESSION_SETUP_ANDX_10 q10; - case 13 Q_SESSION_SETUP_ANDX_13 q13; - } -} Q_SESSION_SETUP_ANDX; - -typedef struct { - ANDX_INFO andx; - uint16 vwv2; - uint16 passlen; - uint16 bcount; - uint8 password[passlen]; - STRING path; - STRING device; -} Q_TCON_ANDX_4; - -typedef struct _Q_TCON_ANDX { - uint8 wcount; - union ctr[wcount] { - case 4 Q_TCON_ANDX_4 q4; - } -} Q_TCON_ANDX; - -typedef struct { - ANDX_INFO andx; - uint16 vwv2; - uint16 bcount; - STRING share; -} R_TCON_ANDX_3; - -typedef struct _R_TCON_ANDX { - uint8 wcount; - union ctr[wcount] { - case 3 R_TCON_ANDX_3 q3; - } -} R_TCON_ANDX; - -typedef struct { - ANDX_INFO andx; - uint16 action; - - uint16 count; - STRING os; - STRING server; - STRING domain; -} R_SESSION_SETUP_ANDX_10; - -typedef struct _R_SESSION_SETUP_ANDX { - uint8 wcount; - union ctr[wcount] { - case 3 R_SESSION_SETUP_ANDX_10 r3; - } -} R_SESSION_SETUP_ANDX; - - -typedef struct _R_CLOSE { - uint8 wcount; - uint16 count; - uint8 none[count]; - -} R_CLOSE; - -typedef struct _Q_CLOSE { - uint8 wcount; - uint16 fnum; - uint32 vwv1; - - uint16 count; - uint8 none[count]; - -} Q_CLOSE; - -typedef struct { - uint16 dsize; - uint16 bsizehi; - uint16 bsizelo; - uint16 avail; - uint16 vwv4; - - uint16 bcount; - uint8 none[bcount]; - -} R_DSKATTR_5; - -typedef struct { - uint8 wcount; - union ctr[wcount] { - case 5 R_DSKATTR_5 r5; - } -} R_DSKATTR; - -typedef struct { - uint16 count; - uint8 none[count]; - -} Q_DSKATTR_0; - -typedef struct _Q_DSKATTR { - uint8 wcount; - union ctr[wcount] { - case 0 Q_DSKATTR_0 q1; - } - -} Q_DSKATTR; - -typedef struct { - ANDX_INFO andx; - - uint16 bcount; - uint8 none[bcount]; - -} R_LOCKING_2; - -typedef struct { - uint8 wcount; - union ctr[wcount] { - case 2 R_LOCKING_2 r2; - } -} R_LOCKING_ANDX; - -/* XXXX must do a switch on bit 0x10 to do large locks XXXX */ -/* LockType Flag Name Value Description */ - -#define LOCKING_ANDX_SHARED_LOCK 0x01 /* Read-only lock */ -#define LOCKING_ANDX_OPLOCK_RELEASE 0x02 /* Oplock break notification */ -#define LOCKING_ANDX_CHANGE_LOCKTYPE 0x04 /* Change lock type */ -#define LOCKING_ANDX_CANCEL_LOCK 0x08 /* Cancel outstanding request */ -#define LOCKING_ANDX_LARGE_FILES 0x10 /* Large file locking format */ - -typedef struct { - USHORT Pid; /* PID of process "owning" lock */ - ULONG Offset; /* Offset to bytes to [un]lock */ - ULONG Length; /* Number of bytes to [un]lock */ -} LOCKING_ANDX_RANGE_SHORT; - -typedef struct { - USHORT Pid; /* PID of process "owning" lock */ - .align4 0; - ULONG OffsetHigh; /* Offset to bytes to [un]lock (high) */ - ULONG OffsetLow; /* Offset to bytes to [un]lock (low) */ - ULONG LengthHigh; /* Number of bytes to [un]lock (high) */ - ULONG LengthLow; /* Number of bytes to [un]lock (low) */ - -} LOCKING_ANDX_RANGE_LARGE; - -/* typedef struct { */ - /* union ctr[LockType&0x10] { */ - /* case 0 LOCKING_ANDX_RANGE_SHORT ls; */ - /* case 0x10 LOCKING_ANDX_RANGE_LARGE ll; */ - /* } */ -/* } LOCKING_ANDX_RANGE; */ - -typedef struct { - ANDX_INFO andx; - - USHORT Fid; /* File handle */ - UCHAR LockType; /* See LockType table below */ - UCHAR OplockLevel; /* The new oplock level */ - ULONG Timeout; /* Milliseconds to wait for unlock */ - USHORT NumberOfUnlocks; /* Num. unlock range structs following */ - USHORT NumberOfLocks; /* Num. lock range structs following */ - - USHORT ByteCount; /* Count of data bytes */ - LOCKING_ANDX_RANGE_SHORT Unlocks[NumberOfUnlocks]; /* Unlock ranges */ - LOCKING_ANDX_RANGE_SHORT Locks[NumberOfLocks]; /* Lock ranges */ - -} Q_LOCKING_8; - -typedef struct _Q_LOCKING { - uint8 wcount; - union ctr[wcount] { - case 8 Q_LOCKING_8 q8; - } - -} Q_LOCKING_ANDX; - - -typedef struct { - uint16 bcount; - uint8 protocols[bcount]; - -} R_UNLINK_0; - -typedef struct { - uint8 wcount; - union ctr[wcount] { - case 0 R_UNLINK_0 r0; - } -} R_UNLINK; - -typedef struct { - uint16 dirtype; - - uint16 count; - uint8 fname[count]; - -} Q_UNLINK_1; - -typedef struct _Q_UNLINK { - uint8 wcount; - union ctr[wcount] { - case 1 Q_UNLINK_1 q1; - } - -} Q_UNLINK; - -typedef struct _R_OPEN_ANDX{ - uint8 wcount; - ANDX_INFO andx; - uint16 fnum; - uint16 fmode; - uint32 mtime; - uint32 size; - uint16 rmode; - uint16 vwv9; - uint16 vwv10; - uint16 smb_action; - uint16 vwv12; - uint16 vwv13; - uint16 vwv14; - - uint16 count; - uint8 none[count]; - -} R_OPEN_ANDX; - -typedef struct _Q_OPEN_ANDX{ - uint8 wcount; - ANDX_INFO andx; - uint16 fnum; - uint16 fmode; - uint32 mtime; - uint32 size; - uint16 rmode; - uint16 vwv9; - uint16 vwv10; - uint16 smb_action; - uint16 vwv12; - uint16 vwv13; - uint16 vwv14; - - uint16 count; - uint8 fname[count]; - -} Q_OPEN_ANDX; - -typedef struct _R_READ_ANDX { - uint8 wcount; - ANDX_INFO andx; - uint16 vwv2; - uint16 vwv3; - uint16 vwv4; - uint16 nread; - uint16 offset; - uint16 vwv7; - uint16 vwv8; - uint16 vwv9; - uint16 vwv10; - uint16 vwv11; - - uint16 count; - uint8 data[count]; - -} R_READ_ANDX; - -typedef struct _Q_READ_ANDX_10 { - ANDX_INFO andx; - uint16 fnum; - uint32 startpos; - uint16 smb_maxcnt; - uint16 smb_mincnt; - uint16 vwv7; - uint16 vwv8; - uint16 vwv9; - - uint16 count; - uint8 none[count]; - -} Q_READ_ANDX_10; - -typedef struct _Q_READ_ANDX_12 { - ANDX_INFO andx; - uint16 fnum; - uint32 startpos; - uint16 smb_maxcnt; - uint16 smb_mincnt; - uint16 vwv7; - uint16 vwv8; - uint16 vwv9; - uint32 startposhi; - - uint16 count; - uint8 none[count]; - -} Q_READ_ANDX_12; - -typedef struct _Q_READ_ANDX { - uint8 wcount; - union ctr[wcount] { - case 10 Q_READ_ANDX_10 q10; - case 12 Q_READ_ANDX_12 q12; - } -} Q_READ_ANDX; - -typedef struct _R_WRITE_ANDX { - uint8 wcount; - ANDX_INFO andx; - uint16 nwritten; - uint16 vwv3; - uint16 vwv4; - uint16 vwv5; - - uint16 count; - uint8 none[count]; - -} R_WRITE_ANDX; - -typedef struct _Q_WRITE_ANDX_12 { - ANDX_INFO andx; - uint16 fnum; - uint32 startpos; - uint16 vwv5; - uint16 vwv6; - uint16 write_through; - uint16 vwv8; - uint16 vwv9; - uint16 numtowrite; - uint16 smb_doff; - - uint16 count; - uint8 data[count]; - -} Q_WRITE_ANDX_12; - -typedef struct _Q_WRITE_ANDX_14 { - ANDX_INFO andx; - uint16 fnum; - uint32 startpos; - uint16 vwv5; - uint16 vwv6; - uint16 write_through; - uint16 vwv8; - uint16 vwv9; - uint16 numtowrite; - uint16 smb_doff; - uint32 startposhi; - - uint16 count; - uint8 data[count]; - -} Q_WRITE_ANDX_14; - -typedef struct _Q_WRITE_ANDX { - uint8 wcount; - union ctr[wcount] { - case 12 Q_WRITE_ANDX_12 q12; - case 14 Q_WRITE_ANDX_14 q14; - } -} Q_WRITE_ANDX; - - - -typedef struct _Q_NTTRANS_19 { - UCHAR MaxSetupCount; /* Max setup words to return */ - USHORT Reserved; - ULONG TotalParameterCount; /* Total parameter bytes being sent */ - ULONG TotalDataCount; /* Total data bytes being sent */ - ULONG MaxParameterCount; /* Max parameter bytes to return */ - ULONG MaxDataCount; /* Max data bytes to return */ - ULONG ParameterCount; /* Parameter bytes sent this buffer */ - ULONG ParameterOffset; /* Offset (from header start) to */ - /* Parameters */ - ULONG DataCount; /* Data bytes sent this buffer */ - ULONG DataOffset; /* Offset (from header start) to data */ - UCHAR SetupCount; /* Count of setup words */ - USHORT Function; /* The transaction function code */ - UCHAR Buffer[1]; - USHORT Setup[SetupCount]; /* Setup words */ - USHORT ByteCount; /* Count of data bytes */ - .align4 0; - UCHAR Parameters[ParameterCount];/* Parameter bytes */ - .align4 0; - UCHAR Data[DataCount]; /* Data bytes */ - -} Q_NTTRANS_19; - -typedef struct _Q_NTTRANS { - uint8 wcount; - union ctr[wcount] { - case 19 Q_NTTRANS_19 q19; - } -} Q_NTTRANS; - -typedef struct _R_NTTRANS_18 { - UCHAR Reserved[3]; - ULONG TotalParameterCount; /* Total parameter bytes being sent */ - ULONG TotalDataCount; /* Total data bytes being sent */ - ULONG ParameterCount; /* Parameter bytes sent this buffer */ - ULONG ParameterOffset; /* Offset (from header start) to */ - /* Parameters */ - ULONG ParameterDisplacement; /* Specifies the offset from the start */ - /* of the overall parameter block to */ - /* the parameter bytes that are */ - /* contained in this message */ - ULONG DataCount; /* Data bytes sent this buffer */ - ULONG DataOffset; /* Offset (from header start) to data */ - ULONG DataDisplacement; /* Specifies the offset from the start */ - /* of the overall data block to the */ - /* data bytes that are contained in */ - /* this message. */ - UCHAR SetupCount; /* Count of setup words */ - USHORT Setup[SetupCount]; /* Setup words */ - USHORT ByteCount; /* Count of data bytes */ - .align4 0; - UCHAR Parameters[ParameterCount]; /* Parameter bytes */ - .align4 0; - UCHAR Data[DataCount]; /* Data bytes */ -} R_NTTRANS_18; - -typedef struct _R_NTTRANS { - uint8 wcount; - union ctr[wcount] { - case 18 R_NTTRANS_18 q18; - } - .align4 2; -} R_NTTRANS; - -/*Setup[0] Transaction2 Value Description */ -/*Subcommand Code */ -/*=============================== ===== ============================= */ - -#define TRANS2_OPEN2 0x00 /* Create file with extended attributes */ -#define TRANS2_FIND_FIRST2 0x01 /* Begin search for files */ -#define TRANS2_FIND_NEXT2 0x02 /* Resume search for files */ -#define TRANS2_QUERY_FS_INFO 0x03 /* Get file system information -#define TRANS2_RESERVED4 0x04 /* Reserved */ -#define TRANS2_QUERY_PATH_INFO 0x05 /* Get information about a named file or directory */ -#define TRANS2_SET_PATH_INFO 0x06 /* Set information about a named file or directory */ -#define TRANS2_QUERY_FILE_INFO 0x07 /* Get information about a handle */ -#define TRANS2_SET_FILE_INFO 0x08 /* Set information by handle */ -#define TRANS2_FSCTL 0x09 /* Not implemented by NT server */ -#define TRANS2_IOCTL2 0x0A /* Not implemented by NT server */ -#define TRANS2_FIND_NOTIFY_FIRST 0x0B /* Not implemented by NT server */ -#define TRANS2_FIND_NOTIFY_NEXT 0x0C /* Not implemented by NT server */ -#define TRANS2_CREATE_DIRECTORY 0x0D /* Create directory with extended attributes */ -#define TRANS2_SESSION_SETUP 0x0E /* Session setup with extended security information */ -#define TRANS2_GET_DFS_REFERRAL 0x10 /* Get a DFS referral */ -#define TRANS2_REPORT_DFS_INCONSISTENCY 0x11 /* Report a DFS knowledge inconsistency */ - -typedef struct { - USHORT InformationLevel; /* Level of information requested */ -} TRANS2_QUERY_FS_INFO_STRUCT; - -#define SMB_INFO_STANDARD 1 -#define SMB_INFO_QUERY_EA_SIZE 2 -#define SMB_SET_FILE_BASIC_INFO 0x101 -#define SMB_SET_FILE_DISPOSITION_INFO 0x102 -#define SMB_SET_FILE_ALLOCATION_INFO 0x103 -#define SMB_SET_FILE_END_OF_FILE_INFO 0x104 - - -typedef struct { - hyper CreationTime; - hyper LastAccessTime; - hyper LastWriteTime; - hyper ChangeTime; - USHORT Attributes; - .align4 0; -} SMB_QUERY_FILE_BASIC_INFO_STRUCT; - - -typedef struct { - ULONG fs_atr; - LONG max_len_filename; - ULONG length; - uint8 fs[length]; - .align4 2; -} SMB_QUERY_FS_ATTRIBUTE_INFO_STRUCT; - -#define FILE_CASE_SENSITIVE_SEARCH 0x00000001 -#define FILE_CASE_PRESERVED_NAMES 0x00000002 -#define FILE_PRSISTENT_ACLS 0x00000004 -#define FILE_FILE_COMPRESSION 0x00000008 -#define FILE_VOLUME_QUOTAS 0x00000010 -#define FILE_DEVICE_IS_MOUNTED 0x00000020 -#define FILE_VOLUME_IS_COMPRESSED 0x00008000 - -typedef struct { - USHORT Fid; - USHORT InformationLevel; - USHORT Reserved; - .align4 0; - - union ctr[InformationLevel] { - case 0x101 SMB_QUERY_FILE_BASIC_INFO_STRUCT t101; - } - -} TRANS2_SET_FILE_INFO_STRUCT; - -typedef struct { - USHORT InformationLevel; /* Level of information requested */ - ULONG Reserved; /* Must be zero */ - STRING FileName; /* File or directory name */ -} TRANS2_QUERY_PATH_INFO_STRUCT; - -typedef struct { - USHORT SearchAttributes; - USHORT SearchCount; - USHORT Flags; - USHORT InformationLevel; - ULONG SearchStorageType; - STRING FileName; -} TRANS2_FIND_FIRST2_STRUCT; - -typedef struct _Q_TRANS2_15 { - USHORT TotalParameterCount; /* Total parameter bytes being sent */ - USHORT TotalDataCount; /* Total data bytes being sent */ - USHORT MaxParameterCount; /* Max parameter bytes to return */ - USHORT MaxDataCount; /* Max data bytes to return */ - UCHAR MaxSetupCount; /* Max setup words to return */ - UCHAR Reserved; - USHORT Flags; /* Additional information: */ - /* bit 0 - also disconnect TID in TID */ - ULONG Timeout; - USHORT Reserved2; - USHORT ParameterCount; /* Parameter bytes sent this buffer */ - USHORT ParameterOffset; /* Offset (from header start) to */ - /* Parameters */ - USHORT DataCount; /* Data bytes sent this buffer */ - USHORT DataOffset; /* Offset (from header start) to data */ - UCHAR SetupCount; /* Count of setup words */ - UCHAR Reserved3; /* Reserved (pad above to word) */ - USHORT Setup[SetupCount]; /* Setup words (# = SetupWordCount) */ - USHORT ByteCount; /* Count of data bytes */ - .align4 0; - union ctr[Setup[0]] { - case 1 TRANS2_FIND_FIRST2_STRUCT t1; - case 3 TRANS2_QUERY_FS_INFO_STRUCT t3; - case 5 TRANS2_QUERY_PATH_INFO_STRUCT t5; - case 8 TRANS2_SET_FILE_INFO_STRUCT t8; - } - -} Q_TRANS2_15; - -typedef struct _Q_TRANS2 { - uint8 wcount; - union ctr[wcount] { - case 15 Q_TRANS2_15 q15; - } -} Q_TRANS2; - -typedef struct { - ULONG NextEntryOffset; - ULONG FileIndex; - hyper CreationTime; - hyper LastAccessTime; - hyper LastWriteTime; - hyper ChangeTime; - hyper EndOfFile; - hyper AllocationSize; - ULONG ExtFileAttributes; - ULONG FileNameLength; - ULONG EaSize; - UCHAR ShortNameLength; - UCHAR Reserved; - uint8 ShortName[24]; - UCHAR FileName[FileNameLength]; - .align4 2; -} SMB_FIND_FILE_BOTH_DIRECTORY_INFO; - -typedef struct { - .align2 0; -} R_TRANS2_D0; - -typedef struct { - .align4 2; -} R_TRANS2_P0; - -typedef struct { - USHORT Reserved; -} R_TRANS2_P2; - -typedef struct { - USHORT Sid; /* Search handle */ - USHORT SearchCount; /* Number of entries returned */ - USHORT EndOfSearch; /* Was last entry returned? */ - USHORT EaErrorOffset; /* Offset into EA list if EA error */ - USHORT LastNameOffset; /* Offset into data to file name of last */ - /* entry, if server needs it to resume */ - /* search; else 0 */ - .align4 2; - SMB_FIND_FILE_BOTH_DIRECTORY_INFO i104[SearchCount]; -} R_TRANS2_FIND_FIRST2_STRUCT; - -typedef struct { - SMB_QUERY_FILE_BASIC_INFO_STRUCT i101; - .align4 2; -} R_TRANS2_FILE_BASIC_STRUCT; - -typedef struct _R_TRANS2_10 { - USHORT TotalParameterCount;/* Total parameter bytes being sent */ - USHORT TotalDataCount; /* Total data bytes being sent */ - USHORT Reserved2; - USHORT ParameterCount; /* Parameter bytes sent this buffer */ - USHORT ParameterOffset; /* Offset (from header start) to */ - /* Parameters */ - USHORT ParameterDisplacement; /* Specifies the offset from the start */ - /* of the overall parameter block to */ - /* the parameter bytes that are */ - /* contained in this message */ - USHORT DataCount; /* Data bytes sent this buffer */ - USHORT DataOffset; /* Offset (from header start) to data */ - USHORT DataDisplacement; /* Specifies the offset from the start */ - /* of the overall data block to the */ - /* data bytes that are contained in */ - /* this message. */ - UCHAR SetupCount; /* Count of setup words */ - UCHAR Reserved3; /* Reserved (pad above to word) */ - USHORT Setup[SetupCount]; /* Setup words */ - USHORT ByteCount; /* Count of data bytes */ - .align4 2; - union pctr[ParameterCount] { - case 0 R_TRANS2_P0 p0; - case 2 R_TRANS2_P2 p2; - case 10 R_TRANS2_FIND_FIRST2_STRUCT r10; - } - union dctr[DataCount] { - case 0 R_TRANS2_D0 d0; - case 0x24 R_TRANS2_FILE_BASIC_STRUCT r24; - case 0x14 SMB_QUERY_FS_ATTRIBUTE_INFO_STRUCT r14; - } -} R_TRANS2_10; - -typedef struct { - USHORT ByteCount; /* Count of data bytes */ -} R_TRANS2_0; - -typedef struct _R_TRANS2 { - uint8 wcount; - union ctr[wcount] { - case 0 R_TRANS2_0 q0; - case 10 R_TRANS2_10 q10; - } -} R_TRANS2; - -typedef struct _Q_TRANS_16 { - USHORT TotalParameterCount; /* Total parameter bytes being sent */ - USHORT TotalDataCount; /* Total data bytes being sent */ - USHORT MaxParameterCount; /* Max parameter bytes to return */ - USHORT MaxDataCount; /* Max data bytes to return */ - UCHAR MaxSetupCount; /* Max setup words to return */ - UCHAR Reserved; - USHORT Flags; /* Additional information: */ - /* bit 0 - also disconnect TID in TID */ - ULONG Timeout; - USHORT Reserved2; - USHORT ParameterCount; /* Parameter bytes sent this buffer */ - USHORT ParameterOffset; /* Offset (from header start) to */ - /* Parameters */ - USHORT DataCount; /* Data bytes sent this buffer */ - USHORT DataOffset; /* Offset (from header start) to data */ - UCHAR SetupCount; /* Count of setup words */ - UCHAR Reserved3; /* Reserved (pad above to word) */ - USHORT Setup[SetupCount]; /* Setup words (# = SetupWordCount) */ - USHORT ByteCount; /* Count of data bytes */ - STRING Name; /* Must be NULL */ - .align4 0; - UCHAR Parameters[ParameterCount];/* Parameter bytes (# = ParameterCount) */ - .align4 0; - UCHAR Data[DataCount]; /* Data bytes (# = DataCount) */ - -} Q_TRANS_16; - -typedef struct _Q_TRANS { - uint8 wcount; - union ctr[wcount] { - case 16 Q_TRANS_16 q16; - } -} Q_TRANS; - -typedef struct _R_TRANS_10 { - USHORT TotalParameterCount;/* Total parameter bytes being sent */ - USHORT TotalDataCount; /* Total data bytes being sent */ - USHORT Reserved2; - USHORT ParameterCount; /* Parameter bytes sent this buffer */ - USHORT ParameterOffset; /* Offset (from header start) to */ - /* Parameters */ - USHORT ParameterDisplacement; /* Specifies the offset from the start */ - /* of the overall parameter block to */ - /* the parameter bytes that are */ - /* contained in this message */ - USHORT DataCount; /* Data bytes sent this buffer */ - USHORT DataOffset; /* Offset (from header start) to data */ - USHORT DataDisplacement; /* Specifies the offset from the start */ - /* of the overall data block to the */ - /* data bytes that are contained in */ - /* this message. */ - UCHAR SetupCount; /* Count of setup words */ - UCHAR Reserved3; /* Reserved (pad above to word) */ - USHORT Setup[SetupCount]; /* Setup words */ - USHORT ByteCount; /* Count of data bytes */ - .align4 0; - UCHAR Parameters[ParameterCount];/* Parameter bytes */ - .align4 0; - UCHAR Data[DataCount]; /* Data bytes */ -} R_TRANS_10; - -typedef struct _R_TRANS { - uint8 wcount; - union ctr[wcount] { - case 10 R_TRANS_10 q10; - } -} R_TRANS; - -typedef struct _Q_NT_CREATE_ANDX_24 { - ANDX_INFO andx; - uint8 reserved; - uint16 name_len; - ULONG flags; - ULONG rootfid; - ULONG access; - hyper allocsize; - ULONG attribs; - ULONG sharing; - ULONG creat_disp; - ULONG creat_options; - ULONG impersonation; - uint8 sec_flags; - - uint16 count; - uint8 name[name_len]; - -} Q_NTCREATE_ANDX_24; - -typedef struct _Q_NTCREATE_ANDX{ - uint8 wcount; - union ctr[wcount] { - case 24 Q_NTCREATE_ANDX_24 q24; - } -} Q_NTCREATE_ANDX; - -typedef struct { - ANDX_INFO andx; - uint8 oplock_level; - uint16 fid; - ULONG action; - TIME create_time; - TIME access_time; - TIME write_time; - TIME change_time; - ULONG ext_attribs; - hyper allocsize; - hyper size; - uint16 type; - uint16 state; - uint8 directory; - - uint16 count; - uint8 none[count]; - -} R_NTCREATE_ANDX_34; - -typedef struct _R_NTCREATE_ANDX{ - uint8 wcount; - union ctr[wcount] { - case 34 R_NTCREATE_ANDX_34 q34; - } -} R_NTCREATE_ANDX; - -typedef struct { - ULONG smbhdr; - uint8 com; - uint8 rcls; - uint8 reh; - uint16 err; - uint8 flg; - uint16 flg2; - uint16 reserved; - uint8 SecuritySignature[8]; - uint16 pad; - uint16 tid; - uint16 pid; - uint16 uid; - uint16 mid; -} SMB_HDR; - -typedef struct _R_SMB { - ULONG nbhdr; - SMB_HDR hdr; - union ctr[hdr.com] { - case 4 R_CLOSE r4; - case 6 R_UNLINK r6; - case 36 R_LOCKING_ANDX r36; - case 37 R_TRANS r37; - case 45 R_OPEN_ANDX r45; - case 46 R_READ_ANDX r46; - case 47 R_WRITE_ANDX r47; - case 50 R_TRANS2 q50; - case 113 R_TDIS r113; - case 114 R_NEGPROT r114; - case 115 R_SESSION_SETUP_ANDX r115; - case 116 R_ULOGOFF_ANDX r116; - case 117 R_TCON_ANDX r117; - case 128 R_DSKATTR r128; - case 160 R_NTTRANS r160; - case 162 R_NTCREATE_ANDX r162; - } -} R_SMB; - -typedef struct _Q_SMB { - ULONG nbhdr; - SMB_HDR hdr; - union ctr[hdr.com] { - case 4 Q_CLOSE q4; - case 6 Q_UNLINK q6; - case 36 Q_LOCKING_ANDX q36; - case 37 Q_TRANS q37; - case 45 Q_OPEN_ANDX q45; - case 46 Q_READ_ANDX q46; - case 47 Q_WRITE_ANDX q47; - case 50 Q_TRANS2 q50; - case 113 Q_TDIS q113; - case 114 Q_NEGPROT q114; - case 115 Q_SESSION_SETUP_ANDX q115; - case 116 Q_ULOGOFF_ANDX q116; - case 117 Q_TCON_ANDX q117; - case 128 Q_DSKATTR q128; - case 160 Q_NTTRANS q160; - case 162 Q_NTCREATE_ANDX q162; - } -} Q_SMB; - |