Merge branch 'master' into smgmaster
This commit is contained in:
commit
196c6ff75d
|
@ -1773,6 +1773,11 @@ ftdm_status_t ftdm_channel_from_event(ftdm_sigmsg_t *sigmsg, switch_core_session
|
||||||
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-RDNIS-Plan", "%d", channel_caller_data->rdnis.plan);
|
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-RDNIS-Plan", "%d", channel_caller_data->rdnis.plan);
|
||||||
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-CPC", "%s", ftdm_calling_party_category2str(channel_caller_data->cpc));
|
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-CPC", "%s", ftdm_calling_party_category2str(channel_caller_data->cpc));
|
||||||
|
|
||||||
|
var_value = ftdm_sigmsg_get_var(sigmsg, "ss7_clg_nadi");
|
||||||
|
if (!ftdm_strlen_zero(var_value)) {
|
||||||
|
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-NADI", "%d", var_value);
|
||||||
|
}
|
||||||
|
|
||||||
var_value = ftdm_sigmsg_get_var(sigmsg, "ss7_rdnis_screen_ind");
|
var_value = ftdm_sigmsg_get_var(sigmsg, "ss7_rdnis_screen_ind");
|
||||||
if (!ftdm_strlen_zero(var_value)) {
|
if (!ftdm_strlen_zero(var_value)) {
|
||||||
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-RDNIS-Screen", "%d", var_value);
|
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-RDNIS-Screen", "%d", var_value);
|
||||||
|
@ -1830,6 +1835,12 @@ ftdm_status_t ftdm_channel_from_event(ftdm_sigmsg_t *sigmsg, switch_core_session
|
||||||
|
|
||||||
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-Screen", "%d", channel_caller_data->screen);
|
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-Screen", "%d", channel_caller_data->screen);
|
||||||
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-Presentation", "%d", channel_caller_data->pres);
|
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-Presentation", "%d", channel_caller_data->pres);
|
||||||
|
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-CallReference", "%d", channel_caller_data->call_reference);
|
||||||
|
|
||||||
|
var_value = ftdm_sigmsg_get_var(sigmsg, "ss7_opc");
|
||||||
|
if (!ftdm_strlen_zero(var_value)) {
|
||||||
|
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-OPC", "%s", var_value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add any call variable to the dial plan */
|
/* Add any call variable to the dial plan */
|
||||||
|
|
|
@ -29,6 +29,10 @@
|
||||||
* LIABILITY|WHETHER IN CONTRACT|STRICT LIABILITY|OR TORT (INCLUDING
|
* LIABILITY|WHETHER IN CONTRACT|STRICT LIABILITY|OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE|EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE|EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* James Zhang <jzhang@sangoma.com>
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -1198,7 +1202,7 @@ static ftdm_status_t handle_show_blocks(ftdm_stream_handle_t *stream, int span,
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SMG_RELAY_DBG
|
#ifdef SMG_RELAY_DBG
|
||||||
stream->write_function(stream, " blk_flag= %x ckt_flag = %d", ss7_info->blk_flags, ss7_info->ckt_flags );
|
stream->write_function(stream," blk_flag=%x | ckt_flag=%x | chan_flag=%x", ss7_info->blk_flags, ss7_info->ckt_flags, ftdmchan->flags);
|
||||||
#endif
|
#endif
|
||||||
stream->write_function(stream, "\n");
|
stream->write_function(stream, "\n");
|
||||||
} /* if ( span and chan) */
|
} /* if ( span and chan) */
|
||||||
|
@ -1304,7 +1308,9 @@ static ftdm_status_t handle_show_status(ftdm_stream_handle_t *stream, int span,
|
||||||
stream->write_function(stream, "r_hw=N|");
|
stream->write_function(stream, "r_hw=N|");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sngss7_test_ckt_blk_flag(ss7_info, FLAG_RELAY_DOWN)) {
|
|
||||||
|
if (g_ftdm_sngss7_data.cfg.procId != 1) {
|
||||||
|
/* if (sngss7_test_ckt_blk_flag(ss7_info, FLAG_RELAY_DOWN)) { */
|
||||||
stream->write_function(stream, "relay=Y|");
|
stream->write_function(stream, "relay=Y|");
|
||||||
}else {
|
}else {
|
||||||
stream->write_function(stream, "relay=N");
|
stream->write_function(stream, "relay=N");
|
||||||
|
@ -1312,7 +1318,7 @@ static ftdm_status_t handle_show_status(ftdm_stream_handle_t *stream, int span,
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SMG_RELAY_DBG
|
#ifdef SMG_RELAY_DBG
|
||||||
stream->write_function(stream," blk_flag= %x ckt_flag = %d", ss7_info->blk_flags, ss7_info->ckt_flags );
|
stream->write_function(stream," blk_flag=%x | ckt_flag=%x | chan_flag=%x", ss7_info->blk_flags, ss7_info->ckt_flags, ftdmchan->flags);
|
||||||
#endif
|
#endif
|
||||||
stream->write_function(stream, "\n");
|
stream->write_function(stream, "\n");
|
||||||
} /* if ( hole, sig, voice) */
|
} /* if ( hole, sig, voice) */
|
||||||
|
|
|
@ -247,6 +247,15 @@ ftdm_status_t handle_con_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
|
||||||
sprintf(var, "%d", sngss7_info->circuit->cic);
|
sprintf(var, "%d", sngss7_info->circuit->cic);
|
||||||
sngss7_add_var(sngss7_info, "ss7_cic", var);
|
sngss7_add_var(sngss7_info, "ss7_cic", var);
|
||||||
|
|
||||||
|
sprintf(var, "%d", g_ftdm_sngss7_data.cfg.isupIntf[sngss7_info->circuit->infId].spc );
|
||||||
|
sngss7_add_var(sngss7_info, "ss7_opc", var);
|
||||||
|
|
||||||
|
if (siConEvnt->callRef.callId.pres) {
|
||||||
|
ftdmchan->caller_data.call_reference = (unsigned int)siConEvnt->callRef.callId.val;
|
||||||
|
} else {
|
||||||
|
ftdmchan->caller_data.call_reference = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (sngss7_info->circuit->transparent_iam) {
|
if (sngss7_info->circuit->transparent_iam) {
|
||||||
sngss7_save_iam(ftdmchan, siConEvnt);
|
sngss7_save_iam(ftdmchan, siConEvnt);
|
||||||
}
|
}
|
||||||
|
|
|
@ -842,9 +842,18 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
|
||||||
if (sngss7_test_ckt_flag (sngss7_info, FLAG_REMOTE_REL)) {
|
if (sngss7_test_ckt_flag (sngss7_info, FLAG_REMOTE_REL)) {
|
||||||
/* check if this hangup is from a tx RSC */
|
/* check if this hangup is from a tx RSC */
|
||||||
if (sngss7_test_ckt_flag (sngss7_info, FLAG_RESET_TX)) {
|
if (sngss7_test_ckt_flag (sngss7_info, FLAG_RESET_TX)) {
|
||||||
|
if (!sngss7_test_ckt_flag(sngss7_info, FLAG_RESET_SENT)) {
|
||||||
|
ft_to_sngss7_rsc (ftdmchan);
|
||||||
|
sngss7_set_ckt_flag(sngss7_info, FLAG_RESET_SENT);
|
||||||
|
ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_RESTART);
|
||||||
|
} else if (sngss7_test_ckt_flag(sngss7_info, FLAG_RESET_TX_RSP)) {
|
||||||
|
state_flag = 0;
|
||||||
|
ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_DOWN);
|
||||||
|
} else {
|
||||||
/* go to RESTART State until RSCa is received */
|
/* go to RESTART State until RSCa is received */
|
||||||
state_flag = 0;
|
state_flag = 0;
|
||||||
ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_RESTART);
|
ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_RESTART);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
/* if the hangup is from a rx RSC, rx GRS, or glare don't sent RLC */
|
/* if the hangup is from a rx RSC, rx GRS, or glare don't sent RLC */
|
||||||
if (!(sngss7_test_ckt_flag(sngss7_info, FLAG_RESET_RX)) &&
|
if (!(sngss7_test_ckt_flag(sngss7_info, FLAG_RESET_RX)) &&
|
||||||
|
@ -935,7 +944,9 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
|
||||||
|
|
||||||
/* check if we came from reset (aka we just processed a reset) */
|
/* check if we came from reset (aka we just processed a reset) */
|
||||||
if ((ftdmchan->last_state == FTDM_CHANNEL_STATE_RESTART) ||
|
if ((ftdmchan->last_state == FTDM_CHANNEL_STATE_RESTART) ||
|
||||||
(ftdmchan->last_state == FTDM_CHANNEL_STATE_SUSPENDED)) {
|
(ftdmchan->last_state == FTDM_CHANNEL_STATE_SUSPENDED) ||
|
||||||
|
(ftdmchan->last_state == FTDM_CHANNEL_STATE_HANGUP_COMPLETE)) {
|
||||||
|
|
||||||
|
|
||||||
/* check if reset flags are up indicating there is more processing to do yet */
|
/* check if reset flags are up indicating there is more processing to do yet */
|
||||||
if (!(sngss7_test_ckt_flag (sngss7_info, FLAG_RESET_TX)) &&
|
if (!(sngss7_test_ckt_flag (sngss7_info, FLAG_RESET_TX)) &&
|
||||||
|
@ -1040,9 +1051,12 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
|
||||||
if ((sngss7_test_ckt_flag(sngss7_info, FLAG_RESET_TX)) &&
|
if ((sngss7_test_ckt_flag(sngss7_info, FLAG_RESET_TX)) &&
|
||||||
!(sngss7_test_ckt_flag(sngss7_info, FLAG_RESET_SENT))) {
|
!(sngss7_test_ckt_flag(sngss7_info, FLAG_RESET_SENT))) {
|
||||||
|
|
||||||
|
/* don't send out reset before finished hanging up if I'm in-use. */
|
||||||
|
if (!ftdm_test_flag(ftdmchan, FTDM_CHANNEL_INUSE)) {
|
||||||
/* send a reset request */
|
/* send a reset request */
|
||||||
ft_to_sngss7_rsc (ftdmchan);
|
ft_to_sngss7_rsc (ftdmchan);
|
||||||
sngss7_set_ckt_flag(sngss7_info, FLAG_RESET_SENT);
|
sngss7_set_ckt_flag(sngss7_info, FLAG_RESET_SENT);
|
||||||
|
}
|
||||||
|
|
||||||
} /* if (sngss7_test_ckt_flag(sngss7_info, FLAG_RESET_TX)) */
|
} /* if (sngss7_test_ckt_flag(sngss7_info, FLAG_RESET_TX)) */
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@
|
||||||
|
|
||||||
/* DEFINES ********************************************************************/
|
/* DEFINES ********************************************************************/
|
||||||
#define MAX_NAME_LEN 25
|
#define MAX_NAME_LEN 25
|
||||||
#define MAX_PATH 255
|
#define MAX_PATH 4096
|
||||||
|
|
||||||
#define MAX_CIC_LENGTH 5
|
#define MAX_CIC_LENGTH 5
|
||||||
#define MAX_CIC_MAP_LENGTH 1000
|
#define MAX_CIC_MAP_LENGTH 1000
|
||||||
|
|
|
@ -49,7 +49,7 @@ ftdm_status_t handle_relay_disconnect(RyMngmt *sta);
|
||||||
static ftdm_status_t reconfig_all_ckts_for_relay(void);
|
static ftdm_status_t reconfig_all_ckts_for_relay(void);
|
||||||
static ftdm_status_t disable_all_ckts_for_relay(void);
|
static ftdm_status_t disable_all_ckts_for_relay(void);
|
||||||
static ftdm_status_t block_all_ckts_for_relay(uint32_t procId);
|
static ftdm_status_t block_all_ckts_for_relay(uint32_t procId);
|
||||||
static ftdm_status_t unblock_all_ckts_for_relay(uint32_t procId);
|
/* static ftdm_status_t unblock_all_ckts_for_relay(uint32_t procId); */
|
||||||
static ftdm_status_t disable_all_sigs_for_relay(uint32_t procId);
|
static ftdm_status_t disable_all_sigs_for_relay(uint32_t procId);
|
||||||
static ftdm_status_t disble_all_mtp2_sigs_for_relay(void);
|
static ftdm_status_t disble_all_mtp2_sigs_for_relay(void);
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
@ -59,43 +59,26 @@ ftdm_status_t handle_relay_connect(RyMngmt *sta)
|
||||||
{
|
{
|
||||||
sng_relay_t *sng_relay = &g_ftdm_sngss7_data.cfg.relay[sta->t.usta.s.ryUpUsta.id];
|
sng_relay_t *sng_relay = &g_ftdm_sngss7_data.cfg.relay[sta->t.usta.s.ryUpUsta.id];
|
||||||
|
|
||||||
|
|
||||||
/* test if this is the first time the channel comes up */
|
|
||||||
if (!sngss7_test_flag(sng_relay, SNGSS7_RELAY_INIT)) {
|
if (!sngss7_test_flag(sng_relay, SNGSS7_RELAY_INIT)) {
|
||||||
SS7_INFO("Relay Channel %d initial connection UP\n", sng_relay->id);
|
/* SS7_INFO("Relay Channel %d initial connection UP\n", sng_relay->id); */
|
||||||
|
|
||||||
/* mark the channel as being up */
|
|
||||||
sngss7_set_flag(sng_relay, SNGSS7_RELAY_INIT);
|
sngss7_set_flag(sng_relay, SNGSS7_RELAY_INIT);
|
||||||
} else {
|
}
|
||||||
SS7_INFO("Relay Channel %d connection UP\n", sng_relay->id);
|
|
||||||
|
|
||||||
/* react based on type of channel */
|
SS7_INFO("Relay Channel %d connection UP\n", sng_relay->id);
|
||||||
switch (sng_relay->type) {
|
if (sng_relay->type == LRY_CT_TCP_CLIENT) {
|
||||||
/******************************************************************/
|
if (!sngss7_test_flag(sng_relay, SNGSS7_RELAY_INIT)) {
|
||||||
case (LRY_CT_TCP_CLIENT):
|
|
||||||
/* reconfigure all ISUP ckts, since the main system would have lost all configs */
|
|
||||||
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! */
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
/******************************************************************/
|
|
||||||
case (LRY_CT_TCP_SERVER):
|
|
||||||
/* bring the sig links on the client system back up */
|
|
||||||
ftmod_ss7_enable_grp_mtp3Link(sta->t.usta.s.ryUpUsta.id);
|
|
||||||
|
|
||||||
/* unbloock the ckts on the client system */
|
|
||||||
unblock_all_ckts_for_relay(sta->t.usta.s.ryUpUsta.id);
|
|
||||||
|
|
||||||
break;
|
|
||||||
/******************************************************************/
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
/******************************************************************/
|
|
||||||
} /* switch (g_ftdm_sngss7_data.cfg.relay[sta->t.usta.s.ryUpUsta.id].type) */
|
|
||||||
} /* intial up? */
|
|
||||||
|
|
||||||
return FTDM_SUCCESS;
|
return FTDM_SUCCESS;
|
||||||
|
} else if (sng_relay->type == LRY_CT_TCP_SERVER) {
|
||||||
|
ftmod_ss7_enable_grp_mtp3Link(sta->t.usta.s.ryUpUsta.id);
|
||||||
|
/* unbloock the ckts on the client system */
|
||||||
|
return FTDM_SUCCESS;
|
||||||
|
}
|
||||||
|
return FTDM_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
@ -310,6 +293,7 @@ ftdm_status_t disble_all_mtp2_sigs_for_relay(void)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
static ftdm_status_t unblock_all_ckts_for_relay(uint32_t procId)
|
static ftdm_status_t unblock_all_ckts_for_relay(uint32_t procId)
|
||||||
{
|
{
|
||||||
|
@ -345,6 +329,7 @@ static ftdm_status_t unblock_all_ckts_for_relay(uint32_t procId)
|
||||||
|
|
||||||
return FTDM_SUCCESS;
|
return FTDM_SUCCESS;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/* For Emacs:
|
/* For Emacs:
|
||||||
|
|
|
@ -884,12 +884,6 @@ static void wanpipe_write_stats(ftdm_channel_t *ftdmchan, wp_tdm_api_tx_hdr_t *t
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ftdmchan->iostats.tx.idle_packets < tx_stats->wp_api_tx_hdr_tx_idle_packets) {
|
if (ftdmchan->iostats.tx.idle_packets < tx_stats->wp_api_tx_hdr_tx_idle_packets) {
|
||||||
/* HDLC channels do not always transmit, so its ok for drivers to fill with idle
|
|
||||||
* also do not report idle warning when we just started transmitting */
|
|
||||||
if (ftdmchan->iostats.tx.packets && FTDM_IS_VOICE_CHANNEL(ftdmchan)) {
|
|
||||||
ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Tx idle changed from %d to %d\n",
|
|
||||||
ftdmchan->iostats.tx.idle_packets, tx_stats->wp_api_tx_hdr_tx_idle_packets);
|
|
||||||
}
|
|
||||||
ftdmchan->iostats.tx.idle_packets = tx_stats->wp_api_tx_hdr_tx_idle_packets;
|
ftdmchan->iostats.tx.idle_packets = tx_stats->wp_api_tx_hdr_tx_idle_packets;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -362,6 +362,7 @@ typedef struct ftdm_caller_data {
|
||||||
/* user information layer 1 protocol */
|
/* user information layer 1 protocol */
|
||||||
ftdm_user_layer1_prot_t bearer_layer1;
|
ftdm_user_layer1_prot_t bearer_layer1;
|
||||||
ftdm_calling_party_category_t cpc; /*!< Calling party category */
|
ftdm_calling_party_category_t cpc; /*!< Calling party category */
|
||||||
|
uint32_t call_reference;
|
||||||
|
|
||||||
ftdm_channel_t *fchan; /*!< FreeTDM channel associated (can be NULL) */
|
ftdm_channel_t *fchan; /*!< FreeTDM channel associated (can be NULL) */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue