]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
With libpri, to avoid sending DISPLAY IE, set the opts param to omit_display
authorMathieu Rene <mrene@avgs.ca>
Thu, 19 Mar 2009 20:15:39 +0000 (20:15 +0000)
committerMathieu Rene <mrene@avgs.ca>
Thu, 19 Mar 2009 20:15:39 +0000 (20:15 +0000)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@701 a93c3328-9c30-0410-af19-c9cd2b2d52af

libs/openzap/mod_openzap/mod_openzap.c
libs/openzap/src/ozmod/ozmod_libpri/ozmod_libpri.c
libs/openzap/src/ozmod/ozmod_libpri/ozmod_libpri.h

index 1f6e02e45e9cf1ebcb69a66a97842de7ecbee549..f026debdafabc8a6ad26f0e7ab1571381d2a94cf 100644 (file)
@@ -1956,12 +1956,12 @@ static switch_status_t load_config(void)
                        const char *o_switch = "dms100";
                        const char *o_dp = "unknown";
                        const char *o_l1 = "ulaw";
-                       const char *o_debug = NULL;
-
-                       
+                       const char *o_debug = "none";
+                       const char* opts = "none";      
+                                       
                        uint32_t span_id = 0;
                        zap_span_t *span = NULL;
-                       uint32_t opts = 0;
+
                        
                        for (param = switch_xml_child(myspan, "param"); param; param = param->next) {
                                char *var = (char *) switch_xml_attr_soft(param, "name");
@@ -1979,8 +1979,8 @@ static switch_status_t load_config(void)
                                        o_debug = val;
                                } else if (!strcasecmp(var, "context")) {
                                        context = val;
-                               } else if (!strcasecmp(var, "suggest-channel") && switch_true(val)) {
-                                       opts |= 1;
+                               } else if (!strcasecmp(var, "opts")) {
+                                       opts = val;
                                } else if (!strcasecmp(var, "dialplan")) {
                                        dialplan = val;
                                }
index 0693edd71c09526ebb8d3e893dbcb755a6cdfac7..f2352b921d33757eca305619011da90571537e10 100644 (file)
@@ -71,6 +71,25 @@ static void s_pri_message(struct pri *pri, char *s)
                zap_log(ZAP_LOG_DEBUG, "%s", s);
 }
 
+static uint32_t parse_opts(const char *in)
+{
+       uint32_t flags = 0;
+       
+       if (!in) {
+               return 0;
+       }
+       
+       if (strstr(in, "suggest_channel")) {
+               flags |= OZMOD_LIBPRI_OPT_SUGGEST_CHANNEL;
+       }
+       
+       if (strstr(in, "omit_display")) {
+               flags |= OZMOD_LIBPRI_OPT_OMIT_DISPLAY_IE;
+       }
+
+       return flags;
+}
+
 
 static int parse_debug(const char *in)
 {
@@ -467,7 +486,8 @@ static __inline__ void state_advance(zap_channel_t *zchan)
                        pri_sr_set_channel(sr, zchan->chan_id, 0, 0);
                        pri_sr_set_bearer(sr, 0, isdn_data->l1);
                        pri_sr_set_called(sr, zchan->caller_data.ani.digits, dp, 1);
-                       pri_sr_set_caller(sr, zchan->caller_data.cid_num.digits, zchan->caller_data.cid_name, dp, PRES_ALLOWED_USER_NUMBER_PASSED_SCREEN);
+                       pri_sr_set_caller(sr, zchan->caller_data.cid_num.digits, (isdn_data->opts & OZMOD_LIBPRI_OPT_OMIT_DISPLAY_IE ? NULL : zchan->caller_data.cid_name),
+                                               dp, PRES_ALLOWED_USER_NUMBER_PASSED_SCREEN);
                        pri_sr_set_redirecting(sr, zchan->caller_data.cid_num.digits, dp, PRES_ALLOWED_USER_NUMBER_PASSED_SCREEN, PRI_REDIR_UNCONDITIONAL);
                        
                        if (pri_setup(isdn_data->spri.pri, call, sr)) {
@@ -926,9 +946,8 @@ static ZIO_SIG_CONFIGURE_FUNCTION(zap_libpri_configure_span)
        //zap_channel_t *dchans[2] = {0};
        zap_libpri_data_t *isdn_data;
        char *var, *val;
-       int32_t opts = 0;
        char *debug = NULL;
-       
+
        if (span->trunk_type >= ZAP_TRUNK_NONE) {
                zap_log(ZAP_LOG_WARNING, "Invalid trunk type '%s' defaulting to T1.\n", zap_trunk_type2str(span->trunk_type));
                span->trunk_type = ZAP_TRUNK_T1;
@@ -980,11 +999,10 @@ static ZIO_SIG_CONFIGURE_FUNCTION(zap_libpri_configure_span)
                        }
                        isdn_data->pswitch = str2switch(val);
                } else if (!strcasecmp(var, "opts")) {
-                       opts = va_arg(ap, uint32_t);
-                       if  (opts >= OZMOD_LIBPRI_OPT_MAX) {
-                               return ZAP_FAIL;
+                       if (!(val = va_arg(ap, char *))) {
+                               break;
                        }
-                       isdn_data->opts = opts;
+                       isdn_data->opts = parse_opts(val);
                } else if (!strcasecmp(var, "dp")) {
                        if (!(val = va_arg(ap, char *))) {
                                break;
@@ -1021,7 +1039,7 @@ static ZIO_SIG_CONFIGURE_FUNCTION(zap_libpri_configure_span)
        span->signal_type = ZAP_SIGTYPE_ISDN;
        span->outgoing_call = isdn_outgoing_call;
 
-       if ((opts & OZMOD_LIBPRI_OPT_SUGGEST_CHANNEL)) {
+       if ((isdn_data->opts & OZMOD_LIBPRI_OPT_SUGGEST_CHANNEL)) {
                span->channel_request = isdn_channel_request;
                span->suggest_chan_id = 1;
        }
index 64a0c05ae330a8ce66567003ac47171b723445d9..ec00cecef584f1a9bfa91d36aa630d7e5e9d5ae4 100644 (file)
@@ -40,8 +40,9 @@
 typedef enum {
        OZMOD_LIBPRI_OPT_NONE = 0,
        OZMOD_LIBPRI_OPT_SUGGEST_CHANNEL = (1 << 0),
-
-       OZMOD_LIBPRI_OPT_MAX = (2 << 0)
+       OZMOD_LIBPRI_OPT_OMIT_DISPLAY_IE = (2 << 0),
+       
+       OZMOD_LIBPRI_OPT_MAX = (3 << 0)
 } zap_isdn_opts_t;
 
 typedef enum {