IF-MIB DEFINITIONS ::= BEGIN

IMPORTS
    IANAifType
        FROM IANAifType-MIB
    snmpTraps
        FROM SNMPv2-MIB
    OBJECT-GROUP, MODULE-COMPLIANCE
        FROM SNMPv2-CONF
    TestAndIncr, AutonomousType, RowStatus, TruthValue, PhysAddress, DisplayString,
    TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    NOTIFICATION-TYPE, mib-2, Counter64, TimeTicks, Integer32, Gauge32, Counter32,
    OBJECT-TYPE, MODULE-IDENTITY
        FROM SNMPv2-SMI;

interfaces ::= { mib-2  2 }

ifMIB MODULE-IDENTITY
    LAST-UPDATED "9311082155Z"
    ORGANIZATION "IETF Interfaces MIB Working Group"
    CONTACT-INFO
                 "Keith McCloghrie

                Postal: Hughes LAN Systems
                        1225 Charleston Road, Mountain View, CA 94043

                Tel:    +1 415 966 7934
                E-Mail: kzm@hls.com

                        Frank Kastenholz

                Postal: FTP Software
                        2 High Street, North Andover, MA 01845

                Tel:    +1 508 685 4000
                E-Mail: kasten@ftp.com"
    ::= { mib-2  31 }

ifMIBObjects ::= { ifMIB  1 }

OwnerString ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "255a"
    STATUS       current
    SYNTAX       OCTET STRING

InterfaceIndex ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS       current
    SYNTAX       Integer32

ifNumber OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS read-only
    STATUS     current
    ::= { interfaces  1 }

ifTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF IfEntry
    MAX-ACCESS not-accessible
    STATUS     current
    ::= { interfaces  2 }

ifEntry OBJECT-TYPE
    SYNTAX     IfEntry
    MAX-ACCESS not-accessible
    STATUS     current
    INDEX      { ifIndex }
    ::= { ifTable  1 }

IfEntry ::=
    SEQUENCE {
        ifIndex
            InterfaceIndex,

        ifDescr
            DisplayString,

        ifType
            IANAifType,

        ifMtu
            Integer32,

        ifSpeed
            Gauge32,

        ifPhysAddress
            PhysAddress,

        ifAdminStatus
            INTEGER,

        ifOperStatus
            INTEGER,

        ifLastChange
            TimeTicks,

        ifInOctets
            Counter32,

        ifInUcastPkts
            Counter32,

        ifInNUcastPkts
            Counter32,

        ifInDiscards
            Counter32,

        ifInErrors
            Counter32,

        ifInUnknownProtos
            Counter32,

        ifOutOctets
            Counter32,

        ifOutUcastPkts
            Counter32,

        ifOutNUcastPkts
            Counter32,

        ifOutDiscards
            Counter32,

        ifOutErrors
            Counter32,

        ifOutQLen
            Gauge32,

        ifSpecific
            OBJECT IDENTIFIER
    }

ifIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  1 }

ifDescr OBJECT-TYPE
    SYNTAX     DisplayString
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  2 }

ifType OBJECT-TYPE
    SYNTAX     IANAifType
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  3 }

ifMtu OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  4 }

ifSpeed OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  5 }

ifPhysAddress OBJECT-TYPE
    SYNTAX     PhysAddress
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  6 }

ifAdminStatus OBJECT-TYPE
    SYNTAX     INTEGER {
                 up(1),
                 down(2),
                 testing(3)
               }
    MAX-ACCESS read-write
    STATUS     current
    ::= { ifEntry  7 }

ifOperStatus OBJECT-TYPE
    SYNTAX     INTEGER {
                 up(1),
                 down(2),
                 testing(3),
                 unknown(4),
                 dormant(5)
               }
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  8 }

ifLastChange OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  9 }

ifInOctets OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  10 }

ifInUcastPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  11 }

ifInNUcastPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     deprecated
    ::= { ifEntry  12 }

ifInDiscards OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  13 }

ifInErrors OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  14 }

ifInUnknownProtos OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  15 }

ifOutOctets OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  16 }

ifOutUcastPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  17 }

ifOutNUcastPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     deprecated
    ::= { ifEntry  18 }

ifOutDiscards OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  19 }

ifOutErrors OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifEntry  20 }

ifOutQLen OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     deprecated
    ::= { ifEntry  21 }

ifSpecific OBJECT-TYPE
    SYNTAX     OBJECT IDENTIFIER
    MAX-ACCESS read-only
    STATUS     deprecated
    ::= { ifEntry  22 }

ifXTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF IfXEntry
    MAX-ACCESS not-accessible
    STATUS     current
    ::= { ifMIBObjects  1 }

ifXEntry OBJECT-TYPE
    SYNTAX     IfXEntry
    MAX-ACCESS not-accessible
    STATUS     current
    AUGMENTS  { ifEntry }
    ::= { ifXTable  1 }

IfXEntry ::=
    SEQUENCE {
        ifName
            DisplayString,

        ifInMulticastPkts
            Counter32,

        ifInBroadcastPkts
            Counter32,

        ifOutMulticastPkts
            Counter32,

        ifOutBroadcastPkts
            Counter32,

        ifHCInOctets
            Counter64,

        ifHCInUcastPkts
            Counter64,

        ifHCInMulticastPkts
            Counter64,

        ifHCInBroadcastPkts
            Counter64,

        ifHCOutOctets
            Counter64,

        ifHCOutUcastPkts
            Counter64,

        ifHCOutMulticastPkts
            Counter64,

        ifHCOutBroadcastPkts
            Counter64,

        ifLinkUpDownTrapEnable
            INTEGER,

        ifHighSpeed
            Gauge32,

        ifPromiscuousMode
            TruthValue,

        ifConnectorPresent
            TruthValue
    }

ifName OBJECT-TYPE
    SYNTAX     DisplayString
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifXEntry  1 }

ifInMulticastPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifXEntry  2 }

ifInBroadcastPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifXEntry  3 }

ifOutMulticastPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifXEntry  4 }

ifOutBroadcastPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifXEntry  5 }

ifHCInOctets OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifXEntry  6 }

ifHCInUcastPkts OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifXEntry  7 }

ifHCInMulticastPkts OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifXEntry  8 }

ifHCInBroadcastPkts OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifXEntry  9 }

ifHCOutOctets OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifXEntry  10 }

ifHCOutUcastPkts OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifXEntry  11 }

ifHCOutMulticastPkts OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifXEntry  12 }

ifHCOutBroadcastPkts OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifXEntry  13 }

ifLinkUpDownTrapEnable OBJECT-TYPE
    SYNTAX     INTEGER {
                 enabled(1),
                 disabled(2)
               }
    MAX-ACCESS read-write
    STATUS     current
    ::= { ifXEntry  14 }

ifHighSpeed OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifXEntry  15 }

ifPromiscuousMode OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-write
    STATUS     current
    ::= { ifXEntry  16 }

ifConnectorPresent OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifXEntry  17 }

ifStackTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF IfStackEntry
    MAX-ACCESS not-accessible
    STATUS     current
    ::= { ifMIBObjects  2 }

ifStackEntry OBJECT-TYPE
    SYNTAX     IfStackEntry
    MAX-ACCESS not-accessible
    STATUS     current
    INDEX      { ifStackHigherLayer,  ifStackLowerLayer }
    ::= { ifStackTable  1 }

IfStackEntry ::=
    SEQUENCE {
        ifStackHigherLayer
            Integer32,

        ifStackLowerLayer
            Integer32,

        ifStackStatus
            RowStatus
    }

ifStackHigherLayer OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS not-accessible
    STATUS     current
    ::= { ifStackEntry  1 }

ifStackLowerLayer OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS not-accessible
    STATUS     current
    ::= { ifStackEntry  2 }

ifStackStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-write
    STATUS     current
    ::= { ifStackEntry  3 }

ifTestTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF IfTestEntry
    MAX-ACCESS not-accessible
    STATUS     current
    ::= { ifMIBObjects  3 }

ifTestEntry OBJECT-TYPE
    SYNTAX     IfTestEntry
    MAX-ACCESS not-accessible
    STATUS     current
    AUGMENTS  { ifEntry }
    ::= { ifTestTable  1 }

IfTestEntry ::=
    SEQUENCE {
        ifTestId
            TestAndIncr,

        ifTestStatus
            INTEGER,

        ifTestType
            AutonomousType,

        ifTestResult
            INTEGER,

        ifTestCode
            OBJECT IDENTIFIER,

        ifTestOwner
            OwnerString
    }

ifTestId OBJECT-TYPE
    SYNTAX     TestAndIncr
    MAX-ACCESS read-write
    STATUS     current
    ::= { ifTestEntry  1 }

ifTestStatus OBJECT-TYPE
    SYNTAX     INTEGER {
                 notInUse(1),
                 inUse(2)
               }
    MAX-ACCESS read-write
    STATUS     current
    ::= { ifTestEntry  2 }

ifTestType OBJECT-TYPE
    SYNTAX     AutonomousType
    MAX-ACCESS read-write
    STATUS     current
    ::= { ifTestEntry  3 }

ifTestResult OBJECT-TYPE
    SYNTAX     INTEGER {
                 none(1),
                 success(2),
                 inProgress(3),
                 notSupported(4),
                 unAbleToRun(5),
                 aborted(6),
                 failed(7)
               }
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifTestEntry  4 }

ifTestCode OBJECT-TYPE
    SYNTAX     OBJECT IDENTIFIER
    MAX-ACCESS read-only
    STATUS     current
    ::= { ifTestEntry  5 }

ifTestOwner OBJECT-TYPE
    SYNTAX     OwnerString
    MAX-ACCESS read-write
    STATUS     current
    ::= { ifTestEntry  6 }

ifRcvAddressTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF IfRcvAddressEntry
    MAX-ACCESS not-accessible
    STATUS     current
    ::= { ifMIBObjects  4 }

ifRcvAddressEntry OBJECT-TYPE
    SYNTAX     IfRcvAddressEntry
    MAX-ACCESS not-accessible
    STATUS     current
    INDEX      { ifIndex,  ifRcvAddressAddress }
    ::= { ifRcvAddressTable  1 }

IfRcvAddressEntry ::=
    SEQUENCE {
        ifRcvAddressAddress
            PhysAddress,

        ifRcvAddressStatus
            RowStatus,

        ifRcvAddressType
            INTEGER
    }

ifRcvAddressAddress OBJECT-TYPE
    SYNTAX     PhysAddress
    MAX-ACCESS read-create
    STATUS     current
    ::= { ifRcvAddressEntry  1 }

ifRcvAddressStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-write
    STATUS     current
    ::= { ifRcvAddressEntry  2 }

ifRcvAddressType OBJECT-TYPE
    SYNTAX     INTEGER {
                 other(1),
                 volatile(2),
                 nonVolatile(3)
               }
    MAX-ACCESS read-create
    STATUS     current
    DEFVAL    { volatile }
    ::= { ifRcvAddressEntry  3 }

linkDown NOTIFICATION-TYPE
    STATUS     current
    OBJECTS      {
                 ifIndex,
                 ifAdminStatus,
                 ifOperStatus
               }
    ::= { snmpTraps  3 }

linkUp NOTIFICATION-TYPE
    STATUS     current
    OBJECTS      {
                 ifIndex,
                 ifAdminStatus,
                 ifOperStatus
               }
    ::= { snmpTraps  4 }

ifConformance ::= { ifMIB  2 }

ifGroups ::= { ifConformance  1 }

ifCompliances ::= { ifConformance  2 }

ifCompliance MODULE-COMPLIANCE
    STATUS     current

    MANDATORY-GROUPS { ifGeneralGroup,  ifStackGroup }
        GROUP        ifFixedLengthGroup

        GROUP        ifHCFixedLengthGroup

        GROUP        ifPacketGroup

        GROUP        ifHCPacketGroup

        GROUP        ifTestGroup

        GROUP        ifRcvAddressGroup

        OBJECT       ifLinkUpDownTrapEnable
        MIN-ACCESS   read-only

        OBJECT       ifPromiscuousMode
        MIN-ACCESS   read-only

        OBJECT       ifStackStatus
        SYNTAX       INTEGER {
                                 active(1)
                               }
        MIN-ACCESS   read-only

        OBJECT       ifAdminStatus
        SYNTAX       INTEGER {
                                 up(1),
                                 down(2)
                               }
        MIN-ACCESS   read-only
    ::= { ifCompliances  1 }

ifGeneralGroup OBJECT-GROUP
    OBJECTS    {
                 ifDescr,
                 ifType,
                 ifSpeed,
                 ifPhysAddress,
                 ifAdminStatus,
                 ifOperStatus,
                 ifLastChange,
                 ifLinkUpDownTrapEnable,
                 ifConnectorPresent,
                 ifHighSpeed,
                 ifName
               }
    STATUS     current
    ::= { ifGroups  1 }

ifFixedLengthGroup OBJECT-GROUP
    OBJECTS    {
                 ifInOctets,
                 ifOutOctets,
                 ifInUnknownProtos,
                 ifInErrors,
                 ifOutErrors
               }
    STATUS     current
    ::= { ifGroups  2 }

ifHCFixedLengthGroup OBJECT-GROUP
    OBJECTS    {
                 ifHCInOctets,
                 ifHCOutOctets,
                 ifInOctets,
                 ifOutOctets,
                 ifInUnknownProtos,
                 ifInErrors,
                 ifOutErrors
               }
    STATUS     current
    ::= { ifGroups  3 }

ifPacketGroup OBJECT-GROUP
    OBJECTS    {
                 ifInOctets,
                 ifOutOctets,
                 ifInUnknownProtos,
                 ifInErrors,
                 ifOutErrors,
                 ifMtu,
                 ifInUcastPkts,
                 ifInMulticastPkts,
                 ifInBroadcastPkts,
                 ifInDiscards,
                 ifOutUcastPkts,
                 ifOutMulticastPkts,
                 ifOutBroadcastPkts,
                 ifOutDiscards,
                 ifPromiscuousMode
               }
    STATUS     current
    ::= { ifGroups  4 }

ifHCPacketGroup OBJECT-GROUP
    OBJECTS    {
                 ifHCInOctets,
                 ifHCOutOctets,
                 ifInOctets,
                 ifOutOctets,
                 ifInUnknownProtos,
                 ifInErrors,
                 ifOutErrors,
                 ifMtu,
                 ifInUcastPkts,
                 ifInMulticastPkts,
                 ifInBroadcastPkts,
                 ifInDiscards,
                 ifOutUcastPkts,
                 ifOutMulticastPkts,
                 ifOutBroadcastPkts,
                 ifOutDiscards,
                 ifPromiscuousMode
               }
    STATUS     current
    ::= { ifGroups  5 }

ifVHCPacketGroup OBJECT-GROUP
    OBJECTS    {
                 ifHCInUcastPkts,
                 ifHCInMulticastPkts,
                 ifHCInBroadcastPkts,
                 ifHCOutUcastPkts,
                 ifHCOutMulticastPkts,
                 ifHCOutBroadcastPkts,
                 ifHCInOctets,
                 ifHCOutOctets,
                 ifInOctets,
                 ifOutOctets,
                 ifInUnknownProtos,
                 ifInErrors,
                 ifOutErrors,
                 ifMtu,
                 ifInUcastPkts,
                 ifInMulticastPkts,
                 ifInBroadcastPkts,
                 ifInDiscards,
                 ifOutUcastPkts,
                 ifOutMulticastPkts,
                 ifOutBroadcastPkts,
                 ifOutDiscards,
                 ifPromiscuousMode
               }
    STATUS     current
    ::= { ifGroups  6 }

ifRcvAddressGroup OBJECT-GROUP
    OBJECTS    { ifRcvAddressStatus,  ifRcvAddressType }
    STATUS     current
    ::= { ifGroups  7 }

ifTestGroup OBJECT-GROUP
    OBJECTS    {
                 ifTestId,
                 ifTestStatus,
                 ifTestType,
                 ifTestResult,
                 ifTestCode,
                 ifTestOwner
               }
    STATUS     current
    ::= { ifGroups  8 }

ifStackGroup OBJECT-GROUP
    OBJECTS    { ifStackStatus }
    STATUS     current
    ::= { ifGroups  9 }

END
