From e4bd524b7d4a335854600ee6014846240336ae35 Mon Sep 17 00:00:00 2001 From: kapil Date: Tue, 5 Jun 2012 21:33:13 +0530 Subject: [PATCH] adding peerstatus and logging enable/disable CLI command --- .../ftmod_sangoma_ss7/ftmod_sangoma_ss7_cli.c | 168 +++++++++++++++++- .../ftmod_sangoma_ss7_m2ua.c | 42 +++-- .../ftmod_sangoma_ss7_m2ua.h | 2 + 3 files changed, 188 insertions(+), 24 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cli.c b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cli.c index f4399d708d..bec6e020ac 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cli.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cli.c @@ -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 */ + { + 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 \n"); stream->write_function(stream, "ftdm ss7 show m2ua \n"); stream->write_function(stream, "ftdm ss7 show m2ua \n"); + stream->write_function(stream, "ftdm ss7 show m2ua peerstatus\n"); stream->write_function(stream, "ftdm ss7 show nif \n"); stream->write_function(stream, "ftdm ss7 show nif \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*)""; @@ -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*)""; @@ -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*)""; @@ -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*)""; @@ -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*)""; @@ -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*)""; @@ -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*)""; + 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(xwrite_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, "\n"); + len = len + sprintf(buf + len," %s \n", PRNT_M2UA_PEER_STATE(cfm.t.ssta.s.peerSta.state)); + len = len + sprintf(buf + len, " %s \n",(cfm.t.ssta.s.peerSta.assocSta.connected)?"CONNECTED":"NOT CONNECTED"); + len = len + sprintf(buf + len, "\n"); + } + + stream->write_function(stream,"\n%s\n",buf); + + return FTDM_FAIL; +} /******************************************************************************/ /* For Emacs: diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_m2ua.c b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_m2ua.c index 76db4d637e..f0ae00fa5a 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_m2ua.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_m2ua.c @@ -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)); diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_m2ua.h b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_m2ua.h index 9e13b32e4b..8f85ac3536 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_m2ua.h +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_m2ua.h @@ -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__*/