xref: /titanic_51/usr/src/cmd/cmd-inet/usr.lib/mdnsd/mDNSDebug.c (revision 5ffb0c9b03b5149ff4f5821a62be4a52408ada2a)
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