]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: adding x-ocn-* headers for incoming sip calls
authorJames Zhang <jzhang@sangoma.com>
Thu, 16 Feb 2012 21:49:51 +0000 (16:49 -0500)
committerJames Zhang <jzhang@sangoma.com>
Thu, 16 Feb 2012 21:49:51 +0000 (16:49 -0500)
libs/freetdm/mod_freetdm/mod_freetdm.c
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c

index f9381ce1338af968f4ba676d24179213aa1aca12..c3e5c486db68e1d5956f50d5aa7e5cb1d35b2e64 100755 (executable)
@@ -26,6 +26,7 @@
  * Anthony Minessale II <anthm@freeswitch.org>
  * Moises Silva <moy@sangoma.com>
  * David Yat Sin <dyatsin@sangoma.com>
+ * James Zhang <jzhang@sangoma.com>
  *
  *
  * mod_freetdm.c -- FreeTDM Endpoint Module
index 9c3bd6542627e269b4b7aa2a5bce32eaf4ca2572..f080352d4a8c53de999ed605823f9b8588549c61 100644 (file)
@@ -200,6 +200,7 @@ ftdm_status_t handle_con_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
                                SS7_INFO_CHAN(ftdmchan,"No Called party (DNIS) information in IAM!%s\n", " ");
                        }
 
+                       copy_ocn_from_sngss7(ftdmchan, &siConEvnt->origCdNum);
                        copy_redirgNum_from_sngss7(ftdmchan, &siConEvnt->redirgNum);
                        copy_redirgInfo_from_sngss7(ftdmchan, &siConEvnt->redirInfo);
                        copy_genNmb_from_sngss7(ftdmchan, &siConEvnt->genNmb);
index 4557c00a10741198e98c9d3ebc94b8c4a345d956..e7af4bb6e014b4229613f2617ac2472822fa6540 100644 (file)
@@ -640,7 +640,41 @@ ftdm_status_t copy_redirgInfo_to_sngss7(ftdm_channel_t *ftdmchan, SiRedirInfo *r
 
 ftdm_status_t copy_ocn_from_sngss7(ftdm_channel_t *ftdmchan, SiOrigCdNum *origCdNum)
 {
-       return FTDM_FAIL;
+
+       char val[20];
+       sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;
+
+       if (origCdNum->eh.pres != PRSNT_NODEF ) {
+               ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "No Original Called Number available\n");
+               return FTDM_SUCCESS;
+       }
+
+       
+       if (origCdNum->addrSig.pres == PRSNT_NODEF) {
+               copy_tknStr_from_sngss7(origCdNum->addrSig, val, origCdNum->oddEven);
+               ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Original Called Number digits:%s\n", val);
+               sngss7_add_var(sngss7_info, "ss7_ocn", val);
+       }
+
+       if (origCdNum->natAddr.pres == PRSNT_NODEF) {
+               snprintf(val, sizeof(val), "%d", origCdNum->natAddr.val);
+               ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Original Called Number - NADI:%s\n", val);
+               sngss7_add_var(sngss7_info, "ss7_ocn_nadi", val);
+       }
+
+       if (origCdNum->numPlan.pres == PRSNT_NODEF) {
+               snprintf(val, sizeof(val), "%d", origCdNum->numPlan.val);
+               ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Original Called Number -plan:%s\n", val);
+               sngss7_add_var(sngss7_info, "ss7_ocn_plan", val);
+       }
+
+       if (origCdNum->presRest.pres == PRSNT_NODEF) {
+               snprintf(val, sizeof(val), "%d", origCdNum->presRest.val);
+               ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Original Called Number - presentation:%s\n", val);
+               sngss7_add_var(sngss7_info, "ss7_ocn_pres", val);
+       }
+               
+       return FTDM_SUCCESS;
 }
 
 ftdm_status_t copy_ocn_to_sngss7(ftdm_channel_t *ftdmchan, SiOrigCdNum *origCdNum)