#include "../../debug/src/include/debug.h" #include "./include/mtp3.h" #include "./include/mtpstm.h" #include "./include/mtpext.h" extern void mtp3_debug(int n,const char *fmt,...); /*@ignore@*/ int mtp3_send_netcap=0; void reset_mtp3(); long atol(const char *nptr); int gettimeofday(struct timeval *tv,struct timezone *tz); struct tm *localtime(const time_t *timep); void mtp3_list_link(BYTE i); static char ascii[16] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39, 0x41,0x42,0x43,0x44,0x45,0x46}; extern BOOL mtp3DebugFull; BYTE disp_flag; BYTE disp_page[16]; /* by simon at 23/9/27 */ extern BYTE * disp_ptr; extern BYTE disp_length; static DWORD debug_mask=0; void mtp3_show_routine_status(BYTE nw); void mtp3_show_routine_status_sorted(BYTE nw); void mtp3_list_log_status(); void mtp3_reload_data(); int mtp3_write_parameter(); static BYTE title1_p[] = { " PAGE01 MTP3 Measure-TRAFFIC sub-page0:flow, sub-page1:throwed \n\r\ [---SNM---] [---T+M---] [--SCCP---] [---TUP---] [--ISUP---]\n\r\ --Page--\n\r\ U (nw0)\n\r\ t (nw1)\n\r\ o (nw2)\n\r\ M (nw3)\n\r\ M (nw0)\n\r\ t (nw1) E\n\r\ o (nw2) 1\n\r\ I (nw3)\n\r\ I (nw0)\n\r\ t (nw1)\n\r\ o (nw2)\n\r\ M (nw3)\n\r\ M (nw0)\n\r\ t (nw1)\n\r\ o (nw2)\n\r\ U (nw3)\n\r\ M (nw0)\n\r\ S (nw1)\n\r\ T (nw2)\n\r\ P (nw3)\n\r\ " }; static BYTE title2_p[] = { " PAGE02 link mark \n\r\ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\ --Page--\n\r\ link_available\n\r\ link_unavailable\n\r\ failed\n\r\ CB_in_progress\n\r\ CO_in_progress\n\r\ link_inhibited\n\r\ locally_inhibited\n\r\ remotely_inhibited\n\r\ localInhibit_inPro\n\r\ uninhibit_in_pro\n\r\ local_blocked\n\r\ remote_blocked\n\r\ local_change_over\n\r\ " }; static BYTE title3_p[] = { " PAGE03 MTP2 MTP3 flag \n\r\ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\ Page\n\r\ mtp2 flag(old)\n\r\ \n\r\ mtp2 flag(new)\n\r\ \n\r\ \n\r\ page\n\r\ 0:mtp3 ip\n\r\ 1:mtp3 flag old\n\r\ 2:mtp3 flag new\n\r\ 3:lk_configured\n\r\ " }; static BYTE title4_p[] = { " PAGE09 MTP3 STATE MACHINE'S INPUT \n\r\ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\ --Page--\n\r\ LSAC L2\n\r\ LSAC SLTC\n\r\ LSAC SLM\n\r\ LSAC STM\n\r\ LSAC TCOC\n\r\ LSAC MGMT\n\r\ TLAC SLM\n\r\ TLAC STM\n\r\ TLAC HMDT\n\r\ TSRC STM\n\r\ TSRC TLAC\n\r\ TSRC TCOC\n\r\ TSRC TCBC\n\r\ TSRC SRM\n\r\ TCOC L2\n\r\ TCOC STM\n\r\ TCOC TSRC\n\r\ TCOC HMDT\n\r\ TCBC\n\r\ TCBC_TSRC\n\r\ T(A)PRC\n\r\ " }; static BYTE title5_p[] = { " PAGE05 MTP3 Port state(16 port per sub page)\n\r\ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\ subPage\r\n\ L1\r\n\ L2\r\n\ L3\r\n\ lsac\r\n\ sltc\r\n\ tlac\r\n\ tsrc\r\n\ tcoc\r\n\ tcbc\r\n\ rtpc[nw0]\r\n\ rtpc[nw1]\r\n\ rtpc[nw2]\r\n\ rtpc[nw3]\r\n\ rtac[nw0]\r\n\ rtac[nw1]\r\n\ rtac[nw2]\r\n\ rtac[nw3]\r\n\ tprc" }; static BYTE title6_p[] = { " PAGE06 MTP3 ROUTINE TABLE(4) \n\r\ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\ --PAGE--\n\r\ 0 INTERNATIONAL\n\r\ 1 INTERNATIONAL(S)\n\r\ 2 NATIONAL\n\r\ 3 NATIONAL(S)\n\r\ \n\r\ \n\r\ value=\n\r\ 18:route:normal ls\n\r\ nls:available\n\r\ als:unavailable\n\r\ 10:route:normal ls\n\r\ nls:available\n\r\ als:available\n\r\ 52:route=alter ls\n\r\ nls:unavailable\n\r\ als:available\n\r\ 8A:no route\n\r\ other:problem bug\n\r\ " }; static BYTE title7_p[] = { " PAGE07 MTP3 LINKSET SLS TABLE \n\r\ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\ --PAGE--\n\r\ (16*page+00)ls\n\r\ (16*page+01)ls\n\r\ (16*page+02)ls\n\r\ (16*page+03)ls\n\r\ (16*page+04)ls\n\r\ (16*page+05)ls\n\r\ (16*page+06)ls\n\r\ (16*page+07)ls\n\r\ (16*page+08)ls\n\r\ (16*page+09)ls\n\r\ (16*page+10)ls\n\r\ (16*page+11)ls\n\r\ (16*page+12)ls\n\r\ (16*page+13)ls\n\r\ (16*page+14)ls\n\r\ (16*page+15)ls\n\r\ " }; static BYTE title8_p[] = { " PAGE08 MTP3 Version 1.0 linkset State \n\r\ avail mark place cf influence dst number\n\r\ --Page--\n\r\ (16*page+00)ls\n\r\ (16*page+01)ls\n\r\ (16*page+02)ls\n\r\ (16*page+03)ls\n\r\ (16*page+04)ls\n\r\ (16*page+05)ls\n\r\ (16*page+06)ls\n\r\ (16*page+07)ls\n\r\ (16*page+08)ls\n\r\ (16*page+09)ls\n\r\ (16*page+10)ls\n\r\ (16*page+11)ls\n\r\ (16*page+12)ls\n\r\ (16*page+13)ls\n\r\ (16*page+14)ls\n\r\ (16*page+15)ls\n\r\ " }; static BYTE title9_p[] = { " PAGE9 MTP3 ls influence dst\n\r\ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\ --page--\n\r\ page0-page127\n\r\ ls0 -ls127\n\r\ [NLS]\n\r\ \n\r\ \n\r\ \n\r\ \n\r\ \n\r\ \n\r\ [ALS]\n\r\ " }; static BYTE title10_p[] = { " PAGE10 MTP3 isup sd/rv count\n\r\ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\ --page--\n\r\ RvISUP\n\r\ \n\r\ \n\r\ \n\r\ SdISUP\n\r\ \n\r\ \n\r\ \n\r\ \n\r\ \n\r\ " }; static BYTE title11_p[] = { " PAGE11 MTP3 watch dog\n\r\ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\ Dog\n\r\ " }; void mtpi_m() { memset(disp_page,0,16); } BYTE mtp_disp_line(BYTE page, BYTE line)//return display length,disp data ptr per line { BYTE disp_length; BYTE subpage; disp_length = 16; page = page & 15; disp_page[page] = disp_page[page] & 31; subpage = disp_page[page]; switch(page) { case 1: if (subpage == 0) { disp_length = 20; switch (line) { case 0: disp_ptr = &disp_page[page]; disp_length = 1; break; case 1: disp_ptr = (BYTE*)&mtp3.nw[0].flow.UtoM; break; case 2: disp_ptr = (BYTE*)&mtp3.nw[1].flow.UtoM; break; case 3: disp_ptr = (BYTE*)&mtp3.nw[2].flow.UtoM; break; case 4: disp_ptr = (BYTE*)&mtp3.nw[3].flow.UtoM; break; case 5: disp_ptr = (BYTE*)&mtp3.nw[0].flow.MtoI; break; case 6: disp_ptr = (BYTE*)&mtp3.nw[1].flow.MtoI; break; case 7: disp_ptr = (BYTE*)&mtp3.nw[2].flow.MtoI; break; case 8: disp_ptr = (BYTE*)&mtp3.nw[3].flow.MtoI; break; case 9: disp_ptr = (BYTE*)&mtp3.nw[0].flow.ItoM; break; case 10: disp_ptr = (BYTE*)&mtp3.nw[1].flow.ItoM; break; case 11: disp_ptr = (BYTE*)&mtp3.nw[2].flow.ItoM; break; case 12: disp_ptr = (BYTE*)&mtp3.nw[3].flow.ItoM; break; case 13: disp_ptr = (BYTE*)&mtp3.nw[0].flow.MtoU; break; case 14: disp_ptr = (BYTE*)&mtp3.nw[1].flow.MtoU; break; case 15: disp_ptr = (BYTE*)&mtp3.nw[2].flow.MtoU; break; case 16: disp_ptr = (BYTE*)&mtp3.nw[3].flow.MtoU; break; case 17: disp_ptr = (BYTE*)&mtp3.nw[0].flow.stp; break; case 18: disp_ptr = (BYTE*)&mtp3.nw[1].flow.stp; break; case 19: disp_ptr = (BYTE*)&mtp3.nw[2].flow.stp; break; case 20: disp_ptr = (BYTE*)&mtp3.nw[3].flow.stp; break; default: disp_length = 0; break; } } else if (subpage == 1) { disp_length = 20; switch (line) { case 0: disp_ptr = &disp_page[page]; disp_length = 1; break; case 1: disp_ptr = (BYTE*)&mtp3.nw[0].flow.UtoM_throwed; break; case 2: disp_ptr = (BYTE*)&mtp3.nw[1].flow.UtoM_throwed; break; case 3: disp_ptr = (BYTE*)&mtp3.nw[2].flow.UtoM_throwed; break; case 4: disp_ptr = (BYTE*)&mtp3.nw[3].flow.UtoM_throwed; break; case 5: disp_ptr = (BYTE*)&mtp3.nw[0].flow.MtoI_throwed; break; case 6: disp_ptr = (BYTE*)&mtp3.nw[1].flow.MtoI_throwed; break; case 7: disp_ptr = (BYTE*)&mtp3.nw[2].flow.MtoI_throwed; break; case 8: disp_ptr = (BYTE*)&mtp3.nw[3].flow.MtoI_throwed; break; case 9: disp_ptr = (BYTE*)&mtp3.nw[0].flow.ItoM_throwed; break; case 10: disp_ptr = (BYTE*)&mtp3.nw[1].flow.ItoM_throwed; break; case 11: disp_ptr = (BYTE*)&mtp3.nw[2].flow.ItoM_throwed; break; case 12: disp_ptr = (BYTE*)&mtp3.nw[3].flow.ItoM_throwed; break; case 13: disp_ptr = (BYTE*)&mtp3.nw[0].flow.MtoU_throwed; break; case 14: disp_ptr = (BYTE*)&mtp3.nw[1].flow.MtoU_throwed; break; case 15: disp_ptr = (BYTE*)&mtp3.nw[2].flow.MtoU_throwed; break; case 16: disp_ptr = (BYTE*)&mtp3.nw[3].flow.MtoU_throwed; break; case 17: disp_ptr = (BYTE*)&mtp3.nw[0].flow.stp_throwed; break; case 18: disp_ptr = (BYTE*)&mtp3.nw[1].flow.stp_throwed; break; case 19: disp_ptr = (BYTE*)&mtp3.nw[2].flow.stp_throwed; break; case 20: disp_ptr = (BYTE*)&mtp3.nw[3].flow.stp_throwed; break; default: disp_length = 0; break; } } else if (subpage == 2) { disp_length = 20; switch (line) { case 0: disp_ptr = &disp_page[page]; disp_length = 1; break; case 1: disp_ptr = (BYTE*)&mtp3.nw[0].flow.stp_loop; break; case 2: disp_ptr = (BYTE*)&mtp3.nw[1].flow.stp_loop; break; case 3: disp_ptr = (BYTE*)&mtp3.nw[2].flow.stp_loop; break; case 4: disp_ptr = (BYTE*)&mtp3.nw[3].flow.stp_loop; break; default: disp_length = 0; break; } } else disp_length = 0; break; case 2: if (subpage > 15) return 0; switch (line) { case 0: disp_ptr = &disp_page[page]; disp_length = 1; break; case 1: disp_ptr = link_available + subpage*16; break; case 2: /* disp_ptr = link_unavailable + subpage*16;*/ break; case 3: disp_ptr = failed + subpage*16; break; case 4:/* l3 */ disp_ptr = changeback_in_progress + subpage*16; break; case 5:/* l2 */ disp_ptr = changeover_in_progress + subpage*16; break; case 6: disp_ptr = link_inhibited + subpage*16; break; case 7: disp_ptr = link_locally_inhibited + subpage*16; break; case 8: disp_ptr = link_remotely_inhibited + subpage*16; break; case 9: disp_ptr = local_inhibit_in_progress + subpage*16; break; case 10: disp_ptr = uninhibit_in_progress + subpage*16; break; case 11: disp_ptr = local_blocked + subpage*16; break; case 12: disp_ptr = remote_blocked + subpage*16; break; case 13: disp_ptr = local_change_over + subpage*16; break; default: disp_length = 0; } break; case 3: if (line == 0) { disp_ptr = &disp_page[page]; disp_length = 1; } else if (line < 3) { disp_ptr = mtp2_flag_old+(line-1)*16; } else if (line < 5) { disp_ptr = mtp2_flag_new+(line-3)*16; } else if (line==5) { disp_ptr = &MTP3IPMng.LinkIPNum; disp_length = 1; } else if (line < 24) { if (subpage == 0) disp_ptr = (BYTE*)MTP3IPMng.mtp3_flag_ip+(line-6)*16; else if (subpage == 1) disp_ptr = MTP3IPMng.mtp3_flag_old+(line-6)*16; else if (subpage == 2) disp_ptr = MTP3IPMng.mtp3_flag_new+(line-6)*16; else if (subpage == 3) disp_ptr = mtp3ObjState.lk_configured+(line-6)*16; else if (subpage == 4) disp_ptr = mtp3ObjState.lk_NMTP3_ok+(line-6)*16; else if (subpage == 5) disp_ptr = mtp3ObjState.lk_AMTP3_ok+(line-6)*16; else if (subpage == 6) disp_ptr = (BYTE*)MTP3IPMng.LinkIP+(line-6)*16; } else disp_length = 0; break; case 4:/* input of state machine */ if (subpage > 15) return 0; switch (line) { case 0: disp_ptr = &disp_page[page]; disp_length = 1; break; case 1:/* l3 */ disp_ptr = mtp3ObjInput.lsac_input_from_l2 + subpage*16; break; case 2:/* l2 */ disp_ptr = mtp3ObjInput.lsac_input_from_sltc + subpage*16; break; case 3:/* l1 */ disp_length = 0; break; case 4: disp_ptr = mtp3ObjInput.lsac_input_from_stm + subpage*16; break; case 5: disp_ptr = mtp3ObjInput.lsac_input_from_tcoc + subpage*16; break; case 6: disp_ptr = mtp3ObjInput.lsac_input_from_mgmt + subpage*16; break; case 7: disp_ptr = mtp3ObjInput.tlac_input_from_slm + subpage*16; break; case 8: disp_ptr = mtp3ObjInput.tlac_input_from_stm + subpage*16; break; case 9: disp_ptr = mtp3ObjInput.tlac_input_from_hmdt + subpage*16; break; case 10: disp_ptr = mtp3ObjInput.tsrc_input_from_stm + subpage*16; break; case 11: disp_ptr = mtp3ObjInput.tsrc_input_from_tlac + subpage*16; break; case 12: disp_ptr = mtp3ObjInput.tsrc_input_from_tcoc + subpage*16; break; case 13: disp_ptr = mtp3ObjInput.tsrc_input_from_tcbc + subpage*16; break; case 14: disp_length = 0; break; case 15: disp_length = 0; break; case 16: disp_ptr = mtp3ObjInput.tcoc_input_from_stm + subpage*16; break; case 17: disp_ptr = mtp3ObjInput.tcoc_input_from_tsrc + subpage*16; break; case 18: disp_ptr = mtp3ObjInput.tcoc_input_from_hmdt + subpage*16; break; case 19: disp_ptr = mtp3ObjInput.tcbc_input + subpage*16; break; case 20: disp_ptr = mtp3ObjInput.tcbc_input_from_tsrc + subpage*16; break; /* case 21: disp_ptr = mtp3ObjInput.sltc_input + subpage*16; break;*/ case 21: disp_ptr = mtp3ObjInput.taprc_input + subpage*16; break; case 22: disp_ptr = &mtp3ObjInput.tprc_input; disp_length = 1; break; default: disp_length = 0; break; } break; case 5: /* state machine */ if (subpage > 15) return 0; switch (line) { case 0: disp_ptr = &disp_page[page]; disp_length = 1; break; case 1: disp_ptr = mtp3ObjState.link_l1_state+subpage*16; break; case 2: disp_ptr = mtp3ObjState.link_l2_state+subpage*16; break; case 3: disp_ptr = mtp3ObjState.link_l3_state+subpage*16; break; case 4: disp_ptr = mtp3ObjState.lsac_state+subpage*16; break; case 5: disp_ptr = mtp3ObjState.sltc_state+subpage*16; break; case 6: disp_ptr = mtp3ObjState.tlac_state+subpage*16; break; case 7: disp_ptr = mtp3ObjState.tsrc_state+subpage*16; break; case 8: disp_ptr = mtp3ObjState.tcoc_state+subpage*16; break; case 9: disp_ptr = mtp3ObjState.tcbc_state+subpage*16; break; case 10: disp_ptr = mtp3.nw[0].rtpc_state+subpage*16; break; case 11: disp_ptr = mtp3.nw[1].rtpc_state+subpage*16; break; case 12: disp_ptr = mtp3.nw[2].rtpc_state+subpage*16; break; case 13: disp_ptr = mtp3.nw[3].rtpc_state+subpage*16; break; case 14: disp_ptr = mtp3.nw[0].rtac_state+subpage*16; break; case 15: disp_ptr = mtp3.nw[1].rtac_state+subpage*16; break; case 16: disp_ptr = mtp3.nw[2].rtac_state+subpage*16; break; case 17: disp_ptr = mtp3.nw[3].rtac_state+subpage*16; break; case 18: disp_ptr = &mtp3ObjState.tprc_state; disp_length = 1; break; default: disp_length = 0; break; } break; case 6:/* routine */ if (line == 0) { disp_ptr = &disp_page[page]; disp_length = 1; } else if ( line <17 ) { if (subpage < 4) { disp_ptr = mtp3.nw[subpage].routine+(line-1)*16; } else disp_length = 0; } else disp_length = 0; break; case 7:/* ls sls & ls slc table */ if (line == 0) { disp_ptr = &disp_page[page]; disp_length = 1; } else if ( line <17 ) { if (subpage < 8) { disp_ptr = ls_sls + (line-1)*16 + subpage*256; } else if (subpage < 16) { disp_ptr = ls_slc + (line-1)*16 + (subpage-8)*256; } else if (subpage < 24) { disp_ptr = sls_to_link + (line-1)*16 + (subpage-16)*256; } else disp_length = 0; } else disp_length = 0; break; case 8:/* E1 STATE */ if (line == 0) { disp_ptr = &disp_page[page]; disp_length = 1; } else if (line < 17) { if (subpage < 8) { disp_ptr = (BYTE*)&mtp3.ls[subpage*16+line-1]; disp_length = 9; } else disp_length = 0; } else disp_length = 0; break; case 9:/* ls influence dstination table */ if (line == 0) { disp_ptr = &disp_page[page]; disp_length = 1; } else if (line < 18) { if (subpage < 128) { if (line < 9) { disp_ptr = (BYTE*)&mtp3.ls[subpage].influ_dstplace_intable_asNLS[(line-1)*16]; disp_length = 16; } else if (line == 9) { disp_length = 0; } else { disp_ptr = (BYTE*)&mtp3.ls[subpage].influ_dstplace_intable_asALS[(line-10)*16]; disp_length = 16; } } else disp_length = 0; } else if (line == 18) disp_length = 0; else if (line == 19) { disp_ptr = (BYTE*)&mtp3.ls[subpage]; disp_length = 9; } else disp_length = 0; break; case 10:/* isup watch dog */ if (line == 0) { disp_ptr = &disp_page[page]; disp_length = 1; } else if (line < 9) { disp_ptr = (BYTE*)&mtp3.nw[page].flow.isup_detail[(line-1)*16]; disp_length = 16; } else disp_length = 0; break; case 11:/* watch dog */ if (line < 16) { disp_ptr = (BYTE*)&mtp3ObjState.MTP3WatchDog[line*16]; disp_length = 16; } else disp_length = 0; break; default: disp_length = 0; break; } return disp_length; } void mtp_disp_page(BYTE page) { BYTE disp_line; BYTE disp_length; DWORD object_id[20];//for test /* object_id head */ object_id[0] = 1; object_id[1] = 3; object_id[2] = 6; object_id[3] = 1; object_id[4] = 4; object_id[5] = 1; object_id[6] = 1373; object_id[7] = 1; object_id[8] = 1; object_id[9] = 2; /* object_id head */ object_id[10] = 3; object_id[11] = 1; object_id[12] = 2; object_id[13] = MTP3_DEBUG_ID + 2; object_id[14] = 5 + page;//page //object_id[3] = 2;//line object_id[16] = 0;//instance for (disp_line = 0; disp_line < 22; disp_line++) { disp_length = mtp_disp_line(page,disp_line); object_id[15] = disp_line + 2;//line // debug_set_response(17,object_id,&disp_length,10); object_id[16] = 2;//data pointer debug_set_response(17,object_id,disp_ptr,disp_length); } } int mtp_debug_set() { BYTE page; BYTE data[10]; BYTE *ptr; DWORD object_id[20];//for test BYTE mtp3_ver[20] = MTP3_VERSION; sprintf(mtp3_ver,"R%dV%d_%03d",mtp3_ver[0],mtp3_ver[1],mtp3_ver[2]); mtpi_m(); ptr = data; /* object_id head */ object_id[0] = 1; object_id[1] = 3; object_id[2] = 6; object_id[3] = 1; object_id[4] = 4; object_id[5] = 1; object_id[6] = 1373; object_id[7] = 1; object_id[8] = 1; object_id[9] = 2; /* object_id head */ object_id[10] = 3; object_id[11] = 1; object_id[12] = 2; object_id[13] = MTP3_DEBUG_ID+2; object_id[14] = 1; object_id[15] = 0;//instance data[0] = 1;//active this module debug_set_response(16,object_id,data,1); object_id[14] = 2; debug_set_response(15,object_id,mtp3_ver,strlen(mtp3_ver));//module name object_id[14] = 3; debug_set_response(15,object_id,mtp_asciin_buf,80);//ascii in buf object_id[14] = 4; debug_set_response(15,object_id,mtp_asciout_buf,4096);//ascii out buf object_id[15] = 1;//TITLE // object_id[16] = 2;//instance for (page = 1; page < 16; page ++) { switch (page) { case 1: ptr = title1_p;/*measure*/ break; case 2: ptr = title2_p; break; case 3: ptr = title3_p;/* MIB1 */ break; case 4: ptr = title4_p;/* MIB2 */ break; case 5://page 1 ptr = title5_p; break; case 6: ptr = title6_p; break; case 7: ptr = title7_p; break; case 8: ptr = title8_p; break; case 9: ptr = title9_p; break; case 10: ptr = title10_p; break; case 11: ptr = title11_p; break; default: continue; } object_id[14] = 5 + page; debug_set_response(17,object_id,ptr,strlen(ptr)); mtp_disp_page(page); } return 1; } int mtp_send_ascout(BYTE *out_str) { #ifdef _WXC_TEST if( strlen(out_str) < MTP_MAX_ASCIIOUT_LEN ) printf("[MTP3]\n%s" ,out_str ); #else int out_len; out_len = strlen(out_str); if (out_len + strlen(mtp_asciout_buf) > MTP_MAX_ASCIIOUT_LEN - 2) { mtp3DebugFull = 1; return 0; // strcpy(mtp_asciout_buf,out_str); } else strcat(mtp_asciout_buf,out_str); #endif return 1; } void mtp3_type_command(BYTE *ascin_ptr,BYTE option) { BYTE info_str[80]; BYTE *tmp_ptr; int link; unsigned long one=1; BYTE inputValue; int lsx16; int i; if (strstr(ascin_ptr,"link all") != NULL) { if (option == 0)/* off */ { debug_mask=debug_mask & (~(one< 0) { page = mtp_asciin_buf[0]; if (( page < 11) && (page > 1)) { disp_page[page-1] = atoi(ascin_ptr); mtp_disp_page(page-1); } if (strcmp(ascin_ptr,"C") == 0) { memset(&mtp3.nw[0].flow,0,sizeof(struct mtp3_flow)); memset(&mtp3.nw[1].flow,0,sizeof(struct mtp3_flow)); memset(&mtp3.nw[2].flow,0,sizeof(struct mtp3_flow)); memset(&mtp3.nw[3].flow,0,sizeof(struct mtp3_flow)); memset(mtp3ObjState.MTP3WatchDog,0,256); } else if (strstr(ascin_ptr,"list") != NULL) { if (strncmp(ascin_ptr,"list par.opc",12) == 0) { mtp3_show_parameter(0,0); } else if (strncmp(ascin_ptr,"list par.link",13) == 0) { input = atol(&ascin_ptr[13]); mtp3_show_parameter(1,input); } else if (strncmp(ascin_ptr,"list par.ls",11) == 0) { input = atol(&ascin_ptr[11]); mtp3_show_parameter(2,input); } else if (strncmp(ascin_ptr,"list par.ints",13) == 0) { input = atol(&ascin_ptr[13]); mtp3_show_parameter(4,input); } else if (strncmp(ascin_ptr,"list par.int",12) == 0) { input = atol(&ascin_ptr[12]); mtp3_show_parameter(3,input); } else if (strncmp(ascin_ptr,"list par.nats",13) == 0) { input = atol(&ascin_ptr[13]); mtp3_show_parameter(6,input); } else if (strncmp(ascin_ptr,"list par.nat",12) == 0) { input = atol(&ascin_ptr[12]); mtp3_show_parameter(5,input); } else if (strncmp(ascin_ptr,"list par.sg",11) == 0) { input = atol(&ascin_ptr[12]); mtp3_show_parameter(7,input); } else if (strncmp(ascin_ptr,"list route.",11) == 0) { input = atol(&ascin_ptr[11]); mtp3_show_routine_status(input); } else if (strncmp(ascin_ptr,"list rt.",8) == 0) { input = atol(&ascin_ptr[8]); mtp3_show_routine_status_sorted(input); } else if (strstr(ascin_ptr,"list log status") != NULL) { mtp3_list_log_status(); } if (strncmp(ascin_ptr,"list link.",10) == 0) { input = atol(&ascin_ptr[10]); mtp3_list_link(input); } } else if (strstr(ascin_ptr,"log all") != NULL) { debug_mask = debug_mask | 0xfffffaff;//not concern mtp3 hb & primitive // debug_mask = 0xffffffff; memset(debug_link,MTP3_MSGLOG_ON,256); mtp_send_ascout("all logs on\n\r"); } else if( strstr(ascin_ptr, "net cap start") !=NULL ) { mtp3_send_netcap = 1; mtp_send_ascout("mtp3 send netcap start"); } else if( strstr(ascin_ptr, "net cap stop") !=NULL ) { mtp3_send_netcap = 0; mtp_send_ascout("mtp3 send netcap end"); } else if (strstr(ascin_ptr,"log none") != NULL) { debug_mask = 0; memset(debug_link,MTP3_MSGLOG_OFF,256); mtp_send_ascout("all logs off\n\r"); } else if ((tmp_ptr=strstr(ascin_ptr,"log"))!=NULL) { if (strstr(ascin_ptr,"on") != NULL) mtp3_type_command(tmp_ptr,1); else if (strstr(ascin_ptr,"off") != NULL) mtp3_type_command(tmp_ptr,0); else mtp_send_ascout("command error\n\r"); } else if (strcmp(ascin_ptr,"current portion")==0) { sprintf(info_str,"current portion is %ld\n\r",mtp3_csta_p); mtp_send_ascout(info_str); } else if (strcmp(ascin_ptr,"restart")==0) { sprintf(info_str,"mtp3 restarting...\n\r"); mtp_send_ascout(info_str); reset_mtp3(); } else if (strcmp(ascin_ptr,"reload parameters")==0) { sprintf(info_str,"reloading mtp3 parameters...\n\r"); mtp_send_ascout(info_str); mtp3_reload_data(); } else if (strcmp(ascin_ptr,"save parameters")==0) { sprintf(info_str,"saving mtp3 parameters...\n\r"); mtp_send_ascout(info_str); mtp3_write_parameter(); } else if ( (strstr(ascin_ptr,"HELP") != NULL) | (strstr(ascin_ptr,"help") != NULL) ) { mtp3_help_page(); } else if (strstr(ascin_ptr,"Activate") != NULL) { MTP3_activate(mtp3_localip);//deactivate alternative mtp3 } else if (strstr(ascin_ptr,"Deactivate") != NULL) { MTP3_deactivate(mtp3_localip);//deactivate alternative mtp3 } strcpy(mtp_asciin_buf,"\0"); } } int mtp_hex_to_ascii(BYTE *from_hex,WORD from_len, BYTE *to_asc) { int i,j; if(from_len > 300) { mtp3_debug(MTP3DB_ERROR,"mtp_hex_to_ascii, length longer than 300, len=%d!", from_len); from_len = 300; } j = 0; for (i = 0; i< from_len; i++) { to_asc[j] = ascii[from_hex[i] >> 4]; j++; to_asc[j] = ascii[from_hex[i] & 0x0f]; j++; to_asc[j] = 0x20; j++; } to_asc[j] = '\0'; return 1; } void mtp3_showbuf(int n,BYTE *msg,int len) { char info_str[1024]; unsigned long one=1; if (mtp3DebugFull == 1) return; if (((one << n) & debug_mask) == 0) return; mtp_hex_to_ascii(msg,len,info_str); strcat(info_str,"\n\r"); mtp_send_ascout(info_str); } void slt_message_decode(BYTE code,char *c) { switch (code) { case SIGNAL_SLTM: sprintf(c,"SLTM"); break; case SIGNAL_SLTA: sprintf(c,"SLTA"); break; default: sprintf(c,"UNK"); break; } } void snm_message_decode(BYTE code,char *c) { switch (code) { case SIGNAL_TFA: sprintf(c,"TFA"); break; case SIGNAL_TFP: sprintf(c,"TFP"); break; case SIGNAL_TRA: sprintf(c,"TRA"); break; case SIGNAL_RST: sprintf(c,"RST"); break; case SIGNAL_COO: sprintf(c,"COO"); break; case SIGNAL_COA: sprintf(c,"COA"); break; case SIGNAL_CBD: sprintf(c,"CBD"); break; case SIGNAL_CBA: sprintf(c,"CBA"); break; case SIGNAL_ECO: sprintf(c,"ECA"); break; case SIGNAL_ECA: sprintf(c,"ECA"); break; case SIGNAL_LIN: sprintf(c,"LIN"); break; case SIGNAL_LUN: sprintf(c,"LUN"); break; case SIGNAL_LIA: sprintf(c,"LIA"); break; case SIGNAL_LUA: sprintf(c,"LUA"); break; case SIGNAL_LID: sprintf(c,"LID"); break; case SIGNAL_LFU: sprintf(c,"LFU"); break; case SIGNAL_LLT: sprintf(c,"LLT"); break; case SIGNAL_LRT: sprintf(c,"LRT"); break; default: sprintf(c,"UNK"); break; } } void sccp_message_decode(BYTE code,char *c) { switch (code) { case MTP3_SCCP_CR: sprintf(c,"CR"); break; case MTP3_SCCP_CC: sprintf(c,"CC"); break; case MTP3_SCCP_CREF: sprintf(c,"CREF"); break; case MTP3_SCCP_RLSD: sprintf(c,"RLSD"); break; case MTP3_SCCP_RLC: sprintf(c,"RLC"); break; case MTP3_SCCP_DT1: sprintf(c,"DT1"); break; case MTP3_SCCP_DT2: sprintf(c,"DT2"); break; case MTP3_SCCP_AK: sprintf(c,"AK"); break; case MTP3_SCCP_UDT: sprintf(c,"UDT"); break; case MTP3_SCCP_UDTS: sprintf(c,"UDTS"); break; case MTP3_SCCP_ED: sprintf(c,"ED"); break; case MTP3_SCCP_EA: sprintf(c,"EA"); break; case MTP3_SCCP_RSR: sprintf(c,"RSR"); break; case MTP3_SCCP_RSC: sprintf(c,"RSC"); break; case MTP3_SCCP_ERR: sprintf(c,"ERR"); break; case MTP3_SCCP_IT: sprintf(c,"IT"); break; case MTP3_SCCP_XUDT: sprintf(c,"XUDT"); break; case MTP3_SCCP_XUDTS: sprintf(c,"XUDTS"); break; case MTP3_SCCP_LUDT: sprintf(c,"LUDT"); break; case MTP3_SCCP_LUDTS: sprintf(c,"LUDTS"); break; default: sprintf(c,"UNK"); break; } } void tup_message_decode(BYTE code,char *c) { switch (code) { case MTP3_TUP_IAM: sprintf(c,"IAM"); break; case MTP3_TUP_IAI: sprintf(c,"IAI"); break; case MTP3_TUP_SAM: sprintf(c,"SAM"); break; case MTP3_TUP_SAO: sprintf(c,"SAO"); break; case MTP3_TUP_GSM: sprintf(c,"GSM"); break; case MTP3_TUP_COT: sprintf(c,"COT"); break; case MTP3_TUP_GRQ: sprintf(c,"GRQ"); break; case MTP3_TUP_ACM: sprintf(c,"ACM"); break; case MTP3_TUP_SEC: sprintf(c,"SEC"); break; case MTP3_TUP_CGC: sprintf(c,"CGC"); break; case MTP3_TUP_CFL: sprintf(c,"CFL"); break; case MTP3_TUP_SSB: sprintf(c,"SSB"); break; case MTP3_TUP_UNN: sprintf(c,"UNN"); break; case MTP3_TUP_LOS: sprintf(c,"LOS"); break; case MTP3_TUP_SST: sprintf(c,"SST"); break; case MTP3_TUP_ACB: sprintf(c,"ACB"); break; case MTP3_TUP_DPN: sprintf(c,"DPN"); break; case MTP3_TUP_ANU: sprintf(c,"ANU"); break; case MTP3_TUP_ANC: sprintf(c,"ANC"); break; case MTP3_TUP_ANN: sprintf(c,"ANN"); break; case MTP3_TUP_CBK: sprintf(c,"CBK"); break; case MTP3_TUP_CLF: sprintf(c,"CLF"); break; case MTP3_TUP_CCL: sprintf(c,"CCL"); break; case MTP3_TUP_RLG: sprintf(c,"RLG"); break; case MTP3_TUP_BLO: sprintf(c,"BLO"); break; case MTP3_TUP_BLA: sprintf(c,"BLA"); break; case MTP3_TUP_UBL: sprintf(c,"UBL"); break; case MTP3_TUP_UBA: sprintf(c,"UBA"); break; case MTP3_TUP_ADI: sprintf(c,"ADI"); break; default: sprintf(c,"UNK"); break; } } void isup_message_decode(BYTE code,char *c) { switch (code) { case MTP3_ISUP_IAM: sprintf(c,"IAM"); break; case MTP3_ISUP_ACM: sprintf(c,"ACM"); break; case MTP3_ISUP_CPG: sprintf(c,"CPG"); break; case MTP3_ISUP_ANM: sprintf(c,"ANM"); break; case MTP3_ISUP_REL: sprintf(c,"REL"); break; case MTP3_ISUP_RLC: sprintf(c,"RLC"); break; case MTP3_ISUP_UBL: sprintf(c,"UBL"); break; case MTP3_ISUP_UBA: sprintf(c,"UBA"); break; case MTP3_ISUP_GRA: sprintf(c,"GRA"); break; default: sprintf(c,"UNK"); break; } } BOOL iptrans_msg_flow(BYTE *msg,BYTE pclen,int direction,DWORD dest_ip) { char info_str[1024]; long dpc=0; long opc=0; BYTE sls; char tempbuf[1024]; long route_mark; BYTE sio; struct timeval tv; struct timezone tz; struct tm *t; BYTE ssf; unsigned long one=1; struct in_addr in; BOOL msg2mtp2; char type[10]; BYTE nw; char netID[10]; char codeName[16]; int msg_len; if (mtp3DebugFull == 1) return 0; in.s_addr = dest_ip; /* if (((dest_ip & E1CARD_BASE_IP_MASK) == E1CARD_BASE_IP) && (((dest_ip >> 16) & 0xff) < 32))*/ if (msg[0] < 255) { msg2mtp2 = TRUE; } else msg2mtp2 = FALSE; sio = msg[3]; nw = (sio >> 6) & 3; switch (nw) { case 0: sprintf(netID,"INAT"); break; case 1: sprintf(netID,"INATs"); break; case 2: sprintf(netID,"NAT"); break; case 3: sprintf(netID,"NATs"); break; } if (pclen == MTP3_24BIT_PC) { memcpy((BYTE *)&dpc,&msg[4],3); memcpy((BYTE *)&opc,&msg[7],3); sls = msg[10] & 0x0f; } else { memcpy((BYTE*)&route_mark,&msg[4],4); dpc = route_mark & 0x3FFF; opc = (route_mark & 0x0FFFFFFF) >> 14; sls = (route_mark >> 28) & 0x0f; } if (debug_link[msg[0]] != MTP3_MSGLOG_ON) { if (msg2mtp2 == TRUE) return 0; } { msg_len = (msg[1]<<8) + msg[2]; if(msg_len > 300) { mtp3_debug(MTP3DB_ERROR,"Get message in iptrans_msg_flow, length longer than 300!"); msg[1]=0; } } ssf= sio & 0x0f; switch (ssf) { case TUP_SIO: if (((one << MTP3DB_TUPMSG) & debug_mask) == 0) return 0; sprintf(type,"TUP"); if (pclen == MTP3_24BIT_PC) tup_message_decode(msg[12],codeName); else tup_message_decode(msg[9],codeName); break; case ISUP_SIO: if (((one << MTP3DB_ISUPMSG) & debug_mask) == 0) return 0; sprintf(type,"ISUP"); if (pclen == MTP3_24BIT_PC) isup_message_decode(msg[13],codeName); else isup_message_decode(msg[10],codeName); break; case BICC_SIO: if (((one << MTP3DB_BICCMSG) & debug_mask) == 0) return 0; sprintf(type,"BICC"); if (pclen == MTP3_24BIT_PC) isup_message_decode(msg[13],codeName); else isup_message_decode(msg[10],codeName); break; case SCCP_SIO: if (((one << MTP3DB_SCCPMSG) & debug_mask) == 0) return 0; sprintf(type,"SCCP"); if (pclen == MTP3_24BIT_PC) sccp_message_decode(msg[11],codeName); else sccp_message_decode(msg[8],codeName); break; case SNM_SIO: if (((one << MTP3DB_SNMMSG) & debug_mask) == 0) return 0; sprintf(type,"SNM"); if (pclen == MTP3_24BIT_PC) snm_message_decode(msg[11],codeName); else snm_message_decode(msg[8],codeName); break; case TM_SIO: if (((one << MTP3DB_SNMMSG) & debug_mask) == 0) return 0; sprintf(type,"SLT"); if (pclen == MTP3_24BIT_PC) slt_message_decode(msg[11],codeName); else slt_message_decode(msg[8],codeName); break; default: return 0; } gettimeofday(&tv,&tz); t = localtime(&tv.tv_sec); switch (direction) { case MTP_MSG_UP: if (msg2mtp2 == TRUE) sprintf(info_str,"%s-%s(%02d:%02d:%02d.%06ld):MTP3<==MTP2,%dB %s SPC(%lx->%lx) SLS=%x LI=%x srcLINK=%03d srcIP=%s\r\n", type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,pclen,netID,opc,dpc,sls,(msg[1]<<8)+msg[2],msg[0],inet_ntoa(in)); else { if (((one << MTP3DB_APP_APP_MSG) & debug_mask) != 0) sprintf(info_str,"%s-%s(%02d:%02d:%02d.%06ld):MTP3<==MTP3,%dB %s SPC(%lx->%lx) SLS=%x LI=%x srcIP=%s\r\n", type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,pclen,netID,opc,dpc,sls,(msg[1]<<8)+msg[2],inet_ntoa(in)); else return 0; } mtp_hex_to_ascii(msg, (msg[1]<<8)+msg[2]+3,tempbuf); strcat(info_str,tempbuf); strcat(info_str,"\n\r"); mtp_send_ascout(info_str); return 1; break; case MTP_MSG_DOWN: sprintf(info_str,"%s-%s(%02d:%02d:%02d.%06ld):MTP3<==USER,%s DPC=%lx SLS=%x\n\rPerform routing:MTP3==>MTP2,%dB SPC(%lx->%lx) LI=%02x dstLINK=%03d dstIP=%s\r\n", type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,netID,dpc,sls,pclen,opc,dpc,(msg[1]<<8)+msg[2],msg[0],inet_ntoa(in)); break; case MTP_MSG_STP: sprintf(info_str,"%s-%s(%02d:%02d:%02d.%06ld)Perform STP:MTP3==>MTP2,SPC(%lx->%lx) dstLINK=%x dstIP=%s\r\n", type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,opc,dpc,msg[0],inet_ntoa(in)); break; case MTP_MSG_OTHER_SERVER: if (msg2mtp2 == TRUE) sprintf(info_str,"%s%s(%02d:%02d:%02d.%06ld):MTP3<==USER, %s DPC=%lx SLS=%x\n\rRouting by UP:MTP3==>MTP2,%dB SPC(%lx->%lx) LI=%02x dstLINK=%03d dstIP=%s\r\n", type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,netID,dpc,sls,pclen,opc,dpc,(msg[1]<<8)+msg[2],msg[0],inet_ntoa(in)); else { if (((one << MTP3DB_APP_APP_MSG) & debug_mask) != 0) sprintf(info_str,"%s-%s(%02d:%02d:%02d.%06ld):MTP3<==USER, %s DPC=%lx SLS=%x\n\rRouting by UP:MTP3==>MTP3,%dB SPC(%lx->%lx) LI=%02x dstIP=%s\r\n", type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,netID,dpc,sls,pclen,opc,dpc,(msg[1]<<8)+msg[2],inet_ntoa(in)); else return 0; } break; case MTP_SNM_MSG: sprintf(info_str,"%s-%s(%02d:%02d:%02d.%06ld):MTP3==>MTP2,%dB %s SPC(%lx->%lx) SLS=%d LI=%02x dstLINK=%03d dstIP=%s\r\n", type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,pclen,netID,opc,dpc,sls,(msg[1]<<8)+msg[2],msg[0],inet_ntoa(in)); mtp_hex_to_ascii(msg,(msg[1]<<8)+msg[2]+3,tempbuf); strcat(info_str,tempbuf); strcat(info_str,"\n\r"); mtp_send_ascout(info_str); return 1; break; } mtp_hex_to_ascii(msg,(msg[1]<<8)+msg[2]+3,tempbuf); strcat(info_str,tempbuf); strcat(info_str,"\n\r\n\r"); mtp_send_ascout(info_str); return 1; } BOOL iptrans_msg_flow_2(up_message *up_msg_ptr) { char info_str[1024]; char tempbuf[1024]; BYTE sio; struct timeval tv; struct timezone tz; struct tm *t; unsigned long one=1; char type[10]; BYTE nw; char netID[10]; char codeName[16]; if (mtp3DebugFull == 1) return 0; if(up_msg_ptr->len > 300) { mtp3_debug(MTP3DB_ERROR,"Get message in iptrans_msg_flow_2, length longer than 300!"); up_msg_ptr->len = 300; } sio = up_msg_ptr->sio; nw = (sio >> 6) & 3; switch (nw) { case 0: sprintf(netID,"INAT"); break; case 1: sprintf(netID,"INATs"); break; case 2: sprintf(netID,"NAT"); break; case 3: sprintf(netID,"NATs"); break; } if (((one << MTP3DB_SCCPMSG) & debug_mask) == 0) return 0; sprintf(type,"SCCP"); sccp_message_decode(up_msg_ptr->msgList[0],codeName); gettimeofday(&tv,&tz); t = localtime(&tv.tv_sec); sprintf(info_str,"%s-%s(%02d:%02d:%02d.%06ld):MTP3LITE==>USER,%s LI=%x srcLINK=%03d\r\n", type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,netID,up_msg_ptr->len,up_msg_ptr->link); mtp_hex_to_ascii(&up_msg_ptr->msgList[0], up_msg_ptr->len, tempbuf); strcat(info_str,tempbuf); strcat(info_str,"\n\r\n\r"); mtp_send_ascout(info_str); return 1; } void mtp3_debug(int n,const char *fmt,...) { char info_str[1024]; char tempbuf[1024]; va_list ap; unsigned long one=1; struct timeval tv; struct timezone tz; struct tm *t; if (mtp3DebugFull == 1) return; if(((one<tm_hour,t->tm_min,t->tm_sec,tv.tv_usec); strcat(tempbuf,info_str); strcat(tempbuf,"\33[0m\n\r"); mtp_send_ascout(tempbuf); break; case MTP3DB_SCCPMSG: sprintf(tempbuf,"\33[36mSCCP(%d:%d:%d.%ld):",t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec); strcat(tempbuf,info_str); strcat(tempbuf,"\33[0m\n\r\n\r"); mtp_send_ascout(tempbuf); break; case MTP3DB_ISUPMSG: sprintf(tempbuf,"\33[36mISUP(%d:%d:%d.%ld):",t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec); strcat(tempbuf,info_str); strcat(tempbuf,"\33[0m\n\r"); mtp_send_ascout(tempbuf); break; case MTP3DB_TUPMSG: sprintf(tempbuf,"\33[36mTUP(%d:%d:%d.%ld):",t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec); strcat(tempbuf,info_str); strcat(tempbuf,"\33[0m\n\r"); mtp_send_ascout(tempbuf); break; case MTP3DB_ERROR: sprintf(tempbuf,"\33[31m(%d:%d:%d.%ld)",t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec); strcat(tempbuf,info_str); strcat(tempbuf,"\33[0m\n\r"); mtp_send_ascout(tempbuf); break; case MTP3DB_PFHB: sprintf(tempbuf,"(%d:%d:%d.%ld)",t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec); strcat(tempbuf,info_str); strcat(tempbuf,"\n\r"); mtp_send_ascout(tempbuf); break; case MTP3DB_PRIMITIVE_MSG: sprintf(tempbuf,"(%d:%d:%d.%ld)",t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec); strcat(tempbuf,info_str); strcat(tempbuf,"\n\r"); mtp_send_ascout(tempbuf); break; case MTP3DB_CMD: sprintf(tempbuf,"\33[1;33m(%d:%d:%d)",t->tm_hour,t->tm_min,t->tm_sec); strcat(tempbuf,info_str); strcat(tempbuf,"\33[0m\n\r"); mtp_send_ascout(tempbuf); break; default: break; } } void mtp3_list_log_status() { int i; BYTE info_str[80]; mtp_send_ascout("\33[32mmtp3 log status-->\33[0m\n\r"); if ((debug_mask & 2) != 0) mtp_send_ascout("log snm \33[33mON\33[0m\n\r"); if ((debug_mask & 4) != 0) mtp_send_ascout("log sccp \33[33mON\33[0m\n\r"); if ((debug_mask & 8) != 0) mtp_send_ascout("log tup \33[33mON\33[0m\n\r"); if ((debug_mask & 16) != 0) mtp_send_ascout("log isup \33[33mON\33[0m\n\r"); if ((debug_mask & 32) != 0) mtp_send_ascout("log error \33[33mON\33[0m\n\r"); if ((debug_mask & 64) != 0) mtp_send_ascout("log event \33[33mON\33[0m\n\r"); if ((debug_mask & 256) != 0) mtp_send_ascout("log mtp3hb \33[33mON\33[0m\n\r"); if ((debug_mask & 512) != 0) mtp_send_ascout("log internal \33[33mON\33[0m\n\r"); if ((debug_mask & 1024) != 0) mtp_send_ascout("log primitive \33[33mON\33[0m\n\r"); if ((debug_mask & 128) != 0) { mtp_send_ascout("log all link \33[33mON\33[0m\n\r"); return; } for (i=0;i<256;i++) { if (debug_link[i] == MTP3_MSGLOG_ON) { sprintf(info_str,"log link=%d \33[33mON\33[0m\n\r",i); mtp_send_ascout(info_str); } } } void mtp3_show_routine_status(BYTE nw) { int i; char info_str[4096]; char tempbuf[4096]; nw_para *para; network *sp; BYTE current_rt; BYTE nls; BYTE als; static BYTE last_show[4]={0}; BYTE showCount=0; nw = nw & 3; para = &mtp3_para->nw[nw]; sp = &mtp3.nw[nw]; switch (nw) { case 0: sprintf(info_str,"\33[33mInternational Network\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m"); break; case 1: sprintf(info_str,"\33[33mInternational Network spare\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m"); break; case 2: sprintf(info_str,"\33[33mNational Network\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m"); break; case 3: sprintf(info_str,"\33[33mNational Network spare\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m"); break; default: break; } mtp_send_ascout(info_str); showCount=0; for (i=last_show[nw];i<256;i++) { nls = para->normal_ls[i]; als = para->alternative_ls[i]; if ((para->dpc[i] != 0) && (nls < 128) ) { current_rt = (sp->routine[i] >> 6) & 3; switch (current_rt) { case 0: if (als < 128) sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t%02d\n\r",para->dpc[i],nls,nls,als); else sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t--\n\r",para->dpc[i],nls,nls); mtp_send_ascout(tempbuf); break; case 1: if (als < 128) sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t%02d\n\r",para->dpc[i],als,nls,als); else sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t--\n\r",para->dpc[i],als,nls); mtp_send_ascout(tempbuf); break; case 2: if (als < 128) sprintf(tempbuf,"%06lx\t\t\33[31mN\33[0m\t\tNo Path\t\t%02d\t%02d\n\r",para->dpc[i],nls,als); else sprintf(tempbuf,"%06lx\t\t\33[31mN\33[0m\t\tNo Path\t\t%02d\t--\n\r",para->dpc[i],nls); mtp_send_ascout(tempbuf); break; default: break; } showCount++; } if (showCount > 31) { last_show[nw] = i+1; break; } } if (i>=255) { last_show[nw] = 0; } } void mtp3_show_routine_status_sorted(BYTE nw) { int i; char info_str[4096]; char tempbuf[4096]; nw_para *para; network *sp; mtp3DPCIndex *sort_rec; BYTE current_rt; BYTE nls; BYTE als; static BYTE last_show[4]={0}; BYTE showCount=0; int index; nw = nw & 3; para = &mtp3_para->nw[nw]; sp = &mtp3.nw[nw]; sort_rec = &mtp3SortRoutine.nw[nw]; switch (nw) { case 0: sprintf(info_str,"\33[33mInternational Network\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m"); break; case 1: sprintf(info_str,"\33[33mInternational Network spare\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m"); break; case 2: sprintf(info_str,"\33[33mNational Network\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m"); break; case 3: sprintf(info_str,"\33[33mNational Network spare\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m"); break; default: break; } mtp_send_ascout(info_str); showCount=0; for (i=last_show[nw];isortedNum;i++) { index = sort_rec->index[i]; nls = para->normal_ls[index]; als = para->alternative_ls[index]; if ((para->dpc[index] != 0) && (nls < 128) ) { current_rt = (sp->routine[index] >> 6) & 3; switch (current_rt) { case 0: if (als < 128) sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t%02d\n\r",para->dpc[index],nls,nls,als); else sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t--\n\r",para->dpc[index],nls,nls); mtp_send_ascout(tempbuf); break; case 1: if (als < 128) sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t%02d\n\r",para->dpc[index],als,nls,als); else sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t--\n\r",para->dpc[index],als,nls); mtp_send_ascout(tempbuf); break; case 2: if (als < 128) sprintf(tempbuf,"%06lx\t\t\33[31mN\33[0m\t\tNo Path\t\t%02d\t%02d\n\r",para->dpc[index],nls,als); else sprintf(tempbuf,"%06lx\t\t\33[31mN\33[0m\t\tNo Path\t\t%02d\t--\n\r",para->dpc[index],nls); mtp_send_ascout(tempbuf); break; default: break; } showCount++; } if (showCount > 31) { last_show[nw] = i+1; break; } } if (i>=sort_rec->sortedNum-1) { last_show[nw] = 0; } } int pc_length(BYTE nw); int mtp3_show_parameter(BYTE option,BYTE index) { int i; char info_str[4096]; int maxindex; char nw[20]; switch (option) { case 0: mtp_send_ascout("Network\t\t\tSPC Len\t\tOPC\n\r"); if (pc_length(0) == MTP3_24BIT_PC) sprintf(info_str,"International\t\t24BIT\t\t%06lx\n\r",mtp3_para->nw[0].opc24); else sprintf(info_str,"International\t\t14BIT\t\t%06lx\n\r",mtp3_para->nw[0].opc14); mtp_send_ascout(info_str); if (pc_length(1) == MTP3_24BIT_PC) sprintf(info_str,"International(s)\t24BIT\t\t%06lx\n\r",mtp3_para->nw[1].opc24); else sprintf(info_str,"International(s)\t14BIT\t\t%06lx\n\r",mtp3_para->nw[1].opc14); mtp_send_ascout(info_str); if (pc_length(2) == MTP3_24BIT_PC) sprintf(info_str,"National\t\t24BIT\t\t%06lx\n\r",mtp3_para->nw[2].opc24); else sprintf(info_str,"National\t\t14BIT\t\t%06lx\n\r",mtp3_para->nw[2].opc14); mtp_send_ascout(info_str); if (pc_length(3) == MTP3_24BIT_PC) sprintf(info_str,"National(s)\t\t24BIT\t\t%06lx\n\r",mtp3_para->nw[3].opc24); else sprintf(info_str,"National(s)\t\t14BIT\t\t%06lx\n\r",mtp3_para->nw[3].opc14); mtp_send_ascout(info_str); sprintf(info_str, "International Dynamic (%d): %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\r\n", mtp3_opc.opc_num[0], mtp3_opc.opc[0][0], mtp3_opc.opc[0][1], mtp3_opc.opc[0][2], mtp3_opc.opc[0][3], mtp3_opc.opc[0][4], mtp3_opc.opc[0][5], mtp3_opc.opc[0][6], mtp3_opc.opc[0][7]); mtp_send_ascout(info_str); sprintf(info_str, "International(s) Dynamic (%d): %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\r\n", mtp3_opc.opc_num[1], mtp3_opc.opc[1][0], mtp3_opc.opc[1][1], mtp3_opc.opc[1][2], mtp3_opc.opc[1][3], mtp3_opc.opc[1][4], mtp3_opc.opc[1][5], mtp3_opc.opc[1][6], mtp3_opc.opc[1][7]); mtp_send_ascout(info_str); sprintf(info_str, "National Dynamic (%d): %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\r\n", mtp3_opc.opc_num[2], mtp3_opc.opc[2][0], mtp3_opc.opc[2][1], mtp3_opc.opc[2][2], mtp3_opc.opc[2][3], mtp3_opc.opc[2][4], mtp3_opc.opc[2][5], mtp3_opc.opc[2][6], mtp3_opc.opc[2][7]); mtp_send_ascout(info_str); sprintf(info_str, "National(s) Dynamic (%d): %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\r\n", mtp3_opc.opc_num[3], mtp3_opc.opc[3][0], mtp3_opc.opc[3][1], mtp3_opc.opc[3][2], mtp3_opc.opc[3][3], mtp3_opc.opc[3][4], mtp3_opc.opc[3][5], mtp3_opc.opc[3][6], mtp3_opc.opc[3][7]); mtp_send_ascout(info_str); break; case 1: sprintf(info_str," \33[32mLink Attribute-->\n\r\33[0m"); mtp_send_ascout(info_str); sprintf(info_str,"\33[32mLink\tLinkset\tSLC\tNormalMTP3\tAlterMTP3\tType\tSG\tCfg\n\r\33[0m"); mtp_send_ascout(info_str); if (index > 224) maxindex = 256; else maxindex = index+32; for (i=index; ilk[i].e1_to_linkset,mtp3_para->lk[i].e1_to_slc, mtp3_para->lk[i].e1_to_mtp3,mtp3_para->lk[i].e1_to_alterMTP3,mtp3_para->lk[i].e1_lk_type,mtp3_para->lk[i].e1_to_sg,mtp3ObjState.lk_configured[i]); mtp_send_ascout(info_str); } break; case 2: sprintf(info_str," \33[32mLinkset Attribute-->\n\r\33[0m"); mtp_send_ascout(info_str); sprintf(info_str,"\33[32mLinkset\tRemote_SPC\tNetwork\t\tLoopBack\n\r\33[0m"); mtp_send_ascout(info_str); index = index % 128; if (index > 96) maxindex = 128; else maxindex = index+32; for (i=index; ils_pro[i] & 3) { case 0: sprintf(nw,"INT"); break; case 1: sprintf(nw,"INT(s)"); break; case 2: sprintf(nw,"NAT"); break; case 3: sprintf(nw,"NAT(s)"); break; } if ((mtp3_para->ls_pro[i] & 8) == 0) sprintf(info_str,"%03d\t%06lx\t\t%s\t\tN\n\r",i,mtp3_para->ls_op_pc[i],nw); else sprintf(info_str,"%03d\t%06lx\t\t%s\t\tY\n\r",i,mtp3_para->ls_op_pc[i],nw); mtp_send_ascout(info_str); } break; case 3:// international routine */ sprintf(info_str," \33[32mInternational Routine\n\r\33[0m"); mtp_send_ascout(info_str); sprintf(info_str," \33[32m SPC\tNormal LS\tAlternative LS\n\r\33[0m"); mtp_send_ascout(info_str); if (index > 224) maxindex = 256; else maxindex = index+32; for (i=index; inw[0].dpc[i],mtp3_para->nw[0].normal_ls[i],mtp3_para->nw[0].alternative_ls[i]); mtp_send_ascout(info_str); } break; case 4:// international(s) routine sprintf(info_str," \33[32mInternational(S) Routine\n\r\33[0m"); mtp_send_ascout(info_str); sprintf(info_str," \33[32m SPC\tNormal LS\tAlternative LS\n\r\33[0m"); mtp_send_ascout(info_str); if (index > 224) maxindex = 256; else maxindex = index+32; for (i=index; inw[1].dpc[i],mtp3_para->nw[1].normal_ls[i],mtp3_para->nw[1].alternative_ls[i]); mtp_send_ascout(info_str); } break; case 5:// national routine sprintf(info_str," \33[32mNational Routine\n\r\33[0m"); mtp_send_ascout(info_str); sprintf(info_str," \33[32m SPC\tNormal LS\tAlternative LS\n\r\33[0m"); mtp_send_ascout(info_str); if (index > 224) maxindex = 256; else maxindex = index+32; for (i=index; inw[2].dpc[i],mtp3_para->nw[2].normal_ls[i],mtp3_para->nw[2].alternative_ls[i]); mtp_send_ascout(info_str); } break; case 6:// national(s) routine sprintf(info_str," \33[32mNational(S) Routine\n\r\33[0m"); mtp_send_ascout(info_str); sprintf(info_str," \33[32m SPC\tNormal LS\tAlternative LS\n\r\33[0m"); mtp_send_ascout(info_str); if (index > 224) maxindex = 256; else maxindex = index+32; for (i=index; inw[3].dpc[i],mtp3_para->nw[3].normal_ls[i],mtp3_para->nw[3].alternative_ls[i]); mtp_send_ascout(info_str); } break; case 7:// SG Attribute sprintf(info_str," \33[32mSG Attribute-->\n\r\33[0m"); mtp_send_ascout(info_str); sprintf(info_str," \33[32mSG Enable\tServer\tACK\tRemoteIP\n\r\33[0m"); mtp_send_ascout(info_str); if (index > 224) maxindex = 256; else maxindex = index+32; for (i=index; isg[i].enable,mtp3_para->sg[i].server, mtp3_para->sg[i].data_ack,mtp3_para->sg[i].ip); mtp_send_ascout(info_str); } break; } return 1; } void mtp3_list_link(BYTE i) { char info_str[4096]; sprintf(info_str," \33[32mLink Attribute-->\n\r\33[0m"); mtp_send_ascout(info_str); sprintf(info_str,"\33[32mLink\tE1_MTP3\t\tNMTP3\tAMTP3\n\r\33[0m"); mtp_send_ascout(info_str); sprintf(info_str,"%03d\t%08lx\t%02x\t%02x\n\r",i, mtp3ObjState.lk_mtp3[i],mtp3ObjState.lk_NMTP3_ok[i],mtp3ObjState.lk_AMTP3_ok[i]); mtp_send_ascout(info_str); } /*@end@*/