blob: 5c3415bf18d77dcefc898fc486526e6ac07e461b [file] [edit]
/* SPDX-License-Identifier: LGPL-2.1 */
/*
*
* Copyright (c) International Business Machines Corp., 2002,2004
* Author(s): Steve French (sfrench@us.ibm.com)
*
* See Error Codes section of the SNIA CIFS Specification
* for more information
*
*/
struct smb_to_posix_error {
__u16 smb_err;
int posix_code;
};
/* The request was successful. */
#define SUCCESS 0x00
/* Error is from the core DOS operating system set */
#define ERRDOS 0x01
/* Error is generated by the file server daemon */
#define ERRSRV 0x02
/* Error is a hardware error. */
#define ERRHRD 0x03
/* Command was not in the "SMB" format. */
#define ERRCMD 0xFF
/* The following error codes may be generated with the SUCCESS error class.*/
/*#define SUCCESS 0 The request was successful. */
/*
* The following error codes may be generated with the ERRDOS error class.
* The comment at the end of each definition indicates the POSIX error
* code; it is used to generate the `mapping_table_ERRDOS` array.
*/
/*
* Invalid function. The server did not
* recognize or could not perform a
* system call generated by the server,
* e.g., set the DIRECTORY attribute on
* a data file, invalid seek mode.
*/
#define ERRbadfunc 1 // -EINVAL
/*
* File not found. The last component
* of a file's pathname could not be
* found.
*/
#define ERRbadfile 2 // -ENOENT
/*
* Directory invalid. A directory
* component in a pathname could not be
* found.
*/
#define ERRbadpath 3 // -ENOTDIR
/*
* Too many open files. The server has
* no file handles available.
*/
#define ERRnofids 4 // -EMFILE
/*
* Access denied, the client's context
* does not permit the requested
* function. This includes the
* following conditions: invalid rename
* command, write to Fid open for read
* only, read on Fid open for write
* only, attempt to delete a non-empty
* directory
*/
#define ERRnoaccess 5 // -EACCES
/*
* Invalid file handle. The file handle
* specified was not recognized by the
* server.
*/
#define ERRbadfid 6 // -EBADF
/* Memory control blocks destroyed. */
#define ERRbadmcb 7 // -EIO
/*
* Insufficient server memory to
* perform the requested function.
*/
#define ERRnomem 8 // -EREMOTEIO
/* Invalid memory block address. */
#define ERRbadmem 9 // -EFAULT
/* Invalid environment. */
#define ERRbadenv 10 // -EFAULT
/* Invalid format. */
#define ERRbadformat 11 // -EINVAL
/* Invalid open mode. */
#define ERRbadaccess 12 // -EACCES
/*
* Invalid data (generated only by
* IOCTL calls within the server).
*/
#define ERRbaddata 13 // -EIO
/* Invalid drive specified. */
#define ERRbaddrive 15 // -ENXIO
/*
* A Delete Directory request attempted
* to remove the server's current
* directory.
*/
#define ERRremcd 16 // -EACCES
/*
* Not same device (e.g., a cross
* volume rename was attempted
*/
#define ERRdiffdevice 17 // -EXDEV
/*
* A File Search command can find no
* more files matching the specified
* criteria.
*/
#define ERRnofiles 18 // -ENOENT
/* media is write protected */
#define ERRwriteprot 19 // -EROFS
#define ERRgeneral 31
/*
* The sharing mode specified for an
* Open conflicts with existing FIDs on
* the file.
*/
#define ERRbadshare 32 // -EBUSY
/*
* A Lock request conflicted with an
* existing lock or specified an
* invalid mode, or an Unlock requested
* attempted to remove a lock held by
* another process.
*/
#define ERRlock 33 // -EACCES
#define ERRunsup 50 // -EINVAL
#define ERRnosuchshare 67 // -ENXIO
/*
* The file named in the request
* already exists.
*/
#define ERRfilexists 80 // -EEXIST
#define ERRinvparm 87 // -EINVAL
#define ERRdiskfull 112 // -ENOSPC
#define ERRinvname 123 // -ENOENT
#define ERRunknownlevel 124 // -EOPNOTSUPP
#define ERRdirnotempty 145 // -ENOTEMPTY
#define ERRnotlocked 158 // -ENOLCK
#define ERRcancelviolation 173 // -ENOLCK
#define ERRalreadyexists 183 // -EEXIST
#define ERRbadpipe 230
#define ERRpipebusy 231
#define ERRpipeclosing 232
#define ERRnotconnected 233
#define ERRmoredata 234 // -EOVERFLOW
#define ERReasnotsupported 282 // -EOPNOTSUPP
/*
* The operation would cause a quota
* limit to be exceeded.
*/
#define ErrQuota 0x200 // -EDQUOT
/*
* A link operation was performed on a
* pathname that was not a link.
*/
#define ErrNotALink 0x201 // -ENOLINK
#define ERRnetlogonNotStarted 2455 // -ENOPROTOOPT
/* Below errors are used internally (do not come over the wire) for passthrough
from STATUS codes to POSIX only */
#define ERRsymlink 0xFFFD // -EOPNOTSUPP
#define ErrTooManyLinks 0xFFFE // -EMLINK
/*
* The following error codes may be generated with the ERRSRV error class.
* The comment at the end of each definition indicates the POSIX error
* code; it is used to generate the `mapping_table_ERRSRV` array.
*/
/*
* Non-specific error code. It is
* returned under the following
* conditions: resource other than disk
* space exhausted (e.g. TIDs), first
* SMB command was not negotiate,
* multiple negotiates attempted, and
* internal server error.
*/
#define ERRerror 1 // -EIO
/*
* Bad password - name/password pair in
* a TreeConnect or Session Setup are
* invalid.
*/
#define ERRbadpw 2 // -EACCES
/*
* used for indicating DFS referral
* needed
*/
#define ERRbadtype 3 // -EREMOTE
/*
* The client does not have the
* necessary access rights within the
* specified context for requested
* function.
*/
#define ERRaccess 4 // -EACCES
/*
* The Tid specified in a command was
* invalid.
*/
#define ERRinvtid 5 // -ENXIO
/*
* Invalid network name in tree
* connect.
*/
#define ERRinvnetname 6 // -ENXIO
/*
* Invalid device - printer request
* made to non-printer connection or
* non-printer request made to printer
* connection.
*/
#define ERRinvdevice 7 // -ENXIO
/*
* Print queue full (files) -- returned
* by open print file.
*/
#define ERRqfull 49 // -ENOSPC
/* Print queue full -- no space. */
#define ERRqtoobig 50 // -ENOSPC
/* EOF on print queue dump */
#define ERRqeof 51 // -EIO
/* Invalid print file FID. */
#define ERRinvpfid 52 // -EBADF
/*
* The server did not recognize the
* command received.
*/
#define ERRsmbcmd 64 // -EBADRQC
/*
* The server encountered an internal
* error, e.g., system file
* unavailable.
*/
#define ERRsrverror 65 // -EIO
/* (obsolete) */
#define ERRbadBID 66 // -EIO
/*
* The Fid and pathname parameters
* contained an invalid combination of
* values.
*/
#define ERRfilespecs 67 // -EINVAL
/* (obsolete) */
#define ERRbadLink 68 // -EIO
/*
* The access permissions specified for
* a file or directory are not a valid
* combination.
*/
#define ERRbadpermits 69 // -EINVAL
#define ERRbadPID 70 // -ESRCH
/* attribute (mode) is invalid */
#define ERRsetattrmode 71 // -EINVAL
/* Server is paused */
#define ERRpaused 81 // -EHOSTDOWN
/* reserved - messaging off */
#define ERRmsgoff 82 // -EHOSTDOWN
/* reserved - no room for message */
#define ERRnoroom 83 // -ENOSPC
/* reserved - too many remote names */
#define ERRrmuns 87 // -EUSERS
/* operation timed out */
#define ERRtimeout 88 // -ETIME
/* No resources available for request */
#define ERRnoresource 89 // -EREMOTEIO
/* Too many UIDs active on this session */
#define ERRtoomanyuids 90 // -EUSERS
/* The UID is not known as a valid user */
#define ERRbaduid 91 // -EACCES
/* temporarily unable to use raw */
#define ERRusempx 250 // -EIO
/*
* temporarily unable to use either raw
* or mpx
*/
#define ERRusestd 251 // -EIO
#define ERR_NOTIFY_ENUM_DIR 1024 // -ENOBUFS
/* user account does not exist */
#define ERRnoSuchUser 2238 // -EACCES
#define ERRaccountexpired 2239 // -EKEYEXPIRED
/* can not logon from this client */
#define ERRbadclient 2240 // -EACCES
/* logon hours do not allow this */
#define ERRbadLogonTime 2241 // -EACCES
#define ERRpasswordExpired 2242 // -EKEYEXPIRED
#define ERRnosupport 0xFFFF // -EINVAL