smb.h revision 146773
1146773Ssam/* @(#) $Header: /tcpdump/master/tcpdump/smb.h,v 1.9 2004/12/28 22:29:44 guy Exp $ (LBL) */ 2127668Sbms/* 398524Sfenner * Copyright (C) Andrew Tridgell 1995-1999 498524Sfenner * 598524Sfenner * This software may be distributed either under the terms of the 698524Sfenner * BSD-style license that accompanies tcpdump or the GNU GPL version 2 798524Sfenner * or later 898524Sfenner */ 956893Sfenner 1098524Sfenner#define SMBMIN(a,b) ((a)<(b)?(a):(b)) 1156893Sfenner 1256893Sfenner/* the complete */ 1356893Sfenner#define SMBmkdir 0x00 /* create directory */ 1456893Sfenner#define SMBrmdir 0x01 /* delete directory */ 1556893Sfenner#define SMBopen 0x02 /* open file */ 1656893Sfenner#define SMBcreate 0x03 /* create file */ 1756893Sfenner#define SMBclose 0x04 /* close file */ 1856893Sfenner#define SMBflush 0x05 /* flush file */ 1956893Sfenner#define SMBunlink 0x06 /* delete file */ 2056893Sfenner#define SMBmv 0x07 /* rename file */ 2156893Sfenner#define SMBgetatr 0x08 /* get file attributes */ 2256893Sfenner#define SMBsetatr 0x09 /* set file attributes */ 2356893Sfenner#define SMBread 0x0A /* read from file */ 2456893Sfenner#define SMBwrite 0x0B /* write to file */ 2556893Sfenner#define SMBlock 0x0C /* lock byte range */ 2656893Sfenner#define SMBunlock 0x0D /* unlock byte range */ 2756893Sfenner#define SMBctemp 0x0E /* create temporary file */ 2856893Sfenner#define SMBmknew 0x0F /* make new file */ 2956893Sfenner#define SMBchkpth 0x10 /* check directory path */ 3056893Sfenner#define SMBexit 0x11 /* process exit */ 3156893Sfenner#define SMBlseek 0x12 /* seek */ 3256893Sfenner#define SMBtcon 0x70 /* tree connect */ 3356893Sfenner#define SMBtconX 0x75 /* tree connect and X*/ 3456893Sfenner#define SMBtdis 0x71 /* tree disconnect */ 3556893Sfenner#define SMBnegprot 0x72 /* negotiate protocol */ 3656893Sfenner#define SMBdskattr 0x80 /* get disk attributes */ 3756893Sfenner#define SMBsearch 0x81 /* search directory */ 3856893Sfenner#define SMBsplopen 0xC0 /* open print spool file */ 3956893Sfenner#define SMBsplwr 0xC1 /* write to print spool file */ 4056893Sfenner#define SMBsplclose 0xC2 /* close print spool file */ 4156893Sfenner#define SMBsplretq 0xC3 /* return print queue */ 4256893Sfenner#define SMBsends 0xD0 /* send single block message */ 4356893Sfenner#define SMBsendb 0xD1 /* send broadcast message */ 4456893Sfenner#define SMBfwdname 0xD2 /* forward user name */ 4556893Sfenner#define SMBcancelf 0xD3 /* cancel forward */ 4656893Sfenner#define SMBgetmac 0xD4 /* get machine name */ 4756893Sfenner#define SMBsendstrt 0xD5 /* send start of multi-block message */ 4856893Sfenner#define SMBsendend 0xD6 /* send end of multi-block message */ 4956893Sfenner#define SMBsendtxt 0xD7 /* send text of multi-block message */ 5056893Sfenner 5156893Sfenner/* Core+ protocol */ 5256893Sfenner#define SMBlockread 0x13 /* Lock a range and read */ 5356893Sfenner#define SMBwriteunlock 0x14 /* Unlock a range then write */ 5456893Sfenner#define SMBreadbraw 0x1a /* read a block of data with no smb header */ 5556893Sfenner#define SMBwritebraw 0x1d /* write a block of data with no smb header */ 5656893Sfenner#define SMBwritec 0x20 /* secondary write request */ 5756893Sfenner#define SMBwriteclose 0x2c /* write a file then close it */ 5856893Sfenner 5956893Sfenner/* dos extended protocol */ 6056893Sfenner#define SMBreadBraw 0x1A /* read block raw */ 6156893Sfenner#define SMBreadBmpx 0x1B /* read block multiplexed */ 6256893Sfenner#define SMBreadBs 0x1C /* read block (secondary response) */ 6356893Sfenner#define SMBwriteBraw 0x1D /* write block raw */ 6456893Sfenner#define SMBwriteBmpx 0x1E /* write block multiplexed */ 6556893Sfenner#define SMBwriteBs 0x1F /* write block (secondary request) */ 6656893Sfenner#define SMBwriteC 0x20 /* write complete response */ 6756893Sfenner#define SMBsetattrE 0x22 /* set file attributes expanded */ 6856893Sfenner#define SMBgetattrE 0x23 /* get file attributes expanded */ 6956893Sfenner#define SMBlockingX 0x24 /* lock/unlock byte ranges and X */ 7056893Sfenner#define SMBtrans 0x25 /* transaction - name, bytes in/out */ 7156893Sfenner#define SMBtranss 0x26 /* transaction (secondary request/response) */ 7256893Sfenner#define SMBioctl 0x27 /* IOCTL */ 7356893Sfenner#define SMBioctls 0x28 /* IOCTL (secondary request/response) */ 7456893Sfenner#define SMBcopy 0x29 /* copy */ 7556893Sfenner#define SMBmove 0x2A /* move */ 7656893Sfenner#define SMBecho 0x2B /* echo */ 7756893Sfenner#define SMBopenX 0x2D /* open and X */ 7856893Sfenner#define SMBreadX 0x2E /* read and X */ 7956893Sfenner#define SMBwriteX 0x2F /* write and X */ 8056893Sfenner#define SMBsesssetupX 0x73 /* Session Set Up & X (including User Logon) */ 8156893Sfenner#define SMBffirst 0x82 /* find first */ 8256893Sfenner#define SMBfunique 0x83 /* find unique */ 8356893Sfenner#define SMBfclose 0x84 /* find close */ 8456893Sfenner#define SMBinvalid 0xFE /* invalid command */ 8556893Sfenner 8656893Sfenner/* Extended 2.0 protocol */ 8756893Sfenner#define SMBtrans2 0x32 /* TRANS2 protocol set */ 8856893Sfenner#define SMBtranss2 0x33 /* TRANS2 protocol set, secondary command */ 8956893Sfenner#define SMBfindclose 0x34 /* Terminate a TRANSACT2_FINDFIRST */ 9056893Sfenner#define SMBfindnclose 0x35 /* Terminate a TRANSACT2_FINDNOTIFYFIRST */ 9156893Sfenner#define SMBulogoffX 0x74 /* user logoff */ 9256893Sfenner 9356893Sfenner/* NT SMB extensions. */ 9456893Sfenner#define SMBnttrans 0xA0 /* NT transact */ 9556893Sfenner#define SMBnttranss 0xA1 /* NT transact secondary */ 9656893Sfenner#define SMBntcreateX 0xA2 /* NT create and X */ 9756893Sfenner#define SMBntcancel 0xA4 /* NT cancel */ 9856893Sfenner 9956893Sfenner/* pathworks special */ 10056893Sfenner#define pSETDIR '\377' 10156893Sfenner 10256893Sfenner 10356893Sfenner/* these are the TRANS2 sub commands */ 10456893Sfenner#define TRANSACT2_OPEN 0 10556893Sfenner#define TRANSACT2_FINDFIRST 1 10656893Sfenner#define TRANSACT2_FINDNEXT 2 10756893Sfenner#define TRANSACT2_QFSINFO 3 10856893Sfenner#define TRANSACT2_SETFSINFO 4 10956893Sfenner#define TRANSACT2_QPATHINFO 5 11056893Sfenner#define TRANSACT2_SETPATHINFO 6 11156893Sfenner#define TRANSACT2_QFILEINFO 7 11256893Sfenner#define TRANSACT2_SETFILEINFO 8 11356893Sfenner#define TRANSACT2_FSCTL 9 11456893Sfenner#define TRANSACT2_IOCTL 10 11556893Sfenner#define TRANSACT2_FINDNOTIFYFIRST 11 11656893Sfenner#define TRANSACT2_FINDNOTIFYNEXT 12 11756893Sfenner#define TRANSACT2_MKDIR 13 11856893Sfenner 11998524Sfenner#define PTR_DIFF(p1, p2) ((size_t)(((char *)(p1)) - (char *)(p2))) 12056893Sfenner 12156893Sfenner/* some protos */ 122146773Ssamconst u_char *smb_fdata(const u_char *, const char *, const u_char *, int); 123