diff --git a/libs/freetdm/src/ftdm_io.c b/libs/freetdm/src/ftdm_io.c index 01185c5844..e461d14f96 100644 --- a/libs/freetdm/src/ftdm_io.c +++ b/libs/freetdm/src/ftdm_io.c @@ -169,7 +169,7 @@ static void null_logger(const char *file, const char *func, int line, int level, } -static const char *LEVEL_NAMES[] = { +const char *FTDM_LEVEL_NAMES[9] = { "EMERG", "ALERT", "CRIT", @@ -181,7 +181,7 @@ static const char *LEVEL_NAMES[] = { NULL }; -static int ftdm_log_level = 7; +static int ftdm_log_level = FTDM_LOG_LEVEL_DEBUG; static void default_logger(const char *file, const char *func, int line, int level, const char *fmt, ...) { @@ -203,7 +203,7 @@ static void default_logger(const char *file, const char *func, int line, int lev vsnprintf(data, sizeof(data), fmt, ap); - fprintf(stderr, "[%s] %s:%d %s() %s", LEVEL_NAMES[level], file, line, func, data); + fprintf(stderr, "[%s] %s:%d %s() %s", FTDM_LEVEL_NAMES[level], file, line, func, data); va_end(ap); diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c index 615f2500d3..ed3cb99d4e 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c @@ -2010,7 +2010,7 @@ static void ftdm_cli_span_state_cmd(ftdm_span_t *span, char *state) ftdm_log(FTDM_LOG_CRIT, "Total Channel Cnt %i\n",cnt); } -#define FTDM_BOOST_SYNTAX "list sigmods | " +#define FTDM_BOOST_SYNTAX "list sigmods | | tracelevel " /** * \brief API function to kill or debug a sangoma_boost span * \param stream API stream handler @@ -2041,7 +2041,45 @@ static FIO_API_FUNCTION(ftdm_sangoma_boost_api) print_request_ids(); goto done; } - + } else if (!strcasecmp(argv[0], "tracelevel")) { + ftdm_status_t status; + const char *levelname = NULL; + int dbglevel; + ftdm_sangoma_boost_data_t *sangoma_boost_data; + ftdm_span_t *span; + + if (argc <= 2) { + stream->write_function(stream, "-ERR usage: tracelevel \n"); + goto done; + } + + status = ftdm_span_find_by_name(argv[1], &span); + if (FTDM_SUCCESS != status) { + stream->write_function(stream, "-ERR failed to find span by name %s\n", argv[1]); + goto done; + } + + if (span->signal_type != FTDM_SIGTYPE_SANGOMABOOST) { + stream->write_function(stream, "-ERR span %s is not of boost type\n", argv[1]); + goto done; + } + + for (dbglevel = 0; (levelname = FTDM_LEVEL_NAMES[dbglevel]); dbglevel++) { + if (!strcasecmp(levelname, argv[2])) { + break; + } + } + + if (!levelname) { + stream->write_function(stream, "-ERR invalid log level %s\n", argv[2]); + goto done; + } + + sangoma_boost_data = span->signal_data; + sangoma_boost_data->pcon.debuglevel = dbglevel; + sangoma_boost_data->mcon.debuglevel = dbglevel; + stream->write_function(stream, "+OK span %s has now trace level %s\n", argv[1], FTDM_LEVEL_NAMES[dbglevel]); + goto done; #ifndef __WINDOWS__ #if 0 /* NC: This code crashes the kernel due to fork on heavy fs load */ @@ -2673,6 +2711,8 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_sangoma_boost_configure_span) span->get_span_sig_status = sangoma_boost_get_span_sig_status; span->set_span_sig_status = sangoma_boost_set_span_sig_status; span->state_map = &boost_state_map; + sangoma_boost_data->mcon.debuglevel = FTDM_LOG_LEVEL_DEBUG; + sangoma_boost_data->pcon.debuglevel = FTDM_LOG_LEVEL_DEBUG; ftdm_clear_flag(span, FTDM_SPAN_SUGGEST_CHAN_ID); ftdm_set_flag(span, FTDM_SPAN_USE_CHAN_QUEUE); if (sigmod_iface) { diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/sangoma_boost_client.c b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/sangoma_boost_client.c index d33415c809..982dd4794d 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/sangoma_boost_client.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/sangoma_boost_client.c @@ -77,7 +77,7 @@ static void sangomabc_print_event_call(sangomabc_connection_t *mcon, sangomabc_e if (event->event_id == SIGBOOST_EVENT_HEARTBEAT) return; - ftdm_log(file, func, line, FTDM_LOG_LEVEL_WARNING, "%s EVENT (%s): %s:(%X) [w%dg%d] CSid=%i Seq=%i Cn=[%s] Cd=[%s] Ci=[%s] Rdnis=[%s]\n", + ftdm_log(file, func, line, mcon->debuglevel, "%s EVENT (%s): %s:(%X) [w%dg%d] CSid=%i Seq=%i Cn=[%s] Cd=[%s] Ci=[%s] Rdnis=[%s]\n", dir ? "TX":"RX", priority ? "P":"N", sangomabc_event_id_name(event->event_id), @@ -96,7 +96,7 @@ static void sangomabc_print_event_short(sangomabc_connection_t *mcon, sangomabc_ { if (event->event_id == SIGBOOST_EVENT_HEARTBEAT) return; - ftdm_log(file, func, line, FTDM_LOG_LEVEL_WARNING, "%s EVENT (%s): %s:(%X) [s%dc%d] Rc=%i CSid=%i Seq=%i \n", + ftdm_log(file, func, line, mcon->debuglevel, "%s EVENT (%s): %s:(%X) [s%dc%d] Rc=%i CSid=%i Seq=%i \n", dir ? "TX":"RX", priority ? "P":"N", sangomabc_event_id_name(event->event_id), diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/sangoma_boost_client.h b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/sangoma_boost_client.h index cabebdca4c..e333c4aba3 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_boost/sangoma_boost_client.h +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_boost/sangoma_boost_client.h @@ -110,6 +110,7 @@ struct sangomabc_connection { ftdm_queue_t *boost_queue; ftdm_interrupt_t *sock_interrupt; ftdm_span_t *span; + int debuglevel; }; typedef struct sangomabc_connection sangomabc_connection_t; diff --git a/libs/freetdm/src/include/private/ftdm_core.h b/libs/freetdm/src/include/private/ftdm_core.h index 56c58ba654..4e0bf9caf4 100644 --- a/libs/freetdm/src/include/private/ftdm_core.h +++ b/libs/freetdm/src/include/private/ftdm_core.h @@ -564,6 +564,8 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_open_chan(ftdm_channel_t *ftdmchan); #define ftdm_log_chan(fchan, level, format, ...) ftdm_log(level, "s%dc%d " format, fchan->span_id, fchan->chan_id, __VA_ARGS__) #define ftdm_log_chan_msg(fchan, level, msg) ftdm_log(level, "s%dc%d " msg, fchan->span_id, fchan->chan_id) +extern const char *FTDM_LEVEL_NAMES[9]; + static __inline__ void ftdm_abort(void) { #ifdef __cplusplus