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


#ifndef _MIBGROUP_SNMPENGINE_H
#define _MIBGROUP_SNMPENGINE_H

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

config_require(util_funcs/header_generic)
config_add_mib(SNMP-FRAMEWORK-MIB)

    /*
     * Magic number definitions: 
     */
#define   SNMPENGINEID          1
#define   SNMPENGINEBOOTS       2
#define   SNMPENGINETIME        3
#define   SNMPENGINEMAXMESSAGESIZE  4
    /*
     * function definitions 
     */
     extern void     init_snmpEngine(void);
     extern void register_snmpEngine_scalars_context(const char *contextName);
     extern FindVarMethod var_snmpEngine;

#endif                          /* _MIBGROUP_SNMPENGINE_H */
