14b22b933Srs200217 /* -*- Mode: C; tab-width: 4 -*- 24b22b933Srs200217 * 34b22b933Srs200217 * Copyright (c) 2003 Apple Computer, Inc. All rights reserved. 44b22b933Srs200217 * 54b22b933Srs200217 * Licensed under the Apache License, Version 2.0 (the "License"); 64b22b933Srs200217 * you may not use this file except in compliance with the License. 74b22b933Srs200217 * You may obtain a copy of the License at 84b22b933Srs200217 * 94b22b933Srs200217 * http://www.apache.org/licenses/LICENSE-2.0 104b22b933Srs200217 * 114b22b933Srs200217 * Unless required by applicable law or agreed to in writing, software 124b22b933Srs200217 * distributed under the License is distributed on an "AS IS" BASIS, 134b22b933Srs200217 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 144b22b933Srs200217 * See the License for the specific language governing permissions and 154b22b933Srs200217 * limitations under the License. 164b22b933Srs200217 174b22b933Srs200217 File: mDNSDebug.c 184b22b933Srs200217 194b22b933Srs200217 Contains: Implementation of debugging utilities. Requires a POSIX environment. 204b22b933Srs200217 214b22b933Srs200217 Version: 1.0 224b22b933Srs200217 234b22b933Srs200217 */ 244b22b933Srs200217 254b22b933Srs200217 #include "mDNSDebug.h" 264b22b933Srs200217 274b22b933Srs200217 #include <stdio.h> 284b22b933Srs200217 29*5ffb0c9bSToomas Soome #if defined(WIN32) || defined(EFI32) || defined(EFI64) || defined(EFIX64) 30*5ffb0c9bSToomas Soome // Need to add Windows/EFI syslog support here 314b22b933Srs200217 #define LOG_PID 0x01 324b22b933Srs200217 #define LOG_CONS 0x02 334b22b933Srs200217 #define LOG_PERROR 0x20 344b22b933Srs200217 #else 354b22b933Srs200217 #include <syslog.h> 364b22b933Srs200217 #endif 374b22b933Srs200217 384b22b933Srs200217 #include "mDNSEmbeddedAPI.h" 394b22b933Srs200217 40*5ffb0c9bSToomas Soome mDNSexport int mDNS_LoggingEnabled = 0; 41*5ffb0c9bSToomas Soome mDNSexport int mDNS_PacketLoggingEnabled = 0; 42*5ffb0c9bSToomas Soome mDNSexport int mDNS_McastLoggingEnabled = 0; 43*5ffb0c9bSToomas Soome mDNSexport int mDNS_McastTracingEnabled = 0; 44*5ffb0c9bSToomas Soome 454b22b933Srs200217 #if MDNS_DEBUGMSGS 464b22b933Srs200217 mDNSexport int mDNS_DebugMode = mDNStrue; 474b22b933Srs200217 #else 484b22b933Srs200217 mDNSexport int mDNS_DebugMode = mDNSfalse; 494b22b933Srs200217 #endif 504b22b933Srs200217 514b22b933Srs200217 // Note, this uses mDNS_vsnprintf instead of standard "vsnprintf", because mDNS_vsnprintf knows 524b22b933Srs200217 // how to print special data types like IP addresses and length-prefixed domain names 534b22b933Srs200217 #if MDNS_DEBUGMSGS > 1 544b22b933Srs200217 mDNSexport void verbosedebugf_(const char *format, ...) 554b22b933Srs200217 { 56*5ffb0c9bSToomas Soome char buffer[512]; 574b22b933Srs200217 va_list ptr; 584b22b933Srs200217 va_start(ptr,format); 59*5ffb0c9bSToomas Soome buffer[mDNS_vsnprintf(buffer, sizeof(buffer), format, ptr)] = 0; 604b22b933Srs200217 va_end(ptr); 61*5ffb0c9bSToomas Soome mDNSPlatformWriteDebugMsg(buffer); 624b22b933Srs200217 } 634b22b933Srs200217 #endif 644b22b933Srs200217 65*5ffb0c9bSToomas Soome // Log message with default "mDNSResponder" ident string at the start 66*5ffb0c9bSToomas Soome mDNSlocal void LogMsgWithLevelv(mDNSLogLevel_t logLevel, const char *format, va_list ptr) 674b22b933Srs200217 { 68*5ffb0c9bSToomas Soome char buffer[512]; 69*5ffb0c9bSToomas Soome buffer[mDNS_vsnprintf((char *)buffer, sizeof(buffer), format, ptr)] = 0; 70*5ffb0c9bSToomas Soome mDNSPlatformWriteLogMsg(ProgramName, buffer, logLevel); 714b22b933Srs200217 } 72*5ffb0c9bSToomas Soome 73*5ffb0c9bSToomas Soome #define LOG_HELPER_BODY(L) \ 74*5ffb0c9bSToomas Soome { \ 75*5ffb0c9bSToomas Soome va_list ptr; \ 76*5ffb0c9bSToomas Soome va_start(ptr,format); \ 77*5ffb0c9bSToomas Soome LogMsgWithLevelv(L, format, ptr); \ 78*5ffb0c9bSToomas Soome va_end(ptr); \ 794b22b933Srs200217 } 80*5ffb0c9bSToomas Soome 81*5ffb0c9bSToomas Soome // see mDNSDebug.h 82*5ffb0c9bSToomas Soome #if !MDNS_HAS_VA_ARG_MACROS 83*5ffb0c9bSToomas Soome void LogMsg_(const char *format, ...) LOG_HELPER_BODY(MDNS_LOG_MSG) 84*5ffb0c9bSToomas Soome void LogOperation_(const char *format, ...) LOG_HELPER_BODY(MDNS_LOG_OPERATION) 85*5ffb0c9bSToomas Soome void LogSPS_(const char *format, ...) LOG_HELPER_BODY(MDNS_LOG_SPS) 86*5ffb0c9bSToomas Soome void LogInfo_(const char *format, ...) LOG_HELPER_BODY(MDNS_LOG_INFO) 87*5ffb0c9bSToomas Soome #endif 88*5ffb0c9bSToomas Soome 89*5ffb0c9bSToomas Soome #if MDNS_DEBUGMSGS 90*5ffb0c9bSToomas Soome void debugf_(const char *format, ...) LOG_HELPER_BODY(MDNS_LOG_DEBUG) 91*5ffb0c9bSToomas Soome #endif 924b22b933Srs200217 934b22b933Srs200217 // Log message with default "mDNSResponder" ident string at the start 94*5ffb0c9bSToomas Soome mDNSexport void LogMsgWithLevel(mDNSLogLevel_t logLevel, const char *format, ...) 95*5ffb0c9bSToomas Soome LOG_HELPER_BODY(logLevel) 96