switch_status_t handle_show_activecalls_cli_cmd(switch_stream_handle_t *stream, megaco_profile_t* mg_profile);
switch_status_t handle_show_stats(switch_stream_handle_t *stream, megaco_profile_t* mg_profile);
switch_status_t handle_show_stack_mem(switch_stream_handle_t *stream);
+switch_status_t handle_span_term_status_cli_cmd(switch_stream_handle_t *stream, megaco_profile_t* mg_profile, char* span_name);
/******************************************************************************/
}
megaco_profile_release(profile);
handle_term_status_cli_cmd(stream, profile, argv[4]);
+ /*******************************************************************/
+ }else if(!strcasecmp(argv[3], "spantermstatus")){
+ /*******************************************************************/
+ /* mg <mg-profile> show spantermstatus <span-name> */
+ if (zstr(argv[4])) {
+ goto usage;
+ }
+ megaco_profile_release(profile);
+ handle_span_term_status_cli_cmd(stream, profile, argv[4]);
+
/*******************************************************************/
}else if(!strcasecmp(argv[3], "stackmem")){
/*******************************************************************/
//stream->write_function(stream, "mg profile <profile-name> send ito notify \n");
//stream->write_function(stream, "mg profile <profile-name> send cng <term-id> \n");
stream->write_function(stream, "mg profile <profile-name> show activecalls \n");
+ stream->write_function(stream, "mg profile <profile-name> show spantermstatus <span_name> \n");
stream->write_function(stream, "mg profile <profile-name> show termstatus <term-id> \n");
stream->write_function(stream, "mg profile <profile-name> show alltermstatus \n");
stream->write_function(stream, "mg profile <profile-name> show stackmem \n");
return SWITCH_STATUS_SUCCESS;
}
/******************************************************************************/
+
+switch_status_t handle_span_term_status_cli_cmd(switch_stream_handle_t *stream, megaco_profile_t* mg_profile, char* span_name)
+{
+ void *val = NULL;
+ switch_hash_index_t *hi = NULL;
+ mg_termination_t *term = NULL;
+ const void *var;
+ int found = 0x00;
+ int first = 0x01;
+
+ if(!mg_profile || !span_name){
+ stream->write_function(stream, "-ERR NULL profile or NULL span_name\n");
+ return SWITCH_STATUS_FALSE;
+ }
+
+ switch_thread_rwlock_rdlock(mg_profile->terminations_rwlock);
+
+ for (hi = switch_hash_first(NULL, mg_profile->terminations); hi; hi = switch_hash_next(hi)) {
+ switch_hash_this(hi, &var, NULL, &val);
+ term = (mg_termination_t *) val;
+ if(!term) continue;
+
+ if(MG_TERM_RTP == term->type) continue;
+
+ if(!term->u.tdm.span_name) continue;
+
+ if(strcasecmp(span_name,term->u.tdm.span_name)) continue;
+
+ found = 0x01;
+
+ if(first){
+ stream->write_function(stream, " Termination Name");
+ stream->write_function(stream, "\t Termination State");
+ stream->write_function(stream, "\t Call State");
+ stream->write_function(stream, "\t Termination Type");
+ stream->write_function(stream, "\t Span-Id ");
+ stream->write_function(stream, "\t Channel-Id ");
+ first = 0x00;
+ }
+
+ stream->write_function(stream, "\n");
+
+ stream->write_function(stream, " %s",(NULL != term->name)?term->name:"NULL");
+ if(MG_TERM_RTP == term->type){
+ stream->write_function(stream, "\t\t\t IN-SERVICE");
+ }else{
+ stream->write_function(stream, "\t\t\t %s",
+ (switch_test_flag(term, MG_IN_SERVICE))?"IN-SERVICE":"OUT-OF-SERVICE");
+ }
+
+ stream->write_function(stream, "\t\t%s",(NULL != term->uuid)?"IN-CALL ":"IDLE ");
+ stream->write_function(stream, "\t\t %s",(MG_TERM_RTP == term->type)?"MG_TERM_RTP":"MG_TERM_TDM");
+
+ if(MG_TERM_TDM == term->type){
+ stream->write_function(stream, "\t\t %s",
+ (NULL != term->u.tdm.span_name)?term->u.tdm.span_name:"NULL");
+ stream->write_function(stream, "\t\t %d",term->u.tdm.channel);
+ }else{
+ stream->write_function(stream, "\t\t -");
+ stream->write_function(stream, "\t\t -");
+ }
+ stream->write_function(stream, "\n");
+ }
+
+ if(!found){
+ stream->write_function(stream, "No span[%s] configured\n",span_name);
+ }
+
+ switch_thread_rwlock_unlock(mg_profile->terminations_rwlock);
+
+ return SWITCH_STATUS_SUCCESS;
+}
+/******************************************************************************/
+
switch_status_t handle_term_status_cli_cmd(switch_stream_handle_t *stream, megaco_profile_t* mg_profile, char* term_id)
{
mg_termination_t* term = NULL;