From 890ecc6d45935421523f0f1ee463739ca64d4637 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Wed, 25 Jul 2012 11:03:41 +0200 Subject: [PATCH] ftmod_isdn: Use span trunk_mode to select default mode and print warning if final modes do not match. Same as ftmod_libpri. Signed-off-by: Stefan Knoblich --- .../freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.c | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.c b/libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.c index f5b957e7ae..153f380cdd 100644 --- a/libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.c +++ b/libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.c @@ -2659,11 +2659,24 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(isdn_configure_span) isdn_data = malloc(sizeof(*isdn_data)); assert(isdn_data != NULL); - memset(isdn_data, 0, sizeof(*isdn_data)); - isdn_data->mode = Q931_TE; + memset(isdn_data, 0, sizeof(*isdn_data)); dialect = Q931_Dialect_Q931; + /* Use trunk_mode span parameter to set default */ + switch (ftdm_span_get_trunk_mode(span)) { + case FTDM_TRUNK_MODE_NET: + ftdm_log(FTDM_LOG_INFO, "Span '%s' [s%d] defaulting to NET mode\n", + ftdm_span_get_name(span), ftdm_span_get_id(span)); + isdn_data->mode = Q931_NT; + break; + default: + ftdm_log(FTDM_LOG_INFO, "Span '%s' [s%d] defaulting to USER mode\n", + ftdm_span_get_name(span), ftdm_span_get_id(span)); + isdn_data->mode = Q931_TE; + break; + } + for (i = 0; ftdm_parameters[i].var; i++) { const char *var = ftdm_parameters[i].var; const char *val = ftdm_parameters[i].val; @@ -2727,6 +2740,16 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(isdn_configure_span) digit_timeout = DEFAULT_DIGIT_TIMEOUT; } + /* Check if modes match and log a message if they do not. Just to be on the safe side. */ + if (isdn_data->mode == Q931_TE && ftdm_span_get_trunk_mode(span) == FTDM_TRUNK_MODE_NET) { + ftdm_log(FTDM_LOG_WARNING, "Span '%s' signalling set up for TE/CPE/USER mode, while port is running in NT/NET mode. You may want to check your 'trunk_mode' settings.\n", + ftdm_span_get_name(span)); + } + else if (isdn_data->mode == Q931_NT && ftdm_span_get_trunk_mode(span) == FTDM_TRUNK_MODE_CPE) { + ftdm_log(FTDM_LOG_WARNING, "Span '%s' signalling set up for NT/NET mode, while port is running in TE/CPE/USER mode. You may want to check your 'trunk_mode' settings.\n", + ftdm_span_get_name(span)); + } + /* allocate per b-chan data */ if (isdn_data->mode == Q931_NT) { ftdm_isdn_bchan_data_t *data;