From 5ac80d39399a366ee72aa80cbd2e12aa100016c1 Mon Sep 17 00:00:00 2001 From: James Zhang Date: Thu, 19 Jan 2012 16:31:52 -0500 Subject: [PATCH] FreeTDM: fixing redirect information outgoing call bug --- .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c | 11 +++++++++++ .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c index 0497955059..0bed14c2e6 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c @@ -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); 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 ); sngss7_add_var(sngss7_info, "ss7_opc", var); + */ if (siConEvnt->callRef.callId.pres) { /* %x expect an unsigned int so as callId is a U32, casting to uint32_t diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c index 3230292675..59777b048b 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c @@ -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"); if (!ftdm_strlen_zero(val)) { redirInfo->redirInd.val = atoi(val); + redirInfo->redirInd.pres = 1; bProceed = 1; } else { 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"); if (!ftdm_strlen_zero(val)) { redirInfo->origRedirReas.val = atoi(val); + redirInfo->origRedirReas.pres = 1; bProceed = 1; } else { 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"); if (!ftdm_strlen_zero(val)) { redirInfo->redirCnt.val = atoi(val); + redirInfo->redirCnt.pres= 1; bProceed = 1; } else { 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"); if (!ftdm_strlen_zero(val)) { redirInfo->redirReas.val = atoi(val); + redirInfo->redirReas.pres = 1; bProceed = 1; } else { ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "No user supplied Redirection Information on Redirection Reasons\n");