/*++ Copyright (c) 1992 Microsoft Corporation Module Name: errorlog.c Abstract: This module implements the error logging in the appletalk stack Author: Nikhil Kamkolkar (nikhilk@microsoft.com) Revision History: 28 Jun 1992 Initial version (jameelh) 28 Jun 1992 Adapter for stack use (nikhilk) --*/ #define IncludeErrorLogErrors 1 #include "atalk.h" // // LOCAL Functions // LOCAL NTSTATUS ConvertToNTStatus( LONG PortableError, USHORT RoutineType); LOCAL BOOLEAN ConvertPortableErrorToLogError( IN INT PortableError, OUT PULONG NtErrorCode); LOCAL VOID NTErrorLog( const char *RoutineName, INT Severity, LONG LineNumber, INT PortNumber, INT ErrorCode, INT ExtraArgCount, va_list ArgCount); VOID ShutdownErrorLogging( VOID ) { return; } // ShutdownErrorLogging VOID _cdecl ErrorLogger( const char *routineName, ErrorSeverity severity, long lineNumber, int portNumber, int errorCode, int extraArgCount, ... ) { va_list ap; unsigned long ntErrorCode; if (ConvertPortableErrorToLogError(errorCode, &ntErrorCode)) { if (extraArgCount > 0) va_start(ap, extraArgCount); // // Pass all of this info off to the NT error logging subsystem. If // there are any replacements (extraArgCount > 0), they will be the // following variable arguments, but in this environment they must // all be strings. Sigh. // NTErrorLog(routineName, severity, lineNumber, portNumber, ntErrorCode, extraArgCount, ap); if (extraArgCount > 0) va_end(ap); } } // ErrorLog VOID NTErrorLog( const char *RoutineName, INT Severity, LONG LineNumber, INT PortNumber, INT ErrorCode, INT ExtraArgCount, va_list ArgCount ) { INT i; PUNICODE_STRING insertionString = NULL; DBGPRINT(ATALK_DEBUG_ALL, DEBUG_LEVEL_ERROR, ("NTErrorLog: Routine Name - %s Line Number - %d Port - %d Error - %lx\n", RoutineName, LineNumber, PortNumber, ErrorCode)); DBGPRINT(ATALK_DEBUG_ALL, DEBUG_LEVEL_INFOCLASS1, ("NTErrorLog: ExtraArgCount - %d\n", ExtraArgCount)); // // We need to convert all the strings to unicode // BUGBUG: Get port name as part of the insertion parameters // if (ExtraArgCount > 0) { PCHAR string; ANSI_STRING ansiString; // // Allocate memory for insertion strings // insertionString = (PUNICODE_STRING)AtalkAllocNonPagedMemory(sizeof(UNICODE_STRING)*ExtraArgCount); if (insertionString == NULL) return; for (i=0; i < ExtraArgCount; i++) { string = va_arg(ArgCount, PCHAR); DBGPRINT(ATALK_DEBUG_ALL, DEBUG_LEVEL_INFOCLASS1, ("INFO1: NTErrorLog - String %s\n", string)); // // Set the string in Unicode format // RtlInitAnsiString(&ansiString, string); if (!NT_SUCCESS(RtlAnsiStringToUnicodeString(&insertionString[i], &ansiString, TRUE))) { // // BUGBUG: Cleanup // return; } } } #if DBG // Send in RoutineName as RawData... AtalkWriteErrorLogEntry( (ULONG)ErrorCode, // error code (ULONG)LineNumber, // unique error value STATUS_UNSUCCESSFUL, // NtStatusCode (PVOID)RoutineName, // RawDataBuf OPTIONAL strlen(RoutineName), // RawDataLen ExtraArgCount, // InsertionStringCount insertionString // InsertionString OPTIONAL ); #else AtalkWriteErrorLogEntry( (ULONG)ErrorCode, // UniqueErrorCode (ULONG)LineNumber, // unique error value STATUS_UNSUCCESSFUL, // NtStatusCode NULL, // RawDataBuf OPTIONAL 0, // RawDataLen ExtraArgCount, // InsertionStringCount insertionString // InsertionString OPTIONAL ); #endif // // BUGBUG: Need to free up the Unicode strings... // if (insertionString != NULL) { AtalkFreeNonPagedMemory(insertionString); } return; } BOOLEAN ConvertPortableErrorToLogError( IN INT PortableError, OUT PULONG NtErrorCode ) { BOOLEAN logError = TRUE; DBGPRINT(ATALK_DEBUG_ALL, DEBUG_LEVEL_ERROR, ("ERROR: ConvertPortableErrorToLogError - portable error %lx %ld\n", PortableError, PortableError)); switch (PortableError) { case IErrInitialRegisterOkay: *NtErrorCode = EVENT_ATALK_NAME_REGISTERED; break; case IErrInitialAppleTalkUnloaded: *NtErrorCode = EVENT_ATALK_UNLOAD; break; case IErrNegativeHashValue: case IErrAarpBad8022header: case IErrAarpBadAddressLength: case IErrAarpBadLogicalProt: case IErrAarpPacketLenMismatch: case IErrAarpBadSendProbeResp: case IErrAarpBadCommandType: case IErrAarpBadSource: case IErrAarpBadDest: case IErrAarpOutOfMemory: case IErrAarpBadZipOpenSocket: case IErrAarpCouldNotReleaseNode: case IErrAarpCouldNotFindNode: case IErrAarpBadProbeSend: case IErrAdspBadFrwdResetSend: case IErrAdspBadCloseAdviseSend: case IErrAdspBufferQueueError: case IErrAdspFunnyErrorCode: case IErrAdspLosingData: case IErrAdspOutOfMemory: case IErrAdspListenerMissing: case IErrAdspOddProtocol: case IErrAdspMissingHeader: case IErrAdspFunnyRequest: case IErrAdspBadVersion: case IErrAdspCantDeny: case IErrAdspDeadDest: case IErrAdspFunnyValue: case IErrAdspAttnOutOfSeq: case IErrAdspBadAckSend: case IErrAdspShrinkingWindow: case IErrAdspBadFrwdResetAckSend: case IErrAdspBadRetranSend: case IErrAdspBadWindowSize: case IErrAdspBadData: case IErrAdspConnectionLost: case IErrAdspResetNotPending: case IErrAdspBadProbeSend: case IErrAdspTimerNotCanceled: case IErrAdspBadOpenSend: case IErrAdspBadAttnSend: case IErrAdspBadNonDataAckSend: case IErrAdspWindowSizeErrorToo: case IErrAdspNoData: case IErrAdspWindowSizeOverMax: case IErrAdspNotOnRefNumList: case IErrAdspBadSocketClose: case IErrAdspOutOfIds: case IErrAdspOutOfRefNums: case IErrAdspZeroDeferCount: case IErrAdspBadDeferCount: case IErrAdspBadStartIndex: case IErrAdspQueueIsEmpty: case IErrAdspAuxQueueError: case IErrAdspTooMuchDiscard: case IErrAdspTooMuchFree: case IErrAdspCantDiscard: case IErrAspBadError: case IErrAspOutOfMemory: case IErrAspCouldntMapAddress: case IErrAspNotOnSLSList: case IErrAspCouldntCancelTickle: case IErrAspRefNumMapMissing: case IErrAspBadSocketClose: case IErrAspListNotEmpty: case IErrAspListenerInfoMissing: case IErrAspLostSLSPacket: case IErrAspBadSrvrBusySend: case IErrAspBadBadVersionSend: case IErrAspBadAddrNotMappedSend: case IErrAspBadNoSocketsSend: case IErrAspBadOpenOkaySend: case IErrAspCouldntStartTickle: case IErrAspCouldNotEnqueue: case IErrAspSessionInfoMissing: case IErrAspBadStatusSend: case IErrAspBadCommandToSLS: case IErrAspIncomingError: case IErrAspSessionBufMissing: case IErrAspWrongBuffer: case IErrAspTargetSessionMissing: case IErrAspWrongSLS: case IErrAspWrongAddress: case IErrAspBadCancelResponse: case IErrAspBadCommand: case IErrAspNotWriteCommand: case IErrAspBadWritePacket: case IErrAspFunnyCommand: case IErrAspSocketNotFound: case IErrAspBadUsageCount: case IErrAspCouldNotCloseSess: case IErrAspSessionInfoBad: case IErrAspCommandInfoMissing: case IErrAspGetRequestListBad: case IErrAtpOutOfMemory: case IErrAtpAtpInfoMissing: case IErrAtpDeferCountZero: case IErrAtpBadDeferCount: case IErrAtpFunnyIncomingError: case IErrAtpLosingData: case IErrAtpPacketTooShort: case IErrAtpWhyUs: case IErrAtpFunnyTRelTimerValue: case IErrAtpTooMuchData: case IErrAtpRespToDeadReq: case IErrAtpOutOfSequence: case IErrAtpDeadRelease: case IErrAtpBadBitmap: case IErrAtpBadDataSize: case IErrAtpSocketClosed: case IErrAtpMissingResponse: case IErrAtpMissingRequest: case IErrDdpPacketTooLong: case IErrDdpLosingData: case IErrDdpOutOfMemory: case IErrDdpLengthCorrupted: case IErrDdpShortDdp: case IErrDdpShortDdpTooLong: case IErrDdpBadSourceShort: case IErrDdpBadDestShort: case IErrDdpLongDdpTooLong: case IErrDdpBadSourceLong: case IErrDdpBadDestLong: case IErrDdpBadDest: case IErrDdpBadSource: case IErrDdpBadShortSend: case IErrDdpBadSend: case IErrDdpSourceAddrBad: case IErrDdpZeroDeferCount: case IErrDdpBadDeferCount: case IErrDdpBadAarpReqSend: case IErrDdpBadData: case IErrDdpBadRetrySend: case IErrDdpForwardError: case IErrDependBadProtocol: case IErrDependBadPacketSize: case IErrDependBadRoutingInfoSize: case IErrDependBadDdpSize: case IErrDependDataMissing: case IErrDependBadAarpSize: case IErrDependSourceNotKnown: case IErrDependCouldNotCoalesce: case IErrEpBadIncomingError: case IErrEpBadReplySend: case IErrEpOutOfMemory: case IErrInitialBadPortType: case IErrInitialBadHalfPortType: case IErrInitialBadRemoteAccessType: case IErrInitialNonRoutingHalfPort: case IErrInitialRoutingRemoteAccess: case IErrInitialCantBeDefault: case IErrInitialCantHavePram: case IErrInitialNoRemoteConfig: case IErrInitialCantConfigRemote: case IErrInitialBadServerName: case IErrInitialBadPortName: case IErrInitialNoRouter: case IErrInitialLocalTalkNetRange: case IErrInitialRangeOverlap: case IErrInitialZoneNotAllowed: case IErrInitialBadZone: case IErrInitialZonesForNonSeed: case IErrInitialBadDefaultZone: case IErrInitialZoneInfoNeeded: case IErrInitialNetRangeNeeded: case IErrInitialTooManyZones: case IErrInitialBadZoneInfo: case IErrInitialOneZoneOnly: case IErrInitialBadZoneList: case IErrInitialZoneNotOnList: case IErrInitialBadDefault: case IErrInitialBadDefaultToo: case IErrInitialCouldNotInit: case IErrInitialOhMy: case IErrInitialCouldNotCatchAarp: case IErrInitialCouldNotCatchAt: case IErrInitialNoDefaultPort: case IErrInitialCouldNotGetNode: case IErrInitialMallocFailed: case IErrInitialNamesSocketNotOpen: case IErrInitialBadRegisterStart: case IErrInitialBadMakeOpaque: case IErrInitialBadRegisterComplete: case IErrInitialErrorOnRegister: case IErrInitialRanOutOfNames: case IErrInitialHaveProxyNode: case IErrInitialBadRouterFlags: case IErrInitialNotRoutingOnDefault: case IErrInitialBadDesiredPort: case IErrInitialCantGetPort: case IErrInitialShutdownDefault: case IErrInitialPRamNotInRange: case IErrNbpBadIncomingCode: case IErrNbpTupleCountBadReq: case IErrNbpBadZoneReq: case IErrNbpBadLTZone: case IErrNbpBadFwdReqSend: case IErrNbpTupleCountBadLookup: case IErrNbpCouldntMapSocket: case IErrNbpDeadReply: case IErrNbpTupleCountBadReply: case IErrNbpBadTupleStored: case IErrNbpTuplesMunged: case IErrNbpBadPendingFlag: case IErrNbpBadCommandType: case IErrNbpCouldntFormAddress: case IErrNbpOutOfMemory: case IErrNbpBadSend: case IErrNbpBadData: case IErrNbpSocketClosed: case IErrNbpNoLongerPending: case IErrNbpBadBrRqSend: case IErrNbpOpenSocketMissing: case IErrNbpBadReplySend: case IErrNbpBadSourceSocket: case IErrNbpBadMutlicastAddr: case IErrNbpBadMulticastSend: case IErrNbpBadBroadcastSend: case IErrNodeNoLocalTalkNode: case IErrNodeOutOfMemory: case IErrNodeCouldStartListeners: case IErrNodeCouldNotClose: case IErrPapNoMoreSLRefNums: case IErrPapOutOfMemory: case IErrPapBadSocketMake: case IErrPapJobNotOnSLList: case IErrPapBadCloseConnSend: case IErrPapBadSocketClose: case IErrPapBadSendDataSend: case IErrPapSLGonePoof: case IErrPapLostSLPacket: case IErrPapBadSrvrAddrMap: case IErrPapBadPrinterBusySend: case IErrPapBadSLSAddress: case IErrPapBadSetSize: case IErrPapBadOkaySend: case IErrPapBadTickleStart: case IErrPapBadRequestHandler: case IErrPapBadSendStatSend: case IErrPapBadCommand: case IErrPapBadReEnqueue: case IErrPapNoMoreJobRefNums: case IErrPapBadData: case IErrPapJobNotActive: case IErrPapJobGonePoof: case IErrPapIdMismatch: case IErrPapSendDataSeqError: case IErrPapFunnyCommand: case IErrPapDefaultPortMissing: case IErrPapBadTempSocketClose: case IErrPapLostNode: case IErrPapCouldNotOpen: case IErrPapBadOpenConnReqSend: case IErrPapBadStatusResp: case IErrPapOpenJobMissing: case IErrPapTooShort: case IErrPapTooLong: case IErrPapNotOpenReply: case IErrPapActiveJobMissing: case IErrPapBadUserBytes: case IErrPapWhyAreWeHere: logError = FALSE; break; case IErrPapBadResponseSend: case IErrPapLostActiveNode: case IErrRtmpStubBadIncomingError: case IErrRtmpStubTooShortExt: case IErrRtmpStubTooShort: case IErrRtmpStubBadIdLength: case IErrRtmpStubNetNumChanged: case IErrRtmpStubCouldntMapAddr: case IErrSocketFailedTwice: case IErrSocketNotOnSocketList: case IErrSocketNotOnBySocketList: case IErrSocketNotOnByAddressList: case IErrTimersTooManyCalls: case IErrTimersOutOfTimers: case IErrTimersTimerMissing: case IErrTimersNegativeDeferCount: case IErrTimersBadReuseCount: case IErrTimersTooManyReuseTimers: case IErrTimersOutOfMemory: case IErrUtilsNoDefaultPort: case IErrUtilsBad8022Header: case IErrUtilsBadProtocol: case IErrUtilsBadNetworkNumber: case IErrUtilsNegativeRange: case IErrUtilsStartupRange: case IErrUtilsOutOfMemory: case IErrZipStubBadIncomingError: case IErrZipStubNonExtended: case IErrZipStubZoneLenMissing: case IErrZipStubBadZoneLength: case IErrZipStubZoneMissing: case IErrZipStubZonesDontMatch: case IErrZipStubMulticastMissing: case IErrZipStubBadMulticast: case IErrZipStubAddressMissing: case IErrZipStubSigh: case IErrZipStubBadGetNetSend: case IErrZipStubBadARouterSend: case IErrZipStubBadSocketClose: case IErrZipStubBadData: case IErrZipStubOutOfMemory: case IErrFullRtmpIgnoredNetRange: case IErrFullRtmpBadSocketOpen: case IErrFullRtmpBadIncomingError: case IErrFullRtmpReqTooShort: case IErrFullRtmpDataTooShort: case IErrFullRtmpBadReqCommand: case IErrFullRtmpBadRoutingTables: case IErrFullRtmpBadRespSend: case IErrFullRtmpBadNodeIdLen: case IErrFullRtmpBadVersion: case IErrFullRtmpBadTuple: case IErrFullRtmpBadVersionExt: case IErrFullRtmpOverlappingNets: case IErrFullRtmpSigh: case IErrFullRtmpBadReqSend: case IErrFullRtmpIgnoredNet: case IErrFullRtmpNoSeedCantStart: case IErrFullRtmpBadEntryState: case IErrFullRtmpBadDataSend: case IErrFullRtmpOutOfMemory: case IErrFullZipBadSocketOpen: case IErrFullZipBadIncomingError: case IErrFullZipNonExtended: case IErrFullZipMissingZoneLen: case IErrFullZipBadZone: case IErrFullZipBadInfoReplySend: case IErrFullZipBadZoneList: case IErrFullZipBadReplySend: case IErrFullZipBadReplyPacket: case IErrFullZipTooManyZones: case IErrFullZipCantAddZone: case IErrFullZipFunnyCommand: case IErrFullZipLongReplyExpected: case IErrFullZipFunnyRequest: case IErrFullZipBadMyZoneSend: case IErrFullZipBadZoneListSend: case IErrFullZipSocketNotOpen: case IErrFullZipBadQuerySend: case IErrFullZipRoutingTablesBad: case IErrFullZipCouldNotCopy: case IErrFullZipNoThisZone: case IErrFullZipBadThisZone: case IErrFullZipNeedSeedInfo: case IErrFullZipBadPortType: case IErrFullZipOutOfMemory: case IErrIRouterCouldntGetNode: case IErrIRouterCouldNotStart: case IErrIRouterCouldntRelease: case IErrIRouterNonRoutingPort: case IErrRouterBadTransmit: case IErrRouterOutOfMemory: case IErrBuffDescBadFreeCount: case IErrBuffDescBadRealPrepend: case IErrBuffDescBadAdjustment: case IErrBuffDescBadSize: case IErrBuffDescFreeingDescriptor: case IErrArapLengthMismatch: case IErrArapPacketTooShort: case IErrArapLinkNotUp: case IErrArapOutOfMemory: case IErrArapBadNbpTuple: case IErrArapBadProxyForward: case IErrArapFunnyCall: case IErrArapCantSend: case IErrArapBadLinkArb: case IErrArapBadPacketSize: case IErrArapNoActionForState: case IErrArapBadState: case IErrArapBadCommand: case IErrArapCantGetZoneList: case IErrArapBadSendZones: logError = FALSE; break; } return(logError); } NTSTATUS ConvertToNTStatus( LONG PortableError, USHORT RoutineType ) { NTSTATUS status; // // All the portable errors are negative // ASSERT(PortableError <= 0); switch (PortableError) { case ATnoError: if (RoutineType == ASYNC_REQUEST) { status = STATUS_PENDING; } else status = STATUS_SUCCESS; break; case ATaspBadVersionNumber: status = STATUS_UNSUCCESSFUL; break; case ATaspBufferTooSmall: status = STATUS_BUFFER_TOO_SMALL; break; case ATaspNoMoreSessions: // NOT USED BY PORTABLE CODE BASE status = STATUS_UNSUCCESSFUL; break; case ATaspNoServers: // NOT USED BY PORTABLE CODE BASE status = STATUS_UNSUCCESSFUL; break; case ATaspParameterError: status = STATUS_INVALID_PARAMETER; break; case ATaspServerBusy: // USED ONLY ON THE WIRE status = STATUS_UNSUCCESSFUL; break; case ATaspLocalSessionClose: status = STATUS_LOCAL_DISCONNECT; break; case ATaspRemoteSessionClose: status = STATUS_REMOTE_DISCONNECT; break; case ATaspSizeError: status = STATUS_INVALID_PARAMETER; break; case ATaspTooManyClients: status = STATUS_TOO_MANY_SESSIONS; break; case ATaspNoAck: // NOT USED BY PORTABLE CODE BASE status = STATUS_UNSUCCESSFUL; break; case ATbadSocketNumber: status = STATUS_INVALID_PARAMETER; break; case ATallSocketsInUse: status = STATUS_UNSUCCESSFUL; break; case ATsocketAlreadyOpen: status = STATUS_SHARING_VIOLATION; break; case ATsocketNotOpen: status = STATUS_UNSUCCESSFUL; break; case ATbadNetworkNumber: status = STATUS_UNSUCCESSFUL; break; case ATinternalError: status = STATUS_DRIVER_INTERNAL_ERROR; break; case ATbadNodeNumber: status = STATUS_INVALID_PARAMETER; break; case ATnetworkDown: status = STATUS_UNSUCCESSFUL; break; case ATtransmitError: status = STATUS_UNSUCCESSFUL; break; case ATnbpTooManyNbpActionsPending: status = STATUS_UNSUCCESSFUL; break; case ATnbpTooManyRegisteredNames: status = STATUS_UNSUCCESSFUL; break; case ATnbpBadObjectOrTypeOrZone: status = STATUS_UNSUCCESSFUL; break; case ATnbpNoWildcardsAllowed: status = STATUS_UNSUCCESSFUL; break; case ATnbpZoneNotAllowed: status = STATUS_UNSUCCESSFUL; break; case ATnbpBadParameter: status = STATUS_UNSUCCESSFUL; break; case ATnbpNotConfirmed: status = STATUS_UNSUCCESSFUL; break; case ATnbpConfirmedWithNewSocket: status = STATUS_UNSUCCESSFUL; break; case ATnbpNameNotRegistered: status = STATUS_UNSUCCESSFUL; break; case ATnbpNameInUse: status = STATUS_UNSUCCESSFUL; break; case ATnbpBufferNotBigEnough: status = STATUS_UNSUCCESSFUL; break; case ATnoMoreNodes: status = STATUS_UNSUCCESSFUL; break; case ATnodeNotInUse: status = STATUS_UNSUCCESSFUL; break; case ATnotYourNode: status = STATUS_UNSUCCESSFUL; break; case ATatpRequestBufferTooSmall: status = STATUS_UNSUCCESSFUL; break; case AToutOfMemory: status = STATUS_UNSUCCESSFUL; break; case ATatpCouldNotEnqueueRequest: status = STATUS_UNSUCCESSFUL; break; case ATatpTransactionAborted: status = STATUS_UNSUCCESSFUL; break; case ATatpBadBufferSize: status = STATUS_UNSUCCESSFUL; break; case ATatpBadRetryInfo: status = STATUS_UNSUCCESSFUL; break; case ATatpRequestTimedOut: status = STATUS_UNSUCCESSFUL; break; case ATatpCouldNotPostRequest: status = STATUS_UNSUCCESSFUL; break; case ATatpResponseBufferTooSmall: status = STATUS_UNSUCCESSFUL; break; case ATatpNoRelease: status = STATUS_UNSUCCESSFUL; break; case ATatpResponseTooBig: status = STATUS_UNSUCCESSFUL; break; case ATatpNoMatchingTransaction: status = STATUS_UNSUCCESSFUL; break; case ATatpAlreadyRespondedTo: status = STATUS_UNSUCCESSFUL; break; case ATatpCompletionRoutineRequired: status = STATUS_UNSUCCESSFUL; break; case ATbadBufferSize: status = STATUS_UNSUCCESSFUL; break; case ATaspNoSuchSessionListener: status = STATUS_UNSUCCESSFUL; break; case ATatpCouldNotPostResponse: status = STATUS_UNSUCCESSFUL; break; case ATaspStatusBufferTooBig: status = STATUS_UNSUCCESSFUL; break; case ATaspCouldNotSetStatus: status = STATUS_UNSUCCESSFUL; break; case ATaspCouldNotEnqueueHandler: status = STATUS_UNSUCCESSFUL; break; case ATaspNotServerSession: status = STATUS_UNSUCCESSFUL; break; case ATaspNotWorkstationSession: status = STATUS_UNSUCCESSFUL; break; case ATaspNoSuchSession: status = STATUS_UNSUCCESSFUL; break; case ATaspCouldNotGetRequest: status = STATUS_UNSUCCESSFUL; break; case ATaspBufferTooBig: status = STATUS_UNSUCCESSFUL; break; case ATaspNoSuchRequest: status = STATUS_UNSUCCESSFUL; break; case ATaspWrongRequestType: status = STATUS_UNSUCCESSFUL; break; case ATaspCouldNotPostReply: status = STATUS_UNSUCCESSFUL; break; case ATaspCouldNotPostWriteContinue: status = STATUS_UNSUCCESSFUL; break; case ATaspOperationAlreadyInProgress: status = STATUS_UNSUCCESSFUL; break; case ATaspNoOperationInProgress: status = STATUS_UNSUCCESSFUL; break; case ATaspCouldNotGetStatus: status = STATUS_UNSUCCESSFUL; break; case ATaspCouldNotOpenSession: status = STATUS_UNSUCCESSFUL; break; case ATaspCouldNotPostRequest: status = STATUS_UNSUCCESSFUL; break; case ATpapBadQuantum: status = STATUS_UNSUCCESSFUL; break; case ATpapNoSuchServiceListener: status = STATUS_UNSUCCESSFUL; break; case ATpapBadStatus: status = STATUS_UNSUCCESSFUL; break; case ATpapClosedByServer: status = STATUS_LOCAL_DISCONNECT; break; case ATpapClosedByWorkstation: status = STATUS_REMOTE_DISCONNECT; break; case ATpapClosedByConnectionTimer: status = STATUS_UNSUCCESSFUL; break; case ATpapNoSuchJob: status = STATUS_REMOTE_DISCONNECT; break; case ATpapServiceListenerDeleted: status = STATUS_UNSUCCESSFUL; break; case ATcouldNotOpenStaticSockets: status = STATUS_UNSUCCESSFUL; break; case ATpapNotServerJob: status = STATUS_UNSUCCESSFUL; break; case ATpapNotWorkstationJob: status = STATUS_UNSUCCESSFUL; break; case ATpapOpenAborted: status = STATUS_UNSUCCESSFUL; break; case ATpapServerBusy: status = STATUS_UNSUCCESSFUL; break; case ATpapOpenTimedOut: status = STATUS_UNSUCCESSFUL; break; case ATpapReadAlreadyPending: status = STATUS_UNSUCCESSFUL; break; case ATpapWriteAlreadyPending: status = STATUS_UNSUCCESSFUL; break; case ATpapWriteTooBig: status = STATUS_UNSUCCESSFUL; break; case ATsocketClosed: status = STATUS_UNSUCCESSFUL; break; case ATpapServiceListenerNotFound: status = STATUS_UNSUCCESSFUL; break; case ATpapNonUniqueLookup: status = STATUS_UNSUCCESSFUL; break; case ATzipBufferTooSmall: status = STATUS_UNSUCCESSFUL; break; case ATnoSuchNode: status = STATUS_UNSUCCESSFUL; break; case ATatpBadTRelTimer: status = STATUS_UNSUCCESSFUL; break; case ATadspSocketNotAdsp: status = STATUS_UNSUCCESSFUL; break; case ATadspBadWindowSize: status = STATUS_UNSUCCESSFUL; break; case ATadspOpenFailed: status = STATUS_UNSUCCESSFUL; break; case ATadspConnectionDenied: status = STATUS_UNSUCCESSFUL; break; case ATadspNoSuchConnection: status = STATUS_UNSUCCESSFUL; break; case ATadspAttentionAlreadyPending: status = STATUS_UNSUCCESSFUL; break; case ATadspBadAttentionCode: status = STATUS_UNSUCCESSFUL; break; case ATadspBadAttentionBufferSize: status = STATUS_UNSUCCESSFUL; break; case ATadspCouldNotEnqueueSend: status = STATUS_UNSUCCESSFUL; break; case ATadspReadAlreadyPending: status = STATUS_UNSUCCESSFUL; break; case ATadspBadBufferSize: status = STATUS_UNSUCCESSFUL; break; case ATadspAttentionReceived: status = STATUS_UNSUCCESSFUL; break; case ATadspConnectionClosed: // BUGBUG: Stack should split this into local/remote status = STATUS_REMOTE_DISCONNECT; break; case ATadspNoSuchConnectionListener: status = STATUS_UNSUCCESSFUL; break; case ATadspConnectionListenerDeleted: status = STATUS_UNSUCCESSFUL; break; case ATadspFwdResetAlreadyPending: status = STATUS_UNSUCCESSFUL; break; case ATadspForwardReset: status = STATUS_UNSUCCESSFUL; break; case ATadspHandlerAlreadyQueued: status = STATUS_UNSUCCESSFUL; break; case ATaspSessionListenerDeleted: status = STATUS_UNSUCCESSFUL; break; case ATaspNoSuchGetSession: status = STATUS_UNSUCCESSFUL; break; case ATpapNoSuchGetNextJob: status = STATUS_UNSUCCESSFUL; break; case ATarapPortNotActive: status = STATUS_UNSUCCESSFUL; break; case ATarapCouldntSendNotification: status = STATUS_UNSUCCESSFUL; break; case ATappleTalkShutDown: status = STATUS_UNSUCCESSFUL; break; case ATpapReadBufferTooSmall: status = STATUS_UNSUCCESSFUL; break; case ATadspGetAnythingAlreadyPending: status = STATUS_UNSUCCESSFUL; break; default: status = STATUS_UNSUCCESSFUL; break; } DBGPRINT(ATALK_DEBUG_ALL, DEBUG_LEVEL_WARNING, ("WARNING: Converting portable error %lx to status %lx\n", PortableError, status)); return(status); }