]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: Allow for backward compatibility.
authorNenad Corbic <ncorbic@sangoma.com>
Mon, 7 Nov 2011 05:08:38 +0000 (00:08 -0500)
committerNenad Corbic <ncorbic@sangoma.com>
Mon, 7 Nov 2011 05:08:38 +0000 (00:08 -0500)
         cpg_on_progress_media is default to TRUE if not xml option exists.
         transparent_iam_max_size added to ccspan.  Gloal value is used
         if transparent_iam_max_size is not in ccSpan.

libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.h
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_xml.c

index 4a0a331594a130ebfd9134e1f8a6adca01e5f1b4..b25b21f0ef212842a7aa8bf8c6a131aee286e5d3 100644 (file)
@@ -340,10 +340,11 @@ typedef struct sng_isup_ckt {
        /* END - Generic Number defaults */
                        
        uint32_t                min_digits;
-       uint8_t                 itx_auto_reply;
+       uint32_t                transparent_iam_max_size;
        uint8_t                 transparent_iam;
        uint8_t                 cpg_on_progress_media;
        uint8_t                 cpg_on_progress;
+       uint8_t                 itx_auto_reply;
        void                    *obj;
        uint16_t                t3;
        uint32_t                t10;
index 7b53a18eba25dfa67cbeaf53e0a2f4a24ff79d53..4d81e6b1f478c7a5eae71798a322f96040dc58f6 100644 (file)
@@ -2532,8 +2532,9 @@ ftdm_status_t sngss7_save_iam(ftdm_channel_t *ftdmchan, SiConEvnt *siConEvnt)
 
        ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "IAM variable length:%d\n", strlen(url_encoded_iam));
 
-       if (strlen(url_encoded_iam) > g_ftdm_sngss7_data.cfg.transparent_iam_max_size) {
-               ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "IAM variable length exceeds max size (len:%d max:%d) \n", strlen(url_encoded_iam), g_ftdm_sngss7_data.cfg.transparent_iam_max_size);
+       if (strlen(url_encoded_iam) > sngss7_info->circuit->transparent_iam_max_size) {
+               ftdm_log_chan(ftdmchan, FTDM_LOG_CRIT, "IAM variable length exceeds max size (len:%d max:%d) \n", 
+                       strlen(url_encoded_iam), sngss7_info->circuit->transparent_iam_max_size);
                ret_val = FTDM_FAIL;
                goto done;
        }
index 045c1835ef76f0815b440dd8f78fb68f8f3dfab6..2fbd2e5631afa974dc7875cf34db2de12301d774 100644 (file)
@@ -126,10 +126,11 @@ typedef struct sng_ccSpan
        uint32_t                rdnis_nadi;
        uint32_t                loc_nadi;
        uint32_t                min_digits;
-       uint8_t                 itx_auto_reply;
+       uint32_t                transparent_iam_max_size;
        uint8_t                 transparent_iam;
        uint8_t         cpg_on_progress_media;
        uint8_t         cpg_on_progress;
+       uint8_t                 itx_auto_reply;
        uint32_t                t3;
        uint32_t                t10;
        uint32_t                t12;
@@ -194,6 +195,7 @@ static int ftmod_ss7_next_timeslot(char *ch_map, sng_timeslot_t *timeslot);
 /******************************************************************************/
 
 /* FUNCTIONS ******************************************************************/
+
 int ftmod_ss7_parse_xml(ftdm_conf_parameter_t *ftdm_parameters, ftdm_span_t *span)
 {
        int                                     i = 0;
@@ -203,6 +205,7 @@ int ftmod_ss7_parse_xml(ftdm_conf_parameter_t *ftdm_parameters, ftdm_span_t *spa
        sng_route_t                     self_route;
        sng_span_t                      sngSpan;
 
+
        /* clean out the isup ckt */
        memset(&sngSpan, 0x0, sizeof(sngSpan));
 
@@ -455,6 +458,9 @@ static int ftmod_ss7_parse_sng_gen(ftdm_conf_node_t *sng_gen)
        int                                             num_parms = sng_gen->n_parameters;
        int                                             i = 0;
 
+       /* Set the transparent_iam_max_size to default value */
+       g_ftdm_sngss7_data.cfg.transparent_iam_max_size=800;
+
        /* extract all the information from the parameters */
        for (i = 0; i < num_parms; i++) {
        /**************************************************************************/
@@ -1855,6 +1861,7 @@ static int ftmod_ss7_parse_cc_span(ftdm_conf_node_t *cc_span)
        /* initalize the ccSpan structure */
        memset(&sng_ccSpan, 0x0, sizeof(sng_ccSpan));
 
+
        /* confirm that we are looking at an mtp_link */
        if (strcasecmp(cc_span->name, "cc_span")) {
                SS7_ERROR("We're looking at \"%s\"...but we're supposed to be looking at \"cc_span\"!\n",cc_span->name);
@@ -1863,6 +1870,14 @@ static int ftmod_ss7_parse_cc_span(ftdm_conf_node_t *cc_span)
                SS7_DEBUG("Parsing \"cc_span\"...\n");
        }
 
+       /* Backward compatible. 
+     * If cpg_on_progress_media is not in the config file
+     * default the cpg on progress_media to TRUE */
+       sng_ccSpan.cpg_on_progress_media=FTDM_TRUE;
+       /* If transparent_iam_max_size is not set in cc spans
+     * use the global value */
+       sng_ccSpan.transparent_iam_max_size=g_ftdm_sngss7_data.cfg.transparent_iam_max_size;
+
 
        for (i = 0; i < num_parms; i++) {
        /**************************************************************************/
@@ -1908,14 +1923,15 @@ static int ftmod_ss7_parse_cc_span(ftdm_conf_node_t *cc_span)
                        sng_ccSpan.transparent_iam = ftdm_true(parm->val);
                        SS7_DEBUG("Found transparent_iam %d\n", sng_ccSpan.transparent_iam);
 #endif
+               } else if (!strcasecmp(parm->var, "transparent_iam_max_size")) {
+                       sng_ccSpan.transparent_iam_max_size = ftdm_true(parm->val);
+                       SS7_DEBUG("Found transparent_iam_max_size %d\n", sng_ccSpan.transparent_iam_max_size);
                } else if (!strcasecmp(parm->var, "cpg_on_progress_media")) {
                        sng_ccSpan.cpg_on_progress_media = ftdm_true(parm->val);
                        SS7_DEBUG("Found cpg_on_progress_media %d\n", sng_ccSpan.cpg_on_progress_media);
-
                } else if (!strcasecmp(parm->var, "cpg_on_progress")) {
                        sng_ccSpan.cpg_on_progress = ftdm_true(parm->val);
-                       SS7_DEBUG("Found cpg_on_progress_media %d\n", sng_ccSpan.cpg_on_progress);
-
+                       SS7_DEBUG("Found cpg_on_progress %d\n", sng_ccSpan.cpg_on_progress);
                } else if (!strcasecmp(parm->var, "cicbase")) {
                /**********************************************************************/
                        sng_ccSpan.cicbase = atoi(parm->val);
@@ -2951,6 +2967,7 @@ static int ftmod_ss7_fill_in_ccSpan(sng_ccSpan_t *ccSpan)
                g_ftdm_sngss7_data.cfg.isupCkt[x].min_digits                                    = ccSpan->min_digits;
                g_ftdm_sngss7_data.cfg.isupCkt[x].itx_auto_reply                                = ccSpan->itx_auto_reply;
                g_ftdm_sngss7_data.cfg.isupCkt[x].transparent_iam                               = ccSpan->transparent_iam;
+               g_ftdm_sngss7_data.cfg.isupCkt[x].transparent_iam_max_size              = ccSpan->transparent_iam_max_size;
                g_ftdm_sngss7_data.cfg.isupCkt[x].cpg_on_progress_media                 = ccSpan->cpg_on_progress_media;
                g_ftdm_sngss7_data.cfg.isupCkt[x].cpg_on_progress                           = ccSpan->cpg_on_progress;