]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
adding peerstatus and logging enable/disable CLI command
authorkapil <kgupta@sangoma.com>
Tue, 5 Jun 2012 16:03:13 +0000 (21:33 +0530)
committerkapil <kgupta@sangoma.com>
Tue, 5 Jun 2012 16:03:13 +0000 (21:33 +0530)
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cli.c
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_m2ua.c
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_m2ua.h

index f4399d708d5f49f6fc6fad51ebea10cd0691d87d..bec6e020ac0ce8fa699bb8cd7666735621a6aa1a 100644 (file)
@@ -123,6 +123,7 @@ static ftdm_status_t handle_show_sctp_profiles(ftdm_stream_handle_t *stream);
 static ftdm_status_t handle_show_sctp_profile(ftdm_stream_handle_t *stream, char* sctp_profile_name);
 static ftdm_status_t handle_show_m2ua_profiles(ftdm_stream_handle_t *stream);
 static ftdm_status_t handle_show_m2ua_profile(ftdm_stream_handle_t *stream, char* m2ua_profile_name);
+static ftdm_status_t handle_show_m2ua_peer_status(ftdm_stream_handle_t *stream, char* m2ua_profile_name);
 static ftdm_status_t handle_show_nif_profiles(ftdm_stream_handle_t *stream);
 static ftdm_status_t handle_show_nif_profile(ftdm_stream_handle_t *stream, char* profile_name);
 int get_assoc_resp_buf(char* buf,SbMgmt* cfm);
@@ -394,12 +395,36 @@ ftdm_status_t ftdm_sngss7_handle_cli_cmd(ftdm_stream_handle_t *stream, const cha
                /**********************************************************************/
                } else if (!strcasecmp(argv[c], "m2ua")) {
                /**********************************************************************/
-                       if (check_arg_count(argc, 3)){
-                               handle_show_m2ua_profiles(stream);
-                       }else{  
-                               c++;
-                               handle_show_m2ua_profile(stream, argv[c]);
+                       switch(argc)
+                       {
+                               case 2: /* show m2ua */
+                               {
+                                       handle_show_m2ua_profiles(stream);
+                                       break;
+                               }
+                               case 3: /* show m2ua <profile-name> */
+                               {
+                                       c++;
+                                       handle_show_m2ua_profile(stream, argv[c]);
+                                       break;
+                               }
+                               case 4:
+                               {
+                                       char* profile_name = argv[++c];
+                                       c++;
+                                       if(!strcasecmp(argv[c],"peerstatus")){
+                                               handle_show_m2ua_peer_status(stream, profile_name);
+                                       }
+                                       else{
+                                               stream->write_function(stream, "Unknown \"show m2ua \" command..\n");
+                                               goto handle_cli_error_argc;
+                                       }
+                                       break;
+                               }
+                               default:
+                               goto handle_cli_error_argc;
                        }
+
                /**********************************************************************/
                } else if (!strcasecmp(argv[c], "nif")) {
                /**********************************************************************/
@@ -786,6 +811,28 @@ ftdm_status_t ftdm_sngss7_handle_cli_cmd(ftdm_stream_handle_t *stream, const cha
                /**********************************************************************/
                }
        /**************************************************************************/    
+       } else if (!strcasecmp(argv[c], "m2ua")) {
+       /**************************************************************************/    
+               if (check_arg_count(argc, 3)) {
+                       stream->write_function(stream, "Invalid \"m2ua  option\", please use \"m2ua logging [enable|disable] \n");
+                       goto handle_cli_error_argc;
+               }
+               c++;
+               if(!strcasecmp(argv[c],"logging")){
+                       c++;
+                       if(!strcasecmp(argv[c],"enable")){
+                               ftmod_ss7_enable_m2ua_sg_logging();
+                       }else if(!strcasecmp(argv[c],"disable")){
+                               ftmod_ss7_disable_m2ua_sg_logging();
+                       } else{
+                               stream->write_function(stream, "Unknown \"m2ua logging %s option\", supported values enable/disable\n",argv[c]);
+                               goto handle_cli_error_argc;
+                       }
+               }else{
+                       stream->write_function(stream, "Unknown \"m2ua  %s option\", supported values \"logging\"\n",argv[c]);
+                       goto handle_cli_error_argc;
+               }
+       /**************************************************************************/    
        } else {
        /**************************************************************************/
                goto handle_cli_error;
@@ -866,15 +913,20 @@ static ftdm_status_t handle_print_usage(ftdm_stream_handle_t *stream)
        stream->write_function(stream, "ftdm ss7 show relay\n");
        stream->write_function(stream, "\n");
 
-       stream->write_function(stream, "ftmod_sangoma_ss7 M2UA status:\n");
+       stream->write_function(stream, "ftmod_sangoma_ss7 M2UA :\n");
        stream->write_function(stream, "ftdm ss7 show sctp \n");
        stream->write_function(stream, "ftdm ss7 show sctp <sctp_interface_name>\n");
        stream->write_function(stream, "ftdm ss7 show m2ua \n");
        stream->write_function(stream, "ftdm ss7 show m2ua <m2ua_interface_name>\n");
+       stream->write_function(stream, "ftdm ss7 show m2ua <m2ua_interface_name> peerstatus\n");
        stream->write_function(stream, "ftdm ss7 show nif \n");
        stream->write_function(stream, "ftdm ss7 show nif <nif_interface_name>\n");
        stream->write_function(stream, "\n");
 
+
+       stream->write_function(stream, "ftmod_sangoma_ss7 M2UA logging:\n");
+       stream->write_function(stream, "ftdm ss7 m2ua logging [enable|disable] \n");
+
        stream->write_function(stream, "\n");
 
        return FTDM_SUCCESS;
@@ -2993,7 +3045,15 @@ static ftdm_status_t cli_ss7_show_all_spans_general(ftdm_stream_handle_t *stream
        return FTDM_FAIL;
 }
 
-/******************************************************************************/
+
+/******************************************************************************
+* Fun:  handle_show_m2ua_profiles()
+* Desc: display all m2ua profile information
+* Ret:  FTDM_SUCCESS | FTDM_FAIL
+* Note: 
+* author: Kapil Gupta
+*******************************************************************************/
+
 static ftdm_status_t handle_show_m2ua_profiles(ftdm_stream_handle_t *stream)
 {
        char*  xmlhdr = (char*)"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
@@ -3103,6 +3163,14 @@ static ftdm_status_t handle_show_m2ua_profiles(ftdm_stream_handle_t *stream)
 
 }
 
+/******************************************************************************
+* Fun:  handle_show_m2ua_profile()
+* Desc: display requested m2ua profile information
+* Ret:  FTDM_SUCCESS | FTDM_FAIL
+* Note: 
+* author: Kapil Gupta
+*******************************************************************************/
+
 static ftdm_status_t handle_show_m2ua_profile(ftdm_stream_handle_t *stream, char* m2ua_profile_name) 
 {
        char*  xmlhdr = (char*)"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
@@ -3208,7 +3276,14 @@ static ftdm_status_t handle_show_m2ua_profile(ftdm_stream_handle_t *stream, char
        return FTDM_FAIL;
 
 }
-/******************************************************************************/
+
+/******************************************************************************
+* Fun:  handle_show_sctp_profiles()
+* Desc: display all sctp profile information
+* Ret:  FTDM_SUCCESS | FTDM_FAIL
+* Note: 
+* author: Kapil Gupta
+*******************************************************************************/
 static ftdm_status_t handle_show_sctp_profiles(ftdm_stream_handle_t *stream)
 {
        char*  xmlhdr = (char*)"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
@@ -3414,7 +3489,13 @@ int get_assoc_resp_buf(char* buf,SbMgmt* cfm)
        return len;
 }
 
-
+/******************************************************************************
+* Fun:  handle_show_sctp_profile()
+* Desc: display requested sctp profile information
+* Ret:  FTDM_SUCCESS | FTDM_FAIL
+* Note: 
+* author: Kapil Gupta
+*******************************************************************************/
 static ftdm_status_t handle_show_sctp_profile(ftdm_stream_handle_t *stream, char* sctp_profile_name)
 {
        char*  xmlhdr = (char*)"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
@@ -3486,6 +3567,13 @@ static ftdm_status_t handle_show_sctp_profile(ftdm_stream_handle_t *stream, char
        return FTDM_SUCCESS;
 }
 
+/******************************************************************************
+* Fun:  handle_show_nif_profiles()
+* Desc: display all nif profile information
+* Ret:  FTDM_SUCCESS | FTDM_FAIL
+* Note: 
+* author: Kapil Gupta
+*******************************************************************************/
 static ftdm_status_t handle_show_nif_profiles(ftdm_stream_handle_t *stream)
 {
        char*  xmlhdr = (char*)"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
@@ -3540,6 +3628,13 @@ static ftdm_status_t handle_show_nif_profiles(ftdm_stream_handle_t *stream)
        return FTDM_FAIL;
 }
 
+/******************************************************************************
+* Fun:  handle_show_nif_profile()
+* Desc: display requested nif profile information
+* Ret:  FTDM_SUCCESS | FTDM_FAIL
+* Note: 
+* author: Kapil Gupta
+*******************************************************************************/
 static ftdm_status_t handle_show_nif_profile(ftdm_stream_handle_t *stream, char* nif_profile_name) 
 {
        char*  xmlhdr = (char*)"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
@@ -3595,6 +3690,61 @@ static ftdm_status_t handle_show_nif_profile(ftdm_stream_handle_t *stream, char*
 }
 
 /******************************************************************************/
+/******************************************************************************
+* Fun:  handle_show_m2ua_peer_status()
+* Desc: display requested m2ua profile peer information
+* Ret:  FTDM_SUCCESS | FTDM_FAIL
+* Note: 
+* author: Kapil Gupta
+*******************************************************************************/
+
+static ftdm_status_t handle_show_m2ua_peer_status(ftdm_stream_handle_t *stream, char* m2ua_profile_name) 
+{
+       char*  xmlhdr = (char*)"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
+       char  buf[2048];
+       int x = 0x00;
+       int found = 0x00;
+       int len = 0x00;
+       MwMgmt cfm;
+
+       memset((U8 *)&cfm, 0, sizeof(MwMgmt));
+       memset(&buf[0], 0, sizeof(buf));
+
+       len = len + sprintf(buf + len, "%s\n", xmlhdr);
+
+       /*iterate through all the m2ua links and get required profile */
+       x = 1;
+       while(x<MW_MAX_NUM_OF_INTF){
+               if((g_ftdm_sngss7_data.cfg.g_m2ua_cfg.m2ua[x].id !=0) &&
+                               (!(g_ftdm_sngss7_data.cfg.g_m2ua_cfg.m2ua[x].flags & SNGSS7_CONFIGURED))) {
+
+                       if(!strcasecmp(m2ua_profile_name, g_ftdm_sngss7_data.cfg.g_m2ua_cfg.m2ua[x].name)){
+                               found = 0x01;
+                               break;
+                       }
+               }
+               x++;
+       }
+
+       if(!found){
+               stream->write_function(stream,"Requested M2UA profile[%s] not configured\n", m2ua_profile_name);
+               return FTDM_FAIL;
+       }
+
+       if(ftmod_m2ua_ssta_req(STMWPEER,x,&cfm)) {
+               stream->write_function(stream," Request to Trillium M2UA layer failed \n");
+               return FTDM_FAIL;
+       } else {
+               len = len + sprintf(buf + len, "<m2ua_peer>\n");
+               len = len + sprintf(buf + len," <state> %s </state>\n", PRNT_M2UA_PEER_STATE(cfm.t.ssta.s.peerSta.state));
+               len = len + sprintf(buf + len, " <connected_status> %s </connected_status>\n",(cfm.t.ssta.s.peerSta.assocSta.connected)?"CONNECTED":"NOT CONNECTED");
+               len = len + sprintf(buf + len, "</m2ua_peer>\n");
+       }
+
+       stream->write_function(stream,"\n%s\n",buf); 
+
+       return FTDM_FAIL;
+}
 
 /******************************************************************************/
 /* For Emacs:
index 76db4d637e33e76735b807582f6f7ca7b723537b..f0ae00fa5abf2deb758f78a1acdcb51ee8ca8974 100644 (file)
@@ -63,9 +63,9 @@ static int ftmod_open_endpoint(int idx);
 static int ftmod_init_sctp_assoc(int peer_id);
 static int ftmod_nif_m2ua_dlsap_bind(int id);
 static int ftmod_nif_mtp2_dlsap_bind(int id);
-static int ftmod_m2ua_enable_debug(void);
-static int ftmod_tucl_enable_debug(void);
-static int ftmod_sctp_enable_debug(void);
+static int ftmod_m2ua_debug(int action);
+static int ftmod_tucl_debug(int action);
+static int ftmod_sctp_debug(int action);
 
 static int ftmod_ss7_sctp_shutdown(void);
 static int ftmod_ss7_m2ua_shutdown(void);
@@ -1152,15 +1152,26 @@ uint32_t iptoul(const char *ip)
         return (uint32_t)val;
 }
 /***********************************************************************************************************************/
+void ftmod_ss7_enable_m2ua_sg_logging(void){
 
-int ftmod_ss7_m2ua_start(void){
-       int x=0;
+       /* Enable DEBUGs*/
+       ftmod_sctp_debug(AENA);
+       ftmod_m2ua_debug(AENA);
+       ftmod_tucl_debug(AENA);
+}
 
 /***********************************************************************************************************************/
-       /* Enable DEBUGs*/
-       ftmod_sctp_enable_debug();
-       ftmod_m2ua_enable_debug();
-       ftmod_tucl_enable_debug();
+void ftmod_ss7_disable_m2ua_sg_logging(void){
+
+       /* DISABLE DEBUGs*/
+       ftmod_sctp_debug(ADISIMM);
+       ftmod_m2ua_debug(ADISIMM);
+       ftmod_tucl_debug(ADISIMM);
+}
+
+/***********************************************************************************************************************/
+int ftmod_ss7_m2ua_start(void){
+       int x=0;
 
 /***********************************************************************************************************************/
        x = 1;
@@ -1466,7 +1477,7 @@ static int ftmod_nif_mtp2_dlsap_bind(int id)
 }
 
 /***********************************************************************************************************************/
-static int ftmod_sctp_enable_debug()
+static int ftmod_sctp_debug(int action)
 {
        Pst pst;
        SbMgmt cntrl;  
@@ -1490,7 +1501,7 @@ static int ftmod_sctp_enable_debug()
        cntrl.hdr.response.mem.region  = S_REG;
        cntrl.hdr.response.mem.pool    = S_POOL;
 
-       cntrl.t.cntrl.action = AENA;
+       cntrl.t.cntrl.action = action;
        cntrl.t.cntrl.subAction = SADBG;
        cntrl.t.cntrl.dbgMask   = 0xFFFF;
 
@@ -1498,7 +1509,7 @@ static int ftmod_sctp_enable_debug()
 }
 /***********************************************************************************************************************/
 
-static int ftmod_m2ua_enable_debug()
+static int ftmod_m2ua_debug(int action)
 {
        Pst pst;
        MwMgmt cntrl;  
@@ -1522,14 +1533,14 @@ static int ftmod_m2ua_enable_debug()
        cntrl.hdr.response.mem.region  = S_REG;
        cntrl.hdr.response.mem.pool    = S_POOL;
 
-       cntrl.t.cntrl.action = AENA;
+       cntrl.t.cntrl.action = action;
        cntrl.t.cntrl.subAction = SADBG;
        cntrl.t.cntrl.s.dbgMask   = 0xFFFF;
 
        return (sng_cntrl_m2ua (&pst, &cntrl));
 }
 /***********************************************************************************************************************/
-static int ftmod_tucl_enable_debug()
+static int ftmod_tucl_debug(int action)
 {
        Pst pst;
        HiMngmt cntrl;  
@@ -1553,7 +1564,7 @@ static int ftmod_tucl_enable_debug()
        cntrl.hdr.response.mem.region  = S_REG;
        cntrl.hdr.response.mem.pool    = S_POOL;
 
-       cntrl.t.cntrl.action    = AENA;
+       cntrl.t.cntrl.action    = action;
        cntrl.t.cntrl.subAction = SADBG;
        cntrl.t.cntrl.ctlType.hiDbg.dbgMask = 0xFFFF;
 
@@ -1594,6 +1605,7 @@ int ftmod_sctp_ssta_req(int elemt, int id, SbMgmt* cfm)
        }
         if(ssta.hdr.elmId.elmnt == STSBASSOC)
         {
+               /*TODO - how to get assoc Id*/
                 ssta.t.ssta.s.assocSta.assocId = 0; /* association id */
         }
        return(sng_sta_sctp(&pst,&ssta,cfm));
index 9e13b32e4b8d6a827c433082ec443b7330741705..8f85ac3536296d440572891bf1712a10d4782266 100644 (file)
@@ -126,6 +126,8 @@ ftdm_status_t ftmod_ss7_m2ua_cfg(void);
 int ftmod_sctp_ssta_req(int elemt, int id, SbMgmt* cfm);
 int ftmod_m2ua_ssta_req(int elemt, int id, MwMgmt* cfm);
 int ftmod_nif_ssta_req(int elemt, int id, NwMgmt* cfm);
+void ftmod_ss7_enable_m2ua_sg_logging(void);
+void ftmod_ss7_disable_m2ua_sg_logging(void);
 
 
 #endif /*__FTMOD_SNG_SS7_M2UA_H__*/