With libpri, to avoid sending DISPLAY IE, set the opts param to omit_display
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@701 a93c3328-9c30-0410-af19-c9cd2b2d52af
This commit is contained in:
parent
79da28cdd7
commit
a6672fc558
|
@ -1956,12 +1956,12 @@ static switch_status_t load_config(void)
|
||||||
const char *o_switch = "dms100";
|
const char *o_switch = "dms100";
|
||||||
const char *o_dp = "unknown";
|
const char *o_dp = "unknown";
|
||||||
const char *o_l1 = "ulaw";
|
const char *o_l1 = "ulaw";
|
||||||
const char *o_debug = NULL;
|
const char *o_debug = "none";
|
||||||
|
const char* opts = "none";
|
||||||
|
|
||||||
uint32_t span_id = 0;
|
uint32_t span_id = 0;
|
||||||
zap_span_t *span = NULL;
|
zap_span_t *span = NULL;
|
||||||
uint32_t opts = 0;
|
|
||||||
|
|
||||||
for (param = switch_xml_child(myspan, "param"); param; param = param->next) {
|
for (param = switch_xml_child(myspan, "param"); param; param = param->next) {
|
||||||
char *var = (char *) switch_xml_attr_soft(param, "name");
|
char *var = (char *) switch_xml_attr_soft(param, "name");
|
||||||
|
@ -1979,8 +1979,8 @@ static switch_status_t load_config(void)
|
||||||
o_debug = val;
|
o_debug = val;
|
||||||
} else if (!strcasecmp(var, "context")) {
|
} else if (!strcasecmp(var, "context")) {
|
||||||
context = val;
|
context = val;
|
||||||
} else if (!strcasecmp(var, "suggest-channel") && switch_true(val)) {
|
} else if (!strcasecmp(var, "opts")) {
|
||||||
opts |= 1;
|
opts = val;
|
||||||
} else if (!strcasecmp(var, "dialplan")) {
|
} else if (!strcasecmp(var, "dialplan")) {
|
||||||
dialplan = val;
|
dialplan = val;
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,6 +71,25 @@ static void s_pri_message(struct pri *pri, char *s)
|
||||||
zap_log(ZAP_LOG_DEBUG, "%s", 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)
|
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_channel(sr, zchan->chan_id, 0, 0);
|
||||||
pri_sr_set_bearer(sr, 0, isdn_data->l1);
|
pri_sr_set_bearer(sr, 0, isdn_data->l1);
|
||||||
pri_sr_set_called(sr, zchan->caller_data.ani.digits, dp, 1);
|
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);
|
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)) {
|
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_channel_t *dchans[2] = {0};
|
||||||
zap_libpri_data_t *isdn_data;
|
zap_libpri_data_t *isdn_data;
|
||||||
char *var, *val;
|
char *var, *val;
|
||||||
int32_t opts = 0;
|
|
||||||
char *debug = NULL;
|
char *debug = NULL;
|
||||||
|
|
||||||
if (span->trunk_type >= ZAP_TRUNK_NONE) {
|
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));
|
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;
|
span->trunk_type = ZAP_TRUNK_T1;
|
||||||
|
@ -980,11 +999,10 @@ static ZIO_SIG_CONFIGURE_FUNCTION(zap_libpri_configure_span)
|
||||||
}
|
}
|
||||||
isdn_data->pswitch = str2switch(val);
|
isdn_data->pswitch = str2switch(val);
|
||||||
} else if (!strcasecmp(var, "opts")) {
|
} else if (!strcasecmp(var, "opts")) {
|
||||||
opts = va_arg(ap, uint32_t);
|
if (!(val = va_arg(ap, char *))) {
|
||||||
if (opts >= OZMOD_LIBPRI_OPT_MAX) {
|
break;
|
||||||
return ZAP_FAIL;
|
|
||||||
}
|
}
|
||||||
isdn_data->opts = opts;
|
isdn_data->opts = parse_opts(val);
|
||||||
} else if (!strcasecmp(var, "dp")) {
|
} else if (!strcasecmp(var, "dp")) {
|
||||||
if (!(val = va_arg(ap, char *))) {
|
if (!(val = va_arg(ap, char *))) {
|
||||||
break;
|
break;
|
||||||
|
@ -1021,7 +1039,7 @@ static ZIO_SIG_CONFIGURE_FUNCTION(zap_libpri_configure_span)
|
||||||
span->signal_type = ZAP_SIGTYPE_ISDN;
|
span->signal_type = ZAP_SIGTYPE_ISDN;
|
||||||
span->outgoing_call = isdn_outgoing_call;
|
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->channel_request = isdn_channel_request;
|
||||||
span->suggest_chan_id = 1;
|
span->suggest_chan_id = 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,8 +40,9 @@
|
||||||
typedef enum {
|
typedef enum {
|
||||||
OZMOD_LIBPRI_OPT_NONE = 0,
|
OZMOD_LIBPRI_OPT_NONE = 0,
|
||||||
OZMOD_LIBPRI_OPT_SUGGEST_CHANNEL = (1 << 0),
|
OZMOD_LIBPRI_OPT_SUGGEST_CHANNEL = (1 << 0),
|
||||||
|
OZMOD_LIBPRI_OPT_OMIT_DISPLAY_IE = (2 << 0),
|
||||||
OZMOD_LIBPRI_OPT_MAX = (2 << 0)
|
|
||||||
|
OZMOD_LIBPRI_OPT_MAX = (3 << 0)
|
||||||
} zap_isdn_opts_t;
|
} zap_isdn_opts_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|
Loading…
Reference in New Issue