/*
 * Note: this file originally auto-generated by mib2c using
 *  : generic-table-enums.m2c 12526 2005-07-15 22:41:16Z rstory $
 *
 * $Id:$
 */
#ifndef ETHERSTATSTABLE_ENUMS_H
#define ETHERSTATSTABLE_ENUMS_H

#ifdef __cplusplus
extern          "C" {
#endif

    /*
     * NOTES on enums
     * ==============
     *
     * Value Mapping
     * -------------
     * If the values for your data type don't exactly match the
     * possible values defined by the mib, you should map them
     * below. For example, a boolean flag (1/0) is usually represented
     * as a TruthValue in a MIB, which maps to the values (1/2).
     *
     */
/*************************************************************************
 *************************************************************************
 *
 * enum definitions for table etherStatsTable
 *
 *************************************************************************
 *************************************************************************/

/*************************************************************
 * constants for enums for the MIB node
 * etherStatsStatus (EntryStatus / ASN_INTEGER)
 *
 * since a Textual Convention may be referenced more than once in a
 * MIB, protect againt redefinitions of the enum values.
 */
#ifndef ENTRYSTATUS_ENUMS
#define ENTRYSTATUS_ENUMS

#define ENTRYSTATUS_VALID  1
#define ENTRYSTATUS_CREATEREQUEST  2
#define ENTRYSTATUS_UNDERCREATION  3
#define ENTRYSTATUS_INVALID  4

#endif                          /* ENTRYSTATUS_ENUMS */




#ifdef __cplusplus
}
#endif
#endif                          /* ETHERSTATSTABLE_ENUMS_H */
