📄 iccp_log.c
字号:
/************************************************************************//* SISCO SOFTWARE MODULE HEADER *****************************************//************************************************************************//* (c) Copyright Systems Integration Specialists Company, Inc., *//* 1986 - 1998, All Rights Reserved. *//* *//* PROPRIETARY AND CONFIDENTIAL *//* *//* MODULE NAME : iccp_log.c *//* PRODUCT(S) : ICCP Interop. Testing *//* *//* MODULE DESCRIPTION : *//* *//* GLOBAL FUNCTIONS DEFINED IN THIS MODULE : *//* *//* MODIFICATION LOG : *//* Date Who Rev Comments *//* -------- --- ------ ------------------------------------------- *//* 05/19/00 nav 9 Set logCtrl to 0 before reading .cfg *//* 02/09/00 nav 8 Add ICA_LOG_DATA *//* 05/13/98 nav 7 move dyn_iccp_slog_fun from ictautil.c *//* 03/19/98 nav 6 Use sLogCtrl insteal of lc *//* 01/16/98 EJV 5 Deleted cfg reparsing function. *//* 06/11/97 nav 4 Add acse NERRR print *//* 06/05/97 nav 3 Convert to MMS-EASE V7.00 *//* 10/04/96 nav 1 add function to turn on and off slog_dyn_fun *//************************************************************************/#ifdef _WIN32#include <conio.h> #endif#include "glbtypes.h"#include "sysincs.h"#include "asn1defs.h"#include "stdarg.h"#include "mem_chk.h"#include "slog.h"#include "cfg_util.h"#include "mms_usr.h"#include "mloguser.h"#include "suicacse.h"#include "icapi.h"#include "iccp_log.h"/* Control bit set/clear macros */ST_VOID mem_chk_error_detected(ST_VOID);#define M_SET_CTRL(a) {sLogCtrl->logCtrl |= (a);}#define M_CLR_CTRL(a) {sLogCtrl->logCtrl &= ~(a);}#define M_SET_FILE_CTRL(a) {sLogCtrl->fc.ctrl |= (a);}#define M_CLR_FILE_CTRL(a) {sLogCtrl->fc.ctrl &= ~(a);}#define M_SET_MEM_CTRL(a) {sLogCtrl->mc.ctrl |= (a);}#define M_CLR_MEM_CTRL(a) {sLogCtrl->mc.ctrl &= ~(a);}#define IC_SET_LOG_MASK1(a) {sLogCtrl->logMask1 |= (a);}static ST_CHAR *thisFileName = __FILE__;static ST_BOOLEAN user_file_log_en_flg; /* SD_TRUE if user set FileLogEn in cfg file */static ST_BOOLEAN user_mem_log_en_flg; /* SD_TRUE if user set MemLogEn in cfg file */ST_CHAR log_file_name[ 100 ];ST_CHAR logmem_file_name[ 100 ];ST_VOID dyn_slog_fun( LOG_CTRL *lc, ST_INT logType, ST_CHAR *sourceFile, ST_INT lineNum, ST_INT count, ST_CHAR *slog_buf );/*----- Internal functions prototypes for handling state tables -----*/ ST_VOID cfg_mlog_begin( ST_VOID );ST_VOID cfg_mlog_lc_begin( ST_VOID );ST_VOID cfg_mlog_lc_file_log_en( ST_VOID );ST_VOID cfg_mlog_lc_mem_log_en( ST_VOID );ST_VOID cfg_mlog_lc_hard_flush( ST_VOID );ST_VOID cfg_mlog_lc_no_append( ST_VOID );ST_VOID cfg_mlog_lc_no_msg_header( ST_VOID );ST_VOID cfg_mlog_lc_no_wipe( ST_VOID );ST_VOID cfg_mlog_lc_no_wrap( ST_VOID );ST_VOID cfg_mlog_lc_setbuf( ST_VOID );ST_VOID cfg_mlog_lc_end( ST_VOID );ST_VOID cfg_mlog_lm_memerr_log( ST_VOID );ST_VOID cfg_mlog_lm_calloc_log( ST_VOID );ST_VOID cfg_mlog_lm_malloc_log( ST_VOID );ST_VOID cfg_mlog_lm_realloc_log( ST_VOID );ST_VOID cfg_mlog_lm_free_log( ST_VOID );ST_VOID cfg_mic_m_fill_en( ST_VOID ); ST_VOID cfg_mic_m_heap_check_enable( ST_VOID );ST_VOID cfg_mic_m_check_list_enable( ST_VOID );ST_VOID cfg_mic_m_find_node_enable( ST_VOID ); ST_VOID cfg_mic_m_track_prev_free( ST_VOID ); extern ST_INT16 m_track_prev_free; /* used to record previous free of pointer */ST_VOID cfg_mic_list_debug_sel( ST_VOID ); ST_VOID cfg_mic_m_no_realloc_smaller( ST_VOID ); ST_VOID cfg_mlog_asn1_log_dec( ST_VOID ); ST_VOID cfg_mlog_asn1_log_enc( ST_VOID ); ST_VOID cfg_mlog_asn1_log_err( ST_VOID ); ST_VOID cfg_mlog_asn1_log_nerr( ST_VOID ); ST_VOID cfg_mlog_mms_log_dec( ST_VOID ); ST_VOID cfg_mlog_mms_log_enc( ST_VOID ); ST_VOID cfg_mlog_mms_log_acse( ST_VOID ); ST_VOID cfg_mlog_mms_log_llc( ST_VOID ); ST_VOID cfg_mlog_mms_log_ique( ST_VOID ); ST_VOID cfg_mlog_mms_log_rque( ST_VOID ); ST_VOID cfg_mlog_mms_log_ind( ST_VOID ); ST_VOID cfg_mlog_mms_log_conf( ST_VOID ); ST_VOID cfg_mlog_mms_log_vm( ST_VOID ); ST_VOID cfg_mlog_mms_log_data( ST_VOID ); ST_VOID cfg_mlog_mms_log_err( ST_VOID ); ST_VOID cfg_mlog_mms_log_nerr( ST_VOID ); ST_VOID cfg_mlog_mms_log_pdu( ST_VOID ); ST_VOID cfg_mlog_mms_log_config( ST_VOID ); ST_VOID cfg_mlog_mms_log_rt( ST_VOID ); ST_VOID cfg_mlog_mms_log_rtaa( ST_VOID ); ST_VOID cfg_mlog_mms_log_aa( ST_VOID ); ST_VOID cfg_mlog_mms_log_req( ST_VOID ); ST_VOID cfg_mlog_mms_log_resp( ST_VOID ); ST_VOID cfg_mlog_mmsconf_print( ST_VOID ); ST_VOID cfg_mlog_mmsind_print( ST_VOID ); ST_VOID cfg_mlog_acse_ind_print( ST_VOID ); ST_VOID cfg_mlog_acse_cnf_print( ST_VOID ); ST_VOID cfg_mlog_acse_err_print( ST_VOID ); ST_VOID cfg_mlog_acse_dec_print( ST_VOID ); ST_VOID cfg_mlog_acse_nerr_print(ST_VOID ); ST_VOID cfg_mlog_ica_err_log( ST_VOID ); ST_VOID cfg_mlog_ica_flow_log( ST_VOID ); ST_VOID cfg_mlog_ica_data_log( ST_VOID ); ST_VOID cfg_mlog_osak_print( ST_VOID ); ST_VOID cfg_mlog_osak_deb( ST_VOID ); ST_VOID cfg_mlog_lm_end( ST_VOID );ST_VOID cfg_mlog_time_enable( ST_VOID );ST_VOID cfg_mlog_log_file_size( ST_VOID );ST_VOID cfg_mlog_log_file_name( ST_VOID );ST_VOID cfg_mlog_log_mem_items( ST_VOID );ST_VOID cfg_mlog_dump_file_name( ST_VOID );ST_VOID cfg_mlog_mem_auto_dump( ST_VOID );ST_VOID cfg_mlog_end( ST_VOID );ST_VOID m_readLogCfg( ST_CHAR * logging_control_filename, LOG_CTRL *lc );/*#define S_TABLE_DEBUG*/struct cfg_kw_el mlog_base_kwtbl[] = { {"%LogBegin", cfg_mlog_begin, NULL }, { NULL, NULL, NULL} };struct cfg_kw_el mlog_log_mask_kwtbl[] = { /* Memory use logging */ {"MEM_LOG_ERR", cfg_mlog_lm_memerr_log, NULL }, {"MEM_LOG_CALLOC", cfg_mlog_lm_calloc_log, NULL }, {"MEM_LOG_MALLOC", cfg_mlog_lm_malloc_log, NULL }, {"MEM_LOG_REALLOC", cfg_mlog_lm_realloc_log, NULL }, {"MEM_LOG_FREE", cfg_mlog_lm_free_log, NULL }, /* Integrity checking on buffers */ {"m_fill_en", cfg_mic_m_fill_en, NULL }, {"m_heap_check_enable", cfg_mic_m_heap_check_enable, NULL }, {"m_check_list_enable", cfg_mic_m_check_list_enable, NULL }, {"m_find_node_enable", cfg_mic_m_find_node_enable, NULL }, {"m_track_prev_free", cfg_mic_m_track_prev_free, NULL }, {"list_debug_sel", cfg_mic_list_debug_sel, NULL }, {"m_no_realloc_smaller", cfg_mic_m_no_realloc_smaller, NULL }, /* ASN.1 Log masks */ {"ASN1_LOG_DEC", cfg_mlog_asn1_log_dec, NULL }, {"ASN1_LOG_ENC", cfg_mlog_asn1_log_enc, NULL }, {"ASN1_LOG_ERR", cfg_mlog_asn1_log_err, NULL }, {"ASN1_LOG_NERR", cfg_mlog_asn1_log_nerr, NULL }, /* MMS Demo Log masks */ {"MMS_LOG_DEC", cfg_mlog_mms_log_dec, NULL }, {"MMS_LOG_ENC", cfg_mlog_mms_log_enc, NULL }, {"MMS_LOG_ACSE", cfg_mlog_mms_log_acse, NULL }, {"MMS_LOG_LLC", cfg_mlog_mms_log_llc, NULL }, {"MMS_LOG_IQUE", cfg_mlog_mms_log_ique, NULL }, {"MMS_LOG_RQUE", cfg_mlog_mms_log_rque, NULL }, {"MMS_LOG_IND", cfg_mlog_mms_log_ind, NULL }, {"MMS_LOG_CONF", cfg_mlog_mms_log_conf, NULL }, {"MMS_LOG_REQ", cfg_mlog_mms_log_req, NULL }, {"MMS_LOG_RESP", cfg_mlog_mms_log_resp, NULL }, {"MMS_LOG_VM", cfg_mlog_mms_log_vm, NULL }, {"MMS_LOG_DATA", cfg_mlog_mms_log_data, NULL }, {"MMS_LOG_ERR", cfg_mlog_mms_log_err, NULL }, {"MMS_LOG_NERR", cfg_mlog_mms_log_nerr, NULL }, {"MMS_LOG_PDU", cfg_mlog_mms_log_pdu, NULL }, {"MMS_LOG_CONFIG", cfg_mlog_mms_log_config, NULL }, {"MMS_LOG_RT", cfg_mlog_mms_log_rt, NULL }, {"MMS_LOG_RTAA", cfg_mlog_mms_log_rtaa, NULL }, {"MMS_LOG_AA", cfg_mlog_mms_log_aa, NULL }, {"MMSCONF_PRINT", cfg_mlog_mmsconf_print, NULL }, {"MMSIND_PRINT", cfg_mlog_mmsind_print, NULL }, /* SUIC log masks */ {"ACSE_IND_PRINT", cfg_mlog_acse_ind_print, NULL }, {"ACSE_CNF_PRINT", cfg_mlog_acse_cnf_print, NULL }, {"ACSE_ERR_PRINT", cfg_mlog_acse_err_print, NULL }, {"ACSE_DEC_PRINT", cfg_mlog_acse_dec_print, NULL }, {"ACSE_NERR_PRINT", cfg_mlog_acse_nerr_print, NULL }, {"ICA_LOG_ERR", cfg_mlog_ica_err_log, NULL }, {"ICA_LOG_FLOW", cfg_mlog_ica_flow_log, NULL }, {"ICA_LOG_DATA", cfg_mlog_ica_data_log, NULL }, /* DECnet/OSI SUIC needs extra help!! */ {"OSAK_PRINT", cfg_mlog_osak_print, NULL }, {"OSAK_DEB", cfg_mlog_osak_deb, NULL }, {"FileLogEn", cfg_mlog_lc_file_log_en, NULL }, {"MemLogEn", cfg_mlog_lc_mem_log_en, NULL }, /* Misc. Control Flags */ {"TimeEnable", cfg_mlog_time_enable, NULL }, {"HardFlush", cfg_mlog_lc_hard_flush, NULL }, {"NoAppend", cfg_mlog_lc_no_append, NULL }, {"NoMsgheader", cfg_mlog_lc_no_msg_header, NULL }, {"NoWipe", cfg_mlog_lc_no_wipe, NULL }, {"NoWrap", cfg_mlog_lc_no_wrap, NULL }, {"Setbuf", cfg_mlog_lc_setbuf, NULL }, /* Log File Attributes */ {"LogFileSize", cfg_mlog_log_file_size, NULL }, {"LogFileName", cfg_mlog_log_file_name, NULL }, /* Memory Resident Logging Attributes */ {"LogMemItems", cfg_mlog_log_mem_items, NULL }, {"DumpFileName", cfg_mlog_dump_file_name, NULL }, {"MemAutoDump", cfg_mlog_mem_auto_dump, NULL }, {"%LogEnd", cfg_mlog_end, NULL}, { NULL, NULL, NULL} };/************************************************************************//************************************************************************//************************************************************************/ ST_VOID mem_chk_error_detected (ST_VOID) { printf ( "\n MEM_CHK found a serious memory overwrite!!" ); printf ("\n press any key to continue" ); while (!kbhit ()); }/************************************************************************//* m_set_log_config *//************************************************************************/ST_VOID m_set_log_config (ST_CHAR *logging_control_filename) {FILE *file_ptr;/* trap mem_chk errors */ mem_chk_err = mem_chk_error_detected;/* Initialize the logging for MMS-EASE *//* Set the flags that should normally be turned on */ sLogCtrl->mc.ctrl = MEM_CTRL_MSG_HDR_EN; sLogCtrl->fc.ctrl = (FIL_CTRL_WIPE_EN | FIL_CTRL_WRAP_EN | FIL_CTRL_MSG_HDR_EN); IC_SET_LOG_MASK1( ICA_LOG_ALWAYS ); cfg_log_mask = CFG_LOG_ERR; /* | CFG_LOG_FLOW;*//* NOTE: Setting up defaults is only requried when there is no *//* logging configuration file to deal with. */ if (!(file_ptr = fopen (logging_control_filename,"r"))) {/* If no file is present, use defaults *//* Use File logging */ sLogCtrl->logCtrl = LOG_FILE_EN;/* Use time/date time log */ sLogCtrl->logCtrl |= (LOG_TIMEDATE_EN | LOG_TIME_EN);/* File Logging Control defaults */ sLogCtrl->fc.fileName = "mms.log"; sLogCtrl->fc.maxSize = 250000L; sLogCtrl->fc.ctrl = (FIL_CTRL_WIPE_EN | FIL_CTRL_WRAP_EN | FIL_CTRL_MSG_HDR_EN); } else { sLogCtrl->logCtrl = 0; fclose( file_ptr ); m_readLogCfg( logging_control_filename, sLogCtrl ); } if (strlen(log_file_name) > 0) { /* if log_file_name different then default close current log file */ /* (if open) so next slog call will reopen the new log file name. */ if (strcmpi(log_file_name, sLogCtrl->fc.fileName) != 0) { slogCloseFile (sLogCtrl); sLogCtrl->fc.fileName = log_file_name; } } slog_dyn_log_fun = NULL; }/************************************************************************//* m_readLogCfg *//************************************************************************/ST_VOID m_readLogCfg (ST_CHAR *logging_control_filename, LOG_CTRL *localLc) {ST_RET ret_val; /* If errors in configuration file, use defaults */ user_file_log_en_flg = SD_FALSE; user_mem_log_en_flg = SD_FALSE; ret_val = cfg_process_file( logging_control_filename, mlog_base_kwtbl ); /* check for errors encountered by the state functions */ if ( ret_val == SD_SUCCESS ) { /* If user doesn't have FileLogEn flag set, disable default value */ if ( !user_file_log_en_flg ) M_CLR_CTRL( LOG_FILE_EN ); /* If user doesn't have MemLogEn flag set, disable default value */ if ( !user_mem_log_en_flg ) M_CLR_CTRL( LOG_MEM_EN ); } }/*------------- Internal functions for handling state tables -----------*/ /************************************************************************//* cfg_mlog_begin *//************************************************************************//* Initial state for parsing Logging configuration file */ST_VOID cfg_mlog_begin (ST_VOID) {#ifdef S_TABLE_DEBUG printf( "\ncfg_mlog_begin: entered." );#endif /* Configuration file successfully opened *//* if ( cfg_tbl_push( mlog_logging_ctrl_begin_kwtbl) != SD_SUCCESS ) */ if ( cfg_tbl_push( mlog_log_mask_kwtbl) != SD_SUCCESS ) cfg_set_config_err(); }/************************************************************************//* cfg_mlog_lc_file_log_en *//************************************************************************/ST_VOID cfg_mlog_lc_file_log_en (ST_VOID) {#ifdef S_TABLE_DEBUG printf( "\ncfg_mlog_lc_file_log_en: entered." );#endif /* Found 'FileLogEn' flag */ M_SET_CTRL( LOG_FILE_EN ); user_file_log_en_flg = SD_TRUE; }/************************************************************************//* cfg_mlog_lc_mem_log_en *//************************************************************************/ST_VOID cfg_mlog_lc_mem_log_en (ST_VOID) {#ifdef S_TABLE_DEBUG printf( "\ncfg_mlog_lc_mem_log_en: entered." );#endif /* Found 'MemLogEn' flag */ M_SET_CTRL( LOG_MEM_EN ); user_mem_log_en_flg = SD_TRUE; }/************************************************************************//* cfg_mlog_lc_hard_flush *//************************************************************************/ST_VOID cfg_mlog_lc_hard_flush (ST_VOID) {#ifdef S_TABLE_DEBUG printf( "\ncfg_mlog_lc_hard_flush: entered." );#endif /* Found 'HardFlush' flag */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -