| /* 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 |