Fixed 5 relay conditions
M UP -> S UP M Down -> S UP -> M UP M UP -> S UP -> relay down -> relay up M UP -> S UP -> Kill M -> M UP M Up -> S UP -> relay down -> M link down -> relay up -> M link up
This commit is contained in:
parent
69c62f7b38
commit
5b8af78a89
|
@ -1171,16 +1171,19 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
|
||||||
sngss7_info->circuit->flags );
|
sngss7_info->circuit->flags );
|
||||||
|
|
||||||
if (!(sngss7_info->circuit->flags & SNGSS7_CONFIGURED)) {
|
if (!(sngss7_info->circuit->flags & SNGSS7_CONFIGURED)) {
|
||||||
if ( !sngss7_test_ckt_flag(sngss7_info, FLAG_INFID_PAUSED)
|
/* Configure the circuit if RESUME and PAUSED are not set.
|
||||||
||(sngss7_test_ckt_flag(sngss7_info, FLAG_INFID_RESUME))) {
|
And also in a case when RESUME is set */
|
||||||
|
if (!sngss7_test_ckt_flag(sngss7_info, FLAG_INFID_PAUSED) ||
|
||||||
|
sngss7_test_ckt_flag(sngss7_info, FLAG_INFID_RESUME)) {
|
||||||
if (ftmod_ss7_isup_ckt_config(sngss7_info->circuit->id)) {
|
if (ftmod_ss7_isup_ckt_config(sngss7_info->circuit->id)) {
|
||||||
SS7_CRITICAL("ISUP CKT %d configuration FAILED!\n", sngss7_info->circuit->id);
|
SS7_CRITICAL("ISUP CKT %d configuration FAILED!\n", sngss7_info->circuit->id);
|
||||||
*(int*)0=0;
|
sngss7_set_ckt_flag(sngss7_info, FLAG_INFID_PAUSED);
|
||||||
return 1;
|
sngss7_clear_ckt_flag(sngss7_info, FLAG_INFID_RESUME);
|
||||||
} else {
|
} else {
|
||||||
SS7_INFO("ISUP CKT %d configuration DONE!\n", sngss7_info->circuit->id);
|
SS7_INFO("ISUP CKT %d configuration DONE!\n", sngss7_info->circuit->id);
|
||||||
}
|
|
||||||
sngss7_info->circuit->flags |= SNGSS7_CONFIGURED;
|
sngss7_info->circuit->flags |= SNGSS7_CONFIGURED;
|
||||||
|
sngss7_set_ckt_flag(sngss7_info, FLAG_RESET_TX);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -64,12 +64,10 @@ ftdm_status_t handle_relay_connect(RyMngmt *sta)
|
||||||
|
|
||||||
SS7_INFO("Relay Channel %d connection UP\n", sng_relay->id);
|
SS7_INFO("Relay Channel %d connection UP\n", sng_relay->id);
|
||||||
if (sng_relay->type == LRY_CT_TCP_CLIENT) {
|
if (sng_relay->type == LRY_CT_TCP_CLIENT) {
|
||||||
if (!sngss7_test_flag(sng_relay, SNGSS7_RELAY_INIT)) {
|
|
||||||
if (reconfig_all_ckts_for_relay()) {
|
if (reconfig_all_ckts_for_relay()) {
|
||||||
SS7_ERROR("Failed to reconfigure ISUP Ckts!\n");
|
SS7_ERROR("Failed to reconfigure ISUP Ckts!\n");
|
||||||
/* we're done....this is very bad! */
|
/* we're done....this is very bad! */
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return FTDM_SUCCESS;
|
return FTDM_SUCCESS;
|
||||||
} else if (sng_relay->type == LRY_CT_TCP_SERVER) {
|
} else if (sng_relay->type == LRY_CT_TCP_SERVER) {
|
||||||
ftmod_ss7_enable_grp_mtp3Link(sta->t.usta.s.ryUpUsta.id);
|
ftmod_ss7_enable_grp_mtp3Link(sta->t.usta.s.ryUpUsta.id);
|
||||||
|
|
|
@ -2110,6 +2110,7 @@ ftdm_status_t check_for_reconfig_flag(ftdm_span_t *ftdmspan)
|
||||||
uint8_t bits_ef = 0;
|
uint8_t bits_ef = 0;
|
||||||
int x;
|
int x;
|
||||||
int ret;
|
int ret;
|
||||||
|
ret=0;
|
||||||
|
|
||||||
for (x = 1; x < (ftdmspan->chan_count + 1); x++) {
|
for (x = 1; x < (ftdmspan->chan_count + 1); x++) {
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
|
@ -2147,6 +2148,10 @@ ftdm_status_t check_for_reconfig_flag(ftdm_span_t *ftdmspan)
|
||||||
|
|
||||||
/* query for the status of the ckt */
|
/* query for the status of the ckt */
|
||||||
if (ftmod_ss7_isup_ckt_sta(sngss7_info->circuit->id, &state)) {
|
if (ftmod_ss7_isup_ckt_sta(sngss7_info->circuit->id, &state)) {
|
||||||
|
/* NC: Circuit statistic failed: does not exist. Must re-configure circuit
|
||||||
|
Reset the circuit CONFIGURED flag so that RESUME will reconfigure
|
||||||
|
this circuit. */
|
||||||
|
sngss7_info->circuit->flags &= ~SNGSS7_CONFIGURED;
|
||||||
SS7_ERROR("Failed to read isup ckt = %d status\n", sngss7_info->circuit->id);
|
SS7_ERROR("Failed to read isup ckt = %d status\n", sngss7_info->circuit->id);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -2159,6 +2164,14 @@ ftdm_status_t check_for_reconfig_flag(ftdm_span_t *ftdmspan)
|
||||||
if (bits_cd == 0x0) {
|
if (bits_cd == 0x0) {
|
||||||
/* check if circuit is UCIC or transient */
|
/* check if circuit is UCIC or transient */
|
||||||
if (bits_ab == 0x3) {
|
if (bits_ab == 0x3) {
|
||||||
|
SS7_INFO("ISUP CKT %d re-configuration pending!\n", x);
|
||||||
|
sngss7_info->circuit->flags &= ~SNGSS7_CONFIGURED;
|
||||||
|
SS7_STATE_CHANGE(ftdmchan, FTDM_CHANNEL_STATE_SUSPENDED);
|
||||||
|
|
||||||
|
/* NC: The code below should be deleted. Its here for hitorical
|
||||||
|
reason. The RESUME code will reconfigure the channel since
|
||||||
|
the CONFIGURED flag has been reset */
|
||||||
|
#if 0
|
||||||
/* bit a and bit b are set, unequipped */
|
/* bit a and bit b are set, unequipped */
|
||||||
ret = ftmod_ss7_isup_ckt_config(sngss7_info->circuit->id);
|
ret = ftmod_ss7_isup_ckt_config(sngss7_info->circuit->id);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -2181,6 +2194,7 @@ ftdm_status_t check_for_reconfig_flag(ftdm_span_t *ftdmspan)
|
||||||
|
|
||||||
/* unlock the channel */
|
/* unlock the channel */
|
||||||
ftdm_mutex_unlock(ftdmchan->mutex);
|
ftdm_mutex_unlock(ftdmchan->mutex);
|
||||||
|
#endif
|
||||||
|
|
||||||
} /* if (bits_ab == 0x3) */
|
} /* if (bits_ab == 0x3) */
|
||||||
} else {
|
} else {
|
||||||
|
@ -2192,8 +2206,8 @@ ftdm_status_t check_for_reconfig_flag(ftdm_span_t *ftdmspan)
|
||||||
break;
|
break;
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
case (1):
|
case (1):
|
||||||
/* locally blocked */
|
/* locally blocked: Therefore we need to state machine to send an unblock */
|
||||||
sngss7_set_ckt_blk_flag(sngss7_info, FLAG_CKT_LC_BLOCK_RX);
|
sngss7_set_ckt_blk_flag(sngss7_info, FLAG_CKT_MN_UNBLK_TX);
|
||||||
|
|
||||||
/* set the channel to suspended state */
|
/* set the channel to suspended state */
|
||||||
SS7_STATE_CHANGE(ftdmchan, FTDM_CHANNEL_STATE_SUSPENDED);
|
SS7_STATE_CHANGE(ftdmchan, FTDM_CHANNEL_STATE_SUSPENDED);
|
||||||
|
@ -2209,7 +2223,7 @@ ftdm_status_t check_for_reconfig_flag(ftdm_span_t *ftdmspan)
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
case (3):
|
case (3):
|
||||||
/* both locally and remotely blocked */
|
/* both locally and remotely blocked */
|
||||||
sngss7_set_ckt_blk_flag(sngss7_info, FLAG_CKT_LC_BLOCK_RX);
|
sngss7_set_ckt_blk_flag(sngss7_info, FLAG_CKT_MN_UNBLK_TX);
|
||||||
sngss7_set_ckt_blk_flag(sngss7_info, FLAG_CKT_MN_BLOCK_RX);
|
sngss7_set_ckt_blk_flag(sngss7_info, FLAG_CKT_MN_BLOCK_RX);
|
||||||
|
|
||||||
/* set the channel to suspended state */
|
/* set the channel to suspended state */
|
||||||
|
|
Loading…
Reference in New Issue