/*++ Copyright (c) 1998, Microsoft Corporation Module Name: debug.c Abstract: This module contains declarations for debugging-support. Author: Abolade Gbadegesin (aboladeg) 2-Mar-1998 Revision History: --*/ #include "precomp.h" #pragma hdrstop HANDLE NhEventLogHandle = NULL; ULONG NhpTraceId = INVALID_TRACEID; // // FORWARD DECLARATIONS // BOOLEAN NhpIsAllowedLog( ULONG MessageId, ULONG Level ); // // TRACING ROUTINES (alphabetically) // VOID NhDump( ULONG Flags, PUCHAR Buffer, ULONG BufferLength, ULONG Width ) { TraceDumpEx( NhpTraceId, Flags, Buffer, BufferLength, Width, FALSE, NULL ); } VOID NhInitializeTraceManagement( VOID ) { NhpTraceId = TraceRegisterA("IPNATHLP"); } VOID NhShutdownTraceManagement( VOID ) { TraceDeregister(NhpTraceId); NhpTraceId = INVALID_TRACEID; } VOID NhTrace( ULONG Flags, PCHAR Format, ... ) { va_list VaList; va_start(VaList, Format); TraceVprintfExA(NhpTraceId, Flags, Format, VaList); va_end(VaList); } // // EVENTLOGGING ROUTINES (alphabetically) // VOID NhErrorLog( ULONG MessageId, ULONG ErrorCode, PCHAR Format, ... ) { va_list arglist; if (!NhpIsAllowedLog(MessageId, IPNATHLP_LOGGING_ERROR)) { return; } va_start(arglist, Format); RouterLogEventValistExA( NhEventLogHandle, EVENTLOG_ERROR_TYPE, ErrorCode, MessageId, Format, arglist ); va_end(arglist); } VOID NhInformationLog( ULONG MessageId, ULONG ErrorCode, PCHAR Format, ... ) { va_list arglist; if (!NhpIsAllowedLog(MessageId, IPNATHLP_LOGGING_INFO)) { return; } va_start(arglist, Format); RouterLogEventValistExA( NhEventLogHandle, EVENTLOG_INFORMATION_TYPE, ErrorCode, MessageId, Format, arglist ); va_end(arglist); } VOID NhInitializeEventLogManagement( VOID ) { NhEventLogHandle = RouterLogRegisterA(TARGETNAME); } BOOLEAN NhpIsAllowedLog( ULONG MessageId, ULONG Level ) { if (MessageId > IP_AUTO_DHCP_LOG_BASE && MessageId < IP_AUTO_DHCP_LOG_END) { EnterCriticalSection(&DhcpGlobalInfoLock); if (!DhcpGlobalInfo) { LeaveCriticalSection(&DhcpGlobalInfoLock); return (Level == IPNATHLP_LOGGING_ERROR) ? TRUE : FALSE; } else if (DhcpGlobalInfo->LoggingLevel < Level) { LeaveCriticalSection(&DhcpGlobalInfoLock); return FALSE; } LeaveCriticalSection(&DhcpGlobalInfoLock); return TRUE; } else if (MessageId > IP_DNS_PROXY_LOG_BASE && MessageId < IP_DNS_PROXY_LOG_END) { EnterCriticalSection(&DnsGlobalInfoLock); if (!DnsGlobalInfo) { LeaveCriticalSection(&DnsGlobalInfoLock); return (Level == IPNATHLP_LOGGING_ERROR) ? TRUE : FALSE; } else if (DnsGlobalInfo->LoggingLevel < Level) { LeaveCriticalSection(&DnsGlobalInfoLock); return FALSE; } LeaveCriticalSection(&DnsGlobalInfoLock); return TRUE; } #ifndef NO_FTP_PROXY else if (MessageId > IP_FTP_LOG_BASE && MessageId < IP_FTP_LOG_END) { EnterCriticalSection(&FtpGlobalInfoLock); if (!FtpGlobalInfo) { LeaveCriticalSection(&FtpGlobalInfoLock); return (Level == IPNATHLP_LOGGING_ERROR) ? TRUE : FALSE; } else if (FtpGlobalInfo->LoggingLevel < Level) { LeaveCriticalSection(&FtpGlobalInfoLock); return FALSE; } LeaveCriticalSection(&FtpGlobalInfoLock); return TRUE; } #endif else if (MessageId > IP_H323_LOG_BASE && MessageId < IP_H323_LOG_END) { EnterCriticalSection(&H323GlobalInfoLock); if (!H323GlobalInfo) { LeaveCriticalSection(&H323GlobalInfoLock); return (Level == IPNATHLP_LOGGING_ERROR) ? TRUE : FALSE; } else if (H323GlobalInfo->LoggingLevel < Level) { LeaveCriticalSection(&H323GlobalInfoLock); return FALSE; } LeaveCriticalSection(&H323GlobalInfoLock); return TRUE; } else if (MessageId > IP_NAT_LOG_BASE && MessageId < IP_NAT_LOG_END) { EnterCriticalSection(&NatGlobalInfoLock); if (!NatGlobalInfo) { LeaveCriticalSection(&NatGlobalInfoLock); return (Level == IPNATHLP_LOGGING_ERROR) ? TRUE : FALSE; } else if (NatGlobalInfo->LoggingLevel < Level) { LeaveCriticalSection(&NatGlobalInfoLock); return FALSE; } LeaveCriticalSection(&NatGlobalInfoLock); return TRUE; } return TRUE; } VOID NhWarningLog( ULONG MessageId, ULONG ErrorCode, PCHAR Format, ... ) { va_list arglist; if (!NhpIsAllowedLog(MessageId, IPNATHLP_LOGGING_WARN)) { return; } va_start(arglist, Format); RouterLogEventValistExA( NhEventLogHandle, EVENTLOG_WARNING_TYPE, ErrorCode, MessageId, Format, arglist ); va_end(arglist); } VOID NhShutdownEventLogManagement( VOID ) { RouterLogDeregister(NhEventLogHandle); }