提交 848db87c authored 作者: David Yat Sin's avatar David Yat Sin

Merge branch 'releases.3.5' into nsg-4.3

...@@ -5,6 +5,7 @@ applications/mod_dptools ...@@ -5,6 +5,7 @@ applications/mod_dptools
applications/mod_commands applications/mod_commands
applications/mod_hash applications/mod_hash
applications/mod_spandsp applications/mod_spandsp
applications/mod_distributor
dialplans/mod_dialplan_xml dialplans/mod_dialplan_xml
endpoints/mod_sofia endpoints/mod_sofia
endpoints/mod_opal endpoints/mod_opal
......
...@@ -1463,6 +1463,11 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi ...@@ -1463,6 +1463,11 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi
if (sipvar) { if (sipvar) {
ftdm_set_string(caller_data.loc.digits, sipvar); ftdm_set_string(caller_data.loc.digits, sipvar);
} }
sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-Access-Transport-URLENC");
if (sipvar) {
ftdm_usrmsg_add_var(&usrmsg, "ss7_access_transport_urlenc", sipvar);
}
sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-LOC-Screen"); sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-LOC-Screen");
if (sipvar) { if (sipvar) {
...@@ -1610,6 +1615,15 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi ...@@ -1610,6 +1615,15 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi
if (sipvar) { if (sipvar) {
ftdm_usrmsg_add_var(&usrmsg, "ss7_ocn_pres", sipvar); ftdm_usrmsg_add_var(&usrmsg, "ss7_ocn_pres", sipvar);
} }
sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-IAM-FWD-IND-HEX");
if (sipvar) {
ftdm_usrmsg_add_var(&usrmsg, "ss7_iam_fwd_ind_hex", sipvar);
}
sipvar = switch_channel_get_variable(channel, "sip_h_X-FreeTDM-IAM-NATURE-CONN-HEX");
if (sipvar) {
ftdm_usrmsg_add_var(&usrmsg, "ss7_iam_nature_connection_hex", sipvar);
}
} }
if (switch_test_flag(outbound_profile, SWITCH_CPF_SCREEN)) { if (switch_test_flag(outbound_profile, SWITCH_CPF_SCREEN)) {
...@@ -1649,7 +1663,7 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi ...@@ -1649,7 +1663,7 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi
if ((var = channel_get_variable(session, var_event, "freetdm_calling_party_category"))) { if ((var = channel_get_variable(session, var_event, "freetdm_calling_party_category"))) {
ftdm_set_calling_party_category(var, (uint8_t *)&caller_data.cpc); ftdm_set_calling_party_category(var, (uint8_t *)&caller_data.cpc);
} }
if (!zstr(dest)) { if (!zstr(dest)) {
ftdm_set_string(caller_data.dnis.digits, dest); ftdm_set_string(caller_data.dnis.digits, dest);
} }
...@@ -1925,7 +1939,23 @@ ftdm_status_t ftdm_channel_from_event(ftdm_sigmsg_t *sigmsg, switch_core_session ...@@ -1925,7 +1939,23 @@ 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-NADI", "%d", channel_caller_data->rdnis.type); switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-RDNIS-NADI", "%d", channel_caller_data->rdnis.type);
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_iam_nature_connection_hex");
if (!ftdm_strlen_zero(var_value)) {
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-IAM-NATURE-CONN-HEX", "%s", var_value);
}
var_value = ftdm_sigmsg_get_var(sigmsg, "ss7_iam_fwd_ind_hex");
if (!ftdm_strlen_zero(var_value)) {
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-IAM-FWD-IND-HEX", "%s", var_value);
}
var_value = ftdm_sigmsg_get_var(sigmsg, "ss7_access_transport_urlenc");
if (!ftdm_strlen_zero(var_value)) {
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-Access-Transport-URLENC", "%s", var_value);
}
var_value = ftdm_sigmsg_get_var(sigmsg, "ss7_rdinfo_indicator"); var_value = ftdm_sigmsg_get_var(sigmsg, "ss7_rdinfo_indicator");
if (!ftdm_strlen_zero(var_value)) { if (!ftdm_strlen_zero(var_value)) {
switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-RDINF-Indicator", "%s", var_value); switch_channel_set_variable_printf(channel, "sip_h_X-FreeTDM-RDINF-Indicator", "%s", var_value);
......
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
* David Yat Sin <dyatsin@sangoma.com> * David Yat Sin <dyatsin@sangoma.com>
* *
*/ */
#define _GNU_SOURCE #define _GNU_SOURCE
#include "private/ftdm_core.h" #include "private/ftdm_core.h"
#include <stdarg.h> #include <stdarg.h>
......
...@@ -221,6 +221,9 @@ ftdm_status_t handle_con_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ ...@@ -221,6 +221,9 @@ ftdm_status_t handle_con_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
} else { } else {
SS7_INFO_CHAN(ftdmchan,"No Called party (DNIS) information in IAM!%s\n", " "); SS7_INFO_CHAN(ftdmchan,"No Called party (DNIS) information in IAM!%s\n", " ");
} }
copy_NatureOfConnection_from_sngss7(ftdmchan, &siConEvnt->natConInd);
copy_fwdCallInd_hex_from_sngss7(ftdmchan, &siConEvnt->fwdCallInd);
copy_access_transport_from_sngss7(ftdmchan, &siConEvnt->accTrnspt);
copy_ocn_from_sngss7(ftdmchan, &siConEvnt->origCdNum); copy_ocn_from_sngss7(ftdmchan, &siConEvnt->origCdNum);
copy_redirgNum_from_sngss7(ftdmchan, &siConEvnt->redirgNum); copy_redirgNum_from_sngss7(ftdmchan, &siConEvnt->redirgNum);
copy_redirgInfo_from_sngss7(ftdmchan, &siConEvnt->redirInfo); copy_redirgInfo_from_sngss7(ftdmchan, &siConEvnt->redirInfo);
......
...@@ -971,6 +971,8 @@ ftdm_status_t copy_redirgInfo_to_sngss7(ftdm_channel_t *ftdmchan, SiRedirInfo *r ...@@ -971,6 +971,8 @@ ftdm_status_t copy_redirgInfo_to_sngss7(ftdm_channel_t *ftdmchan, SiRedirInfo *r
ftdm_status_t copy_ocn_to_sngss7(ftdm_channel_t *ftdmchan, SiOrigCdNum *origCdNum); ftdm_status_t copy_ocn_to_sngss7(ftdm_channel_t *ftdmchan, SiOrigCdNum *origCdNum);
ftdm_status_t copy_ocn_from_sngss7(ftdm_channel_t *ftdmchan, SiOrigCdNum *origCdNum); ftdm_status_t copy_ocn_from_sngss7(ftdm_channel_t *ftdmchan, SiOrigCdNum *origCdNum);
ftdm_status_t copy_access_transport_from_sngss7(ftdm_channel_t *ftdmchan, SiAccTrnspt *accTrnspt);
ftdm_status_t copy_access_transport_to_sngss7(ftdm_channel_t *ftdmchan, SiAccTrnspt *accTrnspt);
ftdm_status_t copy_locPtyNum_to_sngss7(ftdm_channel_t *ftdmchan, SiCgPtyNum *locPtyNum); ftdm_status_t copy_locPtyNum_to_sngss7(ftdm_channel_t *ftdmchan, SiCgPtyNum *locPtyNum);
ftdm_status_t copy_locPtyNum_from_sngss7(ftdm_channel_t *ftdmchan, SiCgPtyNum *locPtyNum); ftdm_status_t copy_locPtyNum_from_sngss7(ftdm_channel_t *ftdmchan, SiCgPtyNum *locPtyNum);
ftdm_status_t copy_genNmb_to_sngss7(ftdm_channel_t *ftdmchan, SiGenNum *genNmb); ftdm_status_t copy_genNmb_to_sngss7(ftdm_channel_t *ftdmchan, SiGenNum *genNmb);
...@@ -979,9 +981,12 @@ ftdm_status_t copy_cgPtyCat_to_sngss7(ftdm_channel_t *ftdmchan, SiCgPtyCat *cgPt ...@@ -979,9 +981,12 @@ ftdm_status_t copy_cgPtyCat_to_sngss7(ftdm_channel_t *ftdmchan, SiCgPtyCat *cgPt
ftdm_status_t copy_cgPtyCat_from_sngss7(ftdm_channel_t *ftdmchan, SiCgPtyCat *cgPtyCat); ftdm_status_t copy_cgPtyCat_from_sngss7(ftdm_channel_t *ftdmchan, SiCgPtyCat *cgPtyCat);
ftdm_status_t copy_accTrnspt_to_sngss7(ftdm_channel_t *ftdmchan, SiAccTrnspt *accTrnspt); ftdm_status_t copy_accTrnspt_to_sngss7(ftdm_channel_t *ftdmchan, SiAccTrnspt *accTrnspt);
ftdm_status_t copy_natConInd_to_sngss7(ftdm_channel_t *ftdmchan, SiNatConInd *natConInd); ftdm_status_t copy_natConInd_to_sngss7(ftdm_channel_t *ftdmchan, SiNatConInd *natConInd);
ftdm_status_t copy_fwdCallInd_hex_from_sngss7(ftdm_channel_t *ftdmchan, SiFwdCallInd *fwdCallInd);
ftdm_status_t copy_fwdCallInd_to_sngss7(ftdm_channel_t *ftdmchan, SiFwdCallInd *fwdCallInd); ftdm_status_t copy_fwdCallInd_to_sngss7(ftdm_channel_t *ftdmchan, SiFwdCallInd *fwdCallInd);
ftdm_status_t copy_txMedReq_to_sngss7(ftdm_channel_t *ftdmchan, SiTxMedReq *txMedReq); ftdm_status_t copy_txMedReq_to_sngss7(ftdm_channel_t *ftdmchan, SiTxMedReq *txMedReq);
ftdm_status_t copy_usrServInfoA_to_sngss7(ftdm_channel_t *ftdmchan, SiUsrServInfo *usrServInfoA); ftdm_status_t copy_usrServInfoA_to_sngss7(ftdm_channel_t *ftdmchan, SiUsrServInfo *usrServInfoA);
ftdm_status_t copy_NatureOfConnection_from_sngss7(ftdm_channel_t *ftdmchan, SiNatConInd *natConInd );
ftdm_status_t copy_NatureOfConnection_to_sngss7(ftdm_channel_t *ftdmchan, SiNatConInd *natConInd);
ftdm_status_t copy_tknStr_from_sngss7(TknStr str, char *ftdm, TknU8 oddEven); ftdm_status_t copy_tknStr_from_sngss7(TknStr str, char *ftdm, TknU8 oddEven);
ftdm_status_t append_tknStr_from_sngss7(TknStr str, char *ftdm, TknU8 oddEven); ftdm_status_t append_tknStr_from_sngss7(TknStr str, char *ftdm, TknU8 oddEven);
......
...@@ -138,6 +138,7 @@ void ft_to_sngss7_iam (ftdm_channel_t * ftdmchan) ...@@ -138,6 +138,7 @@ void ft_to_sngss7_iam (ftdm_channel_t * ftdmchan)
/* Original Called Number */ /* Original Called Number */
copy_ocn_to_sngss7(ftdmchan, &iam.origCdNum); copy_ocn_to_sngss7(ftdmchan, &iam.origCdNum);
} }
copy_access_transport_to_sngss7(ftdmchan, &iam.accTrnspt);
} }
} else if (sngss7_info->circuit->transparent_iam && } else if (sngss7_info->circuit->transparent_iam &&
sngss7_retrieve_iam(ftdmchan, &iam) == FTDM_SUCCESS) { sngss7_retrieve_iam(ftdmchan, &iam) == FTDM_SUCCESS) {
...@@ -160,6 +161,10 @@ void ft_to_sngss7_iam (ftdm_channel_t * ftdmchan) ...@@ -160,6 +161,10 @@ void ft_to_sngss7_iam (ftdm_channel_t * ftdmchan)
/* Original Called Number */ /* Original Called Number */
copy_ocn_to_sngss7(ftdmchan, &iam.origCdNum); copy_ocn_to_sngss7(ftdmchan, &iam.origCdNum);
copy_access_transport_to_sngss7(ftdmchan, &iam.accTrnspt);
copy_NatureOfConnection_to_sngss7(ftdmchan, &iam.natConInd);
} else { } else {
/* Nature of Connection Indicators */ /* Nature of Connection Indicators */
copy_natConInd_to_sngss7(ftdmchan, &iam.natConInd); copy_natConInd_to_sngss7(ftdmchan, &iam.natConInd);
...@@ -199,8 +204,15 @@ void ft_to_sngss7_iam (ftdm_channel_t * ftdmchan) ...@@ -199,8 +204,15 @@ void ft_to_sngss7_iam (ftdm_channel_t * ftdmchan)
/* Original Called Number */ /* Original Called Number */
copy_ocn_to_sngss7(ftdmchan, &iam.origCdNum); copy_ocn_to_sngss7(ftdmchan, &iam.origCdNum);
/* Access Transport */ /* Access Transport - old implementation, taking from channel variable of ss7_clg_subaddr */
copy_accTrnspt_to_sngss7(ftdmchan, &iam.accTrnspt); copy_accTrnspt_to_sngss7(ftdmchan, &iam.accTrnspt);
/* Access Transport - taking from channel variable of ss7_access_transport_urlenc.
This will overwirte the IE value set be above old implementation.
*/
copy_access_transport_to_sngss7(ftdmchan, &iam.accTrnspt);
copy_NatureOfConnection_to_sngss7(ftdmchan, &iam.natConInd);
SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx IAM clg = \"%s\" (NADI=%d), cld = \"%s\" (NADI=%d), loc = %s (NADI=%d)\n", SS7_INFO_CHAN(ftdmchan,"[CIC:%d]Tx IAM clg = \"%s\" (NADI=%d), cld = \"%s\" (NADI=%d), loc = %s (NADI=%d)\n",
sngss7_info->circuit->cic, sngss7_info->circuit->cic,
......
...@@ -1937,7 +1937,6 @@ SWITCH_DECLARE(switch_channel_state_t) switch_channel_perform_set_running_state( ...@@ -1937,7 +1937,6 @@ SWITCH_DECLARE(switch_channel_state_t) switch_channel_perform_set_running_state(
channel->direction == SWITCH_CALL_DIRECTION_OUTBOUND ? "outbound" : "inbound"); channel->direction == SWITCH_CALL_DIRECTION_OUTBOUND ? "outbound" : "inbound");
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Presence-Call-Direction", switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Presence-Call-Direction",
channel->direction == SWITCH_CALL_DIRECTION_OUTBOUND ? "outbound" : "inbound"); channel->direction == SWITCH_CALL_DIRECTION_OUTBOUND ? "outbound" : "inbound");
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-HIT-Dialplan", switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-HIT-Dialplan",
switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_INBOUND || switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_INBOUND ||
switch_channel_test_flag(channel, CF_DIALPLAN) ? "true" : "false"); switch_channel_test_flag(channel, CF_DIALPLAN) ? "true" : "false");
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论