
/*
 * This file was generated by mib2c and is intended for use as a mib module
 * for the ucd-snmp snmpd agent. 
 */

#ifndef _MIBGROUP_SNMPMPDSTATS_H
#define _MIBGROUP_SNMPMPDSTATS_H

/*
 * we use header_generic and checkmib from the util_funcs module 
 */

config_require(util_funcs)
config_add_mib(SNMP-MPD-MIB)

    /*
     * Magic number definitions: 
     */
#define   SNMPUNKNOWNSECURITYMODELS  0
#define   SNMPINVALIDMSGS            1
#define   SNMPUNKNOWNPDUHANDLERS     2
    /*
     * function definitions 
     */
     void            init_snmpMPDStats(void);
     extern FindVarMethod var_snmpMPDStats;

#endif                          /* _MIBGROUP_SNMPMPDSTATS_H */
