]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: ss7 - added support for NADI value in sip x-headers
authorKonrad Hammel <konrad@sangoma.com>
Tue, 14 Sep 2010 15:14:15 +0000 (11:14 -0400)
committerKonrad Hammel <konrad@sangoma.com>
Tue, 14 Sep 2010 17:47:08 +0000 (13:47 -0400)
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_out.c

index 5064d48f17ea79152305960b8bcb5d1500b208d2..263b599ddc081ced086f404aaed9365438d71c0a 100644 (file)
@@ -82,6 +82,9 @@ ftdm_status_t handle_con_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
 
        sngss7_chan_data_t  *sngss7_info = NULL;
        ftdm_channel_t          *ftdmchan = NULL;
+       char                            nadi[2];
+
+       memset(nadi, '\0', sizeof(nadi));
 
        /* get the ftdmchan and ss7_chan_data from the circuit */
        if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
@@ -212,7 +215,8 @@ ftdm_status_t handle_con_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
                        }
 
                        /* add any special variables for the dialplan */
-                       /*ftdm_channel_add_var(ftdmchan, "ss7_stuff", "s");*/
+                       sprintf(nadi, "%d", siConEvnt->cgPtyNum.natAddrInd.val);
+                       ftdm_channel_add_var(ftdmchan, "ss7_nadi", nadi);
 
                        /* set the state of the channel to collecting...the rest is done by the chan monitor */
                        ftdm_set_state_locked(ftdmchan, FTDM_CHANNEL_STATE_COLLECT);
index 879fcd239f924412d007415b28a2218fb33a028c..311d87c7e2a51eed9e190ee2b9cd27c97d2ebc51 100644 (file)
@@ -73,8 +73,9 @@ void ft_to_sngss7_iam (ftdm_channel_t * ftdmchan)
 {
        SS7_FUNC_TRACE_ENTER (__FUNCTION__);
        
-       sngss7_chan_data_t *sngss7_info = ftdmchan->call_data;;
-       SiConEvnt iam;
+       sngss7_chan_data_t      *sngss7_info = ftdmchan->call_data;;
+       const char                      *nadi = NULL;
+       SiConEvnt                       iam;
        
        sngss7_info->suInstId   = get_unique_id ();
        sngss7_info->spInstId   = 0;
@@ -179,7 +180,17 @@ void ft_to_sngss7_iam (ftdm_channel_t * ftdmchan)
        
        /* copy down the calling number information */
        copy_cgPtyNum_to_sngss7 (&ftdmchan->caller_data, &iam.cgPtyNum);
-       
+
+       /* check if the user would like a custom NADI value for the calling Pty Num */
+       nadi = ftdm_channel_get_var(ftdmchan, "ss7_nadi");
+       if ((nadi != NULL) && (nadi != "")) {
+               SS7_DEBUG_CHAN(ftdmchan,"Found user supplied NADI value \"%s\"\n", nadi);
+               iam.cgPtyNum.natAddrInd.val     = atoi(nadi);
+       } else {
+               SS7_DEBUG_CHAN(ftdmchan,"No user supplied NADI value found, using \"3\" %s\n", " ");
+               iam.cgPtyNum.natAddrInd.val     = 0x03;
+       }
+
        sng_cc_con_request (sngss7_info->spId,
                                                sngss7_info->suInstId,
                                                sngss7_info->spInstId,