Merge remote branch 'qa-master/releases.3.4' into releases.3.4
This commit is contained in:
commit
d5e90dfbf0
|
@ -48,35 +48,7 @@ static int ftmod_ss7_enable_isap(int suId);
|
||||||
static int ftmod_ss7_enable_nsap(int suId);
|
static int ftmod_ss7_enable_nsap(int suId);
|
||||||
static int ftmod_ss7_enable_mtpLinkSet(int lnkSetId);
|
static int ftmod_ss7_enable_mtpLinkSet(int lnkSetId);
|
||||||
|
|
||||||
int ftmod_ss7_inhibit_mtp3link(uint32_t id);
|
|
||||||
int ftmod_ss7_uninhibit_mtp3link(uint32_t id);
|
|
||||||
|
|
||||||
int ftmod_ss7_bind_mtp3link(uint32_t id);
|
|
||||||
int ftmod_ss7_unbind_mtp3link(uint32_t id);
|
|
||||||
int ftmod_ss7_activate_mtp3link(uint32_t id);
|
|
||||||
int ftmod_ss7_deactivate_mtp3link(uint32_t id);
|
|
||||||
int ftmod_ss7_deactivate2_mtp3link(uint32_t id);
|
|
||||||
|
|
||||||
int ftmod_ss7_activate_mtplinkSet(uint32_t id);
|
|
||||||
int ftmod_ss7_deactivate_mtplinkSet(uint32_t id);
|
|
||||||
int ftmod_ss7_deactivate2_mtplinkSet(uint32_t id);
|
|
||||||
|
|
||||||
int ftmod_ss7_lpo_mtp3link(uint32_t id);
|
|
||||||
int ftmod_ss7_lpr_mtp3link(uint32_t id);
|
|
||||||
|
|
||||||
int ftmod_ss7_shutdown_isup(void);
|
|
||||||
int ftmod_ss7_shutdown_mtp3(void);
|
|
||||||
int ftmod_ss7_shutdown_mtp2(void);
|
|
||||||
int ftmod_ss7_shutdown_relay(void);
|
|
||||||
int ftmod_ss7_disable_relay_channel(uint32_t chanId);
|
|
||||||
|
|
||||||
int ftmod_ss7_disable_grp_mtp3Link(uint32_t procId);
|
|
||||||
int ftmod_ss7_enable_grp_mtp3Link(uint32_t procId);
|
|
||||||
|
|
||||||
int ftmod_ss7_disable_grp_mtp2Link(uint32_t procId);
|
|
||||||
|
|
||||||
int ftmod_ss7_block_isup_ckt(uint32_t cktId);
|
|
||||||
int ftmod_ss7_unblock_isup_ckt(uint32_t cktId);
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
/* FUNCTIONS ******************************************************************/
|
/* FUNCTIONS ******************************************************************/
|
||||||
|
@ -779,7 +751,14 @@ int ftmod_ss7_disable_grp_mtp3Link(uint32_t procId)
|
||||||
cntrl.t.cntrl.action = AUBND_DIS; /* disable and unbind */
|
cntrl.t.cntrl.action = AUBND_DIS; /* disable and unbind */
|
||||||
cntrl.t.cntrl.subAction = SAGR_DSTPROCID; /* specificed element */
|
cntrl.t.cntrl.subAction = SAGR_DSTPROCID; /* specificed element */
|
||||||
|
|
||||||
return (sng_cntrl_mtp3(&pst, &cntrl));
|
if (g_ftdm_sngss7_data.cfg.procId == procId) {
|
||||||
|
SS7_DEBUG("Executing MTP3 cntrl command local pid =%i\n",procId);
|
||||||
|
return (sng_cntrl_mtp3(&pst, &cntrl));
|
||||||
|
} else {
|
||||||
|
SS7_WARN("Executing MTP3 cntrl command different local=%i target=%i\n",
|
||||||
|
g_ftdm_sngss7_data.cfg.procId,procId);
|
||||||
|
return (sng_cntrl_mtp3_nowait(&pst, &cntrl));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -811,7 +790,14 @@ int ftmod_ss7_enable_grp_mtp3Link(uint32_t procId)
|
||||||
cntrl.t.cntrl.action = ABND_ENA; /* bind and enable */
|
cntrl.t.cntrl.action = ABND_ENA; /* bind and enable */
|
||||||
cntrl.t.cntrl.subAction = SAGR_DSTPROCID; /* specificed element */
|
cntrl.t.cntrl.subAction = SAGR_DSTPROCID; /* specificed element */
|
||||||
|
|
||||||
return (sng_cntrl_mtp3(&pst, &cntrl));
|
if (g_ftdm_sngss7_data.cfg.procId == procId) {
|
||||||
|
SS7_DEBUG("Executing MTP3 cntrl command local pid =%i\n",procId);
|
||||||
|
return (sng_cntrl_mtp3(&pst, &cntrl));
|
||||||
|
} else {
|
||||||
|
SS7_WARN("Executing MTP3 cntrl command different local=%i target=%i\n",
|
||||||
|
g_ftdm_sngss7_data.cfg.procId,procId);
|
||||||
|
return (sng_cntrl_mtp3_nowait(&pst, &cntrl));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -848,7 +834,7 @@ int ftmod_ss7_disable_grp_mtp2Link(uint32_t procId)
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
int ftmod_ss7_block_isup_ckt(uint32_t cktId)
|
int __ftmod_ss7_block_isup_ckt(uint32_t cktId, ftdm_bool_t wait)
|
||||||
{
|
{
|
||||||
SiMngmt cntrl;
|
SiMngmt cntrl;
|
||||||
Pst pst;
|
Pst pst;
|
||||||
|
@ -876,7 +862,11 @@ int ftmod_ss7_block_isup_ckt(uint32_t cktId)
|
||||||
cntrl.t.cntrl.action = ADISIMM; /* block via BLO */
|
cntrl.t.cntrl.action = ADISIMM; /* block via BLO */
|
||||||
cntrl.t.cntrl.subAction = SAELMNT; /* specificed element */
|
cntrl.t.cntrl.subAction = SAELMNT; /* specificed element */
|
||||||
|
|
||||||
return (sng_cntrl_isup(&pst, &cntrl));
|
if (wait == FTDM_TRUE) {
|
||||||
|
return (sng_cntrl_isup(&pst, &cntrl));
|
||||||
|
} else {
|
||||||
|
return (sng_cntrl_isup_nowait(&pst, &cntrl));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
|
@ -87,6 +87,8 @@ ftdm_status_t handle_olm_msg(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
|
|
||||||
/* FUNCTIONS ******************************************************************/
|
/* FUNCTIONS ******************************************************************/
|
||||||
|
|
||||||
|
#define ftdm_running_return(var) if (!ftdm_running()) { SS7_ERROR("Error: ftdm_running is not set! Ignoring\n"); return var; }
|
||||||
|
|
||||||
ftdm_status_t handle_con_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, SiConEvnt *siConEvnt)
|
ftdm_status_t handle_con_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, SiConEvnt *siConEvnt)
|
||||||
{
|
{
|
||||||
SS7_FUNC_TRACE_ENTER(__FUNCTION__);
|
SS7_FUNC_TRACE_ENTER(__FUNCTION__);
|
||||||
|
@ -97,6 +99,8 @@ ftdm_status_t handle_con_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
|
|
||||||
memset(var, '\0', sizeof(var));
|
memset(var, '\0', sizeof(var));
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* get the ftdmchan and ss7_chan_data from the circuit */
|
/* get the ftdmchan and ss7_chan_data from the circuit */
|
||||||
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
||||||
SS7_ERROR("Failed to extract channel data for circuit = %d!\n", circuit);
|
SS7_ERROR("Failed to extract channel data for circuit = %d!\n", circuit);
|
||||||
|
@ -341,6 +345,8 @@ ftdm_status_t handle_con_sta(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info ;
|
sngss7_chan_data_t *sngss7_info ;
|
||||||
ftdm_channel_t *ftdmchan;
|
ftdm_channel_t *ftdmchan;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* get the ftdmchan and ss7_chan_data from the circuit */
|
/* get the ftdmchan and ss7_chan_data from the circuit */
|
||||||
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
||||||
|
@ -596,6 +602,8 @@ ftdm_status_t handle_con_cfm(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info ;
|
sngss7_chan_data_t *sngss7_info ;
|
||||||
ftdm_channel_t *ftdmchan;
|
ftdm_channel_t *ftdmchan;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* get the ftdmchan and ss7_chan_data from the circuit */
|
/* get the ftdmchan and ss7_chan_data from the circuit */
|
||||||
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
||||||
|
@ -671,6 +679,8 @@ ftdm_status_t handle_rel_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info ;
|
sngss7_chan_data_t *sngss7_info ;
|
||||||
ftdm_channel_t *ftdmchan;
|
ftdm_channel_t *ftdmchan;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* get the ftdmchan and ss7_chan_data from the circuit */
|
/* get the ftdmchan and ss7_chan_data from the circuit */
|
||||||
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
||||||
|
@ -793,6 +803,8 @@ ftdm_status_t handle_rel_cfm(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info ;
|
sngss7_chan_data_t *sngss7_info ;
|
||||||
ftdm_channel_t *ftdmchan;
|
ftdm_channel_t *ftdmchan;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* get the ftdmchan and ss7_chan_data from the circuit */
|
/* get the ftdmchan and ss7_chan_data from the circuit */
|
||||||
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
||||||
|
@ -844,6 +856,8 @@ ftdm_status_t handle_dat_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info ;
|
sngss7_chan_data_t *sngss7_info ;
|
||||||
ftdm_channel_t *ftdmchan;
|
ftdm_channel_t *ftdmchan;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* get the ftdmchan and ss7_chan_data from the circuit */
|
/* get the ftdmchan and ss7_chan_data from the circuit */
|
||||||
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
||||||
|
@ -871,6 +885,8 @@ ftdm_status_t handle_fac_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info ;
|
sngss7_chan_data_t *sngss7_info ;
|
||||||
ftdm_channel_t *ftdmchan;
|
ftdm_channel_t *ftdmchan;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* get the ftdmchan and ss7_chan_data from the circuit */
|
/* get the ftdmchan and ss7_chan_data from the circuit */
|
||||||
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
||||||
|
@ -898,6 +914,8 @@ ftdm_status_t handle_fac_cfm(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info ;
|
sngss7_chan_data_t *sngss7_info ;
|
||||||
ftdm_channel_t *ftdmchan;
|
ftdm_channel_t *ftdmchan;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* get the ftdmchan and ss7_chan_data from the circuit */
|
/* get the ftdmchan and ss7_chan_data from the circuit */
|
||||||
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
||||||
|
@ -925,6 +943,8 @@ ftdm_status_t handle_umsg_ind(uint32_t suInstId, uint32_t spInstId, uint32_t cir
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info ;
|
sngss7_chan_data_t *sngss7_info ;
|
||||||
ftdm_channel_t *ftdmchan;
|
ftdm_channel_t *ftdmchan;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* get the ftdmchan and ss7_chan_data from the circuit */
|
/* get the ftdmchan and ss7_chan_data from the circuit */
|
||||||
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
||||||
|
@ -952,6 +972,8 @@ ftdm_status_t handle_susp_ind(uint32_t suInstId, uint32_t spInstId, uint32_t cir
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info ;
|
sngss7_chan_data_t *sngss7_info ;
|
||||||
ftdm_channel_t *ftdmchan;
|
ftdm_channel_t *ftdmchan;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* get the ftdmchan and ss7_chan_data from the circuit */
|
/* get the ftdmchan and ss7_chan_data from the circuit */
|
||||||
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
||||||
|
@ -979,6 +1001,8 @@ ftdm_status_t handle_resm_ind(uint32_t suInstId, uint32_t spInstId, uint32_t cir
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info ;
|
sngss7_chan_data_t *sngss7_info ;
|
||||||
ftdm_channel_t *ftdmchan;
|
ftdm_channel_t *ftdmchan;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* get the ftdmchan and ss7_chan_data from the circuit */
|
/* get the ftdmchan and ss7_chan_data from the circuit */
|
||||||
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
if (extract_chan_data(circuit, &sngss7_info, &ftdmchan)) {
|
||||||
|
@ -1003,6 +1027,8 @@ ftdm_status_t handle_resm_ind(uint32_t suInstId, uint32_t spInstId, uint32_t cir
|
||||||
ftdm_status_t handle_sta_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, uint8_t globalFlg, uint8_t evntType, SiStaEvnt *siStaEvnt)
|
ftdm_status_t handle_sta_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, uint8_t globalFlg, uint8_t evntType, SiStaEvnt *siStaEvnt)
|
||||||
{
|
{
|
||||||
SS7_FUNC_TRACE_ENTER(__FUNCTION__);
|
SS7_FUNC_TRACE_ENTER(__FUNCTION__);
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is active on our side otherwise move to the next circuit */
|
/* confirm that the circuit is active on our side otherwise move to the next circuit */
|
||||||
if (!sngss7_test_flag(&g_ftdm_sngss7_data.cfg.isupCkt[circuit], SNGSS7_ACTIVE)) {
|
if (!sngss7_test_flag(&g_ftdm_sngss7_data.cfg.isupCkt[circuit], SNGSS7_ACTIVE)) {
|
||||||
|
@ -1203,6 +1229,8 @@ ftdm_status_t handle_reattempt(uint32_t suInstId, uint32_t spInstId, uint32_t ci
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info = NULL;
|
sngss7_chan_data_t *sngss7_info = NULL;
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
@ -1266,6 +1294,8 @@ ftdm_status_t handle_pause(uint32_t suInstId, uint32_t spInstId, uint32_t circui
|
||||||
int infId;
|
int infId;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* extract the affected infId from the circuit structure */
|
/* extract the affected infId from the circuit structure */
|
||||||
infId = g_ftdm_sngss7_data.cfg.isupCkt[circuit].infId;
|
infId = g_ftdm_sngss7_data.cfg.isupCkt[circuit].infId;
|
||||||
|
|
||||||
|
@ -1330,6 +1360,8 @@ ftdm_status_t handle_resume(uint32_t suInstId, uint32_t spInstId, uint32_t circu
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
int infId;
|
int infId;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* extract the affect infId from the circuit structure */
|
/* extract the affect infId from the circuit structure */
|
||||||
infId = g_ftdm_sngss7_data.cfg.isupCkt[circuit].infId;
|
infId = g_ftdm_sngss7_data.cfg.isupCkt[circuit].infId;
|
||||||
|
@ -1394,6 +1426,8 @@ ftdm_status_t handle_cot_start(uint32_t suInstId, uint32_t spInstId, uint32_t ci
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info = NULL;
|
sngss7_chan_data_t *sngss7_info = NULL;
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
@ -1449,6 +1483,8 @@ ftdm_status_t handle_cot_stop(uint32_t suInstId, uint32_t spInstId, uint32_t cir
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info = NULL;
|
sngss7_chan_data_t *sngss7_info = NULL;
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
@ -1494,6 +1530,8 @@ ftdm_status_t handle_cot(uint32_t suInstId, uint32_t spInstId, uint32_t circuit,
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info = NULL;
|
sngss7_chan_data_t *sngss7_info = NULL;
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
@ -1562,6 +1600,8 @@ ftdm_status_t handle_blo_req(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info = NULL;
|
sngss7_chan_data_t *sngss7_info = NULL;
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
@ -1612,6 +1652,8 @@ ftdm_status_t handle_blo_rsp(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info = NULL;
|
sngss7_chan_data_t *sngss7_info = NULL;
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
@ -1653,6 +1695,8 @@ ftdm_status_t handle_ubl_req(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info = NULL;
|
sngss7_chan_data_t *sngss7_info = NULL;
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
@ -1741,6 +1785,8 @@ ftdm_status_t handle_rsc_req(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info = NULL;
|
sngss7_chan_data_t *sngss7_info = NULL;
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
@ -1800,6 +1846,8 @@ ftdm_status_t handle_local_rsc_req(uint32_t suInstId, uint32_t spInstId, uint32_
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info = NULL;
|
sngss7_chan_data_t *sngss7_info = NULL;
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
@ -1858,6 +1906,8 @@ ftdm_status_t handle_rsc_rsp(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info = NULL;
|
sngss7_chan_data_t *sngss7_info = NULL;
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
@ -1948,6 +1998,8 @@ ftdm_status_t handle_grs_req(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
sngss7_span_data_t *sngss7_span = NULL;
|
sngss7_span_data_t *sngss7_span = NULL;
|
||||||
int range = 0;
|
int range = 0;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
@ -2005,6 +2057,8 @@ ftdm_status_t handle_grs_rsp(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
sngss7_span_data_t *sngss7_span = NULL;
|
sngss7_span_data_t *sngss7_span = NULL;
|
||||||
int range = 0;
|
int range = 0;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
@ -2069,6 +2123,8 @@ ftdm_status_t handle_local_blk(uint32_t suInstId, uint32_t spInstId, uint32_t ci
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info = NULL;
|
sngss7_chan_data_t *sngss7_info = NULL;
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
@ -2119,6 +2175,8 @@ ftdm_status_t handle_local_ubl(uint32_t suInstId, uint32_t spInstId, uint32_t ci
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info = NULL;
|
sngss7_chan_data_t *sngss7_info = NULL;
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
@ -2174,6 +2232,7 @@ ftdm_status_t handle_ucic(uint32_t suInstId, uint32_t spInstId, uint32_t circuit
|
||||||
sngss7_span_data_t *sngss7_span = NULL;
|
sngss7_span_data_t *sngss7_span = NULL;
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
@ -2212,6 +2271,8 @@ ftdm_status_t handle_ucic(uint32_t suInstId, uint32_t spInstId, uint32_t circuit
|
||||||
cinfo->ucic.range = cinfo->tx_grs.range;
|
cinfo->ucic.range = cinfo->tx_grs.range;
|
||||||
ftdm_set_flag(sngss7_span, SNGSS7_UCIC_PENDING);
|
ftdm_set_flag(sngss7_span, SNGSS7_UCIC_PENDING);
|
||||||
|
|
||||||
|
SS7_WARN("Set span SNGSS7_UCIC_PENDING for ISUP circuit = %d!\n", circuit);
|
||||||
|
|
||||||
ftdm_channel_unlock(fchan);
|
ftdm_channel_unlock(fchan);
|
||||||
|
|
||||||
goto done;
|
goto done;
|
||||||
|
@ -2224,6 +2285,7 @@ ftdm_status_t handle_ucic(uint32_t suInstId, uint32_t spInstId, uint32_t circuit
|
||||||
ftdm_mutex_lock(ftdmchan->mutex);
|
ftdm_mutex_lock(ftdmchan->mutex);
|
||||||
|
|
||||||
/* throw the ckt block flag */
|
/* throw the ckt block flag */
|
||||||
|
SS7_DEBUG("Set FLAG_CKT_UCIC_BLOCK for ISUP circuit = %d!\n", circuit);
|
||||||
sngss7_set_ckt_blk_flag(sngss7_info, FLAG_CKT_UCIC_BLOCK);
|
sngss7_set_ckt_blk_flag(sngss7_info, FLAG_CKT_UCIC_BLOCK);
|
||||||
|
|
||||||
/* set the channel to suspended state */
|
/* set the channel to suspended state */
|
||||||
|
@ -2255,6 +2317,8 @@ ftdm_status_t handle_cgb_req(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
int bit = 0;
|
int bit = 0;
|
||||||
int x;
|
int x;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
memset(&status[0], '\0', sizeof(status));
|
memset(&status[0], '\0', sizeof(status));
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
|
@ -2401,6 +2465,8 @@ ftdm_status_t handle_cgu_req(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
int bit = 0;
|
int bit = 0;
|
||||||
int x;
|
int x;
|
||||||
ftdm_sigmsg_t sigev;
|
ftdm_sigmsg_t sigev;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
memset(&sigev, 0, sizeof (sigev));
|
memset(&sigev, 0, sizeof (sigev));
|
||||||
memset(&status[0], '\0', sizeof(status));
|
memset(&status[0], '\0', sizeof(status));
|
||||||
|
@ -2538,6 +2604,8 @@ ftdm_status_t handle_olm_msg(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
|
|
||||||
sngss7_chan_data_t *sngss7_info = NULL;
|
sngss7_chan_data_t *sngss7_info = NULL;
|
||||||
ftdm_channel_t *ftdmchan = NULL;
|
ftdm_channel_t *ftdmchan = NULL;
|
||||||
|
|
||||||
|
ftdm_running_return(FTDM_FAIL);
|
||||||
|
|
||||||
/* confirm that the circuit is voice channel */
|
/* confirm that the circuit is voice channel */
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != SNG_CKT_VOICE) {
|
||||||
|
|
|
@ -791,7 +791,7 @@ void handle_sng_relay_alarm(Pst *pst, RyMngmt *sta)
|
||||||
break;
|
break;
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
case (LRY_USTA_UP): /* channel up */
|
case (LRY_USTA_UP): /* channel up */
|
||||||
ftdm_log(FTDM_LOG_ERROR,"[RELAY] Channel UP: tx procId %d: channel %d\n",
|
ftdm_log(FTDM_LOG_INFO,"[RELAY] Channel UP: tx procId %d: channel %d\n",
|
||||||
sta->t.usta.s.ryUpUsta.sendPid,
|
sta->t.usta.s.ryUpUsta.sendPid,
|
||||||
sta->t.usta.s.ryUpUsta.id);
|
sta->t.usta.s.ryUpUsta.id);
|
||||||
|
|
||||||
|
|
|
@ -289,6 +289,8 @@ static void handle_hw_alarm(ftdm_event_t *e)
|
||||||
int x = 0;
|
int x = 0;
|
||||||
|
|
||||||
ftdm_assert(e != NULL, "Null event!\n");
|
ftdm_assert(e != NULL, "Null event!\n");
|
||||||
|
|
||||||
|
SS7_DEBUG("handle_hw_alarm event\n");
|
||||||
|
|
||||||
for (x = (g_ftdm_sngss7_data.cfg.procId * MAX_CIC_MAP_LENGTH) + 1; g_ftdm_sngss7_data.cfg.isupCkt[x].id != 0; x++) {
|
for (x = (g_ftdm_sngss7_data.cfg.procId * MAX_CIC_MAP_LENGTH) + 1; g_ftdm_sngss7_data.cfg.isupCkt[x].id != 0; x++) {
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[x].type == SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[x].type == SNG_CKT_VOICE) {
|
||||||
|
@ -298,15 +300,20 @@ static void handle_hw_alarm(ftdm_event_t *e)
|
||||||
if (e->channel->span_id == ftdmchan->physical_span_id &&
|
if (e->channel->span_id == ftdmchan->physical_span_id &&
|
||||||
e->channel->chan_id == ftdmchan->physical_chan_id) {
|
e->channel->chan_id == ftdmchan->physical_chan_id) {
|
||||||
if (e->enum_id == FTDM_OOB_ALARM_TRAP) {
|
if (e->enum_id == FTDM_OOB_ALARM_TRAP) {
|
||||||
|
SS7_DEBUG("handle_hw_alarm: Set FLAG_GRP_HW_BLOCK_TX\n");
|
||||||
sngss7_set_ckt_blk_flag(ss7_info, FLAG_GRP_HW_BLOCK_TX);
|
sngss7_set_ckt_blk_flag(ss7_info, FLAG_GRP_HW_BLOCK_TX);
|
||||||
if (ftdmchan->state != FTDM_CHANNEL_STATE_SUSPENDED) {
|
if (ftdmchan->state != FTDM_CHANNEL_STATE_SUSPENDED) {
|
||||||
ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_SUSPENDED);
|
ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_SUSPENDED);
|
||||||
}
|
}
|
||||||
} else {
|
} else if (e->enum_id == FTDM_OOB_ALARM_CLEAR) {
|
||||||
sngss7_set_ckt_blk_flag(ss7_info, FLAG_GRP_HW_UNBLK_TX);
|
SS7_DEBUG("handle_hw_alarm: Clear\n");
|
||||||
sngss7_clear_ckt_blk_flag(ss7_info, FLAG_GRP_HW_BLOCK_TX);
|
if (sngss7_set_ckt_blk_flag(ss7_info, FLAG_GRP_HW_BLOCK_TX)) {
|
||||||
if (ftdmchan->state != FTDM_CHANNEL_STATE_SUSPENDED) {
|
sngss7_set_ckt_blk_flag(ss7_info, FLAG_GRP_HW_UNBLK_TX);
|
||||||
ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_SUSPENDED);
|
sngss7_clear_ckt_blk_flag(ss7_info, FLAG_GRP_HW_BLOCK_TX);
|
||||||
|
SS7_DEBUG("handle_hw_alarm: Setting FLAG_GRP_HW_UNBLK_TX\n");
|
||||||
|
if (ftdmchan->state != FTDM_CHANNEL_STATE_SUSPENDED) {
|
||||||
|
ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_SUSPENDED);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -360,9 +367,12 @@ static void *ftdm_sangoma_ss7_run(ftdm_thread_t * me, void *obj)
|
||||||
if (ftdmchan->alarm_flags != 0) { /* we'll send out block */
|
if (ftdmchan->alarm_flags != 0) { /* we'll send out block */
|
||||||
sngss7_set_ckt_blk_flag(ss7_info, FLAG_GRP_HW_BLOCK_TX );
|
sngss7_set_ckt_blk_flag(ss7_info, FLAG_GRP_HW_BLOCK_TX );
|
||||||
} else { /* we'll send out reset */
|
} else { /* we'll send out reset */
|
||||||
sngss7_clear_ckt_blk_flag( ss7_info, FLAG_GRP_HW_BLOCK_TX );
|
if (sngss7_test_ckt_blk_flag(ss7_info, FLAG_GRP_HW_BLOCK_TX )) {
|
||||||
sngss7_clear_ckt_blk_flag( ss7_info, FLAG_GRP_HW_BLOCK_TX_DN );
|
sngss7_clear_ckt_blk_flag( ss7_info, FLAG_GRP_HW_BLOCK_TX );
|
||||||
sngss7_set_ckt_blk_flag (ss7_info, FLAG_GRP_HW_UNBLK_TX);
|
sngss7_clear_ckt_blk_flag( ss7_info, FLAG_GRP_HW_BLOCK_TX_DN );
|
||||||
|
sngss7_set_ckt_blk_flag (ss7_info, FLAG_GRP_HW_UNBLK_TX);
|
||||||
|
SS7_DEBUG("b_alarm_test FLAG_GRP_HW_UNBLK_TX\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
usleep(50);
|
usleep(50);
|
||||||
|
@ -1024,6 +1034,10 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
|
||||||
break;
|
break;
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
case FTDM_CHANNEL_STATE_RESTART: /* CICs needs a Reset */
|
case FTDM_CHANNEL_STATE_RESTART: /* CICs needs a Reset */
|
||||||
|
|
||||||
|
SS7_DEBUG_CHAN(ftdmchan,"RESTART: Current flags: ckt=0x%X, blk=0x%X\n",
|
||||||
|
sngss7_info->ckt_flags,
|
||||||
|
sngss7_info->blk_flags);
|
||||||
|
|
||||||
if (sngss7_test_ckt_blk_flag(sngss7_info, FLAG_CKT_UCIC_BLOCK)) {
|
if (sngss7_test_ckt_blk_flag(sngss7_info, FLAG_CKT_UCIC_BLOCK)) {
|
||||||
if ((sngss7_test_ckt_flag(sngss7_info, FLAG_RESET_RX)) ||
|
if ((sngss7_test_ckt_flag(sngss7_info, FLAG_RESET_RX)) ||
|
||||||
|
@ -1139,7 +1153,7 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
case FTDM_CHANNEL_STATE_SUSPENDED: /* circuit has been blocked */
|
case FTDM_CHANNEL_STATE_SUSPENDED: /* circuit has been blocked */
|
||||||
|
|
||||||
SS7_DEBUG_CHAN(ftdmchan,"Current flags: ckt=0x%X, blk=0x%X\n",
|
SS7_DEBUG_CHAN(ftdmchan,"SUSPEND: Current flags: ckt=0x%X, blk=0x%X\n",
|
||||||
sngss7_info->ckt_flags,
|
sngss7_info->ckt_flags,
|
||||||
sngss7_info->blk_flags);
|
sngss7_info->blk_flags);
|
||||||
|
|
||||||
|
@ -1243,6 +1257,25 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
|
||||||
if (sngss7_test_ckt_blk_flag(sngss7_info, FLAG_GRP_HW_UNBLK_TX)) {
|
if (sngss7_test_ckt_blk_flag(sngss7_info, FLAG_GRP_HW_UNBLK_TX)) {
|
||||||
SS7_DEBUG_CHAN(ftdmchan, "Processing FLAG_GRP_HW_UNBLK_TX flag %s\n", "");
|
SS7_DEBUG_CHAN(ftdmchan, "Processing FLAG_GRP_HW_UNBLK_TX flag %s\n", "");
|
||||||
|
|
||||||
|
if (sngss7_clear_ckt_blk_flag(sngss7_info, FLAG_GRP_HW_BLOCK_TX) &&
|
||||||
|
sngss7_clear_ckt_blk_flag(sngss7_info, FLAG_GRP_HW_BLOCK_TX_DN)) {
|
||||||
|
|
||||||
|
/* Block was sent out we must send an unblock */
|
||||||
|
/* Do not send an unblock if we also have Management block
|
||||||
|
enabled */
|
||||||
|
|
||||||
|
if (!sngss7_test_ckt_blk_flag(sngss7_info, ( FLAG_CKT_MN_BLOCK_TX
|
||||||
|
| FLAG_CKT_MN_BLOCK_TX
|
||||||
|
| FLAG_GRP_MN_BLOCK_TX
|
||||||
|
| FLAG_GRP_MN_BLOCK_TX_DN
|
||||||
|
)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
ft_to_sngss7_ubl(ftdmchan);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
sngss7_clear_ckt_blk_flag(sngss7_info, FLAG_GRP_HW_BLOCK_TX);
|
sngss7_clear_ckt_blk_flag(sngss7_info, FLAG_GRP_HW_BLOCK_TX);
|
||||||
sngss7_clear_ckt_blk_flag(sngss7_info, FLAG_GRP_HW_BLOCK_TX_DN);
|
sngss7_clear_ckt_blk_flag(sngss7_info, FLAG_GRP_HW_BLOCK_TX_DN);
|
||||||
sngss7_clear_ckt_blk_flag(sngss7_info, FLAG_GRP_HW_UNBLK_TX);
|
sngss7_clear_ckt_blk_flag(sngss7_info, FLAG_GRP_HW_UNBLK_TX);
|
||||||
|
@ -1256,6 +1289,8 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
|
||||||
| FLAG_CKT_MN_BLOCK_RX_DN
|
| FLAG_CKT_MN_BLOCK_RX_DN
|
||||||
| FLAG_GRP_MN_BLOCK_RX
|
| FLAG_GRP_MN_BLOCK_RX
|
||||||
| FLAG_GRP_MN_BLOCK_RX_DN
|
| FLAG_GRP_MN_BLOCK_RX_DN
|
||||||
|
| FLAG_CKT_UCIC_BLOCK
|
||||||
|
| FLAG_CKT_UCIC_BLOCK_DN
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
|
@ -1410,6 +1445,15 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
|
||||||
sngss7_clear_ckt_blk_flag(sngss7_info, FLAG_CKT_UCIC_UNBLK);
|
sngss7_clear_ckt_blk_flag(sngss7_info, FLAG_CKT_UCIC_UNBLK);
|
||||||
|
|
||||||
/* throw the channel into reset to sync states */
|
/* throw the channel into reset to sync states */
|
||||||
|
|
||||||
|
clear_rx_grs_flags(sngss7_info);
|
||||||
|
clear_rx_grs_data(sngss7_info);
|
||||||
|
clear_tx_grs_flags(sngss7_info);
|
||||||
|
clear_tx_grs_data(sngss7_info);
|
||||||
|
clear_rx_rsc_flags(sngss7_info);
|
||||||
|
clear_tx_rsc_flags(sngss7_info);
|
||||||
|
|
||||||
|
clear_tx_rsc_flags(sngss7_info);
|
||||||
sngss7_set_ckt_flag(sngss7_info, FLAG_RESET_TX);
|
sngss7_set_ckt_flag(sngss7_info, FLAG_RESET_TX);
|
||||||
|
|
||||||
/* bring the channel into restart again */
|
/* bring the channel into restart again */
|
||||||
|
@ -1567,6 +1611,7 @@ static ftdm_status_t ftdm_sangoma_ss7_start(ftdm_span_t * span)
|
||||||
sngss7_span_data_t *sngss7_span = NULL;
|
sngss7_span_data_t *sngss7_span = NULL;
|
||||||
sng_isup_inf_t *sngss7_intf = NULL;
|
sng_isup_inf_t *sngss7_intf = NULL;
|
||||||
int x;
|
int x;
|
||||||
|
int first_channel=0;
|
||||||
|
|
||||||
|
|
||||||
SS7_INFO ("Starting span %s:%u.\n", span->name, span->span_id);
|
SS7_INFO ("Starting span %s:%u.\n", span->name, span->span_id);
|
||||||
|
@ -1611,13 +1656,15 @@ static ftdm_status_t ftdm_sangoma_ss7_start(ftdm_span_t * span)
|
||||||
sngss7_clear_ckt_flag(sngss7_info, FLAG_INFID_PAUSED);
|
sngss7_clear_ckt_flag(sngss7_info, FLAG_INFID_PAUSED);
|
||||||
sngss7_set_ckt_flag(sngss7_info, FLAG_INFID_RESUME);
|
sngss7_set_ckt_flag(sngss7_info, FLAG_INFID_RESUME);
|
||||||
}
|
}
|
||||||
#if 0
|
#if 1
|
||||||
/* throw the grp reset flag */
|
/* throw the grp reset flag */
|
||||||
sngss7_set_ckt_flag(sngss7_info, FLAG_GRP_RESET_TX);
|
sngss7_set_ckt_flag(sngss7_info, FLAG_GRP_RESET_TX);
|
||||||
if (x == 1) {
|
if (first_channel == 0) {
|
||||||
sngss7_set_flag(sngss7_info, FLAG_GRP_RESET_BASE);
|
sngss7_chan_data_t *cinfo = ftdmchan->call_data;
|
||||||
sngss7_span->tx_grs.circuit = sngss7_info->circuit->id;
|
sngss7_set_ckt_flag(sngss7_info, FLAG_GRP_RESET_BASE);
|
||||||
sngss7_span->tx_grs.range = span->chan_count -1;
|
cinfo->tx_grs.circuit = sngss7_info->circuit->id;
|
||||||
|
cinfo->tx_grs.range = span->chan_count -1;
|
||||||
|
first_channel=1;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
/* throw the channel into reset */
|
/* throw the channel into reset */
|
||||||
|
@ -1651,6 +1698,7 @@ static ftdm_status_t ftdm_sangoma_ss7_start(ftdm_span_t * span)
|
||||||
static ftdm_status_t ftdm_sangoma_ss7_stop(ftdm_span_t * span)
|
static ftdm_status_t ftdm_sangoma_ss7_stop(ftdm_span_t * span)
|
||||||
{
|
{
|
||||||
/*this function is called by the FT-Core to stop this span */
|
/*this function is called by the FT-Core to stop this span */
|
||||||
|
int timeout=0;
|
||||||
|
|
||||||
ftdm_log (FTDM_LOG_INFO, "Stopping span %s:%u.\n", span->name,span->span_id);
|
ftdm_log (FTDM_LOG_INFO, "Stopping span %s:%u.\n", span->name,span->span_id);
|
||||||
|
|
||||||
|
@ -1659,10 +1707,17 @@ static ftdm_status_t ftdm_sangoma_ss7_stop(ftdm_span_t * span)
|
||||||
|
|
||||||
/* wait for the thread to stop */
|
/* wait for the thread to stop */
|
||||||
while (ftdm_test_flag (span, FTDM_SPAN_IN_THREAD)) {
|
while (ftdm_test_flag (span, FTDM_SPAN_IN_THREAD)) {
|
||||||
ftdm_log (FTDM_LOG_DEBUG,"Waiting for monitor thread to end for %s:%u.\n",
|
ftdm_set_flag (span, FTDM_SPAN_STOP_THREAD);
|
||||||
|
ftdm_log (FTDM_LOG_DEBUG,"Waiting for monitor thread to end for %s:%u. [flags=0x%08X]\n",
|
||||||
span->name,
|
span->name,
|
||||||
span->span_id);
|
span->span_id,
|
||||||
ftdm_sleep (1);
|
span->flags);
|
||||||
|
/* Wait 50ms */
|
||||||
|
ftdm_sleep (50);
|
||||||
|
timeout++;
|
||||||
|
|
||||||
|
/* timeout after 5 sec, better to crash than hang */
|
||||||
|
ftdm_assert_return(timeout < 100, FTDM_FALSE, "SS7 Span stop timeout!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* KONRAD FIX ME - deconfigure any circuits, links, attached to this span */
|
/* KONRAD FIX ME - deconfigure any circuits, links, attached to this span */
|
||||||
|
@ -1725,12 +1780,14 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_sangoma_ss7_span_config)
|
||||||
/* parse the configuration and apply to the global config structure */
|
/* parse the configuration and apply to the global config structure */
|
||||||
if (ftmod_ss7_parse_xml(ftdm_parameters, span)) {
|
if (ftmod_ss7_parse_xml(ftdm_parameters, span)) {
|
||||||
ftdm_log (FTDM_LOG_CRIT, "Failed to parse configuration!\n");
|
ftdm_log (FTDM_LOG_CRIT, "Failed to parse configuration!\n");
|
||||||
|
ftdm_sleep (1000);
|
||||||
return FTDM_FAIL;
|
return FTDM_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* configure libsngss7 */
|
/* configure libsngss7 */
|
||||||
if (ft_to_sngss7_cfg_all()) {
|
if (ft_to_sngss7_cfg_all()) {
|
||||||
ftdm_log (FTDM_LOG_CRIT, "Failed to configure LibSngSS7!\n");
|
ftdm_log (FTDM_LOG_CRIT, "Failed to configure LibSngSS7!\n");
|
||||||
|
ftdm_sleep (1000);
|
||||||
return FTDM_FAIL;
|
return FTDM_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -732,7 +732,9 @@ int ftmod_ss7_enable_grp_mtp3Link(uint32_t procId);
|
||||||
|
|
||||||
int ftmod_ss7_disable_grp_mtp2Link(uint32_t procId);
|
int ftmod_ss7_disable_grp_mtp2Link(uint32_t procId);
|
||||||
|
|
||||||
int ftmod_ss7_block_isup_ckt(uint32_t cktId);
|
#define ftmod_ss7_block_isup_ckt(x) __ftmod_ss7_block_isup_ckt(x,FTDM_TRUE)
|
||||||
|
#define ftmod_ss7_block_isup_ckt_nowait(x) __ftmod_ss7_block_isup_ckt(x,FTDM_FALSE)
|
||||||
|
int __ftmod_ss7_block_isup_ckt(uint32_t cktId, ftdm_bool_t wait);
|
||||||
int ftmod_ss7_unblock_isup_ckt(uint32_t cktId);
|
int ftmod_ss7_unblock_isup_ckt(uint32_t cktId);
|
||||||
|
|
||||||
|
|
||||||
|
@ -915,7 +917,7 @@ if (ftdmchan->state == new_state) { \
|
||||||
#define SS7_ERROR_CHAN(fchan, msg, args...) ftdm_log_chan(fchan, FTDM_LOG_ERROR, msg , ##args)
|
#define SS7_ERROR_CHAN(fchan, msg, args...) ftdm_log_chan(fchan, FTDM_LOG_ERROR, msg , ##args)
|
||||||
#define SS7_CTRIT_CHAN(fchan, msg, args...) ftdm_log_chan(fchan, FTDM_LOG_CRIT, msg , ##args)
|
#define SS7_CTRIT_CHAN(fchan, msg, args...) ftdm_log_chan(fchan, FTDM_LOG_CRIT, msg , ##args)
|
||||||
|
|
||||||
#ifdef KONRAD_DEVEL
|
#ifdef SS7_CODE_DEVEL
|
||||||
#define SS7_DEVEL_DEBUG(a,...) ftdm_log(FTDM_LOG_DEBUG,a,##__VA_ARGS__ );
|
#define SS7_DEVEL_DEBUG(a,...) ftdm_log(FTDM_LOG_DEBUG,a,##__VA_ARGS__ );
|
||||||
#else
|
#else
|
||||||
#define SS7_DEVEL_DEBUG(a,...)
|
#define SS7_DEVEL_DEBUG(a,...)
|
||||||
|
|
|
@ -523,8 +523,6 @@ void ft_to_sngss7_grs (ftdm_channel_t *fchan)
|
||||||
cinfo->circuit->cic,
|
cinfo->circuit->cic,
|
||||||
(cinfo->circuit->cic + cinfo->tx_grs.range));
|
(cinfo->circuit->cic + cinfo->tx_grs.range));
|
||||||
|
|
||||||
memset(&cinfo->tx_grs, 0, sizeof(cinfo->tx_grs));
|
|
||||||
|
|
||||||
sngss7_set_ckt_flag(cinfo, FLAG_GRP_RESET_SENT);
|
sngss7_set_ckt_flag(cinfo, FLAG_GRP_RESET_SENT);
|
||||||
|
|
||||||
SS7_FUNC_TRACE_EXIT (__FUNCTION__);
|
SS7_FUNC_TRACE_EXIT (__FUNCTION__);
|
||||||
|
|
|
@ -42,8 +42,6 @@
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
/* PROTOTYPES *****************************************************************/
|
/* PROTOTYPES *****************************************************************/
|
||||||
ftdm_status_t handle_relay_connect(RyMngmt *sta);
|
|
||||||
ftdm_status_t handle_relay_disconnect(RyMngmt *sta);
|
|
||||||
|
|
||||||
/*static ftdm_status_t enable_all_ckts_for_relay(void);*/
|
/*static ftdm_status_t enable_all_ckts_for_relay(void);*/
|
||||||
static ftdm_status_t reconfig_all_ckts_for_relay(void);
|
static ftdm_status_t reconfig_all_ckts_for_relay(void);
|
||||||
|
@ -84,23 +82,24 @@ ftdm_status_t handle_relay_connect(RyMngmt *sta)
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
ftdm_status_t handle_relay_disconnect_on_error(RyMngmt *sta)
|
ftdm_status_t handle_relay_disconnect_on_error(RyMngmt *sta)
|
||||||
{
|
{
|
||||||
|
SS7_DEBUG("SS7 relay disconnect on error\n");
|
||||||
|
|
||||||
/* check which procId is in error, if it is 1, disable the ckts */
|
/* check which procId is in error, if it is 1, disable the ckts */
|
||||||
if (sta->t.usta.s.ryErrUsta.errPid == 1 ) {
|
if (sta->t.usta.s.ryErrUsta.errPid == 1 ) {
|
||||||
/* we've lost the server, bring down the mtp2 links */
|
|
||||||
disble_all_mtp2_sigs_for_relay();
|
|
||||||
|
|
||||||
/* we've lost the server, bring the sig status down on all ckts */
|
/* we've lost the server, bring the sig status down on all ckts */
|
||||||
disable_all_ckts_for_relay();
|
disable_all_ckts_for_relay();
|
||||||
|
|
||||||
|
/* we've lost the server, bring down the mtp2 links */
|
||||||
|
disble_all_mtp2_sigs_for_relay();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check if the channel is a server, means we just lost a MGW */
|
/* check if the channel is a server, means we just lost a MGW */
|
||||||
if (g_ftdm_sngss7_data.cfg.relay[sta->t.usta.s.ryErrUsta.errPid].type == LRY_CT_TCP_SERVER) {
|
if (g_ftdm_sngss7_data.cfg.relay[sta->t.usta.s.ryErrUsta.errPid].type == LRY_CT_TCP_SERVER) {
|
||||||
/* we've lost the client, bring down all mtp3 links for this procId */
|
|
||||||
disable_all_sigs_for_relay(sta->t.usta.s.ryErrUsta.errPid);
|
|
||||||
|
|
||||||
/* we've lost the client, bring down all the ckts for this procId */
|
/* we've lost the client, bring down all the ckts for this procId */
|
||||||
block_all_ckts_for_relay(sta->t.usta.s.ryErrUsta.errPid);
|
block_all_ckts_for_relay(sta->t.usta.s.ryErrUsta.errPid);
|
||||||
|
|
||||||
|
/* we've lost the client, bring down all mtp3 links for this procId */
|
||||||
|
disable_all_sigs_for_relay(sta->t.usta.s.ryErrUsta.errPid);
|
||||||
}
|
}
|
||||||
|
|
||||||
return FTDM_SUCCESS;
|
return FTDM_SUCCESS;
|
||||||
|
@ -110,6 +109,8 @@ ftdm_status_t handle_relay_disconnect_on_error(RyMngmt *sta)
|
||||||
ftdm_status_t handle_relay_disconnect_on_down(RyMngmt *sta)
|
ftdm_status_t handle_relay_disconnect_on_down(RyMngmt *sta)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
SS7_DEBUG("SS7 relay disconnect on down\n");
|
||||||
|
|
||||||
/* check if the channel is a server, means we just lost a MGW */
|
/* check if the channel is a server, means we just lost a MGW */
|
||||||
if (g_ftdm_sngss7_data.cfg.relay[sta->t.usta.s.ryUpUsta.id].type == LRY_CT_TCP_SERVER) {
|
if (g_ftdm_sngss7_data.cfg.relay[sta->t.usta.s.ryUpUsta.id].type == LRY_CT_TCP_SERVER) {
|
||||||
block_all_ckts_for_relay(sta->t.usta.s.ryUpUsta.id);
|
block_all_ckts_for_relay(sta->t.usta.s.ryUpUsta.id);
|
||||||
|
@ -248,7 +249,7 @@ ftdm_status_t block_all_ckts_for_relay(uint32_t procId)
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[x].type == SNG_CKT_VOICE) {
|
if (g_ftdm_sngss7_data.cfg.isupCkt[x].type == SNG_CKT_VOICE) {
|
||||||
|
|
||||||
/* send a block request via stack manager */
|
/* send a block request via stack manager */
|
||||||
ret = ftmod_ss7_block_isup_ckt(g_ftdm_sngss7_data.cfg.isupCkt[x].id);
|
ret = ftmod_ss7_block_isup_ckt_nowait(g_ftdm_sngss7_data.cfg.isupCkt[x].id);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
SS7_INFO("Successfully BLOcked CIC:%d(ckt:%d) due to Relay failure\n",
|
SS7_INFO("Successfully BLOcked CIC:%d(ckt:%d) due to Relay failure\n",
|
||||||
g_ftdm_sngss7_data.cfg.isupCkt[x].cic,
|
g_ftdm_sngss7_data.cfg.isupCkt[x].cic,
|
||||||
|
|
|
@ -922,11 +922,6 @@ int check_for_state_change(ftdm_channel_t *ftdmchan)
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
ftdm_status_t extract_chan_data(uint32_t circuit, sngss7_chan_data_t **sngss7_info, ftdm_channel_t **ftdmchan)
|
ftdm_status_t extract_chan_data(uint32_t circuit, sngss7_chan_data_t **sngss7_info, ftdm_channel_t **ftdmchan)
|
||||||
{
|
{
|
||||||
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].obj == NULL) {
|
|
||||||
SS7_ERROR("sngss7_info is Null for circuit #%d\n", circuit);
|
|
||||||
return FTDM_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!g_ftdm_sngss7_data.cfg.isupCkt[circuit].obj) {
|
if (!g_ftdm_sngss7_data.cfg.isupCkt[circuit].obj) {
|
||||||
SS7_ERROR("No ss7 info for circuit #%d\n", circuit);
|
SS7_ERROR("No ss7 info for circuit #%d\n", circuit);
|
||||||
return FTDM_FAIL;
|
return FTDM_FAIL;
|
||||||
|
@ -935,10 +930,21 @@ ftdm_status_t extract_chan_data(uint32_t circuit, sngss7_chan_data_t **sngss7_in
|
||||||
*sngss7_info = g_ftdm_sngss7_data.cfg.isupCkt[circuit].obj;
|
*sngss7_info = g_ftdm_sngss7_data.cfg.isupCkt[circuit].obj;
|
||||||
|
|
||||||
if (!(*sngss7_info)->ftdmchan) {
|
if (!(*sngss7_info)->ftdmchan) {
|
||||||
SS7_ERROR("No channel for circuit #%d\n", circuit);
|
SS7_ERROR("No ftdmchan for circuit #%d\n", circuit);
|
||||||
return FTDM_FAIL;
|
return FTDM_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!(*sngss7_info)->ftdmchan->span) {
|
||||||
|
SS7_CRITICAL("ftdmchan->span = NULL for circuit #%d\n",circuit);
|
||||||
|
return FTDM_FAIL;
|
||||||
|
|
||||||
|
}
|
||||||
|
if (!(*sngss7_info)->ftdmchan->span->signal_data) {
|
||||||
|
SS7_CRITICAL("ftdmchan->span->signal_data = NULL for circuit #%d\n",circuit);
|
||||||
|
return FTDM_FAIL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
*ftdmchan = (*sngss7_info)->ftdmchan;
|
*ftdmchan = (*sngss7_info)->ftdmchan;
|
||||||
return FTDM_SUCCESS;
|
return FTDM_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -1422,7 +1428,7 @@ ftdm_status_t process_span_ucic(ftdm_span_t *ftdmspan)
|
||||||
/* lock the channel */
|
/* lock the channel */
|
||||||
ftdm_channel_lock(ftdmchan);
|
ftdm_channel_lock(ftdmchan);
|
||||||
|
|
||||||
SS7_INFO_CHAN(ftdmchan, "[CIC:%d]Rx UCIC\n", sngss7_info->circuit->cic);
|
SS7_INFO_CHAN(ftdmchan, "[CIC:%d]Rx Span UCIC\n", sngss7_info->circuit->cic);
|
||||||
|
|
||||||
/* clear up any pending state changes */
|
/* clear up any pending state changes */
|
||||||
while (ftdm_test_flag (ftdmchan, FTDM_CHANNEL_STATE_CHANGE)) {
|
while (ftdm_test_flag (ftdmchan, FTDM_CHANNEL_STATE_CHANGE)) {
|
||||||
|
|
|
@ -2878,7 +2878,7 @@ static int ftmod_ss7_fill_in_ccSpan(sng_ccSpan_t *ccSpan)
|
||||||
(g_ftdm_sngss7_data.cfg.isupCkt[x].chan == count)) {
|
(g_ftdm_sngss7_data.cfg.isupCkt[x].chan == count)) {
|
||||||
|
|
||||||
/* we are processing a circuit that already exists */
|
/* we are processing a circuit that already exists */
|
||||||
SS7_DEBUG("Found an existing circuit %d, ccSpanId=%d, chan%d\n",
|
SS7_DEVEL_DEBUG("Found an existing circuit %d, ccSpanId=%d, chan%d\n",
|
||||||
x,
|
x,
|
||||||
ccSpan->id,
|
ccSpan->id,
|
||||||
count);
|
count);
|
||||||
|
@ -2887,7 +2887,7 @@ static int ftmod_ss7_fill_in_ccSpan(sng_ccSpan_t *ccSpan)
|
||||||
flag = 1;
|
flag = 1;
|
||||||
|
|
||||||
/* not supporting reconfig at this time */
|
/* not supporting reconfig at this time */
|
||||||
SS7_DEBUG("Not supporting ckt reconfig at this time!\n");
|
SS7_DEVEL_DEBUG("Not supporting ckt reconfig at this time!\n");
|
||||||
goto move_along;
|
goto move_along;
|
||||||
} else {
|
} else {
|
||||||
/* this is not the droid you are looking for */
|
/* this is not the droid you are looking for */
|
||||||
|
|
Loading…
Reference in New Issue