-- extracted from rfc2863.txt
-- at Tue Oct 31 15:10:19 2000

IF-MIB DEFINITIONS ::= BEGIN

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

ifMIB MODULE-IDENTITY
        LAST-UPDATED "200006140000Z"    -- Jun 14, 2000 12:00:00 AM
        ORGANIZATION "IETF Interfaces MIB Working Group"
        CONTACT-INFO
                "Keith McCloghrie
                Cisco Systems, Inc.
                170 West Tasman Drive
                San Jose, CA  95134-1706
                US

                408-526-5260
                kzm@cisco.com"
        DESCRIPTION
                "The MIB module to describe generic objects for network
                interface sub-layers.  This MIB is an updated version of
                MIB-II's ifTable, and incorporates the extensions defined in
                RFC 1229."
        REVISION "200006140000Z"        -- Jun 14, 2000 12:00:00 AM
        DESCRIPTION
                "Clarifications agreed upon by the Interfaces MIB WG, and
                published as RFC 2863."
        REVISION "199602282155Z"        -- Feb 28, 1996 9:55:00 PM
        DESCRIPTION
                "Revisions made by the Interfaces MIB WG, and published in
                RFC 2233."
        REVISION "199311082155Z"        -- Nov 8, 1993 9:55:00 PM
        DESCRIPTION
                "Initial revision, published as part of RFC 1573."
 -- 1.3.6.1.2.1.31 --  ::= { mib-2 31 }


ifMIBObjects OBJECT IDENTIFIER 
 -- 1.3.6.1.2.1.31.1 --  ::= { ifMIB 1 }

interfaces OBJECT IDENTIFIER 
 -- 1.3.6.1.2.1.2 --  ::= { mib-2 2 }

--
-- Textual Conventions
--
-- OwnerString has the same semantics as used in RFC 1271

OwnerString ::= TEXTUAL-CONVENTION
        DISPLAY-HINT "255a"
        STATUS deprecated
        DESCRIPTION
                "This data type is used to model an administratively
                assigned name of the owner of a resource.  This information
                is taken from the NVT ASCII character set.  It is suggested
                that this name contain one or more of the following: ASCII
                form of the manager station's transport address, management
                station name (e.g., domain name), network management
                personnel's name, location, or phone number.  In some cases
                the agent itself will be the owner of an entry.  In these
                cases, this string shall be set to a string starting with
                'agent'."
        SYNTAX OCTET STRING (SIZE (0..255))


-- InterfaceIndex contains the semantics of ifIndex and should be used
-- for any objects defined in other MIB modules that need these semantics.

InterfaceIndex ::= TEXTUAL-CONVENTION
        DISPLAY-HINT "d"
        STATUS current
        DESCRIPTION
                "A unique value, greater than zero, for each interface or
                interface sub-layer in the managed system.  It is
                recommended that values are assigned contiguously starting
                from 1.  The value for each interface sub-layer must remain
                constant at least from one re-initialization of the entity's
                network management system to the next re-initialization."
        SYNTAX Integer32 (1..2147483647)


InterfaceIndexOrZero ::= TEXTUAL-CONVENTION
        DISPLAY-HINT "d"
        STATUS current
        DESCRIPTION
                "This textual convention is an extension of the
                InterfaceIndex convention.  The latter defines a greater
                than zero value used to identify an interface or interface
                sub-layer in the managed system.  This extension permits the
                additional value of zero.  the value zero is object-specific
                and must therefore be defined as part of the description of
                any object which uses this syntax.  Examples of the usage of
                zero might include situations where interface was unknown,
                or when none or all interfaces need to be referenced."
        SYNTAX Integer32 (0..2147483647)


ifNumber OBJECT-TYPE
        SYNTAX  Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The number of network interfaces (regardless of their
                current state) present on this system."
 -- 1.3.6.1.2.1.2.1 --  ::= { interfaces 1 }


ifTableLastChange OBJECT-TYPE
        SYNTAX  TimeTicks
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The value of sysUpTime at the time of the last creation or
                deletion of an entry in the ifTable.  If the number of
                entries has been unchanged since the last re-initialization
                of the local network management subsystem, then this object
                contains a zero value."
 -- 1.3.6.1.2.1.31.1.5 --  ::= { ifMIBObjects 5 }


-- the Interfaces table
-- The Interfaces table contains information on the entity's
-- interfaces.  Each sub-layer below the internetwork-layer
-- of a network interface is considered to be an interface.

ifTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF IfEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
                "A list of interface entries.  The number of entries is
                given by the value of ifNumber."
 -- 1.3.6.1.2.1.2.2 --  ::= { interfaces 2 }


ifEntry OBJECT-TYPE
        SYNTAX  IfEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
                "An entry containing management information applicable to a
                particular interface."
        INDEX {
                ifIndex }
 -- 1.3.6.1.2.1.2.2.1 --  ::= { 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
        DESCRIPTION
                "A unique value, greater than zero, for each interface.  It
                is recommended that values are assigned contiguously
                starting from 1.  The value for each interface sub-layer
                must remain constant at least from one re-initialization of
                the entity's network management system to the next re-
                initialization."
 -- 1.3.6.1.2.1.2.2.1.1 --  ::= { ifEntry 1 }


ifDescr OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..255))
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "A textual string containing information about the
                interface.  This string should include the name of the
                manufacturer, the product name and the version of the
                interface hardware/software."
 -- 1.3.6.1.2.1.2.2.1.2 --  ::= { ifEntry 2 }


ifType OBJECT-TYPE
        SYNTAX  IANAifType
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The type of interface.  Additional values for ifType are
                assigned by the Internet Assigned Numbers Authority (IANA),
                through updating the syntax of the IANAifType textual
                convention."
 -- 1.3.6.1.2.1.2.2.1.3 --  ::= { ifEntry 3 }


ifMtu OBJECT-TYPE
        SYNTAX  Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The size of the largest packet which can be sent/received
                on the interface, specified in octets.  For interfaces that
                are used for transmitting network datagrams, this is the
                size of the largest network datagram that can be sent on the
                interface."
 -- 1.3.6.1.2.1.2.2.1.4 --  ::= { ifEntry 4 }


ifSpeed OBJECT-TYPE
        SYNTAX  Gauge32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "An estimate of the interface's current bandwidth in bits
                per second.  For interfaces which do not vary in bandwidth
                or for those where no accurate estimation can be made, this
                object should contain the nominal bandwidth.  If the
                bandwidth of the interface is greater than the maximum value
                reportable by this object then this object should report its
                maximum value (4,294,967,295) and ifHighSpeed must be used
                to report the interace's speed.  For a sub-layer which has
                no concept of bandwidth, this object should be zero."
 -- 1.3.6.1.2.1.2.2.1.5 --  ::= { ifEntry 5 }


ifPhysAddress OBJECT-TYPE
        SYNTAX  PhysAddress
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The interface's address at its protocol sub-layer.  For
                example, for an 802.x interface, this object normally
                contains a MAC address.  The interface's media-specific MIB
                must define the bit and byte ordering and the format of the
                value of this object.  For interfaces which do not have such
                an address (e.g., a serial line), this object should contain
                an octet string of zero length."
 -- 1.3.6.1.2.1.2.2.1.6 --  ::= { ifEntry 6 }


ifAdminStatus OBJECT-TYPE
        SYNTAX  INTEGER {
                        up(1),          -- ready to pass packets
                        down(2),
                        testing(3)      -- in some test mode
                        }
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
                "The desired state of the interface.  The testing(3) state
                indicates that no operational packets can be passed.  When a
                managed system initializes, all interfaces start with
                ifAdminStatus in the down(2) state.  As a result of either
                explicit management action or per configuration information
                retained by the managed system, ifAdminStatus is then
                changed to either the up(1) or testing(3) states (or remains
                in the down(2) state)."
 -- 1.3.6.1.2.1.2.2.1.7 --  ::= { ifEntry 7 }


ifOperStatus OBJECT-TYPE
        SYNTAX  INTEGER {
                        up(1),                  -- ready to pass packets
                        down(2),
                        testing(3),             -- in some test mode
                        unknown(4),             -- status can not be determined
                                                 -- for some reason.
                        dormant(5),
                        notPresent(6),          -- some component is missing
                        lowerLayerDown(7)       -- down due to state of
                                                 -- lower-layer interface(s)
                        }
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The current operational state of the interface.  The
                testing(3) state indicates that no operational packets can
                be passed.  If ifAdminStatus is down(2) then ifOperStatus
                should be down(2).  If ifAdminStatus is changed to up(1)
                then ifOperStatus should change to up(1) if the interface is
                ready to transmit and receive network traffic; it should
                change to dormant(5) if the interface is waiting for
                external actions (such as a serial line waiting for an
                incoming connection); it should remain in the down(2) state
                if and only if there is a fault that prevents it from going
                to the up(1) state; it should remain in the notPresent(6)
                state if the interface has missing (typically, hardware)
                components."
 -- 1.3.6.1.2.1.2.2.1.8 --  ::= { ifEntry 8 }


ifLastChange OBJECT-TYPE
        SYNTAX  TimeTicks
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The value of sysUpTime at the time the interface entered
                its current operational state.  If the current state was
                entered prior to the last re-initialization of the local
                network management subsystem, then this object contains a
                zero value."
 -- 1.3.6.1.2.1.2.2.1.9 --  ::= { ifEntry 9 }


ifInOctets OBJECT-TYPE
        SYNTAX  Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The total number of octets received on the interface,
                including framing characters.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.2.2.1.10 --  ::= { ifEntry 10 }


ifInUcastPkts OBJECT-TYPE
        SYNTAX  Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The number of packets, delivered by this sub-layer to a
                higher (sub-)layer, which were not addressed to a multicast
                or broadcast address at this sub-layer.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.2.2.1.11 --  ::= { ifEntry 11 }


ifInNUcastPkts OBJECT-TYPE
        SYNTAX  Counter32
        MAX-ACCESS read-only
        STATUS deprecated
        DESCRIPTION
                "The number of packets, delivered by this sub-layer to a
                higher (sub-)layer, which were addressed to a multicast or
                broadcast address at this sub-layer.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime.

                This object is deprecated in favour of ifInMulticastPkts and
                ifInBroadcastPkts."
 -- 1.3.6.1.2.1.2.2.1.12 --  ::= { ifEntry 12 }


ifInDiscards OBJECT-TYPE
        SYNTAX  Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The number of inbound packets which were chosen to be
                discarded even though no errors had been detected to prevent
                their being deliverable to a higher-layer protocol.  One
                possible reason for discarding such a packet could be to
                free up buffer space.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.2.2.1.13 --  ::= { ifEntry 13 }


ifInErrors OBJECT-TYPE
        SYNTAX  Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "For packet-oriented interfaces, the number of inbound
                packets that contained errors preventing them from being
                deliverable to a higher-layer protocol.  For character-
                oriented or fixed-length interfaces, the number of inbound
                transmission units that contained errors preventing them
                from being deliverable to a higher-layer protocol.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.2.2.1.14 --  ::= { ifEntry 14 }


ifInUnknownProtos OBJECT-TYPE
        SYNTAX  Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "For packet-oriented interfaces, the number of packets
                received via the interface which were discarded because of
                an unknown or unsupported protocol.  For character-oriented
                or fixed-length interfaces that support protocol
                multiplexing the number of transmission units received via
                the interface which were discarded because of an unknown or
                unsupported protocol.  For any interface that does not
                support protocol multiplexing, this counter will always be
                0.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.2.2.1.15 --  ::= { ifEntry 15 }


ifOutOctets OBJECT-TYPE
        SYNTAX  Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The total number of octets transmitted out of the
                interface, including framing characters.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.2.2.1.16 --  ::= { ifEntry 16 }


ifOutUcastPkts OBJECT-TYPE
        SYNTAX  Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The total number of packets that higher-level protocols
                requested be transmitted, and which were not addressed to a
                multicast or broadcast address at this sub-layer, including
                those that were discarded or not sent.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.2.2.1.17 --  ::= { ifEntry 17 }


ifOutNUcastPkts OBJECT-TYPE
        SYNTAX  Counter32
        MAX-ACCESS read-only
        STATUS deprecated
        DESCRIPTION
                "The total number of packets that higher-level protocols
                requested be transmitted, and which were addressed to a
                multicast or broadcast address at this sub-layer, including
                those that were discarded or not sent.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime.

                This object is deprecated in favour of ifOutMulticastPkts
                and ifOutBroadcastPkts."
 -- 1.3.6.1.2.1.2.2.1.18 --  ::= { ifEntry 18 }


ifOutDiscards OBJECT-TYPE
        SYNTAX  Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The number of outbound packets which were chosen to be
                discarded even though no errors had been detected to prevent
                their being transmitted.  One possible reason for discarding
                such a packet could be to free up buffer space.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.2.2.1.19 --  ::= { ifEntry 19 }


ifOutErrors OBJECT-TYPE
        SYNTAX  Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "For packet-oriented interfaces, the number of outbound
                packets that could not be transmitted because of errors.
                For character-oriented or fixed-length interfaces, the
                number of outbound transmission units that could not be
                transmitted because of errors.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.2.2.1.20 --  ::= { ifEntry 20 }


ifOutQLen OBJECT-TYPE
        SYNTAX  Gauge32
        MAX-ACCESS read-only
        STATUS deprecated
        DESCRIPTION
                "The length of the output packet queue (in packets)."
 -- 1.3.6.1.2.1.2.2.1.21 --  ::= { ifEntry 21 }


ifSpecific OBJECT-TYPE
        SYNTAX  OBJECT IDENTIFIER
        MAX-ACCESS read-only
        STATUS deprecated
        DESCRIPTION
                "A reference to MIB definitions specific to the particular
                media being used to realize the interface.  It is
                recommended that this value point to an instance of a MIB
                object in the media-specific MIB, i.e., that this object
                have the semantics associated with the InstancePointer
                textual convention defined in RFC 2579.  In fact, it is
                recommended that the media-specific MIB specify what value
                ifSpecific should/can take for values of ifType.  If no MIB
                definitions specific to the particular media are available,
                the value should be set to the OBJECT IDENTIFIER { 0 0 }."
 -- 1.3.6.1.2.1.2.2.1.22 --  ::= { ifEntry 22 }


--
--   Extension to the interface table
--
-- This table replaces the ifExtnsTable table.
--

ifXTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF IfXEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
                "A list of interface entries.  The number of entries is
                given by the value of ifNumber.  This table contains
                additional objects for the interface table."
 -- 1.3.6.1.2.1.31.1.1 --  ::= { ifMIBObjects 1 }


ifXEntry OBJECT-TYPE
        SYNTAX  IfXEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
                "An entry containing additional management information
                applicable to a particular interface."
        AUGMENTS {
                ifEntry }
 -- 1.3.6.1.2.1.31.1.1.1 --  ::= { 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 textual name of the interface.  The value of this
                object should be the name of the interface as assigned by
                the local device and should be suitable for use in commands
                entered at the device's `console'.  This might be a text
                name, such as `le0' or a simple port number, such as `1',
                depending on the interface naming syntax of the device.  If
                several entries in the ifTable together represent a single
                interface as named by the device, then each will have the
                same value of ifName.  Note that for an agent which responds
                to SNMP queries concerning an interface on some other
                (proxied) device, then the value of ifName for such an
                interface is the proxied device's local name for it.

                If there is no local name, or this object is otherwise not
                applicable, then this object contains a zero-length string."
 -- 1.3.6.1.2.1.31.1.1.1.1 --  ::= { ifXEntry 1 }


ifInMulticastPkts OBJECT-TYPE
        SYNTAX  Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The number of packets, delivered by this sub-layer to a
                higher (sub-)layer, which were addressed to a multicast
                address at this sub-layer.  For a MAC layer protocol, this
                includes both Group and Functional addresses.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.31.1.1.1.2 --  ::= { ifXEntry 2 }


ifInBroadcastPkts OBJECT-TYPE
        SYNTAX  Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The number of packets, delivered by this sub-layer to a
                higher (sub-)layer, which were addressed to a broadcast
                address at this sub-layer.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.31.1.1.1.3 --  ::= { ifXEntry 3 }


ifOutMulticastPkts OBJECT-TYPE
        SYNTAX  Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The total number of packets that higher-level protocols
                requested be transmitted, and which were addressed to a
                multicast address at this sub-layer, including those that
                were discarded or not sent.  For a MAC layer protocol, this
                includes both Group and Functional addresses.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.31.1.1.1.4 --  ::= { ifXEntry 4 }


ifOutBroadcastPkts OBJECT-TYPE
        SYNTAX  Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The total number of packets that higher-level protocols
                requested be transmitted, and which were addressed to a
                broadcast address at this sub-layer, including those that
                were discarded or not sent.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.31.1.1.1.5 --  ::= { ifXEntry 5 }


--
-- High Capacity Counter objects.  These objects are all
-- 64 bit versions of the "basic" ifTable counters.  These
-- objects all have the same basic semantics as their 32-bit
-- counterparts, however, their syntax has been extended
-- to 64 bits.
--

ifHCInOctets OBJECT-TYPE
        SYNTAX  Counter64
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The total number of octets received on the interface,
                including framing characters.  This object is a 64-bit
                version of ifInOctets.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.31.1.1.1.6 --  ::= { ifXEntry 6 }


ifHCInUcastPkts OBJECT-TYPE
        SYNTAX  Counter64
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The number of packets, delivered by this sub-layer to a
                higher (sub-)layer, which were not addressed to a multicast
                or broadcast address at this sub-layer.  This object is a
                64-bit version of ifInUcastPkts.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.31.1.1.1.7 --  ::= { ifXEntry 7 }


ifHCInMulticastPkts OBJECT-TYPE
        SYNTAX  Counter64
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The number of packets, delivered by this sub-layer to a
                higher (sub-)layer, which were addressed to a multicast
                address at this sub-layer.  For a MAC layer protocol, this
                includes both Group and Functional addresses.  This object
                is a 64-bit version of ifInMulticastPkts.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.31.1.1.1.8 --  ::= { ifXEntry 8 }


ifHCInBroadcastPkts OBJECT-TYPE
        SYNTAX  Counter64
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The number of packets, delivered by this sub-layer to a
                higher (sub-)layer, which were addressed to a broadcast
                address at this sub-layer.  This object is a 64-bit version
                of ifInBroadcastPkts.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.31.1.1.1.9 --  ::= { ifXEntry 9 }


ifHCOutOctets OBJECT-TYPE
        SYNTAX  Counter64
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The total number of octets transmitted out of the
                interface, including framing characters.  This object is a
                64-bit version of ifOutOctets.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.31.1.1.1.10 --  ::= { ifXEntry 10 }


ifHCOutUcastPkts OBJECT-TYPE
        SYNTAX  Counter64
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The total number of packets that higher-level protocols
                requested be transmitted, and which were not addressed to a
                multicast or broadcast address at this sub-layer, including
                those that were discarded or not sent.  This object is a
                64-bit version of ifOutUcastPkts.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.31.1.1.1.11 --  ::= { ifXEntry 11 }


ifHCOutMulticastPkts OBJECT-TYPE
        SYNTAX  Counter64
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The total number of packets that higher-level protocols
                requested be transmitted, and which were addressed to a
                multicast address at this sub-layer, including those that
                were discarded or not sent.  For a MAC layer protocol, this
                includes both Group and Functional addresses.  This object
                is a 64-bit version of ifOutMulticastPkts.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.31.1.1.1.12 --  ::= { ifXEntry 12 }


ifHCOutBroadcastPkts OBJECT-TYPE
        SYNTAX  Counter64
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The total number of packets that higher-level protocols
                requested be transmitted, and which were addressed to a
                broadcast address at this sub-layer, including those that
                were discarded or not sent.  This object is a 64-bit version
                of ifOutBroadcastPkts.

                Discontinuities in the value of this counter can occur at
                re-initialization of the management system, and at other
                times as indicated by the value of
                ifCounterDiscontinuityTime."
 -- 1.3.6.1.2.1.31.1.1.1.13 --  ::= { ifXEntry 13 }


ifLinkUpDownTrapEnable OBJECT-TYPE
        SYNTAX  INTEGER {
                        enabled(1),
                        disabled(2) }
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
                "Indicates whether linkUp/linkDown traps should be generated
                for this interface.

                By default, this object should have the value enabled(1) for
                interfaces which do not operate on 'top' of any other
                interface (as defined in the ifStackTable), and disabled(2)
                otherwise."
 -- 1.3.6.1.2.1.31.1.1.1.14 --  ::= { ifXEntry 14 }


ifHighSpeed OBJECT-TYPE
        SYNTAX  Gauge32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "An estimate of the interface's current bandwidth in units
                of 1,000,000 bits per second.  If this object reports a
                value of `n' then the speed of the interface is somewhere in
                the range of `n-500,000' to `n+499,999'.  For interfaces
                which do not vary in bandwidth or for those where no
                accurate estimation can be made, this object should contain
                the nominal bandwidth.  For a sub-layer which has no concept
                of bandwidth, this object should be zero."
 -- 1.3.6.1.2.1.31.1.1.1.15 --  ::= { ifXEntry 15 }


ifPromiscuousMode OBJECT-TYPE
        SYNTAX  TruthValue
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
                "This object has a value of false(2) if this interface only
                accepts packets/frames that are addressed to this station.
                This object has a value of true(1) when the station accepts
                all packets/frames transmitted on the media.  The value
                true(1) is only legal on certain types of media.  If legal,
                setting this object to a value of true(1) may require the
                interface to be reset before becoming effective.

                The value of ifPromiscuousMode does not affect the reception
                of broadcast and multicast packets/frames by the interface."
 -- 1.3.6.1.2.1.31.1.1.1.16 --  ::= { ifXEntry 16 }


ifConnectorPresent OBJECT-TYPE
        SYNTAX  TruthValue
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "This object has the value 'true(1)' if the interface
                sublayer has a physical connector and the value 'false(2)'
                otherwise."
 -- 1.3.6.1.2.1.31.1.1.1.17 --  ::= { ifXEntry 17 }


ifAlias OBJECT-TYPE
        SYNTAX  DisplayString (SIZE (0..64))
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
                "This object is an 'alias' name for the interface as
                specified by a network manager, and provides a non-volatile
                'handle' for the interface.

                On the first instantiation of an interface, the value of
                ifAlias associated with that interface is the zero-length
                string.  As and when a value is written into an instance of
                ifAlias through a network management set operation, then the
                agent must retain the supplied value in the ifAlias instance
                associated with the same interface for as long as that
                interface remains instantiated, including across all re-
                initializations/reboots of the network management system,
                including those which result in a change of the interface's
                ifIndex value.

                An example of the value which a network manager might store
                in this object for a WAN interface is the (Telco's) circuit
                number/identifier of the interface.

                Some agents may support write-access only for interfaces
                having particular values of ifType.  An agent which supports
                write access to this object is required to keep the value in
                non-volatile storage, but it may limit the length of new
                values depending on how much storage is already occupied by
                the current values for other interfaces."
 -- 1.3.6.1.2.1.31.1.1.1.18 --  ::= { ifXEntry 18 }


ifCounterDiscontinuityTime OBJECT-TYPE
        SYNTAX  TimeStamp
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The value of sysUpTime on the most recent occasion at which
                any one or more of this interface's counters suffered a
                discontinuity.  The relevant counters are the specific
                instances associated with this interface of any Counter32 or
                Counter64 object contained in the ifTable or ifXTable.  If
                no such discontinuities have occurred since the last re-
                initialization of the local management subsystem, then this
                object contains a zero value."
 -- 1.3.6.1.2.1.31.1.1.1.19 --  ::= { ifXEntry 19 }


--           The Interface Stack Group
--
-- Implementation of this group is optional, but strongly recommended
-- for all systems
--

ifStackTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF IfStackEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
                "The table containing information on the relationships
                between the multiple sub-layers of network interfaces.  In
                particular, it contains information on which sub-layers run
                'on top of' which other sub-layers, where each sub-layer
                corresponds to a conceptual row in the ifTable.  For
                example, when the sub-layer with ifIndex value x runs over
                the sub-layer with ifIndex value y, then this table
                contains:

                  ifStackStatus.x.y=active

                For each ifIndex value, I, which identifies an active
                interface, there are always at least two instantiated rows
                in this table associated with I.  For one of these rows, I
                is the value of ifStackHigherLayer; for the other, I is the
                value of ifStackLowerLayer.  (If I is not involved in
                multiplexing, then these are the only two rows associated
                with I.)

                For example, two rows exist even for an interface which has
                no others stacked on top or below it:

                  ifStackStatus.0.x=active
                  ifStackStatus.x.0=active"
 -- 1.3.6.1.2.1.31.1.2 --  ::= { ifMIBObjects 2 }


ifStackEntry OBJECT-TYPE
        SYNTAX  IfStackEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
                "Information on a particular relationship between two sub-
                layers, specifying that one sub-layer runs on 'top' of the
                other sub-layer.  Each sub-layer corresponds to a conceptual
                row in the ifTable."
        INDEX {
                ifStackHigherLayer,
                ifStackLowerLayer }
 -- 1.3.6.1.2.1.31.1.2.1 --  ::= { ifStackTable 1 }


IfStackEntry ::= SEQUENCE {

        ifStackHigherLayer InterfaceIndexOrZero,
        ifStackLowerLayer  InterfaceIndexOrZero,
        ifStackStatus      RowStatus }


ifStackHigherLayer OBJECT-TYPE
        SYNTAX  InterfaceIndexOrZero
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
                "The value of ifIndex corresponding to the higher sub-layer
                of the relationship, i.e., the sub-layer which runs on 'top'
                of the sub-layer identified by the corresponding instance of
                ifStackLowerLayer.  If there is no higher sub-layer (below
                the internetwork layer), then this object has the value 0."
 -- 1.3.6.1.2.1.31.1.2.1.1 --  ::= { ifStackEntry 1 }


ifStackLowerLayer OBJECT-TYPE
        SYNTAX  InterfaceIndexOrZero
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
                "The value of ifIndex corresponding to the lower sub-layer
                of the relationship, i.e., the sub-layer which runs 'below'
                the sub-layer identified by the corresponding instance of
                ifStackHigherLayer.  If there is no lower sub-layer, then
                this object has the value 0."
 -- 1.3.6.1.2.1.31.1.2.1.2 --  ::= { ifStackEntry 2 }


ifStackStatus OBJECT-TYPE
        SYNTAX  RowStatus
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
                "The status of the relationship between two sub-layers.

                Changing the value of this object from 'active' to
                'notInService' or 'destroy' will likely have consequences up
                and down the interface stack.  Thus, write access to this
                object is likely to be inappropriate for some types of
                interfaces, and many implementations will choose not to
                support write-access for any type of interface."
 -- 1.3.6.1.2.1.31.1.2.1.3 --  ::= { ifStackEntry 3 }


ifStackLastChange OBJECT-TYPE
        SYNTAX  TimeTicks
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
                "The value of sysUpTime at the time of the last change of
                the (whole) interface stack.  A change of the interface
                stack is defined to be any creation, deletion, or change in
                value of any instance of ifStackStatus.  If the interface
                stack has been unchanged since the last re-initialization of
                the local network management subsystem, then this object
                contains a zero value."
 -- 1.3.6.1.2.1.31.1.6 --  ::= { ifMIBObjects 6 }


--   Generic Receive Address Table
--
-- This group of objects is mandatory for all types of
-- interfaces which can receive packets/frames addressed to
-- more than one address.
--
-- This table replaces the ifExtnsRcvAddr table.  The main
-- difference is that this table makes use of the RowStatus
-- textual convention, while ifExtnsRcvAddr did not.

ifRcvAddressTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF IfRcvAddressEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
                "This table contains an entry for each address (broadcast,
                multicast, or uni-cast) for which the system will receive
                packets/frames on a particular interface, except as follows:

                - for an interface operating in promiscuous mode, entries
                are only required for those addresses for which the system
                would receive frames were it not operating in promiscuous
                mode.
                - for 802.5 functional addresses, only one entry is
                required, for the address which has the functional address
                bit ANDed with the bit mask of all functional addresses for
                which the interface will accept frames.

                A system is normally able to use any unicast address which
                corresponds to an entry in this table as a source address."
 -- 1.3.6.1.2.1.31.1.4 --  ::= { ifMIBObjects 4 }


ifRcvAddressEntry OBJECT-TYPE
        SYNTAX  IfRcvAddressEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
                "A list of objects identifying an address for which the
                system will accept packets/frames on the particular
                interface identified by the index value ifIndex."
        INDEX {
                ifIndex,
                ifRcvAddressAddress }
 -- 1.3.6.1.2.1.31.1.4.1 --  ::= { ifRcvAddressTable 1 }


IfRcvAddressEntry ::= SEQUENCE {

        ifRcvAddressAddress PhysAddress,
        ifRcvAddressStatus  RowStatus,
        ifRcvAddressType    INTEGER }


ifRcvAddressAddress OBJECT-TYPE
        SYNTAX  PhysAddress
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
                "An address for which the system will accept packets/frames
                on this entry's interface."
 -- 1.3.6.1.2.1.31.1.4.1.1 --  ::= { ifRcvAddressEntry 1 }


ifRcvAddressStatus OBJECT-TYPE
        SYNTAX  RowStatus
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
                "This object is used to create and delete rows in the
                ifRcvAddressTable."
 -- 1.3.6.1.2.1.31.1.4.1.2 --  ::= { ifRcvAddressEntry 2 }


ifRcvAddressType OBJECT-TYPE
        SYNTAX  INTEGER {
                        other(1),
                        volatile(2),
                        nonVolatile(3) }
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
                "This object has the value nonVolatile(3) for those entries
                in the table which are valid and will not be deleted by the
                next restart of the managed system.  Entries having the
                value volatile(2) are valid and exist, but have not been
                saved, so that will not exist after the next restart of the
                managed system.  Entries having the value other(1) are valid
                and exist but are not classified as to whether they will
                continue to exist after the next restart."
        DEFVAL { volatile }
 -- 1.3.6.1.2.1.31.1.4.1.3 --  ::= { ifRcvAddressEntry 3 }



-- definition of interface-related traps.

linkDown NOTIFICATION-TYPE
        OBJECTS {
                ifIndex,
                ifAdminStatus,
                ifOperStatus}
        STATUS current
        DESCRIPTION
                "A linkDown trap signifies that the SNMP entity, acting in
                an agent role, has detected that the ifOperStatus object for
                one of its communication links is about to enter the down
                state from some other state (but not from the notPresent
                state).  This other state is indicated by the included value
                of ifOperStatus."
 -- 1.3.6.1.6.3.1.1.5.3 --  ::= { snmpTraps 3 }


linkUp NOTIFICATION-TYPE
        OBJECTS {
                ifIndex,
                ifAdminStatus,
                ifOperStatus}
        STATUS current
        DESCRIPTION
                "A linkUp trap signifies that the SNMP entity, acting in an
                agent role, has detected that the ifOperStatus object for
                one of its communication links left the down state and
                transitioned into some other state (but not into the
                notPresent state).  This other state is indicated by the
                included value of ifOperStatus."
 -- 1.3.6.1.6.3.1.1.5.4 --  ::= { snmpTraps 4 }

-- conformance information

ifConformance OBJECT IDENTIFIER 
 -- 1.3.6.1.2.1.31.2 --  ::= { ifMIB 2 }

ifGroups OBJECT IDENTIFIER 
 -- 1.3.6.1.2.1.31.2.1 --  ::= { ifConformance 1 }

ifCompliances OBJECT IDENTIFIER 
 -- 1.3.6.1.2.1.31.2.2 --  ::= { ifConformance 2 }


-- compliance statements

ifCompliance3 MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION
                "The compliance statement for SNMP entities which have
                network interfaces."

        MODULE 
        MANDATORY-GROUPS {
                        ifGeneralInformationGroup,
                        linkUpDownNotificationsGroup }

        GROUP ifFixedLengthGroup
          DESCRIPTION
                "This group is mandatory for those network interfaces which
                are character-oriented or transmit data in fixed-length
                transmission units, and for which the value of the
                corresponding instance of ifSpeed is less than or equal to
                20,000,000 bits/second."
        GROUP ifHCFixedLengthGroup
          DESCRIPTION
                "This group is mandatory for those network interfaces which
                are character-oriented or transmit data in fixed-length
                transmission units, and for which the value of the
                corresponding instance of ifSpeed is greater than 20,000,000
                bits/second."
        GROUP ifPacketGroup
          DESCRIPTION
                "This group is mandatory for those network interfaces which
                are packet-oriented, and for which the value of the
                corresponding instance of ifSpeed is less than or equal to
                20,000,000 bits/second."
        GROUP ifHCPacketGroup
          DESCRIPTION
                "This group is mandatory only for those network interfaces
                which are packet-oriented and for which the value of the
                corresponding instance of ifSpeed is greater than 20,000,000
                bits/second but less than or equal to 650,000,000
                bits/second."
        GROUP ifVHCPacketGroup
          DESCRIPTION
                "This group is mandatory only for those network interfaces
                which are packet-oriented and for which the value of the
                corresponding instance of ifSpeed is greater than
                650,000,000 bits/second."
        GROUP ifCounterDiscontinuityGroup
          DESCRIPTION
                "This group is mandatory for those network interfaces that
                are required to maintain counters (i.e., those for which one
                of the ifFixedLengthGroup, ifHCFixedLengthGroup,
                ifPacketGroup, ifHCPacketGroup, or ifVHCPacketGroup is
                mandatory)."
        GROUP ifRcvAddressGroup
          DESCRIPTION
                "The applicability of this group MUST be defined by the
                media-specific MIBs.  Media-specific MIBs must define the
                exact meaning, use, and semantics of the addresses in this
                group."
        OBJECT ifLinkUpDownTrapEnable
          MIN-ACCESS read-only
          DESCRIPTION 
                "Write access is not required."
        OBJECT ifPromiscuousMode
          MIN-ACCESS read-only
          DESCRIPTION 
                "Write access is not required."
        OBJECT ifAdminStatus
          SYNTAX INTEGER {
                        up(1),
                        down(2) }
          MIN-ACCESS read-only
          DESCRIPTION 
                "Write access is not required, nor is support for the value
                testing(3)."
        OBJECT ifAlias
          MIN-ACCESS read-only
          DESCRIPTION 
                "Write access is not required."
 -- 1.3.6.1.2.1.31.2.2.3 --  ::= { ifCompliances 3 }

-- units of conformance

ifGeneralInformationGroup OBJECT-GROUP
        OBJECTS {
                ifIndex,
                ifDescr,
                ifType,
                ifSpeed,
                ifPhysAddress,
                ifAdminStatus,
                ifOperStatus,
                ifLastChange,
                ifLinkUpDownTrapEnable,
                ifConnectorPresent,
                ifHighSpeed,
                ifName,
                ifNumber,
                ifAlias,
                ifTableLastChange }
        STATUS current
        DESCRIPTION
                "A collection of objects providing information applicable to
                all network interfaces."
 -- 1.3.6.1.2.1.31.2.1.10 --  ::= { ifGroups 10 }

-- the following five groups are mutually exclusive; at most
-- one of these groups is implemented for any interface

ifFixedLengthGroup OBJECT-GROUP
        OBJECTS {
                ifInOctets,
                ifOutOctets,
                ifInUnknownProtos,
                ifInErrors,
                ifOutErrors }
        STATUS current
        DESCRIPTION
                "A collection of objects providing information specific to
                non-high speed (non-high speed interfaces transmit and
                receive at speeds less than or equal to 20,000,000
                bits/second) character-oriented or fixed-length-transmission
                network interfaces."
 -- 1.3.6.1.2.1.31.2.1.2 --  ::= { ifGroups 2 }

ifHCFixedLengthGroup OBJECT-GROUP
        OBJECTS {
                ifHCInOctets,
                ifHCOutOctets,
                ifInOctets,
                ifOutOctets,
                ifInUnknownProtos,
                ifInErrors,
                ifOutErrors }
        STATUS current
        DESCRIPTION
                "A collection of objects providing information specific to
                high speed (greater than 20,000,000 bits/second) character-
                oriented or fixed-length-transmission network interfaces."
 -- 1.3.6.1.2.1.31.2.1.3 --  ::= { ifGroups 3 }

ifPacketGroup OBJECT-GROUP
        OBJECTS {
                ifInOctets,
                ifOutOctets,
                ifInUnknownProtos,
                ifInErrors,
                ifOutErrors,
                ifMtu,
                ifInUcastPkts,
                ifInMulticastPkts,
                ifInBroadcastPkts,
                ifInDiscards,
                ifOutUcastPkts,
                ifOutMulticastPkts,
                ifOutBroadcastPkts,
                ifOutDiscards,
                ifPromiscuousMode }
        STATUS current
        DESCRIPTION
                "A collection of objects providing information specific to
                non-high speed (non-high speed interfaces transmit and
                receive at speeds less than or equal to 20,000,000
                bits/second) packet-oriented network interfaces."
 -- 1.3.6.1.2.1.31.2.1.4 --  ::= { 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
        DESCRIPTION
                "A collection of objects providing information specific to
                high speed (greater than 20,000,000 bits/second but less
                than or equal to 650,000,000 bits/second) packet-oriented
                network interfaces."
 -- 1.3.6.1.2.1.31.2.1.5 --  ::= { 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
        DESCRIPTION
                "A collection of objects providing information specific to
                higher speed (greater than 650,000,000 bits/second) packet-
                oriented network interfaces."
 -- 1.3.6.1.2.1.31.2.1.6 --  ::= { ifGroups 6 }

ifRcvAddressGroup OBJECT-GROUP
        OBJECTS {
                ifRcvAddressStatus,
                ifRcvAddressType }
        STATUS current
        DESCRIPTION
                "A collection of objects providing information on the
                multiple addresses which an interface receives."
 -- 1.3.6.1.2.1.31.2.1.7 --  ::= { ifGroups 7 }

ifStackGroup2 OBJECT-GROUP
        OBJECTS {
                ifStackStatus,
                ifStackLastChange }
        STATUS current
        DESCRIPTION
                "A collection of objects providing information on the
                layering of MIB-II interfaces."
 -- 1.3.6.1.2.1.31.2.1.11 --  ::= { ifGroups 11 }

ifCounterDiscontinuityGroup OBJECT-GROUP
        OBJECTS {
                ifCounterDiscontinuityTime }
        STATUS current
        DESCRIPTION
                "A collection of objects providing information specific to
                interface counter discontinuities."
 -- 1.3.6.1.2.1.31.2.1.13 --  ::= { ifGroups 13 }

linkUpDownNotificationsGroup NOTIFICATION-GROUP
        NOTIFICATIONS {
                linkUp,
                linkDown }
        STATUS current
        DESCRIPTION
                "The notifications which indicate specific changes in the
                value of ifOperStatus."
 -- 1.3.6.1.2.1.31.2.1.14 --  ::= { ifGroups 14 }

-- Deprecated Definitions - Objects
--
--    The Interface Test Table
--
-- This group of objects is optional.  However, a media-specific
-- MIB may make implementation of this group mandatory.
--
-- This table replaces the ifExtnsTestTable
--

ifTestTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF IfTestEntry
        MAX-ACCESS not-accessible
        STATUS deprecated
        DESCRIPTION
                "This table contains one entry per interface.  It defines
                  objects which allow a network manager to instruct an agent
                  to test an interface for various faults.  Tests for an
                  interface are defined in the media-specific MIB for that
                  interface.  After invoking a test, the object ifTestResult
                  can be read to determine the outcome.  If an agent can not
                  perform the test, ifTestResult is set to so indicate.  The
                  object ifTestCode can be used to provide further test-
                  specific or interface-specific (or even enterprise-specific)
                  information concerning the outcome of the test.  Only one
                  test can be in progress on each interface at any one time.
                  If one test is in progress when another test is invoked, the
                  second test is rejected.  Some agents may reject a test when
                  a prior test is active on another interface.

                  Before starting a test, a manager-station must first obtain
                  'ownership' of the entry in the ifTestTable for the
                  interface to be tested.  This is accomplished with the
                  ifTestId and ifTestStatus objects as follows:

                try_again:
                    get (ifTestId, ifTestStatus)
                    while (ifTestStatus != notInUse)
                        /*
                         * Loop while a test is running or some other
                         * manager is configuring a test.
                         */
                        short delay
                        get (ifTestId, ifTestStatus)
                    }

                    /*
                     * Is not being used right now -- let's compete
                     * to see who gets it.
                     */
                    lock_value = ifTestId

                    if ( set(ifTestId = lock_value, ifTestStatus = inUse,
                             ifTestOwner = 'my-IP-address') == FAILURE)
                        /*
                         * Another manager got the ifTestEntry -- go
                         * try again
                         */
                        goto try_again;

                    /*
                     * I have the lock
                     */
                    set up any test parameters.

                    /*
                     * This starts the test
                     */
                    set(ifTestType = test_to_run);

                    wait for test completion by polling ifTestResult

                    when test completes, agent sets ifTestResult
                         agent also sets ifTestStatus = 'notInUse'

                    retrieve any additional test results, and ifTestId

                    if (ifTestId == lock_value+1) results are valid

                  A manager station first retrieves the value of the
                  appropriate ifTestId and ifTestStatus objects, periodically
                  repeating the retrieval if necessary, until the value of
                  ifTestStatus is 'notInUse'.  The manager station then tries
                  to set the same ifTestId object to the value it just
                  retrieved, the same ifTestStatus object to 'inUse', and the
                  corresponding ifTestOwner object to a value indicating
                  itself.  If the set operation succeeds then the manager has
                  obtained ownership of the ifTestEntry, and the value of the
                  ifTestId object is incremented by the agent (per the
                  semantics of TestAndIncr).  Failure of the set operation
                  indicates that some other manager has obtained ownership of
                  the ifTestEntry.

                  Once ownership is obtained, any test parameters can be
                  setup, and then the test is initiated by setting ifTestType.
                  On completion of the test, the agent sets ifTestStatus to
                  'notInUse'.  Once this occurs, the manager can retrieve the
                  results.  In the (rare) event that the invocation of tests
                  by two network managers were to overlap, then there would be
                  a possibility that the first test's results might be
                  overwritten by the second test's results prior to the first
                  results being read.  This unlikely circumstance can be
                  detected by a network manager retrieving ifTestId at the
                  same time as retrieving the test results, and ensuring that
                  the results are for the desired request.

                  If ifTestType is not set within an abnormally long period of
                  time after ownership is obtained, the agent should time-out
                  the manager, and reset the value of the ifTestStatus object
                  back to 'notInUse'.  It is suggested that this time-out
                  period be 5 minutes.

                  In general, a management station must not retransmit a
                  request to invoke a test for which it does not receive a
                  response; instead, it properly inspects an agent's MIB to
                  determine if the invocation was successful.  Only if the
                  invocation was unsuccessful, is the invocation request
                  retransmitted.

                  Some tests may require the interface to be taken off-line in
                  order to execute them, or may even require the agent to
                  reboot after completion of the test.  In these
                  circumstances, communication with the management station
                  invoking the test may be lost until after completion of the
                  test.  An agent is not required to support such tests.
                  However, if such tests are supported, then the agent should
                  make every effort to transmit a response to the request
                  which invoked the test prior to losing communication.  When
                  the agent is restored to normal service, the results of the
                  test are properly made available in the appropriate objects.
                  Note that this requires that the ifIndex value assigned to
                  an interface must be unchanged even if the test causes a
                  reboot.  An agent must reject any test for which it cannot,
                  perhaps due to resource constraints, make available at least
                  the minimum amount of information after that test
                  completes."
 -- 1.3.6.1.2.1.31.1.3 --  ::= { ifMIBObjects 3 }


ifTestEntry OBJECT-TYPE
        SYNTAX  IfTestEntry
        MAX-ACCESS not-accessible
        STATUS deprecated
        DESCRIPTION
                "An entry containing objects for invoking tests on an
                interface."
        AUGMENTS {
                ifEntry }
 -- 1.3.6.1.2.1.31.1.3.1 --  ::= { 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 deprecated
        DESCRIPTION
                "This object identifies the current invocation of the
                interface's test."
 -- 1.3.6.1.2.1.31.1.3.1.1 --  ::= { ifTestEntry 1 }


ifTestStatus OBJECT-TYPE
        SYNTAX  INTEGER {
                        notInUse(1),
                        inUse(2) }
        MAX-ACCESS read-write
        STATUS deprecated
        DESCRIPTION
                "This object indicates whether or not some manager currently
                has the necessary 'ownership' required to invoke a test on
                this interface.  A write to this object is only successful
                when it changes its value from 'notInUse(1)' to 'inUse(2)'.
                After completion of a test, the agent resets the value back
                to 'notInUse(1)'."
 -- 1.3.6.1.2.1.31.1.3.1.2 --  ::= { ifTestEntry 2 }


ifTestType OBJECT-TYPE
        SYNTAX  AutonomousType
        MAX-ACCESS read-write
        STATUS deprecated
        DESCRIPTION
                "A control variable used to start and stop operator-
                initiated interface tests.  Most OBJECT IDENTIFIER values
                assigned to tests are defined elsewhere, in association with
                specific types of interface.  However, this document assigns
                a value for a full-duplex loopback test, and defines the
                special meanings of the subject identifier:

                    noTest  OBJECT IDENTIFIER ::= { 0 0 }

                When the value noTest is written to this object, no action
                is taken unless a test is in progress, in which case the
                test is aborted.  Writing any other value to this object is
                only valid when no test is currently in progress, in which
                case the indicated test is initiated.

                When read, this object always returns the most recent value
                that ifTestType was set to.  If it has not been set since
                the last initialization of the network management subsystem
                on the agent, a value of noTest is returned."
 -- 1.3.6.1.2.1.31.1.3.1.3 --  ::= { ifTestEntry 3 }


ifTestResult OBJECT-TYPE
        SYNTAX  INTEGER {
                        none(1),                -- no test yet requested
                        success(2),
                        inProgress(3),
                        notSupported(4),
                        unAbleToRun(5),         -- due to state of system
                        aborted(6),
                        failed(7) }
        MAX-ACCESS read-only
        STATUS deprecated
        DESCRIPTION
                "This object contains the result of the most recently
                requested test, or the value none(1) if no tests have been
                requested since the last reset.  Note that this facility
                provides no provision for saving the results of one test
                when starting another, as could be required if used by
                multiple managers concurrently."
 -- 1.3.6.1.2.1.31.1.3.1.4 --  ::= { ifTestEntry 4 }


ifTestCode OBJECT-TYPE
        SYNTAX  OBJECT IDENTIFIER
        MAX-ACCESS read-only
        STATUS deprecated
        DESCRIPTION
                "This object contains a code which contains more specific
                information on the test result, for example an error-code
                after a failed test.  Error codes and other values this
                object may take are specific to the type of interface and/or
                test.  The value may have the semantics of either the
                AutonomousType or InstancePointer textual conventions as
                defined in RFC 2579.  The identifier:

                    testCodeUnknown  OBJECT IDENTIFIER ::= { 0 0 }

                is defined for use if no additional result code is
                available."
 -- 1.3.6.1.2.1.31.1.3.1.5 --  ::= { ifTestEntry 5 }


ifTestOwner OBJECT-TYPE
        SYNTAX  OwnerString
        MAX-ACCESS read-write
        STATUS deprecated
        DESCRIPTION
                "The entity which currently has the 'ownership' required to
                invoke a test on this interface."
 -- 1.3.6.1.2.1.31.1.3.1.6 --  ::= { ifTestEntry 6 }


-- Deprecated Definitions - Groups

ifGeneralGroup OBJECT-GROUP
        OBJECTS {
                ifDescr,
                ifType,
                ifSpeed,
                ifPhysAddress,
                ifAdminStatus,
                ifOperStatus,
                ifLastChange,
                ifLinkUpDownTrapEnable,
                ifConnectorPresent,
                ifHighSpeed,
                ifName }
        STATUS deprecated
        DESCRIPTION
                "A collection of objects deprecated in favour of
                ifGeneralInformationGroup."
 -- 1.3.6.1.2.1.31.2.1.1 --  ::= { ifGroups 1 }

ifTestGroup OBJECT-GROUP
        OBJECTS {
                ifTestId,
                ifTestStatus,
                ifTestType,
                ifTestResult,
                ifTestCode,
                ifTestOwner }
        STATUS deprecated
        DESCRIPTION
                "A collection of objects providing the ability to invoke
                tests on an interface."
 -- 1.3.6.1.2.1.31.2.1.8 --  ::= { ifGroups 8 }

ifStackGroup OBJECT-GROUP
        OBJECTS {
                ifStackStatus }
        STATUS deprecated
        DESCRIPTION
                "The previous collection of objects providing information on
                the layering of MIB-II interfaces."
 -- 1.3.6.1.2.1.31.2.1.9 --  ::= { ifGroups 9 }

ifOldObjectsGroup OBJECT-GROUP
        OBJECTS {
                ifInNUcastPkts,
                ifOutNUcastPkts,
                ifOutQLen,
                ifSpecific }
        STATUS deprecated
        DESCRIPTION
                "The collection of objects deprecated from the original MIB-
                II interfaces group."
 -- 1.3.6.1.2.1.31.2.1.12 --  ::= { ifGroups 12 }


-- Deprecated Definitions - Compliance

ifCompliance MODULE-COMPLIANCE
        STATUS deprecated
        DESCRIPTION
                "A compliance statement defined in a previous version of
                this MIB module, for SNMP entities which have network
                interfaces."

        MODULE 
        MANDATORY-GROUPS {
                        ifGeneralGroup,
                        ifStackGroup }

        GROUP ifFixedLengthGroup
          DESCRIPTION
                "This group is mandatory for all network interfaces which
                are character-oriented or transmit data in fixed-length
                transmission units."
        GROUP ifHCFixedLengthGroup
          DESCRIPTION
                "This group is mandatory only for those network interfaces
                which are character-oriented or transmit data in fixed-
                length transmission units, and for which the value of the
                corresponding instance of ifSpeed is greater than 20,000,000
                bits/second."
        GROUP ifPacketGroup
          DESCRIPTION
                "This group is mandatory for all network interfaces which
                are packet-oriented."
        GROUP ifHCPacketGroup
          DESCRIPTION
                "This group is mandatory only for those network interfaces
                which are packet-oriented and for which the value of the
                corresponding instance of ifSpeed is greater than
                650,000,000 bits/second."
        GROUP ifTestGroup
          DESCRIPTION
                "This group is optional.  Media-specific MIBs which require
                interface tests are strongly encouraged to use this group
                for invoking tests and reporting results.  A medium specific
                MIB which has mandatory tests may make implementation of
                this group mandatory."
        GROUP ifRcvAddressGroup
          DESCRIPTION
                "The applicability of this group MUST be defined by the
                media-specific MIBs.  Media-specific MIBs must define the
                exact meaning, use, and semantics of the addresses in this
                group."
        OBJECT ifLinkUpDownTrapEnable
          MIN-ACCESS read-only
          DESCRIPTION 
                "Write access is not required."
        OBJECT ifPromiscuousMode
          MIN-ACCESS read-only
          DESCRIPTION 
                "Write access is not required."
        OBJECT ifStackStatus
          SYNTAX INTEGER {
                        active(1) }
          MIN-ACCESS read-only
          DESCRIPTION 
                "Write access is not required, and only one of the six
                enumerated values for the RowStatus textual convention need
                be supported, specifically: active(1)."
        OBJECT ifAdminStatus
          SYNTAX INTEGER {
                        up(1),
                        down(2) }
          MIN-ACCESS read-only
          DESCRIPTION 
                "Write access is not required, nor is support for the value
                testing(3)."
 -- 1.3.6.1.2.1.31.2.2.1 --  ::= { ifCompliances 1 }


ifCompliance2 MODULE-COMPLIANCE
        STATUS deprecated
        DESCRIPTION
                "A compliance statement defined in a previous version of
                this MIB module, for SNMP entities which have network
                interfaces."

        MODULE 
        MANDATORY-GROUPS {
                        ifGeneralInformationGroup,
                        ifStackGroup2,
                        ifCounterDiscontinuityGroup }

        GROUP ifFixedLengthGroup
          DESCRIPTION
                "This group is mandatory for all network interfaces which
                are character-oriented or transmit data in fixed-length
                transmission units."
        GROUP ifHCFixedLengthGroup
          DESCRIPTION
                "This group is mandatory only for those network interfaces
                which are character-oriented or transmit data in fixed-
                length transmission units, and for which the value of the
                corresponding instance of ifSpeed is greater than 20,000,000
                bits/second."
        GROUP ifPacketGroup
          DESCRIPTION
                "This group is mandatory for all network interfaces which
                are packet-oriented."
        GROUP ifHCPacketGroup
          DESCRIPTION
                "This group is mandatory only for those network interfaces
                which are packet-oriented and for which the value of the
                corresponding instance of ifSpeed is greater than
                650,000,000 bits/second."
        GROUP ifRcvAddressGroup
          DESCRIPTION
                "The applicability of this group MUST be defined by the
                media-specific MIBs.  Media-specific MIBs must define the
                exact meaning, use, and semantics of the addresses in this
                group."
        OBJECT ifLinkUpDownTrapEnable
          MIN-ACCESS read-only
          DESCRIPTION 
                "Write access is not required."
        OBJECT ifPromiscuousMode
          MIN-ACCESS read-only
          DESCRIPTION 
                "Write access is not required."
        OBJECT ifStackStatus
          SYNTAX INTEGER {
                        active(1) }
          MIN-ACCESS read-only
          DESCRIPTION 
                "Write access is not required, and only one of the six
                enumerated values for the RowStatus textual convention need
                be supported, specifically: active(1)."
        OBJECT ifAdminStatus
          SYNTAX INTEGER {
                        up(1),
                        down(2) }
          MIN-ACCESS read-only
          DESCRIPTION 
                "Write access is not required, nor is support for the value
                testing(3)."
        OBJECT ifAlias
          MIN-ACCESS read-only
          DESCRIPTION 
                "Write access is not required."
 -- 1.3.6.1.2.1.31.2.2.2 --  ::= { ifCompliances 2 }

END
-- 
--    Copyright (C) The Internet Society (2000).  All Rights Reserved.
-- 
--    This document and translations of it may be copied and furnished to
--    others, and derivative works that comment on or otherwise explain it
--    or assist in its implementation may be prepared, copied, published
--    and distributed, in whole or in part, without restriction of any
--    kind, provided that the above copyright notice and this paragraph are
--    included on all such copies and derivative works.  However, this
--    document itself may not be modified in any way, such as by removing
--    the copyright notice or references to the Internet Society or other
--    Internet organizations, except as needed for the purpose of
--    developing Internet standards in which case the procedures for
--    copyrights defined in the Internet Standards process must be
--    followed, or as required to translate it into languages other than
--    English.
-- 
--    The limited permissions granted above are perpetual and will not be
--    revoked by the Internet Society or its successors or assigns.
-- 
--    This document and the information contained herein is provided on an
--    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
--    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
--    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
--    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
--    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
--