]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
ftmod_isdn: Use span trunk_mode to select default mode and print warning if final...
authorStefan Knoblich <stkn@openisdn.net>
Wed, 25 Jul 2012 09:03:41 +0000 (11:03 +0200)
committerStefan Knoblich <stkn@openisdn.net>
Wed, 25 Jul 2012 12:03:22 +0000 (14:03 +0200)
Same as ftmod_libpri.

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.c

index f5b957e7ae32f59a8718b4552c0a188ca3274d02..153f380cddcf7142bf2e8e57f336291f837e2eb2 100644 (file)
@@ -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;