]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: add configurable boost trace level
authorMoises Silva <moy@sangoma.com>
Tue, 25 May 2010 23:33:24 +0000 (19:33 -0400)
committerMoises Silva <moy@sangoma.com>
Tue, 25 May 2010 23:33:24 +0000 (19:33 -0400)
libs/freetdm/src/ftdm_io.c
libs/freetdm/src/ftmod/ftmod_sangoma_boost/ftmod_sangoma_boost.c
libs/freetdm/src/ftmod/ftmod_sangoma_boost/sangoma_boost_client.c
libs/freetdm/src/ftmod/ftmod_sangoma_boost/sangoma_boost_client.h
libs/freetdm/src/include/private/ftdm_core.h

index 01185c5844c14525733f6d34c01613046e8872a6..e461d14f96c50f638786c6e84c22298b2fe2085f 100644 (file)
@@ -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);
 
index 615f2500d371f90af435c92ca755a9996f96e635..ed3cb99d4e509f164f30e7fe82ae9ceb6d2f9b53 100644 (file)
@@ -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 | <sigmod_name> <command>"
+#define FTDM_BOOST_SYNTAX "list sigmods | <sigmod_name> <command> | tracelevel <span> <level>"
 /**
  * \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 <span> <level>\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) {
index d33415c80908e0111d3563f7127b1d22b5a52c57..982dd4794d9b11eea46dfd839f6a290c90549a2a 100644 (file)
@@ -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), 
index cabebdca4c2246d143b8b540122a5913b4655490..e333c4aba311ab721085349bf643a914e49c455f 100644 (file)
@@ -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;
index 56c58ba65464bc0866d80cfa00b7cd0bc6e33238..4e0bf9caf4c1aabb9607d365c221ebecb0cdc05f 100644 (file)
@@ -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