|
|
/*++
Copyright (c) 1995-1998 Microsoft Corporation
Module Name:
rtmdbg.h
Abstract: Debugging in Routing Table Manager v2 DLL
Author: Chaitanya Kodeboyina (chaitk) 1-Jun-1998
Revision History:
--*/
#ifndef __ROUTING_RTMDBG_H__
#define __ROUTING_RTMDBG_H__
#if TESTING
//
// Bypass the system assert
//
#ifdef ASSERT
#undef ASSERT
#endif
#define ASSERT(a) { if ((a) == FALSE) DbgBreakPoint(); }
#endif
//
// Constants used for tracing
//
#define RTM_TRACE_ANY ((DWORD)0xFFFF0000 | TRACE_USE_MASK)
#define RTM_TRACE_ERR ((DWORD)0x00010000 | TRACE_USE_MASK)
#define RTM_TRACE_ENTER ((DWORD)0x00020000 | TRACE_USE_MASK)
#define RTM_TRACE_LEAVE ((DWORD)0x00040000 | TRACE_USE_MASK)
#define RTM_TRACE_LOCK ((DWORD)0x00080000 | TRACE_USE_MASK)
#define RTM_TRACE_REFS ((DWORD)0x00100000 | TRACE_USE_MASK)
#define RTM_TRACE_HANDLE ((DWORD)0x00200000 | TRACE_USE_MASK)
#define RTM_TRACE_MEMORY ((DWORD)0x00400000 | TRACE_USE_MASK)
#define RTM_TRACE_START ((DWORD)0x00800000 | TRACE_USE_MASK)
#define RTM_TRACE_STOP ((DWORD)0x01000000 | TRACE_USE_MASK)
#define RTM_TRACE_REGNS ((DWORD)0x02000000 | TRACE_USE_MASK)
#define RTM_TRACE_ROUTE ((DWORD)0x04000000 | TRACE_USE_MASK)
#define RTM_TRACE_QUERY ((DWORD)0x08000000 | TRACE_USE_MASK)
#define RTM_TRACE_ENUM ((DWORD)0x10000000 | TRACE_USE_MASK)
#define RTM_TRACE_NOTIFY ((DWORD)0x20000000 | TRACE_USE_MASK)
#define RTM_TRACE_TIMER ((DWORD)0x40080000 | TRACE_USE_MASK)
#define RTM_TRACE_CALLBACK ((DWORD)0x80000000 | TRACE_USE_MASK)
//
// Macros used for tracing
//
#define TRACEHANDLE RtmGlobals.TracingHandle
#define START_TRACING() TRACEHANDLE = TraceRegister("RTM")
#define STOP_TRACING() TraceDeregister(TRACEHANDLE)
#define Trace0(l,a) \
TracePrintfEx(TRACEHANDLE, RTM_TRACE_ ## l, a) #define Trace1(l,a,b) \
TracePrintfEx(TRACEHANDLE, RTM_TRACE_ ## l, a, b) #define Trace2(l,a,b,c) \
TracePrintfEx(TRACEHANDLE, RTM_TRACE_ ## l, a, b, c) #define Trace3(l,a,b,c,d) \
TracePrintfEx(TRACEHANDLE, RTM_TRACE_ ## l, a, b, c, d) #define Trace4(l,a,b,c,d,e) \
TracePrintfEx(TRACEHANDLE, RTM_TRACE_ ## l, a, b, c, d, e) #define Trace5(l,a,b,c,d,e,f) \
TracePrintfEx(TRACEHANDLE, RTM_TRACE_ ## l, a, b, c, d, e, f) #define Trace6(l,a,b,c,d,e,f,g) \
TracePrintfEx(TRACEHANDLE, RTM_TRACE_ ## l, a, b, c, d, e, f, g)
#define Tracedump(l,a,b,c) \
TraceDumpEx(TRACEHANDLE,l,a,b,c,TRUE)
#if DBG_CAL
#define TraceEnter(X) Trace0(ENTER, "Entered: "X)
#define TraceLeave(X) Trace0(LEAVE, "Leaving: "X"\n")
#else
#define TraceEnter(X)
#define TraceLeave(X)
#endif
//
// Constants used in logging
//
#define RTM_LOGGING_NONE 0
#define RTM_LOGGING_ERROR 1
#define RTM_LOGGING_WARN 2
#define RTM_LOGGING_INFO 3
//
// Event logging macros
//
#define LOGHANDLE RtmGlobals.LoggingHandle
#define LOGLEVEL RtmGlobals.LoggingLevel
#define LOGERR RouterLogError
#define LOGWARN RouterLogWarning
#define LOGINFO RouterLogInformation
#define LOGWARNDATA RouterLogWarningData
//
// Error logging
//
#define START_LOGGING() LOGHANDLE = RouterLogRegister("RTM")
#define STOP_LOGGING() RouterLogDeregister(LOGHANDLE)
#define LOGERR0(msg,err) \
if (LOGLEVEL >= RTM_LOGGING_ERROR) \ LOGERR(LOGHANDLE,RTMLOG_ ## msg,0,NULL,(err)) #define LOGERR1(msg,a,err) \
if (LOGLEVEL >= RTM_LOGGING_ERROR) \ LOGERR(LOGHANDLE,RTMLOG_ ## msg,1,&(a),(err)) #define LOGERR2(msg,a,b,err) \
if (LOGLEVEL >= RTM_LOGGING_ERROR) { \ LPSTR _asz[2] = { (a), (b) }; \ LOGERR(LOGHANDLE,RTMLOG_ ## msg,2,_asz,(err)); \ } #define LOGERR3(msg,a,b,c,err) \
if (LOGLEVEL >= RTM_LOGGING_ERROR) { \ LPSTR _asz[3] = { (a), (b), (c) }; \ LOGERR(LOGHANDLE,RTMLOG_ ## msg,3,_asz,(err)); \ } #define LOGERR4(msg,a,b,c,d,err) \
if (LOGLEVEL >= RTM_LOGGING_ERROR) { \ LPSTR _asz[4] = { (a), (b), (c), (d) }; \ LOGERR(LOGHANDLE,RTMLOG_ ## msg,4,_asz,(err)); \ }
//
// Warning logging
//
#define LOGWARN0(msg,err) \
if (LOGLEVEL >= RTM_LOGGING_WARN) \ LOGWARN(LOGHANDLE,RTMLOG_ ## msg,0,NULL,(err)) #define LOGWARN1(msg,a,err) \
if (LOGLEVEL >= RTM_LOGGING_WARN) \ LOGWARN(LOGHANDLE,RTMLOG_ ## msg,1,&(a),(err)) #define LOGWARN2(msg,a,b,err) \
if (LOGLEVEL >= RTM_LOGGING_WARN) { \ LPSTR _asz[2] = { (a), (b) }; \ LOGWARN(LOGHANDLE,RTMLOG_ ## msg,2,_asz,(err)); \ } #define LOGWARN3(msg,a,b,c,err) \
if (LOGLEVEL >= RTM_LOGGING_WARN) { \ LPSTR _asz[3] = { (a), (b), (c) }; \ LOGWARN(LOGHANDLE,RTMLOG_ ## msg,3,_asz,(err)); \ } #define LOGWARN4(msg,a,b,c,d,err) \
if (LOGLEVEL >= RTM_LOGGING_WARN) { \ LPSTR _asz[4] = { (a), (b), (c), (d) }; \ LOGWARN(LOGHANDLE,RTMLOG_ ## msg,4,_asz,(err)); \ }
#define LOGWARNDATA2(msg,a,b,dw,buf) \
if (LOGLEVEL >= RTM_LOGGING_WARN) { \ LPSTR _asz[2] = { (a), (b) }; \ LOGWARNDATA(LOGHANDLE,RTMLOG_ ## msg,2,_asz,(dw),(buf)); \ }
//
// Information logging
//
#define LOGINFO0(msg,err) \
if (LOGLEVEL >= RTM_LOGGING_INFO) \ LOGINFO(LOGHANDLE,RTMLOG_ ## msg,0,NULL,(err)) #define LOGINFO1(msg,a,err) \
if (LOGLEVEL >= RTM_LOGGING_INFO) \ LOGINFO(LOGHANDLE,RTMLOG_ ## msg,1,&(a),(err)) #define LOGINFO2(msg,a,b,err) \
if (LOGLEVEL >= RTM_LOGGING_INFO) { \ LPSTR _asz[2] = { (a), (b) }; \ LOGINFO(LOGHANDLE,RTMLOG_ ## msg,2,_asz,(err)); \ } #define LOGINFO3(msg,a,b,c,err) \
if (LOGLEVEL >= RTM_LOGGING_INFO) { \ LPSTR _asz[3] = { (a), (b), (c) }; \ LOGINFO(LOGHANDLE,RTMLOG_ ## msg,3,_asz,(err)); \ } #define LOGINFO4(msg,a,b,c,d,err) \
if (LOGLEVEL >= RTM_LOGGING_INFO) { \ LPSTR _asz[4] = { (a), (b), (c), (d) }; \ LOGINFO(LOGHANDLE,RTMLOG_ ## msg,4,_asz,(err)); \ }
//
// Misc Debugging Macros
//
#define IPADDR_FORMAT(x) \
((x)&0x000000ff),(((x)&0x0000ff00)>>8),(((x)&0x00ff0000)>>16),(((x)&0xff000000)>>24)
#define TracePrintAddress(ID, Dest, Mask) \
{ \ Trace2(ID, "Dest: %d.%d.%d.%d Mask: %d.%d.%d.%d", \ IPADDR_FORMAT(Dest), \ IPADDR_FORMAT(Mask)); \ }
#endif //__ROUTING_RTMDBG_H__
|