-- SCCS ID:	$Id: rfc2233.mib,v 29.1 1998/08/18 02:22:25 knguyen Exp $
--
-- dd month yy: Initial release.
-- 
-- SNMPv1 Interface MIB based on RFC 2233.
-- Addtional deviations include following:
--	* Use SNMPv1 SMI syntax
--	* commented out OwnerString and InterfaceIndexOrZero
--        since there are no reference to them
--	* commented out HighCounter objects in ifXTable
--	* make ifPromiscuousMode to be read-only in ifXTable
--	* make ifStackStatus to be read-only in ifStackTable
--	* commented out ifRcvAddressTable
--	* commented out ifTestTable 


IF-MIB DEFINITIONS ::= BEGIN


IMPORTS
	Counter32, Gauge32, Integer32, TimeStamp,
	TruthValue, RowStatus
		FROM SNMPv2-SMI-v1
	TimeTicks
		FROM RFC1155-SMI    
	OBJECT-TYPE
		FROM RFC-1212
	mib-2, DisplayString,PhysAddress
		FROM RFC1213-MIB
	IANAifType
		FROM IANAifType-MIB;


ifMIB OBJECT IDENTIFIER ::= { mib-2 31 }
--	 MODULE-IDENTITY
--       LAST-UPDATED "9611031355Z"
--       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      "9602282155Z"
--       DESCRIPTION
--               "Revisions made by the Interfaces MIB WG."
--       REVISION      "9311082155Z"
--       DESCRIPTION
--               "Initial revision, published as part of RFC 1573."

ifMIBObjects    OBJECT IDENTIFIER ::= { ifMIB 1 }

--
-- Added here because interfaces group is commented out in rfc1213
--
interfaces	OBJECT IDENTIFIER ::= { mib-2 2 }


--OwnerString ::= OCTET STRING(SIZE(0..255))
--       TEXTUAL-CONVENTION
--       DISPLAY-HINT "255a"
--       STATUS       current
--       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'."


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

InterfaceIndex ::= INTEGER (1..2147483647)
--       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."

--InterfaceIndexOrZero ::= INTEGER (0..2147483647)
-- TEXTUAL-CONVENTION
--  DspHint
--    d
--  Status
--    mandatory
--  Descr
--    This textual convention is an extension of the
--    InterfaceIndex convention.  The latter defines a
--    greater than zero 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.

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

ifTableLastChange OBJECT-TYPE
    SYNTAX TimeTicks
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { 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
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "A list of interface entries.  The number of entries
        is given by the value of ifNumber."
    ::= { interfaces 2 }

ifEntry OBJECT-TYPE
    SYNTAX IfEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "An entry containing management information applicable
        to a particular interface."
    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,  -- deprecated	
    ifInDiscards	Counter32,
    ifInErrors		Counter32,
    ifInUnknownProtos	Counter32,
    ifOutOctets		Counter32,
    ifOutUcastPkts	Counter32,
    ifOutNUcastPkts	Counter32,  -- deprecated
    ifOutDiscards	Counter32,
    ifOutErrors		Counter32,
    ifOutQLen		Gauge32,    -- deprecated
    ifSpecific		OBJECT IDENTIFIER -- deprecated
    }

ifIndex OBJECT-TYPE
    SYNTAX InterfaceIndex
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifEntry 1 }

ifDescr OBJECT-TYPE
    SYNTAX DisplayString(SIZE(0..31))
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifEntry 2 }

ifType OBJECT-TYPE
    SYNTAX IANAifType
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifEntry 3 }

ifMtu OBJECT-TYPE
    SYNTAX Integer32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifEntry 4 }

ifSpeed OBJECT-TYPE
    SYNTAX Gauge32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifEntry 5 }

ifPhysAddress OBJECT-TYPE
    SYNTAX PhysAddress
    ACCESS read-only
    STATUS mandatory
    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 format of the value contained by
        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."
    ::= { ifEntry 6 }

ifAdminStatus OBJECT-TYPE
    SYNTAX INTEGER {
        up(1),
        down(2),
        testing(3)
        }
    ACCESS read-write
    STATUS mandatory
    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)."
    ::= { ifEntry 7 }

ifOperStatus OBJECT-TYPE
    SYNTAX INTEGER {
        up(1),
        down(2),
        testing(3),
        unknown(4),
        dormant(5),
        notPresent(6),
	lowerLayerDown(7)
        }
    ACCESS read-only
    STATUS mandatory
    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 if
        from going to the up(1) state; it should remain in the
        notPresent(6) state if the interface has missing
        (typically, hardware) components."
    ::= { ifEntry 8 }

ifLastChange OBJECT-TYPE
    SYNTAX TimeTicks
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifEntry 9 }

ifInOctets OBJECT-TYPE
    SYNTAX Counter32
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "The total number of octets received on the interface,
        including framing characters."
    ::= { ifEntry 10 }

ifInUcastPkts OBJECT-TYPE
    SYNTAX Counter32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifEntry 11 }

ifInNUcastPkts OBJECT-TYPE
    SYNTAX Counter32
    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 favor of
        ifInMulticastPkts and ifInBroadcastPkts."
    ::= { ifEntry 12 }

ifInDiscards OBJECT-TYPE
    SYNTAX Counter32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifEntry 13 }

ifInErrors OBJECT-TYPE
    SYNTAX Counter32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifEntry 14 }

ifInUnknownProtos OBJECT-TYPE
    SYNTAX Counter32
    ACCESS read-only
    STATUS mandatory
    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 which
        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 which 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."
    ::= { ifEntry 15 }

ifOutOctets OBJECT-TYPE
    SYNTAX Counter32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifEntry 16 }

ifOutUcastPkts OBJECT-TYPE
    SYNTAX Counter32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifEntry 17 }

ifOutNUcastPkts OBJECT-TYPE
    SYNTAX Counter32
    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."
    ::= { ifEntry 18 }

ifOutDiscards OBJECT-TYPE
    SYNTAX Counter32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifEntry 19 }

ifOutErrors OBJECT-TYPE
    SYNTAX Counter32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifEntry 20 }

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

ifSpecific OBJECT-TYPE
    SYNTAX OBJECT IDENTIFIER
    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
        1443.  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 }."
    ::= { ifEntry 22 }


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

ifXTable OBJECT-TYPE
    SYNTAX SEQUENCE OF IfXEntry
    ACCESS not-accessible
    STATUS mandatory
    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."
    ::= { ifMIBObjects 1 }

ifXEntry OBJECT-TYPE
    SYNTAX IfXEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "An entry containing additional management information
        applicable to a particular interface."
    INDEX { ifIndex }
--    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(SIZE(0..31))
    ACCESS read-only
    STATUS mandatory
    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.  

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

ifInMulticastPkts OBJECT-TYPE
    SYNTAX Counter32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifXEntry 2 }

ifInBroadcastPkts OBJECT-TYPE
    SYNTAX Counter32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifXEntry 3 }

ifOutMulticastPkts OBJECT-TYPE
    SYNTAX Counter32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifXEntry 4 }

ifOutBroadcastPkts OBJECT-TYPE
    SYNTAX Counter32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { 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
--    ACCESS read-only
--    STATUS mandatory
--    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."
--    ::= { ifXEntry 6 }
--
--ifHCInUcastPkts OBJECT-TYPE
--    SYNTAX Counter64
--    ACCESS read-only
--    STATUS mandatory
--    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."
--    ::= { ifXEntry 7 }
--
--ifHCInMulticastPkts OBJECT-TYPE
--    SYNTAX Counter64
--    ACCESS read-only
--    STATUS mandatory
--    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."
--    ::= { ifXEntry 8 }
--
--ifHCInBroadcastPkts OBJECT-TYPE
--    SYNTAX Counter64
--    ACCESS read-only
--    STATUS mandatory
--    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."
--    ::= { ifXEntry 9 }
--
--ifHCOutOctets OBJECT-TYPE
--    SYNTAX Counter64
--    ACCESS read-only
--    STATUS mandatory
--    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."
--    ::= { ifXEntry 10 }
--
--ifHCOutUcastPkts OBJECT-TYPE
--    SYNTAX Counter64
--    ACCESS read-only
--    STATUS mandatory
--    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."
--    ::= { ifXEntry 11 }
--
--ifHCOutMulticastPkts OBJECT-TYPE
--    SYNTAX Counter64
--    ACCESS read-only
--    STATUS mandatory
--    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."
--    ::= { ifXEntry 12 }
--
--ifHCOutBroadcastPkts OBJECT-TYPE
--    SYNTAX Counter64
--    ACCESS read-only
--    STATUS mandatory
--    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."
--    ::= { ifXEntry 13 }

ifLinkUpDownTrapEnable OBJECT-TYPE
    SYNTAX INTEGER {
        enabled(1),
        disabled(2)
        }
    ACCESS read-write
    STATUS mandatory
    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."
    ::= { ifXEntry 14 }

ifHighSpeed OBJECT-TYPE
    SYNTAX Gauge32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifXEntry 15 }

ifPromiscuousMode OBJECT-TYPE
    SYNTAX TruthValue
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifXEntry 16 }

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

ifAlias OBJECT-TYPE
    SYNTAX DisplayString(SIZE(0..31))
    ACCESS read-write
    STATUS mandatory
    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."
    ::= { ifXEntry 18 }

ifCounterDiscontinuityTime OBJECT-TYPE
    SYNTAX TimeStamp
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifXEntry 19 }


--           The Interface Stack Group
--
-- Implementation of this group is mandatory for all systems
--

ifStackTable OBJECT-TYPE
    SYNTAX SEQUENCE OF IfStackEntry
    ACCESS not-accessible
    STATUS mandatory
    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.  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 "
    ::= { ifMIBObjects 2 }

ifStackEntry OBJECT-TYPE
    SYNTAX IfStackEntry
    ACCESS not-accessible
    STATUS mandatory
    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 }
    ::= { ifStackTable 1 }

IfStackEntry ::= SEQUENCE {
    ifStackHigherLayer	Integer32,
    ifStackLowerLayer	Integer32,
    ifStackStatus	RowStatus
    }

ifStackHigherLayer OBJECT-TYPE
    SYNTAX Integer32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifStackEntry 1 }

ifStackLowerLayer OBJECT-TYPE
    SYNTAX Integer32
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifStackEntry 2 }

ifStackStatus OBJECT-TYPE
    SYNTAX RowStatus
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { ifStackEntry 3 }

ifStackLastChange OBJECT-TYPE
    SYNTAX TimeTicks
    ACCESS read-only
    STATUS mandatory
    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."
    ::= { 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
--    ACCESS not-accessible
--    STATUS mandatory
--    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."
--    ::= { ifMIBObjects 4 }

--ifRcvAddressEntry OBJECT-TYPE
--    SYNTAX IfRcvAddressEntry
--    ACCESS not-accessible
--    STATUS mandatory
--    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 }
--    ::= { ifRcvAddressTable 1 }

--IfRcvAddressEntry ::= SEQUENCE {
--    ifRcvAddressAddress		PhysAddress,
--    ifRcvAddressStatus		RowStatus,
--    ifRcvAddressType		INTEGER
--    }

--ifRcvAddressAddress OBJECT-TYPE
--    SYNTAX PhysAddress
--  ACCESS read-write
--    ACCESS read-only
--    STATUS mandatory
--    DESCRIPTION
--        "An address for which the system will accept
--        packets/frames on this entry's interface."
--    ::= { ifRcvAddressEntry 1 }

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

--ifRcvAddressType OBJECT-TYPE
--    SYNTAX INTEGER {
--        other(1),
--        volatile(2),
--        nonVolatile(3)
--        }
--    ACCESS read-write
--    STATUS mandatory
--    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 }
--    ::= { ifRcvAddressEntry 3 }


--
-- definition of interface-related traps.
--
--
--linkDown TRAP-TYPE
--    ENTERPRISE snmp
--    VARIABLES { ifIndex, ifAdminStatus, ifOperStatus }
--    DESCRIPTION
--        "A linkDown trap signifies that the SNMPv2 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."
--    ::= { snmpTraps 3 }
--
--linkUp TRAP-TYPE
--    ENTERPRISE snmp
--    VARIABLES { ifIndex, ifAdminStatus, ifOperStatus }
--    DESCRIPTION
--        "A linkUp trap signifies that the SNMPv2 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."
--    ::= { snmpTraps 4 }


--
-- conformance information
--

ifConformance   OBJECT IDENTIFIER ::= { ifMIB 2 }

ifGroups        OBJECT IDENTIFIER ::= { ifConformance 1 }
ifCompliances   OBJECT IDENTIFIER ::= { ifConformance 2 }


-- compliance statements

ifCompliance2 OBJECT IDENTIFIER ::= { ifCompliances 2 }
--   MODULE-COMPLIANCE
--       STATUS  current
--       DESCRIPTION
--               "The compliance statement for SNMPv2 entities which
--               have network interfaces."
--
--       MODULE  -- this 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) } -- subset of RowStatus
--           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."

-- units of conformance

ifGeneralInformationGroup OBJECT IDENTIFIER ::= { ifGroups 10 }
--       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."

ifFixedLengthGroup OBJECT IDENTIFIER ::= { ifGroups 2 }
--       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."

ifHCFixedLengthGroup OBJECT IDENTIFIER ::= { ifGroups 3 }
--       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."

ifPacketGroup OBJECT IDENTIFIER ::= { ifGroups 4 }
--       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."

ifHCPacketGroup OBJECT IDENTIFIER ::= { ifGroups 5 }
--       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."

ifVHCPacketGroup OBJECT IDENTIFIER ::= { ifGroups 6 }
--       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."

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

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

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


--
-- Deprecated Definitions - Objects
--

--ifTestTable OBJECT-TYPE
--    SYNTAX SEQUENCE OF IfTestEntry
--    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."
--    ::= { ifMIBObjects 3 }
--
--ifTestEntry OBJECT-TYPE
--    SYNTAX IfTestEntry
--    ACCESS not-accessible
--    STATUS deprecated
--    DESCRIPTION
--        "An entry containing objects for invoking tests on an
--        interface."
--    INDEX { ifIndex }
-- Augments ifEntry
--    ::= { ifTestTable 1 }
--
--IfTestEntry ::= SEQUENCE {
--    ifTestId TestAndIncr,
--    ifTestStatus INTEGER,
--    ifTestType AutonomousType,
--    ifTestResult INTEGER,
--    ifTestCode OBJECT IDENTIFIER,
--    ifTestOwner OwnerString
--    }
--
--ifTestId OBJECT-TYPE
--    SYNTAX TestAndIncr
--    Rsyntax INTEGER(0..2147483647)
--    ACCESS read-write
--    STATUS deprecated
--    DESCRIPTION
--        "This object identifies the current invocation of the
--        interface's test."
--    ::= { ifTestEntry 1 }
--
--ifTestStatus OBJECT-TYPE
--    SYNTAX INTEGER {
--        notInUse(1),
--        inUse(2)
--        }
--    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)'."
--    ::= { ifTestEntry 2 }
--
--ifTestType OBJECT-TYPE
--    SYNTAX AutonomousType
--    Rsyntax OBJECT IDENTIFIER
--    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."
--    ::= { ifTestEntry 3 }
--
--ifTestResult OBJECT-TYPE
--    SYNTAX INTEGER {
--        none(1),
--        success(2),
--        inProgress(3),
--        notSupported(4),
--        unAbleToRun(5),
--        aborted(6),
--        failed(7)
--        }
--    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."
--    ::= { ifTestEntry 4 }
--
--ifTestCode OBJECT-TYPE
--    SYNTAX OBJECT IDENTIFIER
--    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
--        1443.  The identifier:
--        
--            testCodeUnknown  OBJECT IDENTIFIER ::= { 0 0 }
--        
--        is defined for use if no additional result code is
--        available."
--    ::= { ifTestEntry 5 }
--
--ifTestOwner OBJECT-TYPE
--    SYNTAX OwnerString
--    Rsyntax OCTET STRING(SIZE(0..255))
--    ACCESS read-write
--    STATUS deprecated
--    DESCRIPTION
--        "The entity which currently has the 'ownership'
--        required to invoke a test on this interface."
--    ::= { ifTestEntry 6 }

-- Deprecated Definitions - Groups

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

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

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

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

-- Deprecated Definitions - Compliance

ifCompliance OBJECT IDENTIFIER ::= { ifCompliances 1 }
--       MODULE-COMPLIANCE
--       STATUS  deprecated
--       DESCRIPTION
--               "The previous compliance statement for SNMPv2 entities
--               which have network interfaces."
--
--       MODULE  -- this 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) } -- subset of RowStatus
--           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)."

END











