]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
ftdm_ss7: Adding OPC and Call Reference Number to SIP x-headers
authorJames Zhang <jzhang@sangoma.com>
Fri, 30 Sep 2011 14:25:21 +0000 (10:25 -0400)
committerJames Zhang <jzhang@sangoma.com>
Thu, 6 Oct 2011 23:07:05 +0000 (19:07 -0400)
libs/freetdm/mod_freetdm/mod_freetdm.c
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c

index 043f353aa3dc3aa46dc40649e5f133205eca80f2..d18a647329b4357cb1821bb1f89853cfc257950c 100755 (executable)
@@ -1830,6 +1830,21 @@ ftdm_status_t ftdm_channel_from_event(ftdm_sigmsg_t *sigmsg, switch_core_session
 
                switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-Screen", "%d", channel_caller_data->screen);
                switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-Presentation", "%d", channel_caller_data->pres);
+               
+               var_value = ftdm_sigmsg_get_var(sigmsg, "ss7_opc");
+               if (!ftdm_strlen_zero(var_value)) {
+                       switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-OPC", "%s", var_value);
+               }
+               
+               var_value = ftdm_sigmsg_get_var(sigmsg, "ss7_lac");
+               if (!ftdm_strlen_zero(var_value)) {
+                       switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-LAC", "%s", var_value);
+               }
+               
+               var_value = ftdm_sigmsg_get_var(sigmsg, "ss7_crn");
+               if (!ftdm_strlen_zero(var_value)) {
+                       switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-CRN", "%s", var_value);
+               }
        }
 
        /* Add any call variable to the dial plan */
index bb6f19181b267bda88f4d442484e156fb24798f6..c625ff443cfe5ee8c1ebae0cdf8441baa4a638cc 100644 (file)
@@ -269,6 +269,14 @@ 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);
 
+                       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) {
+                               sprintf(var, "%u", (unsigned int)siConEvnt->callRef.callId.val);
+                               sngss7_add_var(sngss7_info, "ss7_crn", var);
+                       }
+                       
                        if (sngss7_info->circuit->transparent_iam) {
                                sngss7_save_iam(ftdmchan, siConEvnt);
                        }