diff options
Diffstat (limited to 'mDNSResponder/mDNSShared/mDNSDebug.c')
-rw-r--r-- | mDNSResponder/mDNSShared/mDNSDebug.c | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/mDNSResponder/mDNSShared/mDNSDebug.c b/mDNSResponder/mDNSShared/mDNSDebug.c new file mode 100644 index 00000000..cb4da6ec --- /dev/null +++ b/mDNSResponder/mDNSShared/mDNSDebug.c @@ -0,0 +1,95 @@ +/* -*- Mode: C; tab-width: 4 -*- + * + * Copyright (c) 2003 Apple Computer, Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + + File: mDNSDebug.c + + Contains: Implementation of debugging utilities. Requires a POSIX environment. + + Version: 1.0 + + */ + +#include "mDNSDebug.h" + +#include <stdio.h> + +#if defined(WIN32) || defined(EFI32) || defined(EFI64) || defined(EFIX64) +// Need to add Windows/EFI syslog support here +#define LOG_PID 0x01 +#define LOG_CONS 0x02 +#define LOG_PERROR 0x20 +#else +#include <syslog.h> +#endif + +#include "mDNSEmbeddedAPI.h" + +mDNSexport int mDNS_LoggingEnabled = 0; +mDNSexport int mDNS_PacketLoggingEnabled = 0; +mDNSexport int mDNS_McastLoggingEnabled = 0; +mDNSexport int mDNS_McastTracingEnabled = 0; + +#if MDNS_DEBUGMSGS +mDNSexport int mDNS_DebugMode = mDNStrue; +#else +mDNSexport int mDNS_DebugMode = mDNSfalse; +#endif + +// Note, this uses mDNS_vsnprintf instead of standard "vsnprintf", because mDNS_vsnprintf knows +// how to print special data types like IP addresses and length-prefixed domain names +#if MDNS_DEBUGMSGS > 1 +mDNSexport void verbosedebugf_(const char *format, ...) +{ + char buffer[512]; + va_list ptr; + va_start(ptr,format); + buffer[mDNS_vsnprintf(buffer, sizeof(buffer), format, ptr)] = 0; + va_end(ptr); + mDNSPlatformWriteDebugMsg(buffer); +} +#endif + +// Log message with default "mDNSResponder" ident string at the start +mDNSlocal void LogMsgWithLevelv(mDNSLogLevel_t logLevel, const char *format, va_list ptr) +{ + char buffer[512]; + buffer[mDNS_vsnprintf((char *)buffer, sizeof(buffer), format, ptr)] = 0; + mDNSPlatformWriteLogMsg(ProgramName, buffer, logLevel); +} + +#define LOG_HELPER_BODY(L) \ + { \ + va_list ptr; \ + va_start(ptr,format); \ + LogMsgWithLevelv(L, format, ptr); \ + va_end(ptr); \ + } + +// see mDNSDebug.h +#if !MDNS_HAS_VA_ARG_MACROS +void LogMsg_(const char *format, ...) LOG_HELPER_BODY(MDNS_LOG_MSG) +void LogOperation_(const char *format, ...) LOG_HELPER_BODY(MDNS_LOG_OPERATION) +void LogSPS_(const char *format, ...) LOG_HELPER_BODY(MDNS_LOG_SPS) +void LogInfo_(const char *format, ...) LOG_HELPER_BODY(MDNS_LOG_INFO) +#endif + +#if MDNS_DEBUGMSGS +void debugf_(const char *format, ...) LOG_HELPER_BODY(MDNS_LOG_DEBUG) +#endif + +// Log message with default "mDNSResponder" ident string at the start +mDNSexport void LogMsgWithLevel(mDNSLogLevel_t logLevel, const char *format, ...) +LOG_HELPER_BODY(logLevel) |