diff --git a/libs/openzap/.update b/libs/openzap/.update index 5009a80d3a..e9475b68ed 100644 --- a/libs/openzap/.update +++ b/libs/openzap/.update @@ -1 +1 @@ -Tue Jun 3 17:09:07 EDT 2008 +Fri Oct 3 17:54:41 EDT 2008 diff --git a/libs/openzap/conf/openzap.conf.xml b/libs/openzap/conf/openzap.conf.xml index 8326505177..bfa2bc0391 100644 --- a/libs/openzap/conf/openzap.conf.xml +++ b/libs/openzap/conf/openzap.conf.xml @@ -5,6 +5,25 @@ <!--<param name="enable-analog-option" value="call-swap"/>--> <!--<param name="enable-analog-option" value="3-way"/>--> </settings> + <pri_spans> + <span name="PRI_1"> + <!-- Log Levels: none, alert, crit, err, warning, notice, info, debug --> + <param name="q921loglevel" value="alert"/> + <param name="q931loglevel" value="alert"/> + <param name="mode" value="user"/> + <param name="dialect" value="5ess"/> + <param name="dialplan" value="XML"/> + <param name="context" value="default"/> + </span> + <span name="PRI_2"> + <param name="q921loglevel" value="alert"/> + <param name="q931loglevel" value="alert"/> + <param name="mode" value="user"/> + <param name="dialect" value="5ess"/> + <param name="dialplan" value="XML"/> + <param name="context" value="default"/> + </span> + </pri_spans> <!-- one entry here per openzap span --> <analog_spans> <span id="1"> diff --git a/libs/openzap/mod_openzap/mod_openzap.c b/libs/openzap/mod_openzap/mod_openzap.c index 5ea4e7728d..1fa56ea393 100644 --- a/libs/openzap/mod_openzap/mod_openzap.c +++ b/libs/openzap/mod_openzap/mod_openzap.c @@ -1794,7 +1794,9 @@ static switch_status_t load_config(void) zap_span_t *span = NULL; char *tonegroup = NULL; uint32_t opts = 0; - + int q921loglevel = -1; + int q931loglevel = -1; + for (param = switch_xml_child(myspan, "param"); param; param = param->next) { char *var = (char *) switch_xml_attr_soft(param, "name"); char *val = (char *) switch_xml_attr_soft(param, "value"); @@ -1805,6 +1807,14 @@ static switch_status_t load_config(void) mode = val; } else if (!strcasecmp(var, "dialect")) { dialect = val; + } else if (!strcasecmp(var, "q921loglevel")) { + if ((q921loglevel = switch_log_str2level(val)) == SWITCH_LOG_INVALID) { + q921loglevel = -1; + } + } else if (!strcasecmp(var, "q931loglevel")) { + if ((q931loglevel = switch_log_str2level(val)) == SWITCH_LOG_INVALID) { + q931loglevel = -1; + } } else if (!strcasecmp(var, "context")) { context = val; } else if (!strcasecmp(var, "suggest-channel") && switch_true(val)) { @@ -1813,8 +1823,7 @@ static switch_status_t load_config(void) dialplan = val; } } - - + if (!id && !name) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "span missing required param 'id'\n"); continue; @@ -1849,6 +1858,8 @@ static switch_status_t load_config(void) if (zap_configure_span("isdn", span, on_clear_channel_signal, "mode", mode, "dialect", dialect, + "q921loglevel", q921loglevel, + "q931loglevel", q931loglevel, TAG_END) != ZAP_SUCCESS) { zap_log(ZAP_LOG_ERROR, "Error starting OpenZAP span %d mode: %d dialect: %d error: %s\n", span_id, mode, dialect, span->last_error); continue; diff --git a/libs/openzap/src/isdn/Q921.c b/libs/openzap/src/isdn/Q921.c index a3e5ec3783..7667203227 100644 --- a/libs/openzap/src/isdn/Q921.c +++ b/libs/openzap/src/isdn/Q921.c @@ -2993,6 +2993,12 @@ void Q921SetLogLevel(L2TRUNK trunk, Q921LogLevel_t level) if(!trunk) return; + if (level < Q921_LOG_NONE) { + level = Q921_LOG_NONE; + } else if (level > Q921_LOG_DEBUG) { + level = Q921_LOG_DEBUG; + } + trunk->loglevel = level; } diff --git a/libs/openzap/src/isdn/Q931.c b/libs/openzap/src/isdn/Q931.c index b29bcf97dd..a235253c3a 100644 --- a/libs/openzap/src/isdn/Q931.c +++ b/libs/openzap/src/isdn/Q931.c @@ -860,6 +860,15 @@ void Q931SetLogCB(Q931_TrunkInfo_t *trunk, Q931LogCB_t func, void *priv) */ void Q931SetLogLevel(Q931_TrunkInfo_t *trunk, Q931LogLevel_t level) { + if(!trunk) + return; + + if (level < Q931_LOG_NONE) { + level = Q931_LOG_NONE; + } else if (level > Q931_LOG_DEBUG) { + level = Q931_LOG_DEBUG; + } + trunk->loglevel = level; } diff --git a/libs/openzap/src/isdn/include/Q921.h b/libs/openzap/src/isdn/include/Q921.h index f09fa7577c..cb21a157ea 100644 --- a/libs/openzap/src/isdn/include/Q921.h +++ b/libs/openzap/src/isdn/include/Q921.h @@ -119,7 +119,10 @@ typedef enum /* Type of connection */ typedef enum { - Q921_LOG_NONE = 0, + Q921_LOG_NONE = -1, + Q921_LOG_EMERG = 0, + Q921_LOG_ALERT, + Q921_LOG_CRIT, Q921_LOG_ERROR, Q921_LOG_WARNING, Q921_LOG_NOTICE, diff --git a/libs/openzap/src/isdn/include/Q931.h b/libs/openzap/src/isdn/include/Q931.h index e05c7e9dce..9877912f79 100644 --- a/libs/openzap/src/isdn/include/Q931.h +++ b/libs/openzap/src/isdn/include/Q931.h @@ -634,12 +634,15 @@ typedef struct { typedef struct Q931_TrunkInfo Q931_TrunkInfo_t; typedef enum { - Q931_LOG_NONE = 0, - Q931_LOG_ERROR, - Q931_LOG_WARNING, - Q931_LOG_NOTICE, - Q931_LOG_INFO, - Q931_LOG_DEBUG + Q931_LOG_NONE = -1, + Q931_LOG_EMERG, + Q931_LOG_ALERT, + Q931_LOG_CRIT, + Q931_LOG_ERROR, + Q931_LOG_WARNING, + Q931_LOG_NOTICE, + Q931_LOG_INFO, + Q931_LOG_DEBUG } Q931LogLevel_t; typedef L3INT (*Q931Tx34CB_t) (void *,L3UCHAR *, L3INT); diff --git a/libs/openzap/src/ozmod/ozmod_isdn/ozmod_isdn.c b/libs/openzap/src/ozmod/ozmod_isdn/ozmod_isdn.c index a9170d0d2b..87d0cf595f 100644 --- a/libs/openzap/src/ozmod/ozmod_isdn/ozmod_isdn.c +++ b/libs/openzap/src/ozmod/ozmod_isdn/ozmod_isdn.c @@ -1518,34 +1518,8 @@ static int q931_rx_32(void *pvt, Q921DLMsg_t ind, L3UCHAR tei, L3UCHAR *msg, L3I static int zap_isdn_q921_log(void *pvt, Q921LogLevel_t level, char *msg, L2INT size) { zap_span_t *span = (zap_span_t *) pvt; - int loglevel = ZAP_LOG_LEVEL_DEBUG; - switch(level) { - case Q921_LOG_DEBUG: - loglevel = ZAP_LOG_LEVEL_DEBUG; - break; - - case Q921_LOG_INFO: - loglevel = ZAP_LOG_LEVEL_INFO; - break; - - case Q921_LOG_NOTICE: - loglevel = ZAP_LOG_LEVEL_NOTICE; - break; - - case Q921_LOG_WARNING: - loglevel = ZAP_LOG_LEVEL_WARNING; - break; - - case Q921_LOG_ERROR: - loglevel = ZAP_LOG_LEVEL_ERROR; - break; - - default: - return 0; - } - - zap_log("Span", "Q.921", span->span_id, loglevel, "%s", msg); + zap_log("Span", "Q.921", span->span_id, (int)level, "%s", msg); return 0; } @@ -1553,7 +1527,7 @@ static L3INT zap_isdn_q931_log(void *pvt, Q931LogLevel_t level, char *msg, L3INT { zap_span_t *span = (zap_span_t *) pvt; - zap_log("Span", "Q.931", span->span_id, ZAP_LOG_LEVEL_DEBUG, "%s", msg); + zap_log("Span", "Q.931", span->span_id, (int)level, "%s", msg); return 0; } @@ -1697,6 +1671,8 @@ static ZIO_SIG_CONFIGURE_FUNCTION(zap_isdn_configure_span) char *var, *val; Q931Dialect_t dialect = Q931_Dialect_National; uint32_t opts = 0; + int q921loglevel = 0; + int q931loglevel = 0; if (span->signal_type) { snprintf(span->last_error, sizeof(span->last_error), "Span is already configured for signalling [%d].", span->signal_type); @@ -1760,9 +1736,23 @@ static ZIO_SIG_CONFIGURE_FUNCTION(zap_isdn_configure_span) break; } tonemap = (const char *)val; + } else if (!strcasecmp(var, "q921loglevel")) { + q921loglevel = va_arg(ap, int); + if (q921loglevel < Q921_LOG_NONE) { + q921loglevel = Q921_LOG_NONE; + } else if (q921loglevel > Q921_LOG_DEBUG) { + q921loglevel = Q921_LOG_DEBUG; + } + } else if (!strcasecmp(var, "q931loglevel")) { + q931loglevel = va_arg(ap, int); + if (q931loglevel < Q931_LOG_NONE) { + q931loglevel = Q931_LOG_NONE; + } else if (q931loglevel > Q931_LOG_DEBUG) { + q931loglevel = Q931_LOG_DEBUG; + } } } - + span->start = zap_isdn_start; isdn_data->sig_cb = sig_cb; isdn_data->dchans[0] = dchans[0]; @@ -1781,7 +1771,7 @@ static ZIO_SIG_CONFIGURE_FUNCTION(zap_isdn_configure_span) &isdn_data->q931); Q921SetLogCB(&isdn_data->q921, &zap_isdn_q921_log, isdn_data); - Q921SetLogLevel(&isdn_data->q921, Q921_LOG_NONE); + Q921SetLogLevel(&isdn_data->q921, (Q921LogLevel_t)q921loglevel); Q931Api_InitTrunk(&isdn_data->q931, dialect, @@ -1794,7 +1784,7 @@ static ZIO_SIG_CONFIGURE_FUNCTION(zap_isdn_configure_span) span); Q931SetLogCB(&isdn_data->q931, &zap_isdn_q931_log, isdn_data); - Q931SetLogLevel(&isdn_data->q931, Q931_LOG_DEBUG); + Q931SetLogLevel(&isdn_data->q931, (Q931LogLevel_t)q931loglevel); isdn_data->q931.autoRestartAck = 1; isdn_data->q931.autoConnectAck = 0;