<rdar://problem/7481776> Suppress logs for "A non-blocking socket operation could...
[people/sha0/mDNSResponder.git] / mDNSCore / mDNSDebug.h
1 /* -*- Mode: C; tab-width: 4 -*-
2  *
3  * Copyright (c) 2002-2003 Apple Computer, Inc. All rights reserved.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  * 
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  * 
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 #ifndef __mDNSDebug_h
19 #define __mDNSDebug_h
20
21 // Set MDNS_DEBUGMSGS to 0 to optimize debugf() calls out of the compiled code
22 // Set MDNS_DEBUGMSGS to 1 to generate normal debugging messages
23 // Set MDNS_DEBUGMSGS to 2 to generate verbose debugging messages
24 // MDNS_DEBUGMSGS is normally set in the project options (or makefile) but can also be set here if desired
25 // (If you edit the file here to turn on MDNS_DEBUGMSGS while you're debugging some code, be careful
26 // not to accidentally check-in that change by mistake when you check in your other changes.)
27
28 //#undef MDNS_DEBUGMSGS
29 //#define MDNS_DEBUGMSGS 2
30
31 // Set MDNS_CHECK_PRINTF_STYLE_FUNCTIONS to 1 to enable extra GCC compiler warnings
32 // Note: You don't normally want to do this, because it generates a bunch of
33 // spurious warnings for the following custom extensions implemented by mDNS_vsnprintf:
34 //    warning: `#' flag used with `%s' printf format    (for %#s              -- pascal string format)
35 //    warning: repeated `#' flag in format              (for %##s             -- DNS name string format)
36 //    warning: double format, pointer arg (arg 2)       (for %.4a, %.16a, %#a -- IP address formats)
37 #define MDNS_CHECK_PRINTF_STYLE_FUNCTIONS 0
38
39 typedef enum
40         {
41         MDNS_LOG_MSG,
42         MDNS_LOG_OPERATION,
43         MDNS_LOG_SPS,
44         MDNS_LOG_INFO,
45         MDNS_LOG_DEBUG,
46         } mDNSLogLevel_t;
47
48 // Set this symbol to 1 to answer remote queries for our Address, reverse mapping PTR, and HINFO records
49 #define ANSWER_REMOTE_HOSTNAME_QUERIES 0
50
51 // Set this symbol to 1 to do extra debug checks on malloc() and free()
52 // Set this symbol to 2 to write a log message for every malloc() and free()
53 //#define MACOSX_MDNS_MALLOC_DEBUGGING 1
54
55 //#define ForceAlerts 1
56 //#define LogTimeStamps 1
57
58 #define USE_SEPARATE_UDNS_SERVICE_LIST 1
59
60 // Developer-settings section ends here
61
62 #if MDNS_CHECK_PRINTF_STYLE_FUNCTIONS
63 #define IS_A_PRINTF_STYLE_FUNCTION(F,A) __attribute__ ((format(printf,F,A)))
64 #else
65 #define IS_A_PRINTF_STYLE_FUNCTION(F,A)
66 #endif
67
68 #ifdef __cplusplus
69         extern "C" {
70 #endif
71
72 // Variable argument macro support. Use ANSI C99 __VA_ARGS__ where possible. Otherwise, use the next best thing.
73
74 #if (defined(__GNUC__))
75         #if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 2)))
76                 #define MDNS_C99_VA_ARGS        1
77                 #define MDNS_GNU_VA_ARGS        0
78         #else
79                 #define MDNS_C99_VA_ARGS        0
80                 #define MDNS_GNU_VA_ARGS        1
81         #endif
82         #define MDNS_HAS_VA_ARG_MACROS      1
83 #elif (_MSC_VER >= 1400) // Visual Studio 2005 and later