FreeTDM: fixing redirect information outgoing call bug

This commit is contained in:
James Zhang 2012-01-19 16:31:52 -05:00
parent 8eeb37a81b
commit 5ac80d3939
2 changed files with 15 additions and 0 deletions

View File

@ -252,8 +252,19 @@ ftdm_status_t handle_con_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
sprintf(var, "%d", sngss7_info->circuit->cic); sprintf(var, "%d", sngss7_info->circuit->cic);
sngss7_add_var(sngss7_info, "ss7_cic", var); sngss7_add_var(sngss7_info, "ss7_cic", var);
if (siConEvnt->orgPteCde.eh.pres) {
sprintf(var, "%d",(uint32_t)siConEvnt->orgPteCde.sigPointCode.val);
sngss7_add_var(sngss7_info, "ss7_opc", var);
SS7_DEBUG_CHAN(ftdmchan, " OPC = d%\n", (uint32_t)siConEvnt->orgPteCde.sigPointCode.val);
} else {
SS7_DEBUG_CHAN(ftdmchan, "No OPC information in IAM%s\n", " ");
}
/* original code, should be removed after review.
sprintf(var, "%d", g_ftdm_sngss7_data.cfg.isupIntf[sngss7_info->circuit->infId].spc ); sprintf(var, "%d", g_ftdm_sngss7_data.cfg.isupIntf[sngss7_info->circuit->infId].spc );
sngss7_add_var(sngss7_info, "ss7_opc", var); sngss7_add_var(sngss7_info, "ss7_opc", var);
*/
if (siConEvnt->callRef.callId.pres) { if (siConEvnt->callRef.callId.pres) {
/* %x expect an unsigned int so as callId is a U32, casting to uint32_t /* %x expect an unsigned int so as callId is a U32, casting to uint32_t

View File

@ -585,6 +585,7 @@ ftdm_status_t copy_redirgInfo_to_sngss7(ftdm_channel_t *ftdmchan, SiRedirInfo *r
val = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "ss7_rdinfo_indicator"); val = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "ss7_rdinfo_indicator");
if (!ftdm_strlen_zero(val)) { if (!ftdm_strlen_zero(val)) {
redirInfo->redirInd.val = atoi(val); redirInfo->redirInd.val = atoi(val);
redirInfo->redirInd.pres = 1;
bProceed = 1; bProceed = 1;
} else { } else {
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "No user supplied Redirection Information on Redirection Indicator\n"); ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "No user supplied Redirection Information on Redirection Indicator\n");
@ -593,6 +594,7 @@ ftdm_status_t copy_redirgInfo_to_sngss7(ftdm_channel_t *ftdmchan, SiRedirInfo *r
val = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "ss7_rdinfo_orig"); val = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "ss7_rdinfo_orig");
if (!ftdm_strlen_zero(val)) { if (!ftdm_strlen_zero(val)) {
redirInfo->origRedirReas.val = atoi(val); redirInfo->origRedirReas.val = atoi(val);
redirInfo->origRedirReas.pres = 1;
bProceed = 1; bProceed = 1;
} else { } else {
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "No user supplied Redirection Information on Original Reasons\n"); ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "No user supplied Redirection Information on Original Reasons\n");
@ -601,6 +603,7 @@ ftdm_status_t copy_redirgInfo_to_sngss7(ftdm_channel_t *ftdmchan, SiRedirInfo *r
val = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "ss7_rdinfo_count"); val = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "ss7_rdinfo_count");
if (!ftdm_strlen_zero(val)) { if (!ftdm_strlen_zero(val)) {
redirInfo->redirCnt.val = atoi(val); redirInfo->redirCnt.val = atoi(val);
redirInfo->redirCnt.pres= 1;
bProceed = 1; bProceed = 1;
} else { } else {
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "No user supplied Redirection Information on Redirection Count\n"); ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "No user supplied Redirection Information on Redirection Count\n");
@ -609,6 +612,7 @@ ftdm_status_t copy_redirgInfo_to_sngss7(ftdm_channel_t *ftdmchan, SiRedirInfo *r
val = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "ss7_rdinfo_reason"); val = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "ss7_rdinfo_reason");
if (!ftdm_strlen_zero(val)) { if (!ftdm_strlen_zero(val)) {
redirInfo->redirReas.val = atoi(val); redirInfo->redirReas.val = atoi(val);
redirInfo->redirReas.pres = 1;
bProceed = 1; bProceed = 1;
} else { } else {
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "No user supplied Redirection Information on Redirection Reasons\n"); ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "No user supplied Redirection Information on Redirection Reasons\n");