提交 294ab388 authored 作者: Mathieu Rene's avatar Mathieu Rene

fix conflict

...@@ -5069,7 +5069,8 @@ static ftdm_cli_entry_t ftdm_cli_options[] = ...@@ -5069,7 +5069,8 @@ static ftdm_cli_entry_t ftdm_cli_options[] =
/* Fake handlers as they are handled within freetdm library, /* Fake handlers as they are handled within freetdm library,
* we should provide a way inside freetdm to query for completions from signaling modules */ * we should provide a way inside freetdm to query for completions from signaling modules */
{ "core state", "[!]<state_name>", "", NULL }, { "core state", "[!]<state_name>", "", NULL },
{ "core flag", "[!]<flag_value>", "", NULL }, { "core flag", "[!]<flag-int-value|flag-name> [<span_id|span_name>] [<chan_id>]", "", NULL },
{ "core spanflag", "[!]<flag-int-value|flag-name> [<span_id|span_name>]", "", NULL },
{ "core calls", "", "", NULL }, { "core calls", "", "", NULL },
}; };
......
差异被折叠。
...@@ -1460,6 +1460,33 @@ static ftdm_status_t handle_show_status(ftdm_stream_handle_t *stream, int span, ...@@ -1460,6 +1460,33 @@ static ftdm_status_t handle_show_status(ftdm_stream_handle_t *stream, int span,
x++; x++;
} /* while (g_ftdm_sngss7_data.cfg.isupCkt[x]id != 0) */ } /* while (g_ftdm_sngss7_data.cfg.isupCkt[x]id != 0) */
/* Look spans that are being used by M2UA SG links */
for (x = 1; x < ftdm_array_len(g_ftdm_sngss7_data.cfg.g_m2ua_cfg.nif); x++) {
if (g_ftdm_sngss7_data.cfg.g_m2ua_cfg.nif[x].id) {
if (g_ftdm_sngss7_data.cfg.mtp2Link[g_ftdm_sngss7_data.cfg.g_m2ua_cfg.nif[x].mtp2LnkNmb].id) {
uint32_t mtp1_id = g_ftdm_sngss7_data.cfg.mtp2Link[g_ftdm_sngss7_data.cfg.g_m2ua_cfg.nif[x].mtp2LnkNmb].id;
if (g_ftdm_sngss7_data.cfg.mtp1Link[mtp1_id].id) {
if (g_ftdm_sngss7_data.cfg.mtp1Link[mtp1_id].span == span) {
if (chan) {
if (chan == g_ftdm_sngss7_data.cfg.mtp1Link[mtp1_id].chan) {
stream->write_function(stream, "span=%2d|chan=%2d|cic=%4d|SIGNALING LINK\n",
g_ftdm_sngss7_data.cfg.mtp1Link[mtp1_id].span,
g_ftdm_sngss7_data.cfg.mtp1Link[mtp1_id].chan,
0);
}
} else {
stream->write_function(stream, "span=%2d|chan=%2d|cic=%4d|SIGNALING LINK\n",
g_ftdm_sngss7_data.cfg.mtp1Link[mtp1_id].span,
g_ftdm_sngss7_data.cfg.mtp1Link[mtp1_id].chan,
0);
}
}
}
}
}
}
return FTDM_SUCCESS; return FTDM_SUCCESS;
} }
......
...@@ -197,6 +197,8 @@ typedef enum { ...@@ -197,6 +197,8 @@ typedef enum {
FTDM_SPAN_NON_STOPPABLE = (1 << 13), FTDM_SPAN_NON_STOPPABLE = (1 << 13),
/* If this flag is set, then this span supports TRANSFER state */ /* If this flag is set, then this span supports TRANSFER state */
FTDM_SPAN_USE_TRANSFER = (1 << 14), FTDM_SPAN_USE_TRANSFER = (1 << 14),
/* This is the last flag, no more flags bigger than this */
FTDM_SPAN_MAX_FLAG = (1 << 15),
} ftdm_span_flag_t; } ftdm_span_flag_t;
/*! \brief Channel supported features */ /*! \brief Channel supported features */
......
...@@ -138,6 +138,7 @@ done: ...@@ -138,6 +138,7 @@ done:
switch_status_t megaco_profile_peer_xmlstatus(switch_stream_handle_t *stream, megaco_profile_t* mg_cfg) switch_status_t megaco_profile_peer_xmlstatus(switch_stream_handle_t *stream, megaco_profile_t* mg_cfg)
{ {
int idx = 0x00; int idx = 0x00;
int peerIdx = 0x00;
int len = 0x00; int len = 0x00;
MgMngmt cfm; MgMngmt cfm;
char* xmlhdr = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"; char* xmlhdr = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
...@@ -152,33 +153,37 @@ switch_status_t megaco_profile_peer_xmlstatus(switch_stream_handle_t *stream, me ...@@ -152,33 +153,37 @@ switch_status_t megaco_profile_peer_xmlstatus(switch_stream_handle_t *stream, me
memset((U8 *)&cfm, 0, sizeof(cfm)); memset((U8 *)&cfm, 0, sizeof(cfm));
memset((char *)&prntBuf, 0, sizeof(prntBuf)); memset((char *)&prntBuf, 0, sizeof(prntBuf));
mg_peer = megaco_peer_profile_locate(mg_cfg->peer_list[0]); idx = mg_cfg->idx;
if(!mg_peer){ len = len + sprintf(&prntBuf[0] + len,"%s\n",xmlhdr);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR," No MG peer configuration found for peername[%s] against profilename[%s]\n",mg_cfg->peer_list[0],mg_cfg->name);
return SWITCH_STATUS_FALSE; len = len + sprintf(&prntBuf[0] + len,"<mg_peers>\n");
}
for(peerIdx =0; peerIdx < mg_cfg->total_peers; peerIdx++){
idx = mg_cfg->idx; mg_peer = megaco_peer_profile_locate(mg_cfg->peer_list[peerIdx]);
len = len + sprintf(&prntBuf[0] + len,"%s\n",xmlhdr); if(!mg_peer){
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR," No MG peer configuration found for peername[%s] against profilename[%s]\n",mg_cfg->peer_list[peerIdx],mg_cfg->name);
return SWITCH_STATUS_FALSE;
}
len = len + sprintf(&prntBuf[0] + len,"<mg_peer>\n"); len = len + sprintf(&prntBuf[0] + len,"<mg_peer>\n");
len = len + sprintf(&prntBuf[0] + len,"<name>%s</name>\n",mg_cfg->peer_list[0]); len = len + sprintf(&prntBuf[0] + len,"<name>%s</name>\n",mg_peer->name);
/* TODO - as of now supporting only one peer .. need to add logic to iterate through all the peers associated with this profile..*/ /* send request to MEGACO Trillium stack to get peer information*/
sng_mgco_mg_get_status(STGCPENT, &cfm, mg_cfg, mg_peer);
/* send request to MEGACO Trillium stack to get peer information*/ ip = ntohl(cfm.t.ssta.s.mgPeerSta.peerAddrTbl.netAddr[i].u.ipv4NetAddr);
sng_mgco_mg_get_status(STGCPENT, &cfm, mg_cfg, mg_peer); cmInetNtoa(ip, &asciiAddr);
len = len + sprintf(prntBuf+len, "<ipv4_address>%s</ipv4_address>\n",asciiAddr);
ip = ntohl(cfm.t.ssta.s.mgPeerSta.peerAddrTbl.netAddr[i].u.ipv4NetAddr); len = len + sprintf(prntBuf+len, "<peer_state>%s</peer_state>\n",PRNT_MG_PEER_STATE(cfm.t.ssta.s.mgPeerSta.peerState));
cmInetNtoa(ip, &asciiAddr);
len = len + sprintf(prntBuf+len, "<ipv4_address>%s</ipv4_address>\n",asciiAddr);
len = len + sprintf(prntBuf+len, "<peer_state>%s</peer_state>\n",PRNT_MG_PEER_STATE(cfm.t.ssta.s.mgPeerSta.peerState)); len = len + sprintf(&prntBuf[0] + len,"</mg_peer>\n");
}
len = len + sprintf(&prntBuf[0] + len,"</mg_peer>\n"); len = len + sprintf(&prntBuf[0] + len,"</mg_peers>\n");
stream->write_function(stream, "\n%s\n",&prntBuf[0]); stream->write_function(stream, "\n%s\n",&prntBuf[0]);
...@@ -190,6 +195,7 @@ switch_status_t megaco_profile_peer_xmlstatus(switch_stream_handle_t *stream, me ...@@ -190,6 +195,7 @@ switch_status_t megaco_profile_peer_xmlstatus(switch_stream_handle_t *stream, me
switch_status_t megaco_profile_xmlstatus(switch_stream_handle_t *stream, megaco_profile_t* mg_cfg) switch_status_t megaco_profile_xmlstatus(switch_stream_handle_t *stream, megaco_profile_t* mg_cfg)
{ {
int idx = 0x00; int idx = 0x00;
int peerIdx = 0x00;
int len = 0x00; int len = 0x00;
MgMngmt cfm; MgMngmt cfm;
char* xmlhdr = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"; char* xmlhdr = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
...@@ -204,13 +210,7 @@ switch_status_t megaco_profile_xmlstatus(switch_stream_handle_t *stream, megaco_ ...@@ -204,13 +210,7 @@ switch_status_t megaco_profile_xmlstatus(switch_stream_handle_t *stream, megaco_
memset((U8 *)&cfm, 0, sizeof(cfm)); memset((U8 *)&cfm, 0, sizeof(cfm));
memset((char *)&prntBuf, 0, sizeof(prntBuf)); memset((char *)&prntBuf, 0, sizeof(prntBuf));
mg_peer = megaco_peer_profile_locate(mg_cfg->peer_list[0]);
if(!mg_peer){
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR," No MG peer configuration found for peername[%s] against profilename[%s]\n",mg_cfg->peer_list[0],mg_cfg->name);
return SWITCH_STATUS_FALSE;
}
idx = mg_cfg->idx; idx = mg_cfg->idx;
...@@ -221,17 +221,26 @@ switch_status_t megaco_profile_xmlstatus(switch_stream_handle_t *stream, megaco_ ...@@ -221,17 +221,26 @@ switch_status_t megaco_profile_xmlstatus(switch_stream_handle_t *stream, megaco_
/****************************************************************************************************************/ /****************************************************************************************************************/
/* Print Peer Information ***************************************************************************************/ /* Print Peer Information ***************************************************************************************/
/* TODO - as of now supporting only one peer .. need to add logic to iterate through all the peers associated with this profile..*/
len = len + sprintf(&prntBuf[0] + len,"<mg_peers>\n"); len = len + sprintf(&prntBuf[0] + len,"<mg_peers>\n");
len = len + sprintf(&prntBuf[0] + len,"<mg_peer name=%s>\n",mg_peer->name);
/* send request to MEGACO Trillium stack to get peer information*/ for(peerIdx =0; peerIdx < mg_cfg->total_peers; peerIdx++){
sng_mgco_mg_get_status(STGCPENT, &cfm, mg_cfg, mg_peer);
mg_peer = megaco_peer_profile_locate(mg_cfg->peer_list[peerIdx]);
if(!mg_peer){
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR," No MG peer configuration found for peername[%s] against profilename[%s]\n",mg_cfg->peer_list[peerIdx],mg_cfg->name);
return SWITCH_STATUS_FALSE;
}
get_peer_xml_buffer(&prntBuf[0] + len, &cfm.t.ssta.s.mgPeerSta); len = len + sprintf(&prntBuf[0] + len,"<mg_peer name=%s>\n",mg_peer->name);
len = len + sprintf(&prntBuf[0] + len,"</mg_peer>\n"); /* send request to MEGACO Trillium stack to get peer information*/
sng_mgco_mg_get_status(STGCPENT, &cfm, mg_cfg, mg_peer);
get_peer_xml_buffer(&prntBuf[0] + len, &cfm.t.ssta.s.mgPeerSta);
len = len + sprintf(&prntBuf[0] + len,"</mg_peer>\n");
}
len = len + sprintf(&prntBuf[0] + len,"</mg_peers>\n"); len = len + sprintf(&prntBuf[0] + len,"</mg_peers>\n");
......
...@@ -183,7 +183,6 @@ switch_status_t sng_mgco_cfg(megaco_profile_t* profile) ...@@ -183,7 +183,6 @@ switch_status_t sng_mgco_cfg(megaco_profile_t* profile)
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO," mgco_mu_ssap_config SUCCESS \n"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO," mgco_mu_ssap_config SUCCESS \n");
} }
if(mgco_mg_tsap_config(profile)) { if(mgco_mg_tsap_config(profile)) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR," mgco_mg_tsap_config FAILED \n"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR," mgco_mg_tsap_config FAILED \n");
return SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
...@@ -256,7 +255,6 @@ switch_status_t sng_mgco_start(megaco_profile_t* profile ) ...@@ -256,7 +255,6 @@ switch_status_t sng_mgco_start(megaco_profile_t* profile )
else { else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, " mgco_mg_tsap_enable_cntrl SUCCESS \n"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, " mgco_mg_tsap_enable_cntrl SUCCESS \n");
} }
//mgco_mg_enable_debug();
return SWITCH_STATUS_SUCCESS; return SWITCH_STATUS_SUCCESS;
} }
...@@ -784,6 +782,8 @@ int mgco_mg_gen_config(void) ...@@ -784,6 +782,8 @@ int mgco_mg_gen_config(void)
cfg->noEDInst = 1; cfg->noEDInst = 1;
#endif /* CM_ABNF_MT_LIB */ #endif /* CM_ABNF_MT_LIB */
cfg->entType = LMG_ENT_GW;
#ifdef GCP_CH #ifdef GCP_CH
cfg->numBinsPeerCmdHl = 20; cfg->numBinsPeerCmdHl = 20;
cfg->numBinsTransReqHl = 50; cfg->numBinsTransReqHl = 50;
...@@ -1002,7 +1002,7 @@ int mgco_mg_tsap_config(megaco_profile_t* profile) ...@@ -1002,7 +1002,7 @@ int mgco_mg_tsap_config(megaco_profile_t* profile)
/* FILL TSAP config */ /* FILL TSAP config */
cfg->tSAPId = profile->idx; cfg->tSAPId = profile->idx;
cfg->spId = profile->idx; cfg->spId = profile->idx;
cfg->provType = mg_get_tpt_type(profile); cfg->provType = LMG_PROV_TYPE_TUCL;
/* FILL TUCL Information */ /* FILL TUCL Information */
cfg->memId.region = S_REG; cfg->memId.region = S_REG;
...@@ -1046,7 +1046,7 @@ int mgco_mg_peer_config(megaco_profile_t* mg_cfg) ...@@ -1046,7 +1046,7 @@ int mgco_mg_peer_config(megaco_profile_t* mg_cfg)
Pst pst; /* Post for layer manager */ Pst pst; /* Post for layer manager */
U32 peerIdx = 0; U32 peerIdx = 0;
CmInetIpAddr ipAddr = 0; CmInetIpAddr ipAddr = 0;
mg_peer_profile_t* mg_peer = megaco_peer_profile_locate(mg_cfg->peer_list[0]); mg_peer_profile_t* mg_peer = NULL;
memset(&mgMngmt, 0, sizeof(mgMngmt)); memset(&mgMngmt, 0, sizeof(mgMngmt));
cfg = &(mgMngmt.t.cfg.c.mgGcpEntCfg); cfg = &(mgMngmt.t.cfg.c.mgGcpEntCfg);
...@@ -1064,39 +1064,43 @@ int mgco_mg_peer_config(megaco_profile_t* mg_cfg) ...@@ -1064,39 +1064,43 @@ int mgco_mg_peer_config(megaco_profile_t* mg_cfg)
mgMngmt.hdr.elmId.elmnt = STGCPENT; mgMngmt.hdr.elmId.elmnt = STGCPENT;
cfg->numPeer = mg_cfg->total_peers; cfg->numPeer = mg_cfg->total_peers;
cfg->peerCfg[peerIdx].sSAPId = mg_cfg->idx; /* SSAP ID */; for(peerIdx =0; peerIdx < mg_cfg->total_peers; peerIdx++){
cfg->peerCfg[peerIdx].port = atoi(mg_peer->port);
cfg->peerCfg[peerIdx].tsapId = mg_cfg->idx;
cfg->peerCfg[peerIdx].mtuSize = MG_MAX_MTU_SIZE; mg_peer = megaco_peer_profile_locate(mg_cfg->peer_list[peerIdx]);
cfg->peerCfg[peerIdx].sSAPId = mg_cfg->idx; /* SSAP ID */;
cfg->peerCfg[peerIdx].port = atoi(mg_peer->port);
cfg->peerCfg[peerIdx].tsapId = mg_cfg->idx;
cfg->peerCfg[peerIdx].peerAddrTbl.count = 1; cfg->peerCfg[peerIdx].mtuSize = MG_MAX_MTU_SIZE;
cfg->peerCfg[peerIdx].peerAddrTbl.netAddr[0].type =
CM_NETADDR_IPV4;
if(ROK == cmInetAddr((S8*)&mg_peer->ipaddr[0],&ipAddr)) cfg->peerCfg[peerIdx].peerAddrTbl.count = 1;
{ cfg->peerCfg[peerIdx].peerAddrTbl.netAddr[0].type =
cfg->peerCfg[peerIdx].peerAddrTbl.netAddr[0].u.ipv4NetAddr = ntohl(ipAddr); CM_NETADDR_IPV4;
}
else if(ROK == cmInetAddr((S8*)&mg_peer->ipaddr[0],&ipAddr))
{ {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "cmInetAddr failed \n"); cfg->peerCfg[peerIdx].peerAddrTbl.netAddr[0].u.ipv4NetAddr = ntohl(ipAddr);
cfg->peerCfg[peerIdx].peerAddrTbl.count = 0; }
} else
{
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "cmInetAddr failed \n");
cfg->peerCfg[peerIdx].peerAddrTbl.count = 0;
}
#ifdef GCP_MG #ifdef GCP_MG
cfg->peerCfg[peerIdx].transportType = mg_get_tpt_type_from_str(mg_peer->transport_type); cfg->peerCfg[peerIdx].transportType = mg_get_tpt_type_from_str(mg_peer->transport_type);
cfg->peerCfg[peerIdx].encodingScheme = mg_get_enc_type_from_str(mg_peer->encoding_type); cfg->peerCfg[peerIdx].encodingScheme = mg_get_enc_type_from_str(mg_peer->encoding_type);
cfg->peerCfg[peerIdx].mgcPriority = 0; cfg->peerCfg[peerIdx].mgcPriority = peerIdx;
cfg->peerCfg[peerIdx].useAHScheme = FALSE; cfg->peerCfg[peerIdx].useAHScheme = FALSE;
cfg->peerCfg[peerIdx].mid.pres = PRSNT_NODEF; cfg->peerCfg[peerIdx].mid.pres = PRSNT_NODEF;
cfg->peerCfg[peerIdx].mid.len = strlen((char*)mg_peer->mid); cfg->peerCfg[peerIdx].mid.len = strlen((char*)mg_peer->mid);
cmMemcpy((U8 *)cfg->peerCfg[peerIdx].mid.val, cmMemcpy((U8 *)cfg->peerCfg[peerIdx].mid.val,
(CONSTANT U8*)(char*)mg_peer->mid, (CONSTANT U8*)(char*)mg_peer->mid,
cfg->peerCfg[peerIdx].mid.len); cfg->peerCfg[peerIdx].mid.len);
#endif /* GCP_MG */ #endif /* GCP_MG */
}
return(sng_cfg_mg(&pst, &mgMngmt)); return(sng_cfg_mg(&pst, &mgMngmt));
} }
...@@ -1306,7 +1310,6 @@ sng_mg_transport_types_e mg_get_tpt_type_from_str(char* tpt_type) ...@@ -1306,7 +1310,6 @@ sng_mg_transport_types_e mg_get_tpt_type_from_str(char* tpt_type)
if(!strcasecmp(tpt_type, "UDP")){ if(!strcasecmp(tpt_type, "UDP")){
return SNG_MG_TPT_UDP; return SNG_MG_TPT_UDP;
}else if(!strcasecmp(tpt_type,"TCP")){ }else if(!strcasecmp(tpt_type,"TCP")){
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "TCP Transport for H.248 Protocol Not Yet Supported \n");
return SNG_MG_TPT_TCP; return SNG_MG_TPT_TCP;
}else if(!strcasecmp(tpt_type,"STCP")){ }else if(!strcasecmp(tpt_type,"STCP")){
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "STCP Transport for H.248 Protocol Not Yet Supported \n"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "STCP Transport for H.248 Protocol Not Yet Supported \n");
......
...@@ -78,11 +78,12 @@ switch_status_t config_profile(megaco_profile_t *profile, switch_bool_t reload) ...@@ -78,11 +78,12 @@ switch_status_t config_profile(megaco_profile_t *profile, switch_bool_t reload)
goto done; goto done;
} }
count = 0x00;
event = NULL;
for (mg_peer = switch_xml_child(mg_peers, "mg_peer"); mg_peer; mg_peer = mg_peer->next) { for (mg_peer = switch_xml_child(mg_peers, "mg_peer"); mg_peer; mg_peer = mg_peer->next) {
const char *name = switch_xml_attr_soft(mg_peer, "name"); const char *name = switch_xml_attr_soft(mg_peer, "name");
for(idx=0; idx<profile->total_peers; idx++){ for(idx=0; idx<profile->total_peers; idx++){
count = 0x00;
event = NULL;
peer_profile = NULL;
if (!strcmp(name, profile->peer_list[idx])) { if (!strcmp(name, profile->peer_list[idx])) {
/* peer profile */ /* peer profile */
peer_profile = switch_core_alloc(profile->pool, sizeof(*peer_profile)); peer_profile = switch_core_alloc(profile->pool, sizeof(*peer_profile));
...@@ -93,7 +94,7 @@ switch_status_t config_profile(megaco_profile_t *profile, switch_bool_t reload) ...@@ -93,7 +94,7 @@ switch_status_t config_profile(megaco_profile_t *profile, switch_bool_t reload)
count = switch_event_import_xml(switch_xml_child(mg_peer, "param"), "name", "value", &event); count = switch_event_import_xml(switch_xml_child(mg_peer, "param"), "name", "value", &event);
if(SWITCH_STATUS_FALSE == (status = switch_xml_config_parse_event(event, count, reload, instructions1))){ if(SWITCH_STATUS_FALSE == (status = switch_xml_config_parse_event(event, count, reload, instructions1))){
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, " Peer XML Parsing failed \n"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, " Peer XML Parsing failed \n");
goto done; goto done;
} }
...@@ -136,6 +137,7 @@ switch_status_t mg_config_cleanup(megaco_profile_t* profile) ...@@ -136,6 +137,7 @@ switch_status_t mg_config_cleanup(megaco_profile_t* profile)
static switch_xml_config_item_t *get_peer_instructions(mg_peer_profile_t *profile) { static switch_xml_config_item_t *get_peer_instructions(mg_peer_profile_t *profile) {
switch_xml_config_item_t *dup; switch_xml_config_item_t *dup;
switch_xml_config_item_t instructions[] = { switch_xml_config_item_t instructions[] = {
/* parameter name type reloadable pointer default value options structure */ /* parameter name type reloadable pointer default value options structure */
SWITCH_CONFIG_ITEM("ip", SWITCH_CONFIG_STRING, CONFIG_RELOADABLE, &profile->ipaddr, "", &switch_config_string_strdup, "", "Peer IP"), SWITCH_CONFIG_ITEM("ip", SWITCH_CONFIG_STRING, CONFIG_RELOADABLE, &profile->ipaddr, "", &switch_config_string_strdup, "", "Peer IP"),
...@@ -145,7 +147,7 @@ static switch_xml_config_item_t *get_peer_instructions(mg_peer_profile_t *profil ...@@ -145,7 +147,7 @@ static switch_xml_config_item_t *get_peer_instructions(mg_peer_profile_t *profil
SWITCH_CONFIG_ITEM("message-identifier", SWITCH_CONFIG_STRING, 0, &profile->mid, "", &switch_config_string_strdup, "", "peer message identifier "), SWITCH_CONFIG_ITEM("message-identifier", SWITCH_CONFIG_STRING, 0, &profile->mid, "", &switch_config_string_strdup, "", "peer message identifier "),
SWITCH_CONFIG_ITEM_END() SWITCH_CONFIG_ITEM_END()
}; };
dup = malloc(sizeof(instructions)); dup = malloc(sizeof(instructions));
memcpy(dup, instructions, sizeof(instructions)); memcpy(dup, instructions, sizeof(instructions));
return dup; return dup;
......
...@@ -118,7 +118,7 @@ void handle_sng_log(uint8_t level, char *fmt, ...) ...@@ -118,7 +118,7 @@ void handle_sng_log(uint8_t level, char *fmt, ...)
case SNG_LOGLEVEL_DEBUG: log_level = SWITCH_LOG_DEBUG; break; case SNG_LOGLEVEL_DEBUG: log_level = SWITCH_LOG_DEBUG; break;
case SNG_LOGLEVEL_INFO: log_level = SWITCH_LOG_INFO; break; case SNG_LOGLEVEL_INFO: log_level = SWITCH_LOG_INFO; break;
case SNG_LOGLEVEL_WARN: log_level = SWITCH_LOG_WARNING; break; case SNG_LOGLEVEL_WARN: log_level = SWITCH_LOG_WARNING; break;
case SNG_LOGLEVEL_ERROR: log_level = SWITCH_LOG_DEBUG; break; case SNG_LOGLEVEL_ERROR: log_level = SWITCH_LOG_ERROR; break;
case SNG_LOGLEVEL_CRIT: log_level = SWITCH_LOG_CRIT; break; case SNG_LOGLEVEL_CRIT: log_level = SWITCH_LOG_CRIT; break;
default: log_level = SWITCH_LOG_DEBUG; break; default: log_level = SWITCH_LOG_DEBUG; break;
}; };
......
...@@ -88,15 +88,19 @@ switch_io_routines_t crtp_io_routines = { ...@@ -88,15 +88,19 @@ switch_io_routines_t crtp_io_routines = {
.send_dtmf = channel_send_dtmf .send_dtmf = channel_send_dtmf
}; };
#if 0
SWITCH_STANDARD_API(test_function) SWITCH_STANDARD_API(test_function)
{ {
return SWITCH_STATUS_SUCCESS; return SWITCH_STATUS_SUCCESS;
} }
#endif
void crtp_init(switch_loadable_module_interface_t *module_interface) void crtp_init(switch_loadable_module_interface_t *module_interface)
{ {
switch_endpoint_interface_t *endpoint_interface; switch_endpoint_interface_t *endpoint_interface;
#if 0 /* DAVIDY */
switch_api_interface_t *api_interface; switch_api_interface_t *api_interface;
#endif
crtp.pool = module_interface->pool; crtp.pool = module_interface->pool;
endpoint_interface = switch_loadable_module_create_interface(module_interface, SWITCH_ENDPOINT_INTERFACE); endpoint_interface = switch_loadable_module_create_interface(module_interface, SWITCH_ENDPOINT_INTERFACE);
endpoint_interface->interface_name = "rtp"; endpoint_interface->interface_name = "rtp";
...@@ -128,12 +132,18 @@ typedef struct parsed_sdp_s { ...@@ -128,12 +132,18 @@ typedef struct parsed_sdp_s {
static switch_status_t setup_local_rtp(crtp_private_t *tech_pvt, const char *l_sdp, const char *codec_string) static switch_status_t setup_local_rtp(crtp_private_t *tech_pvt, const char *l_sdp, const char *codec_string)
{ {
switch_core_session_t const * session = tech_pvt->session; int codec_order_last;
int num_codecs; int num_codecs;
#if 0 /* DAVIDY */
switch_core_session_t const * session = tech_pvt->session;
#endif
const switch_codec_implementation_t *codecs[SWITCH_MAX_CODECS] = { 0 }; const switch_codec_implementation_t *codecs[SWITCH_MAX_CODECS] = { 0 };
char *codec_order[SWITCH_MAX_CODECS] = { 0 }; char *codec_order[SWITCH_MAX_CODECS] = { 0 };
int codec_order_last; #if 1 /* DAVIDY */
char *sdpbuf = NULL;
sdp_connection_t *connection = NULL;
sdp_printer_t *printer = NULL;
#endif
/* Load in the list of codecs we support. If we have a codec string we use our priorities first */ /* Load in the list of codecs we support. If we have a codec string we use our priorities first */
...@@ -151,24 +161,30 @@ static switch_status_t setup_local_rtp(crtp_private_t *tech_pvt, const char *l_s ...@@ -151,24 +161,30 @@ static switch_status_t setup_local_rtp(crtp_private_t *tech_pvt, const char *l_s
if (zstr(l_sdp)) { if (zstr(l_sdp)) {
/* Generate a local SDP here */ /* Generate a local SDP here */
#if 0 /* DAVIDY */
const char *sdpbuf = switch_core_session_sprintf(session, "v=0\nIN IP4 %s\nm=audio %d RTP/AVP %d"); const char *sdpbuf = switch_core_session_sprintf(session, "v=0\nIN IP4 %s\nm=audio %d RTP/AVP %d");
#endif
} else { } else {
/* Parse the SDP and remove anything we cannot support, then validate it to make sure it contains at least one codec /* Parse the SDP and remove anything we cannot support, then validate it to make sure it contains at least one codec
* so that we reject invalid ones. */ * so that we reject invalid ones. */
#if 1 #if 0
uint8_t match = 0; uint8_t match = 0;
int first = 0, last = 0; int first = 0, last = 0;
int ptime = 0, dptime = 0, maxptime = 0, dmaxptime = 0; int ptime = 0, dptime = 0, maxptime = 0, dmaxptime = 0;
int sendonly = 0, recvonly = 0; int sendonly = 0, recvonly = 0;
int greedy = 0, x = 0, skip = 0, mine = 0; int greedy = 0, x = 0, skip = 0;
int got_crypto = 0, got_audio = 0, got_avp = 0, got_savp = 0, got_udptl = 0;
#endif #endif
int ptime = 0, maxptime = 0;
int sdp_modified = 0; int sdp_modified = 0;
int cur_codec = 0; int cur_codec = 0;
sdp_parser_t *parser = NULL; sdp_parser_t *parser = NULL;
#if 1 /* DAVIDY */
sdp_session_t *sdp;
#else
sdp_session_t *sdp, *lsdp; sdp_session_t *sdp, *lsdp;
#endif
sdp_media_t *m; sdp_media_t *m;
sdp_attribute_t *attr; sdp_attribute_t *attr;
su_home_t *sdp_home; su_home_t *sdp_home;
...@@ -196,7 +212,6 @@ static switch_status_t setup_local_rtp(crtp_private_t *tech_pvt, const char *l_s ...@@ -196,7 +212,6 @@ static switch_status_t setup_local_rtp(crtp_private_t *tech_pvt, const char *l_s
} }
} }
sdp_connection_t *connection;
connection = sdp->sdp_connection; connection = sdp->sdp_connection;
if (m->m_connections) { if (m->m_connections) {
connection = m->m_connections; connection = m->m_connections;
...@@ -250,8 +265,10 @@ static switch_status_t setup_local_rtp(crtp_private_t *tech_pvt, const char *l_s ...@@ -250,8 +265,10 @@ static switch_status_t setup_local_rtp(crtp_private_t *tech_pvt, const char *l_s
} }
} }
#if 0 /* DAVIDY */
char sdpbuf[2048] = ""; char sdpbuf[2048] = "";
sdp_printer_t *printer = sdp_print(sdp_home, sdp, sdpbuf, sizeof(sdpbuf), 0); #endif
printer = sdp_print(sdp_home, sdp, sdpbuf, sizeof(sdpbuf), 0);
switch_channel_set_variable(tech_pvt->channel, kLSDP, sdpbuf); switch_channel_set_variable(tech_pvt->channel, kLSDP, sdpbuf);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Setting local SDP: [%s]\n", sdpbuf); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Setting local SDP: [%s]\n", sdpbuf);
sdp_printer_free(printer); sdp_printer_free(printer);
...@@ -485,8 +502,10 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi ...@@ -485,8 +502,10 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi
char name[128]; char name[128];
const char *dname = "PCMU"; const char *dname = "PCMU";
uint32_t interval = 20; uint32_t interval = 20;
crtp_private_t *tech_pvt; crtp_private_t *tech_pvt = NULL;
#if 0
const char *r_sdp = switch_event_get_header(var_event, kRSDP); const char *r_sdp = switch_event_get_header(var_event, kRSDP);
#endif
const char *l_sdp = switch_event_get_header(var_event, kLSDP); const char *l_sdp = switch_event_get_header(var_event, kLSDP);
const char *codec_string = switch_event_get_header_nil(var_event, kCODECSTRING); const char *codec_string = switch_event_get_header_nil(var_event, kCODECSTRING);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论