mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-11-11 12:07:06 +00:00
Merge branch 'master' of git.sangoma.com:/smg_freeswitch
This commit is contained in:
commit
3611780899
34 files changed
+1448
-753
No files matched your search
@@ -84,6 +84,8 @@ static ftdm_status_t parse_switchtype(const char* switch_name, ftdm_span_t *span
|
||||
signal_data->switchtype = SNGISDN_SWITCH_4ESS;
|
||||
} else if (!strcasecmp(switch_name, "dms100")) {
|
||||
signal_data->switchtype = SNGISDN_SWITCH_DMS100;
|
||||
} else if (!strcasecmp(switch_name, "qsig")) {
|
||||
signal_data->switchtype = SNGISDN_SWITCH_QSIG;
|
||||
} else {
|
||||
ftdm_log(FTDM_LOG_ERROR, "%s:Unsupported switchtype %s for trunktype:%s\n", span->name, switch_name, ftdm_trunk_type2str(span->trunk_type));
|
||||
return FTDM_FAIL;
|
||||
|
||||
@@ -667,25 +667,33 @@ ftdm_status_t sngisdn_stack_cfg_q931_dlsap(ftdm_span_t *span)
|
||||
cfg.t.cfg.s.inDLSAP.maxBSrvCnt = 2;
|
||||
cfg.t.cfg.s.inDLSAP.maxDSrvCnt = 2;
|
||||
#endif /* ISDN_SRV */
|
||||
|
||||
if (signal_data->signalling == SNGISDN_SIGNALING_NET) {
|
||||
cfg.t.cfg.s.inDLSAP.ackOpt = TRUE;
|
||||
cfg.t.cfg.s.inDLSAP.intType = NETWORK;
|
||||
cfg.t.cfg.s.inDLSAP.clrGlr = FALSE; /* in case of glare, do not clear local call */
|
||||
cfg.t.cfg.s.inDLSAP.statEnqOpt = TRUE;
|
||||
|
||||
if (signal_data->switchtype == SNGISDN_SWITCH_EUROISDN ||
|
||||
signal_data->switchtype == SNGISDN_SWITCH_INSNET) {
|
||||
cfg.t.cfg.s.inDLSAP.rstOpt = FALSE;
|
||||
} else {
|
||||
cfg.t.cfg.s.inDLSAP.rstOpt = TRUE;
|
||||
}
|
||||
} else {
|
||||
cfg.t.cfg.s.inDLSAP.ackOpt = FALSE;
|
||||
cfg.t.cfg.s.inDLSAP.intType = USER;
|
||||
if (signal_data->switchtype == SNGISDN_SWITCH_QSIG) {
|
||||
cfg.t.cfg.s.inDLSAP.ackOpt = TRUE;
|
||||
cfg.t.cfg.s.inDLSAP.intType = SYM_USER;
|
||||
cfg.t.cfg.s.inDLSAP.clrGlr = TRUE; /* in case of glare, clear local call */
|
||||
cfg.t.cfg.s.inDLSAP.statEnqOpt = FALSE;
|
||||
cfg.t.cfg.s.inDLSAP.rstOpt = FALSE;
|
||||
} else {
|
||||
if (signal_data->signalling == SNGISDN_SIGNALING_NET) {
|
||||
cfg.t.cfg.s.inDLSAP.ackOpt = TRUE;
|
||||
cfg.t.cfg.s.inDLSAP.intType = NETWORK;
|
||||
cfg.t.cfg.s.inDLSAP.clrGlr = FALSE; /* in case of glare, do not clear local call */
|
||||
cfg.t.cfg.s.inDLSAP.statEnqOpt = TRUE;
|
||||
|
||||
if (signal_data->switchtype == SNGISDN_SWITCH_EUROISDN ||
|
||||
signal_data->switchtype == SNGISDN_SWITCH_INSNET) {
|
||||
cfg.t.cfg.s.inDLSAP.rstOpt = FALSE;
|
||||
} else {
|
||||
cfg.t.cfg.s.inDLSAP.rstOpt = TRUE;
|
||||
}
|
||||
} else {
|
||||
cfg.t.cfg.s.inDLSAP.ackOpt = FALSE;
|
||||
cfg.t.cfg.s.inDLSAP.intType = USER;
|
||||
cfg.t.cfg.s.inDLSAP.clrGlr = TRUE; /* in case of glare, clear local call */
|
||||
cfg.t.cfg.s.inDLSAP.statEnqOpt = FALSE;
|
||||
cfg.t.cfg.s.inDLSAP.rstOpt = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/* Override the restart options if user selected that option */
|
||||
|
||||
@@ -801,6 +801,23 @@ void sngisdn_process_fac_ind (sngisdn_event_data_t *sngisdn_event)
|
||||
|
||||
ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Processing FACILITY IND (suId:%u suInstId:%u spInstId:%u)\n", suId, suInstId, spInstId);
|
||||
|
||||
if (signal_data->facility_ie_decode == SNGISDN_OPT_FALSE) {
|
||||
/* If Facility decoding is disabled, we do not care about current call state, just pass event up to user */
|
||||
ftdm_sigmsg_t sigev;
|
||||
if (facEvnt->facElmt.facStr.pres) {
|
||||
get_facility_ie_str(ftdmchan, &facEvnt->facElmt.facStr.val[2], facEvnt->facElmt.facStr.len-2);
|
||||
}
|
||||
memset(&sigev, 0, sizeof(sigev));
|
||||
sigev.chan_id = ftdmchan->chan_id;
|
||||
sigev.span_id = ftdmchan->span_id;
|
||||
sigev.channel = ftdmchan;
|
||||
|
||||
sigev.event_id = FTDM_SIGEVENT_FACILITY;
|
||||
ftdm_span_send_signal(ftdmchan->span, &sigev);
|
||||
ISDN_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (ftdmchan->state) {
|
||||
case FTDM_CHANNEL_STATE_GET_CALLERID:
|
||||
/* Update the caller ID Name */
|
||||
|
||||
Reference in new issue
Block a user