From c0e83b6e7a814a85b76ea22d6306b7027a3222f9 Mon Sep 17 00:00:00 2001 From: erdgeist <> Date: Mon, 1 Dec 2003 14:35:28 +0000 Subject: kick off --- src/nu_header.h | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100755 src/nu_header.h (limited to 'src/nu_header.h') diff --git a/src/nu_header.h b/src/nu_header.h new file mode 100755 index 0000000..0afdbaf --- /dev/null +++ b/src/nu_header.h @@ -0,0 +1,144 @@ +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; + +typedef struct { + BYTE netbios_command; + BYTE netbios_flags; + WORD netbios_size; +/*BYTE Protocol[4]; Protocol identifier 0xFF,"SMB" */ + DWORD Protocol; /* For faster compare */ + BYTE Command; /* Command Code, look below */ + union { + struct { + BYTE ErrorClass; + BYTE Reserved; + WORD Error; + } DosError; + DWORD Status; + } Status; + BYTE Flags; + WORD Flags2; + union { + WORD Pad[6]; /* Ensure 12 bytes len */ + struct { + WORD PidHigh; + BYTE SecuritySignature[8]; + } Extra; + }; + WORD TreeID; + WORD ProcessID; + WORD UserID; + WORD MultiplexID; + BYTE WordCount; + WORD ParameterWords[0]; +} SMB_HEADER; + +typedef struct { + WORD ByteCount; + BYTE Buffer[0]; +} SMB_HEADER2; + +/* This is the protocol identifier, each smb + request must begin with this double word +*/ +#define SMB_HEADER_PROTOCOL_MAGIC 0xff534d42 + +/* These are all valid SMB requests known from the document + http://www.snia.org/tech_activities/CIFS/CIFS_TR-1p00_FINAL.pdf + + However, we only intend to implement the core smb command set, + also known as dialect "PC NETWORK PROGRAM 1.0" and still only + a read-only subset of this. +*/ + +enum { + SMB_COM_CREATE_DIRECTORY = 0x00, + SMB_COM_DELETE_DIRECTORY = 0x01, + SMB_COM_OPEN = 0x02, + SMB_COM_CREATE = 0x03, + SMB_COM_CLOSE = 0x04, + SMB_COM_FLUSH = 0x05, + SMB_COM_DELETE = 0x06, + SMB_COM_RENAME = 0x07, + SMB_COM_QUERY_INFORMATION = 0x08, + SMB_COM_SET_INFORMATION = 0x09, + SMB_COM_READ = 0x0A, + SMB_COM_WRITE = 0x0B, + SMB_COM_LOCK_BYTE_RANGE = 0x0C, + SMB_COM_UNLOCK_BYTE_RANGE = 0x0D, + SMB_COM_CREATE_TEMPORARY = 0x0E, + SMB_COM_CREATE_NEW = 0x0F, + + SMB_COM_CHECK_DIRECTORY = 0x10, + SMB_COM_PROCESS_EXIT = 0x11, + SMB_COM_SEEK = 0x12, + SMB_COM_LOCK_AND_READ = 0x13, + SMB_COM_WRITE_AND_UNLOCK = 0x14, + /* ... */ + SMB_COM_READ_RAW = 0x1A, + SMB_COM_READ_MPX = 0x1B, + SMB_COM_READ_MPX_SECONDARY = 0x1C, + SMB_COM_WRITE_RAW = 0x1D, + SMB_COM_WRITE_MPX = 0x1E, + SMB_COM_WRITE_MPX_SECONDARY = 0x1F, + + SMB_COM_WRITE_COMPLETE = 0x20, + SMB_COM_QUERY_SERVER = 0x21, + SMB_COM_SET_INFORMATION2 = 0x22, + SMB_COM_QUERY_INFORMATION2 = 0x23, + SMB_COM_LOCKING_ANDX = 0x24, + SMB_COM_TRANSACTION = 0x25, + SMB_COM_TRANSACTION_SECONDARY = 0x26, + SMB_COM_IOCTL = 0x27, + SMB_COM_IOCTL_SECONDARY = 0x28, + SMB_COM_COPY = 0x29, + SMB_COM_MOVE = 0x2A, + SMB_COM_ECHO = 0x2B, + SMB_COM_WRITE_AND_CLOSE = 0x2C, + SMB_COM_OPEN_ANDX = 0x2D, + SMB_COM_READ_ANDX = 0x2E, + SMB_COM_WRITE_ANDX = 0x2F, + + SMB_COM_NEW_FILE_SIZE = 0x30, + SMB_COM_CLOSE_AND_TREE_DISC = 0x31, + SMB_COM_TRANSACTION2 = 0x32, + SMB_COM_TRANSACTION2_SECONDARY = 0x33, + SMB_COM_FIND_CLOSE2 = 0x34, + SMB_COM_FIND_NOTIFY_CLOSE = 0x35, + /* ... */ + + SMB_COM_TREE_CONNECT = 0x70, + SMB_COM_TREE_DISCONNECT = 0x71, + SMB_COM_NEGOTIATE = 0x72, + SMB_COM_SESSION_SETUP_ANDX = 0x73, + SMB_COM_LOGOFF_ANDX = 0x74, + SMB_COM_TREE_CONNECT_ANDX = 0x75, + /* ... */ + + SMB_COM_QUERY_INFORMATION_DISK = 0x80, + SMB_COM_SEARCH = 0x81, + SMB_COM_FIND = 0x82, + SMB_COM_FIND_UNIQUE = 0x83, + SMB_COM_FIND_CLOSE = 0x84, + /* ... */ + + SMB_COM_NT_TRANSACT = 0xA0, + SMB_COM_NT_TRANSACT_SECONDARY = 0xA1, + SMB_COM_NT_CREATE_ANDX = 0xA2, + /* ... */ + SMB_COM_NT_CANCEL = 0xA4, + SMB_COM_NT_RENAME = 0xA5, + /* ... */ + + SMB_COM_OPEN_PRINT_FILE = 0xC0, + SMB_COM_WRITE_PRINT_FILE = 0xC1, + SMB_COM_CLOSE_PRINT_FILE = 0xC2, + SMB_COM_GET_PRINT_QUEUE = 0xC3, + /* ... */ + + SMB_COM_READ_BULK = 0xD8, + SMB_COM_WRITE_BULK = 0xD9, + SMB_COM_WRITE_BULK_DATA = 0xDA +} SMB_COMMAND; + -- cgit v1.2.3