root/usr/src/uts/common/smb/doserror.h
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */

/*
 * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
 */

#ifndef _SMB_DOSERROR_H
#define _SMB_DOSERROR_H

/*
 * This file defines the list of DOS error codes. I think the error
 * codes are divided into different classes, which is why there are
 * duplicate values.
 */

#ifdef __cplusplus
extern "C" {
#endif


/*
 * Error source or class
 */
#define ERRDOS          0x01    /* Core DOS operating system error. */
#define ERRSRV          0x02    /* Server network file error */
#define ERRHRD          0x03    /* Hardware error */
#define ERRCMD          0xFF    /* Command was not in the "SMB" format. */


/*
 * ERRDOS error codes
 */
#define ERRbadfunc      1       /* Invalid function. */
#define ERRbadfile      2       /* File not found (last component) */
#define ERRbadpath      3       /* path not found (directory part) */
#define ERRnofids       4       /* Too many open files. */
#define ERRnoaccess     5       /* Access denied. */
#define ERRbadfid       6       /* Invalid file handle. */
#define ERRbadmcb       7       /* Memory control blocks destroyed. */
#define ERRnomem        8       /* Insufficient memory. */
#define ERRbadmem       9       /* Invalid memory block address. */
#define ERRbadenv       10      /* Invalid environment. */
#define ERRbadformat    11      /* Invalid format. */
#define ERRbadaccess    12      /* Invalid open mode. */
#define ERRbaddata      13      /* Invalid data (from IOCTL calls) */
#define ERRbaddrive     15      /* Invalid drive specified. */
#define ERRremcd        16      /* Attempted to delete current directory. */
#define ERRdiffdevice   17      /* Not same device (cross volume rename) */
#define ERRnofiles      18      /* File search found no more files. */
#define ERRbadshare     32      /* Share mode conflict with existing open. */
#define ERRlock         33      /* Lock conflict with existing lock, etc. */
#define ERRdiskfull     39      /* No space left on device. */
#define ERRfilexists    80      /* Requested file name already exists. */

/*
 * These are compatible with the MS header files, but the
 * smb/nterror.h names for these are preferred.
 */
#define ERRbadpipe      230     /* See ERROR_BAD_PIPE (named pipe invalid) */
#define ERRpipebusy     231     /* See ERROR_PIPE_BUSY (all instances busy) */
#define ERRpipeclosing  232     /* See ERROR_NO_DATA (pipe closing) */
#define ERRnotconnected 233     /* See ERROR_PIPE_NOT_CONNECTED */
#define ERRmoredata     234     /* See ERROR_MORE_DATA (pipe has more) */


/*
 * ERRSRV error codes
 */
#define ERRerror        1       /* Non-specific error code. */
#define ERRbadpw        2       /* Bad password (tree connect, etc) */
#define ERRbadtype      3       /* reserved */
#define ERRaccess       4       /* access denied */
#define ERRinvnid       5       /* Invalid tree ID */
#define ERRinvnetname   6       /* Invalid network name (tree connect) */
#define ERRinvdevice    7       /* Invalid device (print jobs, etc.) */
#define ERRqfull        49      /* Print queue full (files) */
#define ERRqtoobig      50      /* Print queue full (no space) */
#define ERRqeof         51      /* EOF on print queue dump. */
#define ERRinvpfid      52      /* Invalid print file FID. */
#define ERRsmbcmd       64      /* Server did not recognize the command. */
#define ERRsrverror     65      /* Server encountered an internal error. */
#define ERRfilespecs    67      /* FID and path param combination is bad. */
#define ERRbadpermits   69      /* Access permissions invalid (SetF*) */
#define ERRsetattrmode  71      /* Attribute mode invalid (SetF*) */
#define ERRpaused       81      /* Server is paused. */
#define ERRmsgoff       82      /* Not receiving messages. */
#define ERRnoroom       83      /* No room to buffer message. */
#define ERRrmuns        87      /* Too many remote user names (messaging) */
#define ERRtimeout      88      /* Operation timed out. */
#define ERRnoresource   89      /* No resources available for request. */
#define ERRtoomanyuids  90      /* Too many UIDs active on connection. */
#define ERRbaduid       91      /* UID is not valid. */

#define ERRusempx       250     /* Temporarily unable to support Raw, */
                                /* use MPX mode */
#define ERRusestd       251     /* Temporarily unable to support Raw, */
                                /* use stdandard r/w */
#define ERRcontmpx      252     /* Continue in MPX mode */

#define ERRnosupport    0xffff  /* Function not supported. */


/*
 * ERRHRD error codes
 */
#define ERRnowrite      19      /* Attempt to write on write-protected media */
#define ERRbadunit      20      /* Unknown unit. */
#define ERRnotready     21      /* Drive not ready. */
#define ERRbadcmd       22      /* Unknown command. */
#define ERRdata         23      /* Data error (CRC). */
#define ERRbadreq       24      /* Bad request structure length. */
#define ERRseek         25      /* Seek error. */
#define ERRbadmedia     26      /* Unknown media type. */
#define ERRbadsector    27      /* Sector not found. */
#define ERRnopaper      28      /* Printer out of paper. */
#define ERRwrite        29      /* Write fault. */
#define ERRread         30      /* Read fault. */
#define ERRgeneral      31      /* General failure. */
/*      ERRbadshare     32      Same as for DOSERR (see above) */
/*      ERRlock         33      Same as for DOSERR (see above) */
#define ERRwrongdisk    34      /* The wrong disk was found in a drive. */
#define ERRFCBUnavail   35      /* No FCBs are available to process request. */
#define ERRsharebufexc  36      /* A sharing buffer has been exceeded. */


#ifdef __cplusplus
}
#endif

#endif /* _SMB_DOSERROR_H */