From 7a598e8f33961fffab369aec7a0241aa77162223 Mon Sep 17 00:00:00 2001 From: David Yat Sin Date: Fri, 30 Sep 2011 16:45:46 -0400 Subject: [PATCH] Added option for Dynamic TEI on BRI PTP --- .../src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.h | 1 + .../src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c | 5 ++++- .../ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c | 8 +++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.h b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.h index 8d36511b91..e1de27a889 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.h +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.h @@ -262,6 +262,7 @@ typedef struct sngisdn_span_data { uint8_t raw_trace_q921; /* TODO: combine with trace_flags */ uint8_t timer_t3; uint8_t restart_opt; + uint8_t dynamic_tei; uint8_t restart_timeout; uint8_t force_sending_complete; char* local_numbers[SNGISDN_NUM_LOCAL_NUMBERS]; diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c index b53c37fbe9..363ecd2769 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c @@ -284,6 +284,7 @@ ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_ signal_data->ignore_cause_value = SNGISDN_OPT_DEFAULT; signal_data->timer_t3 = 8; signal_data->restart_opt = SNGISDN_OPT_DEFAULT; + signal_data->dynamic_tei = SNGISDN_OPT_DEFAULT; signal_data->link_id = span->span_id; signal_data->transfer_timeout = 20000; signal_data->att_remove_dtmf = SNGISDN_OPT_DEFAULT; @@ -361,7 +362,9 @@ ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_ parse_yesno(var, val, &signal_data->restart_opt); } else if (!strcasecmp(var, "channel-restart-timeout")) { signal_data->restart_timeout = atoi(val); - } else if (!strcasecmp(var, "local-number")) { + } else if (!strcasecmp(var, "dynamic-tei")) { + parse_yesno(var, val, &signal_data->dynamic_tei); + } else if (!strcasecmp(var, "local-number")) { if (add_local_number(val, span) != FTDM_SUCCESS) { return FTDM_FAIL; } diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c index 9402cd34a8..a92831d425 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_cfg.c @@ -846,7 +846,7 @@ ftdm_status_t sngisdn_stack_cfg_q931_dlsap(ftdm_span_t *span) cfg.t.cfg.s.inDLSAP.dChannelNum = 0; /* Unused for BRI */ cfg.t.cfg.s.inDLSAP.nmbBearChan = NUM_BRI_CHANNELS_PER_SPAN; cfg.t.cfg.s.inDLSAP.firstBChanNum = 1; - cfg.t.cfg.s.inDLSAP.callRefLen = 1; + cfg.t.cfg.s.inDLSAP.callRefLen = 1; cfg.t.cfg.s.inDLSAP.teiAlloc = IN_STATIC; cfg.t.cfg.s.inDLSAP.intCfg = IN_INTCFG_PTPT; break; @@ -863,6 +863,12 @@ ftdm_status_t sngisdn_stack_cfg_q931_dlsap(ftdm_span_t *span) return FTDM_FAIL; } + /* Override TEI teiAlloc Option if user specified it */ + if (signal_data->dynamic_tei != SNGISDN_OPT_DEFAULT ) { + ftdm_log(FTDM_LOG_DEBUG, "%s: TEI allocation set to %s\n", (signal_data->dynamic_tei == SNGISDN_OPT_TRUE)? "dynamic": "static"); + cfg.t.cfg.s.inDLSAP.teiAlloc = (signal_data->dynamic_tei==SNGISDN_OPT_TRUE)?IN_DYNAMIC:IN_STATIC; + } + if (sng_isdn_q931_config(&pst, &cfg)) { return FTDM_FAIL; }