windows-nt/Source/XPSP1/NT/net/sfm/atalk/sys/atkerror.h

466 lines
13 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1992 Microsoft Corporation
Module Name:
atkerror.h
Abstract:
This module contains some error definitions for appletalk.
Author:
Jameel Hyder (jameelh@microsoft.com)
Nikhil Kamkolkar (nikhilk@microsoft.com)
Revision History:
19 Jun 1992 Initial Version
Notes: Tab stop: 4
--*/
#ifndef _ATKERROR_
#define _ATKERROR_
// Define the modules names for Appletalk - use the high bits.
#define ATKINIT 0x00010000
#define ATKDRVR 0x00020000
#define ATKNDIS 0x00030000
#define ATKTDI 0x00040000
#define ATKACT 0x00050000
#define ATKUTILS 0x00060000
#define ATKTIMER 0x00070000
#define ATKMEM 0x00080000
#define ATKERROR 0x00090000
#define ROUTER 0x000A0000
#define SOCKET 0x000B0000
#define PORTS 0x000C0000
#define NODE 0x000D0000
#define AARP 0x000E0000
#define AEP 0x000F0000
#define DDP 0x00100000
#define RTMP 0x00200000
#define NBP 0x00300000
#define ZIP 0x00400000
#define ATP 0x00500000
#define ASP 0x00600000
#define PAP 0x00700000
#define ADSP 0x00800000
#define ATKIND 0x00900000
#define ASPC 0x00A00000
#define DATAX 0x00B00000
#define RAS 0x00C00000
#define ARAP 0x00D00000
#define ARAPNDIS 0x00E00000
#define ARAPUTIL 0x00F00000
#define ARAPATK 0x01000000
#define ARAPDBG 0x02000000
#define ATKPNP 0x03000000
#define PPP 0x04000000
// DEBUGGING SUPPORT:
// Debugging messages are provided per-subsystem defined here, and within
// the subsystems, there are 4 levels of messages.
//
// The four levels of debug messages are:
//
// INFO: Informational messages, eg., entry exit in routines
// WARN: Something went wrong, but its not an error, eg., packet was not ours
// ERR: Error situations, but we can still run if a retry happens
// FATAL: In this situation, the driver is not operational
// These give the ref/deref dbgprints if DBG is defined. LOTS of output.
// Defined as a hierarchy of the stack objects.
#define DBG_LEVEL_REFDDP 0x2000
#define DBG_LEVEL_REFNODE 0x3000
#define DBG_LEVEL_REFPORT 0x4000
#define DBG_LEVEL_REFATP 0x4100
#define DBG_LEVEL_REFPAPADDR 0x4200
#define DBG_LEVEL_REFPAPCONN 0x4300
#define DBG_LEVEL_REFASPADDR 0x4400
#define DBG_LEVEL_REFASPCONN 0x4500
#define DBG_LEVEL_INFO 0x5000
#define DBG_LEVEL_WARN 0x6000
#define DBG_LEVEL_ERR 0x7000
#define DBG_LEVEL_FATAL 0x8000
// SUBSYSTEMS
#define DBG_COMP_INIT 0x00000001
#define DBG_COMP_DISPATCH 0x00000002
#define DBG_COMP_CREATE 0x00000004
#define DBG_COMP_CLOSE 0x00000008
#define DBG_COMP_ACTION 0x00000010
#define DBG_COMP_ADDROBJ 0x00000020
#define DBG_COMP_CONNOBJ 0x00000040
#define DBG_COMP_CHANOBJ 0x00000080
#define DBG_COMP_RESOURCES 0x00000100
#define DBG_COMP_UNLOAD 0x00000200
#define DBG_COMP_NODE 0x00000400
#define DBG_COMP_AARP 0x00000800
#define DBG_COMP_AEP 0x00001000
#define DBG_COMP_DDP 0x00002000
#define DBG_COMP_ATP 0x00004000
#define DBG_COMP_ADSP 0x00008000
#define DBG_COMP_ZIP 0x00010000
#define DBG_COMP_NBP 0x00020000
#define DBG_COMP_PAP 0x00040000
#define DBG_COMP_ASP 0x00080000
#define DBG_COMP_RTMP 0x00100000
#define DBG_COMP_ROUTER 0x00200000
#define DBG_COMP_DUMP 0x00400000
#define DBG_COMP_REFCOUNTS 0x00800000
#define DBG_COMP_SYSTEM 0x01000000
#define DBG_COMP_CRITSEC 0x02000000
#define DBG_COMP_UTILS 0x04000000
#define DBG_COMP_NDISSEND 0x08000000
#define DBG_COMP_NDISRECV 0x10000000
#define DBG_COMP_NDISREQ 0x20000000
#define DBG_COMP_TDI 0x40000000
#define DBG_COMP_RAS 0x80000000
#define DBG_MOST (DBG_COMP_INIT | \
DBG_COMP_DISPATCH | \
DBG_COMP_CREATE | \
DBG_COMP_CLOSE | \
DBG_COMP_ACTION | \
DBG_COMP_ADDROBJ | \
DBG_COMP_CONNOBJ | \
DBG_COMP_CHANOBJ | \
DBG_COMP_RESOURCES | \
DBG_COMP_UNLOAD | \
DBG_COMP_NODE | \
DBG_COMP_AARP | \
DBG_COMP_AEP | \
DBG_COMP_DDP | \
DBG_COMP_ATP | \
DBG_COMP_ADSP | \
DBG_COMP_ZIP | \
DBG_COMP_NBP | \
DBG_COMP_PAP | \
DBG_COMP_ASP | \
DBG_COMP_RTMP | \
DBG_COMP_ROUTER | \
DBG_COMP_DUMP | \
DBG_COMP_UTILS | \
DBG_COMP_REFCOUNTS | \
DBG_COMP_SYSTEM | \
DBG_COMP_TDI | \
DBG_COMP_RAS)
// past here are debug things that are really frequent; don't use them
// unless you want LOTS of output
#define DBG_ALL (DBG_MOST | DBG_COMP_CRITSEC)
// More debugging support. These values define the dumping components.
// There are a max of 32 such components that can be defined. Each of
// these are associated with a dump routine. It one is specified and
// enabled, periodically it is called. It is upto that component to
// decide what it wants to do
#define DBG_DUMP_DEF_INTERVAL 300 // In 100ms units
#define DBG_DUMP_PORTINFO 0x00000001
#define DBG_DUMP_AMT 0x00000002
#define DBG_DUMP_ZONETABLE 0x00000004
#define DBG_DUMP_RTES 0x00000008
#define DBG_DUMP_TIMERS 0x00000010
#define DBG_DUMP_ATPINFO 0x00000020
#define DBG_DUMP_ASPSESSIONS 0x00000040
#define DBG_DUMP_PAPJOBS 0x00000080
typedef LONG ATALK_ERROR, *PATALK_ERROR;
#define ATALK_SUCCESS(error) ((ATALK_ERROR)(error) >= 0)
#define ATALK_NO_ERROR 0x00000000
#define ATALK_PENDING 0x00000001
#define ATALK_RESR_MEM -1000
#define ATALK_INVALID_PARAMETER -1050
#define ATALK_BUFFER_TOO_SMALL -1051
#define ATALK_BUFFER_TOO_BIG -1052
#define ATALK_ALREADY_ASSOCIATED -1053
#define ATALK_CANNOT_DISSOCIATE -1054
#define ATALK_CANNOT_CANCEL -1055
#define ATALK_INVALID_REQUEST -1056
#define ATALK_REQUEST_NOT_ACCEPTED -1057
#define ATALK_DEVICE_NOT_READY -1058
#define ATALK_INVALID_CONNECTION -1059
#define ATALK_INVALID_ADDRESS -1060
#define ATALK_TOO_MANY_COMMANDS -1061
#define ATALK_CONNECTION_TIMEOUT -1062
#define ATALK_REMOTE_CLOSE -1063
#define ATALK_LOCAL_CLOSE -1064
#define ATALK_BUFFER_INVALID_SIZE -1065
#define ATALK_REQUEST_CANCELLED -1066
#define ATALK_NEW_SOCKET -1067
#define ATALK_TIMEOUT -1068
#define ATALK_SHARING_VIOLATION -1069
#define ATALK_INVALID_PKT -1070
#define ATALK_DUP_PKT -1071
#define ATALK_INIT_BINDFAIL -1100
#define ATALK_INIT_REGPROTO_FAIL -1101
#define ATALK_INIT_MEDIA_INVALID -1102
#define ATALK_PORT_INVALID -1200
#define ATALK_PORT_CLOSING -1201
#define ATALK_NODE_FINDING -1300
#define ATALK_NODE_NONEXISTENT -1301
#define ATALK_NODE_CLOSING -1302
#define ATALK_NODE_NOMORE -1303
#define ATALK_SOCKET_INVALID -1400
#define ATALK_SOCKET_NODEFULL -1401
#define ATALK_SOCKET_EXISTS -1402
#define ATALK_SOCKET_CLOSED -1403
#define ATALK_DDP_CLOSING -1500
#define ATALK_DDP_NOTFOUND -1501
#define ATALK_DDP_INVALID_LEN -1502
#define ATALK_DDP_SHORT_HDR -1503
#define ATALK_DDP_INVALID_SRC -1504
#define ATALK_DDP_INVALID_DEST -1505
#define ATALK_DDP_INVALID_ADDR -1506
#define ATALK_DDP_INVALID_PROTO -1507
#define ATALK_DDP_INVALID_PARAM -1508
#define ATALK_DDP_NO_ROUTER -1509
#define ATALK_DDP_NO_AMT_ENTRY -1510
#define ATALK_DDP_NO_BRC_ENTRY -1511
#define ATALK_DDP_PKT_DROPPED -1512
#define ATALK_ATP_NOT_FOUND -1600
#define ATALK_ATP_INVALID_PKT -1601
#define ATALK_ATP_INVALID_REQ -1602
#define ATALK_ATP_REQ_CLOSING -1603
#define ATALK_ATP_RESP_CLOSING -1604
#define ATALK_ATP_INVALID_RETRYCNT -1605
#define ATALK_ATP_INVALID_TIMERVAL -1606
#define ATALK_ATP_INVALID_RELINT -1607
#define ATALK_ATP_CLOSING -1608
#define ATALK_ATP_RESP_TOOMANY -1609
#define ATALK_ATP_NO_MATCH_REQ -1610
#define ATALK_ATP_NO_GET_REQ -1611
#define ATALK_ATP_RESP_TIMEOUT -1612
#define ATALK_ATP_RESP_CANCELLED -1613
#define ATALK_ATP_REQ_CANCELLED -1614
#define ATALK_ATP_GET_REQ_CANCELLED -1615
#define ATALK_ATP_NO_VALID_RESP -1616
#define ATALK_ATP_REQ_TIMEOUT -1617
#define ATALK_ASP_INVALID_REQUEST -1700
#define ATALK_PAP_LOCAL_CLOSE -1800
#define ATALK_PAP_REMOTE_CLOSE -1801
#define ATALK_PAP_INVALID_REQUEST -1802
#define ATALK_PAP_TOO_MANY_READS -1803
#define ATALK_PAP_TOO_MANY_WRITES -1804
#define ATALK_PAP_CONN_NOT_ACTIVE -1805
#define ATALK_PAP_ADDR_CLOSING -1806
#define ATALK_PAP_CONN_CLOSING -1807
#define ATALK_PAP_CONN_NOT_FOUND -1808
#define ATALK_PAP_INVALID_USERBYTES -1809
#define ATALK_PAP_SERVER_BUSY -1810
#define ATALK_PAP_INVALID_STATUS -1811
#define ATALK_PAP_PARTIAL_RECEIVE -1812
#define ATALK_PAP_CONN_RESET -1813
#define ATALK_ADSP_INVALID_REQUEST -1900
#define ATALK_ADSP_CONN_NOT_ACTIVE -1903
#define ATALK_ADSP_ADDR_CLOSING -1904
#define ATALK_ADSP_CONN_CLOSING -1905
#define ATALK_ADSP_CONN_NOT_FOUND -1906
#define ATALK_ADSP_CONN_RESET -1907
#define ATALK_ADSP_SERVER_BUSY -1908
#define ATALK_ADSP_PARTIAL_RECEIVE -1912
#define ATALK_ADSP_EXPED_RECEIVE -1913
#define ATALK_ADSP_PAREXPED_RECEIVE -1914
#define ATALK_ADSP_REMOTE_RESR -1915
#define ATALK_TIMER_CANCEL_FAIL -2000
#define ATALK_TIMER_SCHEDULE_FAIL -2001
#define ATALK_ASPC_LOCAL_CLOSE -2100
#define ATALK_ASPC_REMOTE_CLOSE -2101
#define ATALK_ASPC_INVALID_REQUEST -2102
#define ATALK_ASPC_TOO_MANY_READS -2103
#define ATALK_ASPC_TOO_MANY_WRITES -2104
#define ATALK_ASPC_CONN_NOT_ACTIVE -2105
#define ATALK_ASPC_ADDR_CLOSING -2106
#define ATALK_ASPC_CONN_CLOSING -2107
#define ATALK_ASPC_CONN_NOT_FOUND -2108
#define ATALK_ASPC_INVALID_USERBYTES -2109
#define ATALK_ASPC_SERVER_BUSY -2110
#define ATALK_ASPC_INVALID_STATUS -2111
#define ATALK_ASPC_PARTIAL_RECEIVE -2112
#define ATALK_ASPC_CONN_RESET -2113
#define ATALK_FAILURE -5000
// This defines the number of times an error has to happen consecutively before
// it gets logged again.
#define ERROR_CONSEQ_FREQ 200
#define ERROR_CONSEQ_TIME 18000 // 30 minutes in 100ns intervals
#if DBG
extern ULONG AtalkDebugDump;
extern LONG AtalkDumpInterval;
extern ULONG AtalkDebugLevel;
extern ULONG AtalkDebugSystems;
extern TIMERLIST AtalkDumpTimerList;
typedef VOID (*DUMP_ROUTINE)(VOID);
extern
LONG FASTCALL
AtalkDumpComponents(
IN PTIMERLIST Context,
IN BOOLEAN TimerShuttingDown
);
extern
VOID
AtalkAmtDumpTable(
VOID
);
extern
VOID
AtalkPortDumpInfo(
VOID
);
extern
VOID
AtalkRtmpDumpTable(
VOID
);
extern
VOID
AtalkTimerDumpList(
VOID
);
extern
VOID
AtalkZoneDumpTable(
VOID
);
extern
VOID
AtalkAspDumpSessions(
VOID
);
#endif
#define LOG_ERROR(AtalkError, NtStatus, RawData, RawDataLen) \
LOG_ERRORONPORT(NULL, AtalkError, NtStatus, RawData, RawDataLen)
#define RES_LOG_ERROR() \
LOG_ERROR(EVENT_ATALK_RESOURCES, STATUS_INSUFFICIENT_RESOURCES, NULL, 0)
#define LOG_ERRORONPORT(Port, AtalkError, NtStatus, RawData, RawDataLen) \
{ \
if (!NT_SUCCESS(NtStatus)) \
{ \
DBGPRINT(DBG_ALL, DBG_LEVEL_ERR, \
("LOG_ERROR: File %s Line %ld Event %lx Error %lx\n", \
__FILE__, __LINE__, AtalkError, NtStatus)); \
} \
AtalkWriteErrorLogEntry(Port, \
AtalkError, \
(__LINE__ | FILENUM), \
NtStatus, \
RawData, \
RawDataLen); \
}
#if DBG
// ERROR and above ignore the Component part
#define DBGPRINT(Component, Level, Fmt) \
{ \
if ((Level >= AtalkDebugLevel) && \
((AtalkDebugSystems & Component) == Component)) \
{ \
DbgPrint("***ATALK*** "); \
DbgPrint Fmt; \
} \
}
#define DBGPRINTSKIPHDR(Component, Level, Fmt) \
{ \
if ((Level >= AtalkDebugLevel) && \
((AtalkDebugSystems & Component) == Component)) \
{ \
DbgPrint Fmt; \
} \
}
#define DBGBRK(Level) \
{ \
if (Level >= AtalkDebugLevel) \
DbgBreakPoint(); \
}
#define TMPLOGERR() DBGPRINT(DBG_MOST, DBG_LEVEL_ERR, \
("TempErrLog: %s, Line %ld\n", \
__FILE__, __LINE__));
#else
#define DBGPRINTSKIPHDR(Component, Level, Fmt)
#define DBGPRINT(Component, Level, Fmt)
#define DBGBRK(Level)
#define TMPLOGERR()
#endif
extern
VOID
AtalkWriteErrorLogEntry(
IN struct _PORT_DESCRIPTOR * pPortDesc,
IN NTSTATUS UniqueErrorCode,
IN ULONG UniqueErrorValue,
IN NTSTATUS NtStatusCode,
IN PVOID RawDataBuf OPTIONAL,
IN LONG RawDataLen);
extern
VOID
AtalkLogBadPacket(
IN struct _PORT_DESCRIPTOR * pPortDesc,
IN PATALK_ADDR pSrcAddr,
IN PATALK_ADDR pDstAddr OPTIONAL,
IN PBYTE pPkt,
IN USHORT PktLen);
extern
ATALK_ERROR FASTCALL
AtalkNdisToAtalkError(
IN NDIS_STATUS Error);
extern
NTSTATUS FASTCALL
AtalkErrorToNtStatus(
IN ATALK_ERROR AtalkError);
#endif // _ATKERROR_