smb.h revision 613a2f6ba31e891e3d947a356daf5e563d43c1ce
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Copyright (c) 2000-2001 Boris Popov
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * All rights reserved.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Now many of these defines are from samba4 code, by Andrew Tridgell.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * (Permission given to Conrad Minshall at CIFS plugfest Aug 13 2003.)
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * (Note the main decision was whether to use defines found in MS includes
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * and web pages, versus Samba, and the deciding factor is which developers
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * are more likely to be looking at this code base.)
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Redistribution and use in source and binary forms, with or without
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * modification, are permitted provided that the following conditions
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * 1. Redistributions of source code must retain the above copyright
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * notice, this list of conditions and the following disclaimer.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * 2. Redistributions in binary form must reproduce the above copyright
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * notice, this list of conditions and the following disclaimer in the
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * documentation and/or other materials provided with the distribution.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * 3. All advertising materials mentioning features or use of this software
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * must display the following acknowledgement:
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * This product includes software developed by Boris Popov.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * 4. Neither the name of the author nor the names of any co-contributors
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * may be used to endorse or promote products derived from this software
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * without specific prior written permission.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SUCH DAMAGE.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * $Id: smb.h,v 1.36.90.1 2005/05/27 02:35:29 lindak Exp $
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Common definintions and structures for SMB/CIFS protocol
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * This file should be purely SMB protocol definition stuff.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * (Please don't make it a catch-all:)
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SMB dialects that we have to deal with.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow SMB_DIALECT_CORE, /* PC NETWORK PROGRAM 1.0, PCLAN1.0 */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow SMB_DIALECT_LANMAN1_0, /* MICROSOFT NETWORKS 3.0, LANMAN1.0 */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow SMB_DIALECT_LANMAN2_0, /* LM1.2X002, DOS LM1.2X002, Samba */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow SMB_DIALECT_LANMAN2_1, /* DOS LANMAN2.1, LANMAN2.1 */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow SMB_DIALECT_NTLM0_12 /* NT LM 0.12, Windows for Workgroups */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow /* 3.1a, * NT LANMAN 1.0 */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Formats of data/string buffers
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SMB header
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_HDRCMD(p) (*((uchar_t *)(p) + SMB_SIGLEN))
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross#define SMB_HDRMID(p) (*(ushort_t *)((uchar_t *)(p) + 30))
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * bits in the smb_flags field
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * bits in the smb_flags2 field
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_FLAGS2_KNOWS_EAS 0x0002 /* client know about EAs */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_FLAGS2_SECURITY_SIGNATURE 0x0004 /* check SMB integrity */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_FLAGS2_IS_LONG_NAME 0x0040 /* any path name is long name */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_FLAGS2_EXT_SEC 0x0800 /* client aware of Extended */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow /* Security negotiation */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_FLAGS2_DFS 0x1000 /* resolve paths in DFS */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_FLAGS2_ERR_STATUS 0x4000 /* 1 - status.status */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_FLAGS2_UNICODE 0x8000 /* use Unicode for strings */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Security mode bits
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_SM_USER 0x01 /* server in the user security mode */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_SM_ENCRYPT 0x02 /* use challenge/responce */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Action bits in session setup reply
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * NTLM capabilities
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_CAP_LARGE_FILES 0x0008 /* 64 bit offsets supported */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * File attributes
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Extended file attributes
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Access Mode Encoding
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_AM_OPENMODE 0x0003 /* mask for access mode bits */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow/* NT_CREATE_ANDX flags */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow/* NT_CREATE_ANDX share_access (share mode) */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow/* NT_CREATE_ANDX open_disposition */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NTCREATEX_DISP_SUPERSEDE 0 /* if file exists supersede it */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NTCREATEX_DISP_OPEN 1 /* exists ? open it : fail */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NTCREATEX_DISP_CREATE 2 /* exists ? fail : create it */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NTCREATEX_DISP_OPEN_IF 3 /* exists ? open it : create it */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NTCREATEX_DISP_OVERWRITE 4 /* exists ? overwrite : fail */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NTCREATEX_DISP_OVERWRITE_IF 5 /* exists ? overwrite : create */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow/* NT_CREATE_ANDX create_options */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NTCREATEX_OPTIONS_EIGHT_DOT_THREE_ONLY 0x0400
4bff34e37def8a90f9194d81bc345c52ba20086athurlow/* NT_CREATE_ANDX "impersonation" */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow/* NT_CREATE_ANDX security flags */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow/* NT_CREATE_ANDX create_action in reply */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow/* SMB_TRANS2_FIND_FIRST2/SMB_TRANS2_FIND_NEXT2 flags */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SMB commands
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SMB_COM_TRANSACTION2 subcommands
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SMB_COM_NT_TRANSACT subcommands
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SMB_TRANS2_QUERY_FS_INFORMATION levels
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SMB_QFS_ATTRIBUTE_INFO bits.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * The following info found in msdn
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * url=/library/en-us/wmisdk/wmi/win32_cdromdrive.asp)
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Naming is mostly as in samba, to help Those Who Google.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SMB_TRANS2_QUERY_PATH levels
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_QFILEINFO_IS_NAME_VALID 6 /* QPATHINFO only? */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SMB_TRANS2_FIND_FIRST2 information levels
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Selectors for NT_TRANSACT_QUERY_SECURITY_DESC and
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * NT_TRANSACT_SET_SECURITY_DESC. Details found in the MSDN
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * library by searching on security_information.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Note the protected/unprotected bits did not exist in NT.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define UNPROTECTED_SACL_SECURITY_INFORMATION 0x10000000
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define UNPROTECTED_DACL_SECURITY_INFORMATION 0x20000000
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define PROTECTED_SACL_SECURITY_INFORMATION 0x40000000
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define PROTECTED_DACL_SECURITY_INFORMATION 0x80000000
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * security descriptor header
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * it is followed by the optional SIDs and ACLs
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * note this is "raw", ie little-endian
4bff34e37def8a90f9194d81bc345c52ba20086athurlow uint8_t sd_revision; /* 0x01 observed between W2K */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow uint32_t sd_sacloff; /* offset to system/audit ACL */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow uint32_t sd_dacloff; /* offset to discretionary ACL */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow}; /* XXX: __attribute__((__packed__)); */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define wset_sdflags(s, f) ((s)->sd_flags = letohs(f))
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define wset_sdowneroff(s, o) ((s)->sd_owneroff = htolel(o))
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define wset_sdgroupoff(s, o) ((s)->sd_groupoff = htolel(o))
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define wset_sdsacloff(s, o) ((s)->sd_sacloff = htolel(o))
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define wset_sddacloff(s, o) ((s)->sd_dacloff = htolel(o))
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * sd_flags bits
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * access control list header
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * it is followed by the ACEs
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * note this is "raw", ie little-endian
4bff34e37def8a90f9194d81bc345c52ba20086athurlow}; /* XXX: __attribute__((__packed__)); */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define wset_aclrevision(a) ((a)->acl_revision = 0x02)
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define wset_aclacecount(a, c) ((a)->acl_acecount = htoles(c))
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define aclace(a) ((struct ntace *)((char *)(a) + sizeof (struct ntacl)))
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * access control entry header
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * it is followed by type-specific ace data,
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * which for the simple types is just a SID
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * note this is "raw", ie little-endian
4bff34e37def8a90f9194d81bc345c52ba20086athurlow uint32_t ace_rights; /* generic, standard, specific, etc */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow}; /* XXX: __attribute__((__packed__)); */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define wset_acerights(a, r) ((a)->ace_rights = htolel(r))
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define aceace(a) ((struct ntace *)((char *)(a) + acelen(a)))
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define acesid(a) ((struct ntsid *)((char *)(a) + sizeof (struct ntace)))
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * ace_rights
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * (Samba bit names are used here, with permission, as the shorter Windows
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * names are more likely to cause namespace collisions)
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Don't use MAXIMUM_ALLOWED as Samba (2.2.3 at least) will
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * return NT_STATUS_INVALID_LOCK_SEQUENCE
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * these mappings are from Windows sample code but are likely incomplete
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * GENERIC_RIGHT_READ_ACCESS :
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * STD_RIGHT_SYNCHRONIZE_ACCESS |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * STD_RIGHT_READ_CONTROL_ACCESS |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SA_RIGHT_FILE_READ_ATTRIBUTES |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SA_RIGHT_FILE_READ_EA |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SA_RIGHT_FILE_READ_DATA
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * GENERIC_RIGHT_WRITE_ACCESS :
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * STD_RIGHT_SYNCHRONIZE_ACCESS |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * STD_RIGHT_READ_CONTROL_ACCESS |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SA_RIGHT_FILE_WRITE_ATTRIBUTES |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SA_RIGHT_FILE_WRITE_EA |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SA_RIGHT_FILE_APPEND_DATA |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SA_RIGHT_FILE_WRITE_DATA
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * GENERIC_RIGHT_EXECUTE_ACCESS :
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * STD_RIGHT_SYNCHRONIZE_ACCESS |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * STD_RIGHT_READ_CONTROL_ACCESS |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SA_RIGHT_FILE_READ_ATTRIBUTES |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SA_RIGHT_FILE_EXECUTE
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * GENERIC_RIGHT_ALL_ACCESS :
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * STD_RIGHT_SYNCHRONIZE_ACCESS |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * STD_RIGHT_WRITE_OWNER_ACCESS |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * STD_RIGHT_WRITE_DAC_ACCESS |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * STD_RIGHT_READ_CONTROL_ACCESS |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * STD_RIGHT_DELETE_ACCESS |
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * SA_RIGHT_FILE_ALL_ACCESS
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * security identifier header
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * it is followed by sid_numauth sub-authorities,
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * which are 32 bits each.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * note the subauths are little-endian on the wire, but
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * need to be big-endian for memberd/DS
4bff34e37def8a90f9194d81bc345c52ba20086athurlow uint8_t sid_authority[SIDAUTHSIZE]; /* ie not little endian */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow}; /* XXX: __attribute__((__packed__)); */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define sidlen(s) (sizeof (struct ntsid) + 4 * (s)->sid_subauthcount)
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define MAXSIDLEN (sizeof (struct ntsid) + 4 * KAUTH_NTSID_MAX_AUTHORITIES)
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define sidsub(s) ((uint32_t *)((char *)(s) + sizeof (struct ntsid)))
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * MS' defined values for ace_type
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * MS' defined values for ace_flags
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define UNDEF_ACE_FLAG 0x20 /* MS doesn't define it */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Set PATH/FILE information levels
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_SFILEINFO_FULL_DIRECTORY_INFORMATION 1002
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_SFILEINFO_BOTH_DIRECTORY_INFORMATION 1003
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define SMB_SFILEINFO_MAILSLOT_QUERY_INFORMATION 1026
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * LOCKING_ANDX LockType flags
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Error classes
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRHRD 0x03 /* Error is an hardware error. */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRCMD 0xFF /* Command was not in the "SMB" format. */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Error codes for the ERRDOS class
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRbadfile 2 /* File not found (last component) */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRbadmcb 7 /* Memory control blocks destroyed (huh ?) */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRbadmem 9 /* Invalid memory block address */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRremcd 16 /* An attempt to delete current directory */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRnofiles 18 /* no more files found in file search */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRbadshare 32 /* Share mode can't be granted */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRlock 33 /* Lock conflicts with existing lock */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRfilexists 80 /* requested file name already exists */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRnotlocked 158 /* region was not locked by this context */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRpipebusy 231 /* all pipe instances are busy */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRnotconnected 233 /* nobody on other end of pipe */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRmoredata 234 /* more data to be returned */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRbaddirectory 267 /* invalid directory name */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERReasunsupported 282 /* extended attributes not supported */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Error codes for the ERRSRV class
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRaccess 4 /* client doesn't have enough access rights */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRinvnid 5 /* The Tid specified in a command is invalid */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRinvnetname 6 /* Invalid server name in the tree connect */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRinvdevice 7 /* Printer and not printer devices are mixed */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRqtoobig 50 /* Print queue full - no space */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRsmbcmd 64 /* The server did not recognise the command */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRsrverror 65 /* The server encountered and internal error */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRfilespecs 67 /* The Fid and path name contains an */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow /* invalid combination */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRsetattrmode 71 /* Attribute mode invalid */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRnoresource 89 /* No resources currently available for req */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRtoomanyuids 90 /* Too many UIDs active on this session */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRbaduid 91 /* The UID is not known in this session */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRusempx 250 /* Temporarily unable to support Raw, */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow /* use MPX mode */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRusestd 251 /* Temporarily unable to support Raw, */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow /* use stdandard r/w */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Error codes for the ERRHRD class
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRbadreq 24 /* Bad request structure length */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRbadshare 32 /* A open conflicts with an existing open */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRwrongdisk 34 /* The wrong disk was found in a drive */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define ERRsharebufexc 36 /* A sharing buffer has been exceeded */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * RAP error codes (it seems that they returned not only by RAP)
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * An INCOMPLETE list of 32 bit error codes
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * For more detail see MSDN and ntstatus.h in the MS DDK
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * XXX - these should have the severity and "customer defined" fields
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * added back in, and smb_maperr32() shouldn't mask those fields out;
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * 0x80000005 is STATUS_BUFFER_OVERFLOW, with 0xC0000000 is
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * STATUS_ACCESS_VIOLATION, and we need to distinguish between them.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * We use STATUS_BUFFER_OVERFLOW, and need to know its exact value,
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * so we #define it correctly here; don't strip off the leading
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * 0x80000000 from it!
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NT_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE 0x0115
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NT_STATUS_NT_CROSS_ENCRYPTION_REQUIRED 0x015d
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NT_STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT 0x016e
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED 0x017f
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE 0x018d
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT 0x0198
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT 0x0199
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT 0x019a
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NT_STATUS_CLIENT_SERVER_PARAMETERS_INVALID 0x0223
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NT_STATUS_INVALID_PLUGPLAY_DEVICE_PATH 0x0261
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NT_STATUS_DIRECTORY_IS_A_REPARSE_POINT 0x0281
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * 0x00010000-0x0001ffff are "DBG" errors
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * 0x00020000-0x0003ffff are "RPC" errors
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * 0x00040000-0x0004ffff are "PNP" errors
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * 0x000A0000-0x000Affff are "CTX" errors
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * 0x00130000-0x0013ffff are "CLUSTER" errors
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * 0x00140000-0x0014ffff are "ACPI" errors
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * 0x00150000-0x0015ffff are "SXS" errors
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * size of the GUID returned in an extended security negotiate response
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * NTLMv2 blob header structure.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * NTLMv2 name header structure, for names in a blob.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NAMETYPE_EOL 0x0000 /* end of list of names */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NAMETYPE_MACHINE_NB 0x0001 /* NetBIOS machine name */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NAMETYPE_DOMAIN_NB 0x0002 /* NetBIOS domain name */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NAMETYPE_MACHINE_DNS 0x0003 /* DNS machine name */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define NAMETYPE_DOMAIN_DNS 0x0004 /* DNS Active Directory domain name */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Named pipe commands.
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define TRANS_CALL_NAMED_PIPE 0x54 /* open/write/read/close pipe */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define TRANS_WAIT_NAMED_PIPE 0x53 /* wait for pipe to be !busy */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define TRANS_PEEK_NAMED_PIPE 0x23 /* read but don't remove data */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define TRANS_Q_NAMED_PIPE_HAND_STATE 0x21 /* query pipe handle modes */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define TRANS_SET_NAMED_PIPE_HAND_STATE 0x01 /* set pipe handle modes */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define TRANS_Q_NAMED_PIPE_INFO 0x22 /* query pipe attributes */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define TRANS_TRANSACT_NAMED_PIPE 0x26 /* r/w operation on pipe */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define TRANS_READ_NAMED_PIPE 0x11 /* read pipe in "raw" mode */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow /* (non message mode) */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#define TRANS_WRITE_NAMED_PIPE 0x31 /* write pipe "raw" mode */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow /* (non message mode) */
4bff34e37def8a90f9194d81bc345c52ba20086athurlow * Share types, visible via NetShareEnum
4bff34e37def8a90f9194d81bc345c52ba20086athurlow#endif /* _NETSMB_SMB_H_ */