1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211
|
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 1998-2024 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
* Public License.
*
* A copy of this license is available in file LICENSE in the
* top-level directory of the distribution or, alternatively, at
* <http://www.OpenLDAP.org/license.html>.
*/
/* Portions Copyright (c) 1990 Regents of the University of Michigan.
* All rights reserved.
*
* Redistribution and use in source and binary forms are permitted
* provided that this notice is preserved and that due credit is given
* to the University of Michigan at Ann Arbor. The name of the University
* may not be used to endorse or promote products derived from this
* software without specific prior written permission. This software
* is provided ``as is'' without express or implied warranty.
*/
#ifndef LDAP_LOG_H
#define LDAP_LOG_H
#include <stdio.h>
#include <ldap_cdefs.h>
LDAP_BEGIN_DECL
/*
* debug reporting levels.
*
* They start with the syslog levels, and
* go down in importance. The normal
* debugging levels begin with LDAP_LEVEL_ENTRY
*
*/
/*
* The "OLD_DEBUG" means that all logging occurs at LOG_DEBUG
*/
#ifdef OLD_DEBUG
/* original behavior: all logging occurs at the same severity level */
#if defined(LDAP_DEBUG) && defined(LDAP_SYSLOG)
#define LDAP_LEVEL_EMERG ldap_syslog_level
#define LDAP_LEVEL_ALERT ldap_syslog_level
#define LDAP_LEVEL_CRIT ldap_syslog_level
#define LDAP_LEVEL_ERR ldap_syslog_level
#define LDAP_LEVEL_WARNING ldap_syslog_level
#define LDAP_LEVEL_NOTICE ldap_syslog_level
#define LDAP_LEVEL_INFO ldap_syslog_level
#define LDAP_LEVEL_DEBUG ldap_syslog_level
#else /* !LDAP_DEBUG || !LDAP_SYSLOG */
#define LDAP_LEVEL_EMERG (7)
#define LDAP_LEVEL_ALERT (7)
#define LDAP_LEVEL_CRIT (7)
#define LDAP_LEVEL_ERR (7)
#define LDAP_LEVEL_WARNING (7)
#define LDAP_LEVEL_NOTICE (7)
#define LDAP_LEVEL_INFO (7)
#define LDAP_LEVEL_DEBUG (7)
#endif /* !LDAP_DEBUG || !LDAP_SYSLOG */
#else /* ! OLD_DEBUG */
/* map syslog onto LDAP severity levels */
#ifdef LOG_DEBUG
#define LDAP_LEVEL_EMERG LOG_EMERG
#define LDAP_LEVEL_ALERT LOG_ALERT
#define LDAP_LEVEL_CRIT LOG_CRIT
#define LDAP_LEVEL_ERR LOG_ERR
#define LDAP_LEVEL_WARNING LOG_WARNING
#define LDAP_LEVEL_NOTICE LOG_NOTICE
#define LDAP_LEVEL_INFO LOG_INFO
#define LDAP_LEVEL_DEBUG LOG_DEBUG
#else /* ! LOG_DEBUG */
#define LDAP_LEVEL_EMERG (0)
#define LDAP_LEVEL_ALERT (1)
#define LDAP_LEVEL_CRIT (2)
#define LDAP_LEVEL_ERR (3)
#define LDAP_LEVEL_WARNING (4)
#define LDAP_LEVEL_NOTICE (5)
#define LDAP_LEVEL_INFO (6)
#define LDAP_LEVEL_DEBUG (7)
#endif /* ! LOG_DEBUG */
#endif /* ! OLD_DEBUG */
#if 0
/* in case we need to reuse the unused bits of severity */
#define LDAP_LEVEL_MASK(s) ((s) & 0x7)
#else
#define LDAP_LEVEL_MASK(s) (s)
#endif
/* (yet) unused */
#define LDAP_LEVEL_ENTRY (0x08) /* log function entry points */
#define LDAP_LEVEL_ARGS (0x10) /* log function call parameters */
#define LDAP_LEVEL_RESULTS (0x20) /* Log function results */
#define LDAP_LEVEL_DETAIL1 (0x40) /* log level 1 function operational details */
#define LDAP_LEVEL_DETAIL2 (0x80) /* Log level 2 function operational details */
/* end of (yet) unused */
/* original subsystem selection mechanism */
#define LDAP_DEBUG_TRACE 0x0001
#define LDAP_DEBUG_PACKETS 0x0002
#define LDAP_DEBUG_ARGS 0x0004
#define LDAP_DEBUG_CONNS 0x0008
#define LDAP_DEBUG_BER 0x0010
#define LDAP_DEBUG_FILTER 0x0020
#define LDAP_DEBUG_CONFIG 0x0040
#define LDAP_DEBUG_ACL 0x0080
#define LDAP_DEBUG_STATS 0x0100
#define LDAP_DEBUG_STATS2 0x0200
#define LDAP_DEBUG_SHELL 0x0400
#define LDAP_DEBUG_PARSE 0x0800
#if 0 /* no longer used (nor supported) */
#define LDAP_DEBUG_CACHE 0x1000
#define LDAP_DEBUG_INDEX 0x2000
#endif
#define LDAP_DEBUG_SYNC 0x4000
#define LDAP_DEBUG_NONE 0x8000
#define LDAP_DEBUG_ANY (-1)
/* debugging stuff */
#ifdef LDAP_DEBUG
/*
* This is a bogus extern declaration for the compiler. No need to ensure
* a 'proper' dllimport.
*/
#ifndef ldap_debug
extern int ldap_debug;
#endif /* !ldap_debug */
#ifdef LDAP_SYSLOG
extern int ldap_syslog;
extern int ldap_syslog_level;
#ifdef HAVE_EBCDIC
#define syslog eb_syslog
extern void eb_syslog(int pri, const char *fmt, ...);
#endif /* HAVE_EBCDIC */
#endif /* LDAP_SYSLOG */
#endif /* LDAP_DEBUG */
/* we keep libldap working with preprocessors that can't do variadic macros */
#ifndef LDAP_INT_DEBUG
/* this doesn't below as part of ldap.h */
#ifdef LDAP_DEBUG
#ifdef LDAP_SYSLOG
#define LogTest(level) ( ( ldap_debug | ldap_syslog ) & (level) )
#define Log(level, severity, ...) \
do { \
if ( ldap_debug & (level) ) \
lutil_debug( ldap_debug, (level), __VA_ARGS__ ); \
if ( ldap_syslog & (level) ) \
syslog( LDAP_LEVEL_MASK((severity)), __VA_ARGS__ ); \
} while ( 0 )
#else /* ! LDAP_SYSLOG */
#define LogTest(level) ( ldap_debug & (level) )
#define Log(level, severity, ...) \
do { \
if ( ldap_debug & (level) ) \
lutil_debug( ldap_debug, (level), __VA_ARGS__ ); \
} while ( 0 )
#endif /* ! LDAP_SYSLOG */
#else /* ! LDAP_DEBUG */
/* TODO: in case LDAP_DEBUG is undefined, make sure logs with appropriate
* severity gets thru anyway */
#define LogTest(level) ( 0 )
#define Log(level, severity, ...) ((void) 0)
#endif /* ! LDAP_DEBUG */
#define Debug(level, ...) \
Log((level), ldap_syslog_level, __VA_ARGS__ )
#endif /* ! LDAP_INT_DEBUG */
/* Actually now in liblber/debug.c */
LDAP_LUTIL_F(int) lutil_debug_file LDAP_P(( FILE *file ));
LDAP_LUTIL_F(void) lutil_debug LDAP_P((
int debug, int level,
const char* fmt, ... )) LDAP_GCCATTR((format(printf, 3, 4)));
#ifdef LDAP_DEFINE_LDAP_DEBUG
/* This struct matches the head of ldapoptions in <ldap-int.h> */
struct ldapoptions_prefix {
short ldo_valid;
int ldo_debug;
};
#define ldap_debug \
(*(int *) ((char *)&ldap_int_global_options \
+ offsetof(struct ldapoptions_prefix, ldo_debug)))
struct ldapoptions;
LDAP_V ( struct ldapoptions ) ldap_int_global_options;
#endif /* LDAP_DEFINE_LDAP_DEBUG */
LDAP_END_DECL
#endif /* LDAP_LOG_H */
|