提交 5c747b69 authored 作者: David Yat Sin's avatar David Yat Sin

Fix for receiving/transmitting facility IE

上级 2973776b
...@@ -142,7 +142,7 @@ void sngisdn_process_con_ind (sngisdn_event_data_t *sngisdn_event) ...@@ -142,7 +142,7 @@ void sngisdn_process_con_ind (sngisdn_event_data_t *sngisdn_event)
ftdmchan->caller_data.bearer_capability = sngisdn_get_infoTranCap_from_stack(conEvnt->bearCap[0].infoTranCap.val); ftdmchan->caller_data.bearer_capability = sngisdn_get_infoTranCap_from_stack(conEvnt->bearCap[0].infoTranCap.val);
} }
if (signal_data->switchtype == SNGISDN_SWITCH_NI2) {
if (conEvnt->shift11.eh.pres && conEvnt->ni2OctStr.eh.pres) { if (conEvnt->shift11.eh.pres && conEvnt->ni2OctStr.eh.pres) {
if (conEvnt->ni2OctStr.str.len == 4 && conEvnt->ni2OctStr.str.val[0] == 0x37) { if (conEvnt->ni2OctStr.str.len == 4 && conEvnt->ni2OctStr.str.val[0] == 0x37) {
snprintf(ftdmchan->caller_data.aniII, 5, "%.2d", conEvnt->ni2OctStr.str.val[3]); snprintf(ftdmchan->caller_data.aniII, 5, "%.2d", conEvnt->ni2OctStr.str.val[3]);
...@@ -153,6 +153,7 @@ void sngisdn_process_con_ind (sngisdn_event_data_t *sngisdn_event) ...@@ -153,6 +153,7 @@ void sngisdn_process_con_ind (sngisdn_event_data_t *sngisdn_event)
if (signal_data->facility_ie_decode == SNGISDN_OPT_FALSE) { if (signal_data->facility_ie_decode == SNGISDN_OPT_FALSE) {
get_facility_ie(&ftdmchan->caller_data, conEvnt->facilityStr.facilityStr.val, conEvnt->facilityStr.facilityStr.len); get_facility_ie(&ftdmchan->caller_data, conEvnt->facilityStr.facilityStr.val, conEvnt->facilityStr.facilityStr.len);
} else if (signal_data->facility == SNGISDN_OPT_TRUE) { } else if (signal_data->facility == SNGISDN_OPT_TRUE) {
if (signal_data->switchtype == SNGISDN_SWITCH_NI2) {
/* Verify whether the Caller Name will come in a subsequent FACILITY message */ /* Verify whether the Caller Name will come in a subsequent FACILITY message */
uint16_t ret_val; uint16_t ret_val;
char retrieved_str[255]; char retrieved_str[255];
......
...@@ -412,7 +412,6 @@ void sngisdn_snd_connect(ftdm_channel_t *ftdmchan) ...@@ -412,7 +412,6 @@ void sngisdn_snd_connect(ftdm_channel_t *ftdmchan)
memset(&cnStEvnt, 0, sizeof(cnStEvnt)); memset(&cnStEvnt, 0, sizeof(cnStEvnt));
cnStEvnt.chanId.eh.pres = PRSNT_NODEF; cnStEvnt.chanId.eh.pres = PRSNT_NODEF;
cnStEvnt.chanId.prefExc.pres = PRSNT_NODEF; cnStEvnt.chanId.prefExc.pres = PRSNT_NODEF;
cnStEvnt.chanId.prefExc.val = IN_PE_EXCLSVE; cnStEvnt.chanId.prefExc.val = IN_PE_EXCLSVE;
...@@ -558,7 +557,6 @@ void sngisdn_snd_disconnect(ftdm_channel_t *ftdmchan) ...@@ -558,7 +557,6 @@ void sngisdn_snd_disconnect(ftdm_channel_t *ftdmchan)
set_facility_ie(ftdmchan, &discEvnt.facilityStr); set_facility_ie(ftdmchan, &discEvnt.facilityStr);
ftdm_log_chan(ftdmchan, FTDM_LOG_INFO, "Sending DISCONNECT (suId:%d suInstId:%u spInstId:%u)\n", signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId); ftdm_log_chan(ftdmchan, FTDM_LOG_INFO, "Sending DISCONNECT (suId:%d suInstId:%u spInstId:%u)\n", signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId);
if (sng_isdn_disc_request(signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId, &discEvnt)) { if (sng_isdn_disc_request(signal_data->cc_id, sngisdn_info->suInstId, sngisdn_info->spInstId, &discEvnt)) {
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "stack refused DISCONNECT request\n"); ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "stack refused DISCONNECT request\n");
......
...@@ -416,10 +416,12 @@ ftdm_status_t set_facility_ie(ftdm_channel_t *ftdmchan, FacilityStr *facilityStr ...@@ -416,10 +416,12 @@ ftdm_status_t set_facility_ie(ftdm_channel_t *ftdmchan, FacilityStr *facilityStr
if (ftdmchan->caller_data.raw_data_len && if (ftdmchan->caller_data.raw_data_len &&
ftdmchan->caller_data.raw_data[0] == 0x1C) { ftdmchan->caller_data.raw_data[0] == 0x1C) {
facilityStr->eh.pres = PRSNT_NODEF; facilityStr->eh.pres = PRSNT_NODEF;
facilityStr->facilityStr.pres = PRSNT_NODEF;
facilityStr->facilityStr.len = ftdmchan->caller_data.raw_data_len-2; facilityStr->facilityStr.len = ftdmchan->caller_data.raw_data_len-2;
memcpy(facilityStr->facilityStr.val, &ftdmchan->caller_data.raw_data[2], facilityStr->facilityStr.len); memcpy(facilityStr->facilityStr.val, &ftdmchan->caller_data.raw_data[2], facilityStr->facilityStr.len);
return FTDM_SUCCESS; return FTDM_SUCCESS;
} }
return FTDM_FAIL; return FTDM_FAIL;
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论