⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snmp_debug.h

📁 snmp的源代码,已经在我的ubuntu下编译通过
💻 H
字号:
#ifndef SNMP_DEBUG_H#define SNMP_DEBUG_H#ifdef __cplusplusextern          "C" {#endif    /*     * snmp_debug.h:     *      * - prototypes for snmp debugging routines.     * - easy to use macros to wrap around the functions.  This also provides     * the ability to remove debugging code easily from the applications at     * compile time.     */    /*     * These functions should not be used, if at all possible.  Instead, use     * the macros below.      */#if HAVE_STDARG_H    void            debugmsg(const char *token, const char *format, ...);    void            debugmsgtoken(const char *token, const char *format,                                  ...);    void            debug_combo_nc(const char *token, const char *format,                                   ...);#else    void            debugmsg(va_alist);    void            debugmsgtoken(va_alist);    void            debug_combo_nc(va_alist);#endif    void            debugmsg_oid(const char *token, const oid * theoid,                                 size_t len);    void            debugmsg_suboid(const char *token, const oid * theoid,                                    size_t len);    void            debugmsg_var(const char *token,                                 netsnmp_variable_list * var);    void            debugmsg_oidrange(const char *token,                                      const oid * theoid, size_t len,                                      size_t var_subid, oid range_ubound);    void            debugmsg_hex(const char *token, u_char * thedata,                                 size_t len);    void            debugmsg_hextli(const char *token, u_char * thedata,                                    size_t len);    void            debug_indent_add(int amount);    char           *debug_indent(void);    /*     * Use these macros instead of the functions above to allow them to be     * re-defined at compile time to NOP for speed optimization.     *      * They need to be called enclosing all the arguments in a single set of ()s.     * Example:     * DEBUGMSGTL(("token", "debugging of something %s related\n", "snmp"));     *      * Usage:     * All of the functions take a "token" argument that helps determine when     * the output in question should be printed.  See the snmpcmd.1 manual page     * on the -D flag to turn on/off output for a given token on the command line.     *      * DEBUGMSG((token, format, ...)):      equivalent to printf(format, ...)     * (if "token" debugging output     * is requested by the user)     *      * DEBUGMSGT((token, format, ...)):     equivalent to DEBUGMSG, but prints     * "token: " at the beginning of the     * line for you.     *      * DEBUGTRACE                           Insert this token anywhere you want     * tracing output displayed when the     * "trace" debugging token is selected.     *      * DEBUGMSGL((token, format, ...)):     equivalent to DEBUGMSG, but includes     * DEBUGTRACE debugging line just before     * yours.     *      * DEBUGMSGTL((token, format, ...)):    Same as DEBUGMSGL and DEBUGMSGT     * combined.     *      * Important:     * It is considered best if you use DEBUGMSGTL() everywhere possible, as it     * gives the nicest format output and provides tracing support just before     * every debugging statement output.     *      * To print multiple pieces to a single line in one call, use:     *      * DEBUGMSGTL(("token", "line part 1"));     * DEBUGMSG  (("token", " and part 2\n"));     *      * to get:     *      * token: line part 1 and part 2     *      * as debugging output.     *     *     * Each of these macros also have a version with a suffix of '_NC'. The     * NC suffix stands for 'No Check', which means that no check will be     * performed to see if debug is enabled or if the token has been turned     * on. These NC versions are intended for use within a DEBUG_IF {} block,     * where the debug/token check has already been performed.     */#ifndef SNMP_NO_DEBUGGING       /* make sure we're wanted */    /*     * define two macros : one macro with, one without,     *                     a test if debugging is enabled.     *      * Generally, use the macro with _DBG_IF_     *//******************* Start private macros ************************/#define _DBG_IF_            snmp_get_do_debugging()#define DEBUGIF(x)         if (_DBG_IF_ && debug_is_token_registered(x) == SNMPERR_SUCCESS)#define __DBGMSGT(x)     debugmsgtoken x,  debugmsg x#define __DBGMSG_NC(x)   debugmsg x#define __DBGMSGT_NC(x)  debug_combo_nc x#define __DBGMSGL_NC(x)  __DBGTRACE; debugmsg x#define __DBGMSGTL_NC(x) __DBGTRACE; debug_combo_nc x#ifdef  HAVE_CPP_UNDERBAR_FUNCTION_DEFINED#define __DBGTRACE       __DBGMSGT(("trace","%s(): %s, %d:\n",__FUNCTION__,\                                 __FILE__,__LINE__))#else#define __DBGTRACE       __DBGMSGT(("trace"," %s, %d:\n", __FILE__,__LINE__))#endif#define __DBGMSGL(x)     __DBGTRACE, debugmsg x#define __DBGMSGTL(x)    __DBGTRACE, debugmsgtoken x, debugmsg x#define __DBGMSGOID(x)     debugmsg_oid x#define __DBGMSGSUBOID(x)  debugmsg_suboid x#define __DBGMSGVAR(x)     debugmsg_var x#define __DBGMSGOIDRANGE(x) debugmsg_oidrange x#define __DBGMSGHEX(x)     debugmsg_hex x#define __DBGMSGHEXTLI(x)  debugmsg_hextli x#define __DBGINDENT()      debug_indent()#define __DBGINDENTADD(x)  debug_indent_add(x)#define __DBGINDENTMORE()  debug_indent_add(2)#define __DBGINDENTLESS()  debug_indent_add(-2)#define __DBGPRINTINDENT(token) __DBGMSGTL((token, "%s", __DBGINDENT()))#define __DBGDUMPHEADER(token,x) \        __DBGPRINTINDENT("dumph_" token); \        debugmsg("dumph_" token,x); \        if (debug_is_token_registered("dumpx" token) == SNMPERR_SUCCESS ||    \            debug_is_token_registered("dumpv" token) == SNMPERR_SUCCESS ||    \            (debug_is_token_registered("dumpx_" token) != SNMPERR_SUCCESS &&  \             debug_is_token_registered("dumpv_" token) != SNMPERR_SUCCESS)) { \            debugmsg("dumph_" token,"\n"); \        } else { \            debugmsg("dumph_" token,"  "); \        } \        __DBGINDENTMORE()#define __DBGDUMPSECTION(token,x) \        __DBGPRINTINDENT("dumph_" token); \        debugmsg("dumph_" token,x); \        debugmsg("dumph_" token,"\n"); \        __DBGINDENTMORE()#define __DBGDUMPSETUP(token,buf,len) \        debugmsg("dumpx" token, "dumpx_%s:%s", token, __DBGINDENT()); \        __DBGMSGHEX(("dumpx_" token,buf,len)); \        if (debug_is_token_registered("dumpv" token) == SNMPERR_SUCCESS || \            debug_is_token_registered("dumpv_" token) != SNMPERR_SUCCESS) { \            debugmsg("dumpx_" token,"\n"); \        } else { \            debugmsg("dumpx_" token,"  "); \        } \        debugmsg("dumpv" token, "dumpv_%s:%s", token, __DBGINDENT());/******************* End   private macros ************************//*****************************************************************//*****************************************************************//********************Start public  macros ************************/#define DEBUGMSG(x)        do {if (_DBG_IF_) {debugmsg x;} }while(0)#define DEBUGMSGT(x)       do {if (_DBG_IF_) {__DBGMSGT(x);} }while(0)#define DEBUGTRACE         do {if (_DBG_IF_) {__DBGTRACE;} }while(0)#define DEBUGMSGL(x)       do {if (_DBG_IF_) {__DBGMSGL(x);} }while(0)#define DEBUGMSGTL(x)      do {if (_DBG_IF_) {__DBGMSGTL(x);} }while(0)#define DEBUGMSGOID(x)     do {if (_DBG_IF_) {__DBGMSGOID(x);} }while(0)#define DEBUGMSGSUBOID(x)  do {if (_DBG_IF_) {__DBGMSGSUBOID(x);} }while(0)#define DEBUGMSGVAR(x)     do {if (_DBG_IF_) {__DBGMSGVAR(x);} }while(0)#define DEBUGMSGOIDRANGE(x) do {if (_DBG_IF_) {__DBGMSGOIDRANGE(x);} }while(0)#define DEBUGMSGHEX(x)     do {if (_DBG_IF_) {__DBGMSGHEX(x);} }while(0)#define DEBUGMSGHEXTLI(x)  do {if (_DBG_IF_) {__DBGMSGHEXTLI(x);} }while(0)#define DEBUGINDENT()      do {if (_DBG_IF_) {__DBGINDENT();} }while(0)#define DEBUGINDENTADD(x)  do {if (_DBG_IF_) {__DBGINDENTADD(x);} }while(0)#define DEBUGINDENTMORE()  do {if (_DBG_IF_) {__DBGINDENTMORE();} }while(0)#define DEBUGINDENTLESS()  do {if (_DBG_IF_) {__DBGINDENTLESS();} }while(0)#define DEBUGPRINTINDENT(token) \	do {if (_DBG_IF_) {__DBGPRINTINDENT(token);} }while(0)#define DEBUGDUMPHEADER(token,x) \	do {if (_DBG_IF_) {__DBGDUMPHEADER(token,x);} }while(0)#define DEBUGDUMPSECTION(token,x) \	do {if (_DBG_IF_) {__DBGDUMPSECTION(token,x);} }while(0)#define DEBUGDUMPSETUP(token,buf,len) \	do {if (_DBG_IF_) {__DBGDUMPSETUP(token,buf,len);} }while(0)#define DEBUGMSG_NC(x)  do { __DBGMSG_NC(x); }while(0)#define DEBUGMSGT_NC(x) do { __DBGMSGT_NC(x); }while(0)#else                           /* SNMP_NO_DEBUGGING := enable streamlining of the code */#define DEBUGMSG(x)#define DEBUGMSGT(x)#define DEBUGTRACE#define DEBUGMSGL(x)#define DEBUGMSGTL(x)#define DEBUGMSGOID(x)#define DEBUGMSGSUBOID(x)#define DEBUGMSGVAR(x)#define DEBUGMSGOIDRANGE(x)#define DEBUGMSGHEX(x)#define DEBUGIF(x)        if(0)#define DEBUGDUMP(t,b,l,p)#define DEBUGINDENT()#define DEBUGINDENTMORE()#define DEBUGINDENTLESS()#define DEBUGINDENTADD(x)#define DEBUGMSGHEXTLI(x)#define DEBUGPRINTINDENT(token)#define DEBUGDUMPHEADER(token,x)#define DEBUGDUMPSECTION(token,x)#define DEBUGDUMPSETUP(token, buf, len)#define DEBUGMSG_NC(x)#define DEBUGMSGT_NC(x)#endif#define MAX_DEBUG_TOKENS 256#define MAX_DEBUG_TOKEN_LEN 128#define DEBUG_TOKEN_DELIMITER ","#define DEBUG_ALWAYS_TOKEN "all"    /*     * setup routines:     *      * debug_register_tokens(char *):     registers a list of tokens to     * print debugging output for.     *      * debug_is_token_registered(char *): returns SNMPERR_SUCCESS or SNMPERR_GENERR     * if a token has been registered or     * not (and debugging output is "on").     * snmp_debug_init(void):             registers .conf handlers.     */    void            debug_register_tokens(char *tokens);    int             debug_is_token_registered(const char *token);    void            snmp_debug_init(void);    void            snmp_set_do_debugging(int);    int             snmp_get_do_debugging(void);/* * internal: * You probably shouldn't be using this information unless the word * "expert" applies to you.  I know it looks tempting. */typedef struct netsnmp_token_descr_s {    char *token_name;    char  enabled;} netsnmp_token_descr;extern int                 debug_num_tokens;extern netsnmp_token_descr dbg_tokens[MAX_DEBUG_TOKENS];    #ifdef __cplusplus}#endif#endif                          /* SNMP_DEBUG_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -