]> 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>
Fri, 30 Sep 2011 14:25:21 +0000 (10:25 -0400)
libs/freetdm/mod_freetdm/mod_freetdm.c
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c

index caee4dcec97d7d5e2132a0b1728822358e574093..8501bb1ce2cff0df5108b7a63a1c861373f54310 100755 (executable)
@@ -1760,6 +1760,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 213c4c8d4dd8ad0b68ff61a164a8b637b4d3a6cf..41e012991943a372ef82ea2b0ced32d586fc97d8 100644 (file)
@@ -219,6 +219,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);
                        }