mirror of
https://github.com/open5gs/open5gs.git
synced 2025-11-02 13:03:31 +00:00
Merge branch 'laforge/fd-debug' of https://github.com/laf0rge/nextepc
This commit is contained in:
@@ -22,7 +22,8 @@
|
||||
int __ogs_diam_domain;
|
||||
|
||||
static void diam_gnutls_log_func(int level, const char *str);
|
||||
static void diam_log_func(int printlevel, const char *format, va_list ap);
|
||||
static void diam_log_func(int printlevel,
|
||||
const char *fname, int line, const char *format, va_list ap);
|
||||
|
||||
int ogs_diam_init(int mode, const char *conffile, ogs_diam_config_t *fd_config)
|
||||
{
|
||||
@@ -33,26 +34,21 @@ int ogs_diam_init(int mode, const char *conffile, ogs_diam_config_t *fd_config)
|
||||
|
||||
fd_g_debug_lvl = FD_LOG_ERROR;
|
||||
ret = fd_log_handler_register(diam_log_func);
|
||||
if (ret != 0)
|
||||
{
|
||||
if (ret != 0) {
|
||||
ogs_error("fd_log_handler_register() failed");
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = fd_core_initialize();
|
||||
if (ret != 0)
|
||||
{
|
||||
if (ret != 0) {
|
||||
ogs_error("fd_core_initialize() failed");
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Parse the configuration file */
|
||||
if (conffile)
|
||||
{
|
||||
if (conffile) {
|
||||
CHECK_FCT_DO( fd_core_parseconf(conffile), goto error );
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
CHECK_FCT_DO( ogs_diam_config_init(fd_config), goto error );
|
||||
}
|
||||
|
||||
@@ -91,49 +87,47 @@ static void diam_gnutls_log_func(int level, const char *str)
|
||||
ogs_trace("gnutls[%d]: %s", level, str);
|
||||
}
|
||||
|
||||
static void diam_log_func(int printlevel, const char *format, va_list ap)
|
||||
static void diam_log_func(int printlevel,
|
||||
const char *fname, int line, const char *format, va_list ap)
|
||||
{
|
||||
char buffer[OGS_HUGE_LEN];
|
||||
int ret = 0;
|
||||
|
||||
ret = vsnprintf(buffer, OGS_HUGE_LEN, format, ap);
|
||||
if (ret < 0 || ret > OGS_HUGE_LEN)
|
||||
{
|
||||
if (ret < 0 || ret > OGS_HUGE_LEN) {
|
||||
ogs_error("vsnprintf() failed");
|
||||
return;
|
||||
}
|
||||
|
||||
switch(printlevel)
|
||||
{
|
||||
case FD_LOG_ANNOYING:
|
||||
ogs_trace("freeDiameter[%d]: %s", printlevel, buffer);
|
||||
break;
|
||||
case FD_LOG_DEBUG:
|
||||
ogs_trace("freeDiameter[%d]: %s", printlevel, buffer);
|
||||
break;
|
||||
case FD_LOG_NOTICE:
|
||||
ogs_trace("freeDiameter[%d]: %s", printlevel, buffer);
|
||||
break;
|
||||
case FD_LOG_ERROR:
|
||||
ogs_error("%s", buffer);
|
||||
if (!strcmp(buffer, " - The certificate is expired."))
|
||||
{
|
||||
ogs_error("You can renew CERT as follows:");
|
||||
ogs_error("./support/freeDiameter/make_certs.sh "
|
||||
"./install/etc/nextepc/freeDiameter");
|
||||
}
|
||||
break;
|
||||
case FD_LOG_FATAL:
|
||||
{
|
||||
char *except = "Initiating freeDiameter shutdown sequence";
|
||||
if (strncmp(buffer, except, strlen(except)) == 0)
|
||||
ogs_info("freeDiameter[%d]: %s", printlevel, buffer);
|
||||
else
|
||||
ogs_fatal("%s", buffer);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ogs_warn("%s", buffer);
|
||||
break;
|
||||
switch(printlevel) {
|
||||
case FD_LOG_ANNOYING:
|
||||
ogs_trace("[%d]: %s:%u %s", printlevel, fname, line, buffer);
|
||||
break;
|
||||
case FD_LOG_DEBUG:
|
||||
ogs_trace("[%d]: %s:%u %s", printlevel, fname, line, buffer);
|
||||
break;
|
||||
case FD_LOG_NOTICE:
|
||||
ogs_trace("[%d]: %s:%u %s", printlevel, fname, line, buffer);
|
||||
break;
|
||||
case FD_LOG_ERROR:
|
||||
ogs_error("%s:%d %s", fname, line, buffer);
|
||||
if (!strcmp(buffer, " - The certificate is expired.")) {
|
||||
ogs_error("You can renew CERT as follows:");
|
||||
ogs_error("./support/freeDiameter/make_certs.sh "
|
||||
"./install/etc/nextepc/freeDiameter");
|
||||
}
|
||||
break;
|
||||
case FD_LOG_FATAL:
|
||||
{
|
||||
char *except = "Initiating freeDiameter shutdown sequence";
|
||||
if (strncmp(buffer, except, strlen(except)) == 0)
|
||||
ogs_info("[%d]: %s:%u %s", printlevel, fname, line, buffer);
|
||||
else
|
||||
ogs_fatal("%s:%d %s", fname, line, buffer);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ogs_warn("%s:%d %s", fname, line, buffer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,6 +135,8 @@ extern const char fd_libproto_version[];
|
||||
*
|
||||
* PARAMETERS:
|
||||
* loglevel : Integer, how important the message is. Valid values are macros FD_LOG_*
|
||||
* filename : source file name
|
||||
* line : source line number
|
||||
* format : Same format string as in the printf function
|
||||
* ... : Same list as printf
|
||||
*
|
||||
@@ -146,9 +148,9 @@ extern const char fd_libproto_version[];
|
||||
* RETURN VALUE:
|
||||
* None.
|
||||
*/
|
||||
void fd_log ( int, const char *, ... ) _ATTRIBUTE_PRINTFLIKE_(2,3);
|
||||
void fd_log ( int, const char *, int, const char *, ... ) _ATTRIBUTE_PRINTFLIKE_(4,5);
|
||||
#ifndef SWIG
|
||||
void fd_log_va( int, const char *, va_list);
|
||||
void fd_log_va( int, const char *, int, const char *, va_list);
|
||||
#endif /* SWIG */
|
||||
|
||||
/* these are internal objects of the debug facility,
|
||||
@@ -208,7 +210,7 @@ char * fd_log_time ( struct timespec * ts, char * buf, size_t len, int incl_date
|
||||
* RETURN VALUE:
|
||||
* int : Success or failure
|
||||
*/
|
||||
int fd_log_handler_register ( void (*logger)(int loglevel, const char * format, va_list args) );
|
||||
int fd_log_handler_register ( void (*logger)(int loglevel, const char *fname, int line, const char * format, va_list args) );
|
||||
|
||||
/*
|
||||
* FUNCTION: fd_log_handler_unregister
|
||||
@@ -309,7 +311,7 @@ static char * file_bname_init(char * full) { file_bname = basename(full); return
|
||||
The general debug macro
|
||||
*************************/
|
||||
#define LOG(printlevel,format,args... ) \
|
||||
fd_log((printlevel), STD_TRACE_FMT_STRING format STD_TRACE_FMT_ARGS, ## args)
|
||||
fd_log((printlevel), __FILE__, __LINE__, STD_TRACE_FMT_STRING format STD_TRACE_FMT_ARGS, ## args)
|
||||
|
||||
/*
|
||||
* Use the following macros in the code to get traces with location & pid in debug mode:
|
||||
@@ -355,7 +357,7 @@ static char * file_bname_init(char * full) { file_bname = basename(full); return
|
||||
for (__i = 0; (__i < __sz) && (__i<(sizeof(__strbuf)/2)); __i++) { \
|
||||
sprintf(__strbuf + (2 * __i), "%02hhx", __buf[__i]); \
|
||||
} \
|
||||
fd_log(printlevel, STD_TRACE_FMT_STRING "%s%s%s" STD_TRACE_FMT_ARGS, \
|
||||
fd_log(printlevel, __FILE__, __LINE__, STD_TRACE_FMT_STRING "%s%s%s" STD_TRACE_FMT_ARGS, \
|
||||
(prefix), __strbuf, (suffix)); \
|
||||
}
|
||||
|
||||
@@ -490,15 +492,15 @@ static __inline__ int old_TRACE_BOOL( enum old_levels level, const char * file,
|
||||
#define TRACE_BOOL(level) old_TRACE_BOOL((level), __STRIPPED_FILE__, __PRETTY_FUNCTION__)
|
||||
|
||||
#ifndef SWIG
|
||||
static __inline__ void fd_log_deprecated( int level, const char *format, ... ) MARK_DEPRECATED
|
||||
static __inline__ void fd_log_deprecated( int level, const char *fname, int line, const char *format, ... ) MARK_DEPRECATED
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
fd_log_va(level, format, ap);
|
||||
fd_log_va(level, fname, line, format, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
#else /* SWIG */
|
||||
void fd_log_deprecated( int level, const char *format, ... );
|
||||
void fd_log_deprecated( int level, const char *fname, int line, const char *format, ... );
|
||||
#endif /* SWIG */
|
||||
static __inline__ void replace_me() MARK_DEPRECATED { }
|
||||
|
||||
@@ -507,9 +509,9 @@ static __inline__ void replace_me() MARK_DEPRECATED { }
|
||||
|
||||
|
||||
/* Use the LOG_* instead, or use the new *_dump functions when dumping an object */
|
||||
#define fd_log_debug(format,args...) fd_log_deprecated(FD_LOG_DEBUG, format, ## args)
|
||||
#define fd_log_notice(format,args...) fd_log_deprecated(FD_LOG_NOTICE, format, ## args)
|
||||
#define fd_log_error(format,args...) fd_log_deprecated(FD_LOG_ERROR, format, ## args)
|
||||
#define fd_log_debug(format,args...) fd_log_deprecated(FD_LOG_DEBUG, __FILE__, __LINE__, format, ## args)
|
||||
#define fd_log_notice(format,args...) fd_log_deprecated(FD_LOG_NOTICE, __FILE__, __LINE__, format, ## args)
|
||||
#define fd_log_error(format,args...) fd_log_deprecated(FD_LOG_ERROR, __FILE__, __LINE__, format, ## args)
|
||||
|
||||
/* old macro for traces. To be replaced by appropriate LOG_* macros. */
|
||||
# define TRACE_DEBUG(oldlevel, format,args... ) { \
|
||||
@@ -601,9 +603,9 @@ static __inline__ void replace_me() MARK_DEPRECATED { }
|
||||
#undef LOG_BUFFER
|
||||
|
||||
#define LOG_D(format,args... ) /* noop */
|
||||
#define LOG_N(format,args...) fd_log(FD_LOG_NOTICE, format, ## args)
|
||||
#define LOG_E(format,args...) fd_log(FD_LOG_ERROR, format, ## args)
|
||||
#define LOG_F(format,args...) fd_log(FD_LOG_FATAL, format, ## args)
|
||||
#define LOG_N(format,args...) fd_log(FD_LOG_NOTICE, __FILE__, __LINE__, format, ## args)
|
||||
#define LOG_E(format,args...) fd_log(FD_LOG_ERROR, __FILE__, __LINE__, format, ## args)
|
||||
#define LOG_F(format,args...) fd_log(FD_LOG_FATAL, __FILE__, __LINE__, format, ## args)
|
||||
#define LOG_BUFFER(printlevel, level, prefix, buf, bufsz, suffix ) { \
|
||||
if (printlevel > FD_LOG_DEBUG) { \
|
||||
int __i; \
|
||||
@@ -613,7 +615,7 @@ static __inline__ void replace_me() MARK_DEPRECATED { }
|
||||
for (__i = 0; (__i < __sz) && (__i<(sizeof(__strbuf)/2); __i++) { \
|
||||
sprintf(__strbuf + (2 * __i), "%02.2hhx", __buf[__i]); \
|
||||
} \
|
||||
fd_log(printlevel, prefix"%s"suffix, __strbuf); \
|
||||
fd_log(printlevel, __FILE__, __LINE__, prefix"%s"suffix, __strbuf); \
|
||||
}
|
||||
#endif /* STRIP_DEBUG_CODE */
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ pthread_mutex_t fd_log_lock = PTHREAD_MUTEX_INITIALIZER;
|
||||
pthread_key_t fd_log_thname;
|
||||
int fd_g_debug_lvl = FD_LOG_NOTICE;
|
||||
|
||||
static void fd_internal_logger( int, const char *, va_list );
|
||||
static void fd_internal_logger( int, const char *, int, const char *, va_list );
|
||||
static int use_colors = 0; /* 0: not init, 1: yes, 2: no */
|
||||
|
||||
/* These may be used to pass specific debug requests via the command-line parameters */
|
||||
@@ -53,10 +53,10 @@ int fd_breaks = 0;
|
||||
int fd_breakhere(void) { return ++fd_breaks; }
|
||||
|
||||
/* Allow passing of the log and debug information from base stack to extensions */
|
||||
void (*fd_logger)( int loglevel, const char * format, va_list args ) = fd_internal_logger;
|
||||
void (*fd_logger)( int loglevel, const char *fname, int line, const char * format, va_list args ) = fd_internal_logger;
|
||||
|
||||
/* Register an external call back for tracing and debug */
|
||||
int fd_log_handler_register( void (*logger)(int loglevel, const char * format, va_list args) )
|
||||
int fd_log_handler_register( void (*logger)(int loglevel, const char *fname, int line, const char * format, va_list args) )
|
||||
{
|
||||
CHECK_PARAMS( logger );
|
||||
|
||||
@@ -85,7 +85,7 @@ static void fd_cleanup_mutex_silent( void * mutex )
|
||||
}
|
||||
|
||||
|
||||
static void fd_internal_logger( int printlevel, const char *format, va_list ap )
|
||||
static void fd_internal_logger( int printlevel, const char *fname, int line, const char *format, va_list ap )
|
||||
{
|
||||
char buf[25];
|
||||
|
||||
@@ -94,13 +94,13 @@ static void fd_internal_logger( int printlevel, const char *format, va_list ap )
|
||||
return;
|
||||
|
||||
/* add timestamp */
|
||||
printf("%s ", fd_log_time(NULL, buf, sizeof(buf),
|
||||
printf("%s %s:%d ", fd_log_time(NULL, buf, sizeof(buf),
|
||||
#if (defined(DEBUG) && defined(DEBUG_WITH_META))
|
||||
1, 1
|
||||
#else /* (defined(DEBUG) && defined(DEBUG_WITH_META)) */
|
||||
0, 0
|
||||
#endif /* (defined(DEBUG) && defined(DEBUG_WITH_META)) */
|
||||
));
|
||||
), fname, line);
|
||||
/* Use colors on stdout ? */
|
||||
if (!use_colors) {
|
||||
if (isatty(STDOUT_FILENO))
|
||||
@@ -126,7 +126,7 @@ static void fd_internal_logger( int printlevel, const char *format, va_list ap )
|
||||
}
|
||||
|
||||
/* Log a debug message */
|
||||
void fd_log ( int loglevel, const char * format, ... )
|
||||
void fd_log ( int loglevel, const char *fname, int line, const char * format, ... )
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
@@ -135,7 +135,7 @@ void fd_log ( int loglevel, const char * format, ... )
|
||||
pthread_cleanup_push(fd_cleanup_mutex_silent, &fd_log_lock);
|
||||
|
||||
va_start(ap, format);
|
||||
fd_logger(loglevel, format, ap);
|
||||
fd_logger(loglevel, fname, line, format, ap);
|
||||
va_end(ap);
|
||||
|
||||
pthread_cleanup_pop(0);
|
||||
@@ -144,12 +144,12 @@ void fd_log ( int loglevel, const char * format, ... )
|
||||
}
|
||||
|
||||
/* Log a debug message */
|
||||
void fd_log_va ( int loglevel, const char * format, va_list args )
|
||||
void fd_log_va ( int loglevel, const char *fname, int line, const char * format, va_list args )
|
||||
{
|
||||
(void)pthread_mutex_lock(&fd_log_lock);
|
||||
|
||||
pthread_cleanup_push(fd_cleanup_mutex_silent, &fd_log_lock);
|
||||
fd_logger(loglevel, format, args);
|
||||
fd_logger(loglevel, fname, line, format, args);
|
||||
pthread_cleanup_pop(0);
|
||||
|
||||
(void)pthread_mutex_unlock(&fd_log_lock);
|
||||
|
||||
Reference in New Issue
Block a user