/* mod_ntlm file: $Id: smblib-common.h,v 1.3 2003/02/21 01:55:14 casz Exp $ */ #ifndef SMBLIB_COMMON_H #define SMBLIB_COMMON_H /* UNIX SMBlib NetBIOS implementation * * Version 1.0 SMBlib Common Defines * * Copyright (C) Richard Sharpe 1996 * */ /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. This program 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 General Public License for more details. You * should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ /* To get the error class we want the first 8 bits */ /* Because we just grab 4bytes from the SMB header, we have to re-order */ /* here, but it makes the NtStatus part easier in future */ #define SMBlib_Error_Class(p) (p & 0x000000FF) /* To get the error code, we want the bottom 16 bits */ #define SMBlib_Error_Code(p) (((unsigned int)p & 0xFFFF0000) >>16) /* Error CLASS codes and etc ... */ #define SMBC_SUCCESS 0 #define SMBC_ERRDOS 0x01 #define SMBC_ERRSRV 0x02 #define SMBC_ERRHRD 0x03 #define SMBC_ERRCMD 0xFF /* Success error codes */ #define SMBS_BUFFERED 0x54 #define SMBS_LOGGED 0x55 #define SMBS_DISPLAYED 0x56 /* ERRDOS Error codes */ #define SMBD_badfunc 0x01 #define SMBD_badfile 0x02 #define SMBD_badpath 0x03 #define SMBD_nofids 0x04 #define SMBD_noaccess 0x05 #define SMBD_badfid 0x06 #define SMBD_badmcb 0x07 #define SMBD_nomem 0x08 #define SMBD_badmem 0x09 #define SMBD_badenv 0x0A #define SMBD_badformat 0x0B #define SMBD_badaccess 0x0C #define SMBD_baddata 0x0D #define SMBD_reserved 0x0E #define SMBD_baddrive 0x0F #define SMBD_remcd 0x10 #define SMBD_diffdevice 0x11 #define SMBD_nofiles 0x12 #define SMBD_badshare 0x20 #define SMBD_errlock 0x21 #define SMBD_filexists 0x50 /* Server errors ... */ #define SMBV_error 0x01 /* Generic error */ #define SMBV_badpw 0x02 #define SMBV_badtype 0x03 #define SMBV_access 0x04 #define SMBV_invnid 0x05 #define SMBV_invnetname 0x06 #define SMBV_invdevice 0x07 #define SMBV_qfull 0x31 #define SMBV_qtoobig 0x32 #define SMBV_qeof 0x33 #define SMBV_invpfid 0x34 #define SMBV_paused 0x51 #define SMBV_msgoff 0x52 #define SMBV_noroom 0x53 #define SMBV_rmuns 0x57 #define SMBV_nosupport 0xFFFF /* Hardware error codes ... */ #define SMBH_nowrite 0x13 #define SMBH_badunit 0x14 #define SMBH_notready 0x15 #define SMBH_badcmd 0x16 #define SMBH_data 0x17 #define SMBH_badreq 0x18 #define SMBH_seek 0x19 #define SMBH_badmedia 0x1A #define SMBH_badsector 0x1B #define SMBH_nopaper 0x1C #define SMBH_write 0x1D #define SMBH_read 0x1E #define SMBH_general 0x1F #define SMBH_badshare 0x20 /* Access mode defines ... */ #define SMB_AMODE_WTRU 0x4000 #define SMB_AMODE_NOCACHE 0x1000 #define SMB_AMODE_COMPAT 0x0000 #define SMB_AMODE_DENYRWX 0x0010 #define SMB_AMODE_DENYW 0x0020 #define SMB_AMODE_DENYRX 0x0030 #define SMB_AMODE_DENYNONE 0x0040 #define SMB_AMODE_OPENR 0x0000 #define SMB_AMODE_OPENW 0x0001 #define SMB_AMODE_OPENRW 0x0002 #define SMB_AMODE_OPENX 0x0003 #define SMB_AMODE_FCBOPEN 0x00FF #define SMB_AMODE_LOCUNKN 0x0000 #define SMB_AMODE_LOCMSEQ 0x0100 #define SMB_AMODE_LOCMRAN 0x0200 #define SMB_AMODE_LOCRAL 0x0300 /* File attribute encoding ... */ #define SMB_FA_ORD 0x00 #define SMB_FA_ROF 0x01 #define SMB_FA_HID 0x02 #define SMB_FA_SYS 0x04 #define SMB_FA_VOL 0x08 #define SMB_FA_DIR 0x10 #define SMB_FA_ARC 0x20 /* Define the protocol types ... */ #define SMB_P_Unknown -1 /* Hmmm, is this smart? */ #define SMB_P_Core 0 #define SMB_P_CorePlus 1 #define SMB_P_DOSLanMan1 2 #define SMB_P_LanMan1 3 #define SMB_P_DOSLanMan2 4 #define SMB_P_LanMan2 5 #define SMB_P_DOSLanMan2_1 6 #define SMB_P_LanMan2_1 7 #define SMB_P_NT1 8 /* SMBlib return codes */ /* We want something that indicates whether or not the return code was a * */ /* remote error, a local error in SMBlib or returned from lower layer ... * */ /* Wonder if this will work ... * */ /* SMBlibE_Remote = 1 indicates remote error * */ /* SMBlibE_ values < 0 indicate local error with more info available * */ /* SMBlibE_ values >1 indicate local from SMBlib code errors? * */ #define SMBlibE_Success 0 #define SMBlibE_Remote 1 /* Remote error, get more info from con * */ #define SMBlibE_BAD -1 #define SMBlibE_LowerLayer 2 /* Lower layer error * */ #define SMBlibE_NotImpl 3 /* Function not yet implemented * */ #define SMBlibE_ProtLow 4 /* Protocol negotiated does not support * req */ #define SMBlibE_NoSpace 5 /* No space to allocate a structure * */ #define SMBlibE_BadParam 6 /* Bad parameters * */ #define SMBlibE_NegNoProt 7 /* None of our protocols was liked * */ #define SMBlibE_SendFailed 8 /* Sending an SMB failed * */ #define SMBlibE_RecvFailed 9 /* Receiving an SMB failed * */ #define SMBlibE_GuestOnly 10 /* Logged in as guest * */ #define SMBlibE_CallFailed 11 /* Call remote end failed * */ #define SMBlibE_ProtUnknown 12 /* Protocol unknown * */ #define SMBlibE_NoSuchMsg 13 /* Keep this up to date * */ typedef struct { /* A structure for a Dirent */ unsigned char resume_key[21]; /* Don't touch this */ unsigned char file_attributes; /* Attributes of file */ unsigned int date_time; /* date and time of last mod */ unsigned int size; char filename[13]; /* The name of the file */ } SMB_CP_dirent; #endif