IF-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Counter32, Counter64, Gauge32,
    Integer32, TimeTicks, mib-2
        FROM SNMPv2-SMI
    TEXTUAL-CONVENTION, DisplayString, TruthValue, TimeStamp
        FROM SNMPv2-TC;

ifMIB MODULE-IDENTITY
    LAST-UPDATED "200006140000Z"
    ORGANIZATION "IETF Interfaces MIB Working Group"
    DESCRIPTION
        "RFC 2863 Interfaces Group MIB schema used by the Rust agent.
         The embedded schema includes the base table definition required
         by ifXEntry AUGMENTS and every ifXTable column."
    ::= { mib-2 31 }

ifMIBObjects OBJECT IDENTIFIER ::= { ifMIB 1 }
interfaces OBJECT IDENTIFIER ::= { mib-2 2 }

InterfaceIndex ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS current
    DESCRIPTION "A positive, stable system interface index."
    SYNTAX Integer32 (1..2147483647)

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

ifEntry OBJECT-TYPE
    SYNTAX IfEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "An interface entry."
    INDEX { ifIndex }
    ::= { ifTable 1 }

IfEntry ::= SEQUENCE {
    ifIndex Integer32
}

ifIndex OBJECT-TYPE
    SYNTAX InterfaceIndex
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "The system interface index."
    ::= { ifEntry 1 }

ifXTable OBJECT-TYPE
    SYNTAX SEQUENCE OF IfXEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "Additional information for the interfaces table."
    ::= { ifMIBObjects 1 }

ifXEntry OBJECT-TYPE
    SYNTAX IfXEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "Additional information for one interface."
    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,
    ifAlias DisplayString,
    ifCounterDiscontinuityTime TimeStamp
}

ifName OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "The local system name of the interface."
    ::= { ifXEntry 1 }

ifInMulticastPkts OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "Received multicast packets."
    ::= { ifXEntry 2 }

ifInBroadcastPkts OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "Received broadcast packets."
    ::= { ifXEntry 3 }

ifOutMulticastPkts OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "Transmitted multicast packets."
    ::= { ifXEntry 4 }

ifOutBroadcastPkts OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "Transmitted broadcast packets."
    ::= { ifXEntry 5 }

ifHCInOctets OBJECT-TYPE
    SYNTAX Counter64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "The 64-bit received-octet counter."
    ::= { ifXEntry 6 }

ifHCInUcastPkts OBJECT-TYPE
    SYNTAX Counter64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "The 64-bit received-unicast-packet counter."
    ::= { ifXEntry 7 }

ifHCInMulticastPkts OBJECT-TYPE
    SYNTAX Counter64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "The 64-bit received-multicast-packet counter."
    ::= { ifXEntry 8 }

ifHCInBroadcastPkts OBJECT-TYPE
    SYNTAX Counter64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "The 64-bit received-broadcast-packet counter."
    ::= { ifXEntry 9 }

ifHCOutOctets OBJECT-TYPE
    SYNTAX Counter64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "The 64-bit transmitted-octet counter."
    ::= { ifXEntry 10 }

ifHCOutUcastPkts OBJECT-TYPE
    SYNTAX Counter64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "The 64-bit transmitted-unicast-packet counter."
    ::= { ifXEntry 11 }

ifHCOutMulticastPkts OBJECT-TYPE
    SYNTAX Counter64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "The 64-bit transmitted-multicast-packet counter."
    ::= { ifXEntry 12 }

ifHCOutBroadcastPkts OBJECT-TYPE
    SYNTAX Counter64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "The 64-bit transmitted-broadcast-packet counter."
    ::= { ifXEntry 13 }

ifLinkUpDownTrapEnable OBJECT-TYPE
    SYNTAX INTEGER { enabled(1), disabled(2) }
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION "Whether linkUp and linkDown notifications are enabled."
    ::= { ifXEntry 14 }

ifHighSpeed OBJECT-TYPE
    SYNTAX Gauge32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "Interface bandwidth in millions of bits per second."
    ::= { ifXEntry 15 }

ifPromiscuousMode OBJECT-TYPE
    SYNTAX TruthValue
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION "Whether the interface accepts all frames on its medium."
    ::= { ifXEntry 16 }

ifConnectorPresent OBJECT-TYPE
    SYNTAX TruthValue
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "Whether the interface sublayer has a physical connector."
    ::= { ifXEntry 17 }

ifAlias OBJECT-TYPE
    SYNTAX DisplayString (SIZE(0..64))
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION "A manager-assigned persistent interface alias."
    ::= { ifXEntry 18 }

ifCounterDiscontinuityTime OBJECT-TYPE
    SYNTAX TimeStamp
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "sysUpTime at the most recent interface-counter discontinuity."
    ::= { ifXEntry 19 }

END
