]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FreeTDM: fix for SPIROU
authorJames Zhang <jzhang@sangoma.com>
Thu, 26 Jan 2012 23:00:34 +0000 (18:00 -0500)
committerJames Zhang <jzhang@sangoma.com>
Thu, 26 Jan 2012 23:00:34 +0000 (18:00 -0500)
           - adding freetdm_iam_fwd_ind_isdn_access_ind (value must be 0 or 1)
             to modify forward call indicator's ISDN access indicator value in
             transparent IAM

libs/freetdm/mod_freetdm/mod_freetdm.c
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_out.c
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c

index c2712621da983d1a064f26bf8059fe4b83299c0f..cdcb8ca1e0a85dd2b34de4da98f0434b66887e13 100755 (executable)
@@ -1523,13 +1523,16 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi
                caller_data.pres = FTDM_PRES_RESTRICTED;
        }
 
+       if ((var = channel_get_variable(session, var_event, "freetdm_iam_fwd_ind_isdn_access_ind"))) {
+               ftdm_usrmsg_add_var(&usrmsg, "iam_fwd_ind_isdn_access_ind", var);
+       }
+
        if ((var = channel_get_variable(session, var_event, "freetdm_iam_loc_pres"))) {
                ftdm_usrmsg_add_var(&usrmsg, "iam_loc_pres", var);
        }
        if ((var = channel_get_variable(session, var_event, "freetdm_bearer_capability"))) {
                caller_data.bearer_capability = (uint8_t)atoi(var);
        }
-       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "freetdm_bearer_capability is set to %s \n", var );
        
        if ((var = channel_get_variable(session, var_event, "freetdm_bearer_layer1"))) {
                caller_data.bearer_layer1 = (uint8_t)atoi(var);
index a5311e9afcc93c8877facc297e240f2175b08397..d25b3342f0485f400194bdd2b49cbf344a752e42 100644 (file)
@@ -70,6 +70,9 @@ void ft_to_sngss7_iam (ftdm_channel_t * ftdmchan)
 
                /* Location Number information */
                copy_locPtyNum_to_sngss7(ftdmchan, &iam.cgPtyNum1);
+
+               /* Forward Call Indicators */
+               copy_fwdCallInd_to_sngss7(ftdmchan, &iam.fwdCallInd);
        } else {
                /* Nature of Connection Indicators */
                copy_natConInd_to_sngss7(ftdmchan, &iam.natConInd);
index 957649fa213cc9f974e612ba9e655d4f75ef4343..c25597cd405b204ea0a1a9356d8ec84449d6b447 100644 (file)
@@ -763,6 +763,8 @@ ftdm_status_t copy_natConInd_to_sngss7(ftdm_channel_t *ftdmchan, SiNatConInd *na
 
 ftdm_status_t copy_fwdCallInd_to_sngss7(ftdm_channel_t *ftdmchan, SiFwdCallInd *fwdCallInd)
 {
+       const char *val = NULL;
+       int acc_val = ISDNACC_ISDN;
        sngss7_chan_data_t      *sngss7_info = ftdmchan->call_data;
        
        fwdCallInd->eh.pres                             = PRSNT_NODEF;
@@ -779,7 +781,13 @@ ftdm_status_t copy_fwdCallInd_to_sngss7(ftdm_channel_t *ftdmchan, SiFwdCallInd *
        fwdCallInd->isdnUsrPrtPrfInd.pres       = PRSNT_NODEF;
        fwdCallInd->isdnUsrPrtPrfInd.val        = PREF_PREFAW;
        fwdCallInd->isdnAccInd.pres             = PRSNT_NODEF;
-       fwdCallInd->isdnAccInd.val                      = ISDNACC_ISDN;
+
+       val = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "iam_fwd_ind_isdn_access_ind");
+       if (!ftdm_strlen_zero(val)) {
+               acc_val = (int)atoi(val);
+       }
+
+       fwdCallInd->isdnAccInd.val                      = acc_val;
        fwdCallInd->sccpMethInd.pres            = PRSNT_NODEF;
        fwdCallInd->sccpMethInd.val             = SCCPMTH_NOIND;