-- extracted from rfc2864.txt
-- at Tue Jun 27 07:07:44 2000

IF-INVERTED-STACK-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY,
        OBJECT-TYPE,
        mib-2
                FROM SNMPv2-SMI
        RowStatus
                FROM SNMPv2-TC
        MODULE-COMPLIANCE,
        OBJECT-GROUP
                FROM SNMPv2-CONF
        ifStackGroup2,
        ifStackHigherLayer,
        ifStackLowerLayer
                FROM IF-MIB;

ifInvertedStackMIB 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 which provides the Inverted Stack Table for
                interface sub-layers."
        REVISION "200006140000Z"   -- Jun 14, 2000 12:00:00 AM
        DESCRIPTION
               "Initial revision, published as RFC 2864"
 -- 1.3.6.1.2.1.77 --  ::= { mib-2 77 }


ifInvMIBObjects OBJECT IDENTIFIER 
 -- 1.3.6.1.2.1.77.1 --  ::= { ifInvertedStackMIB 1 }

--
--           The Inverted Interface Stack Group
--

ifInvStackTable OBJECT-TYPE
        SYNTAX SEQUENCE OF IfInvStackEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
               "A table containing information on the relationships between
                the multiple sub-layers of network interfaces.  In
                particular, it contains information on which sub-layers run
                'underneath' 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
                underneath the sub-layer with ifIndex value y, then this
                table contains:

                  ifInvStackStatus.x.y=active

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

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

                  ifInvStackStatus.z.0=active
                  ifInvStackStatus.0.z=active

                This table contains exactly the same number of rows as the
                ifStackTable, but the rows appear in a different order."
        REFERENCE

               "ifStackTable of RFC 2863"
 -- 1.3.6.1.2.1.77.1.1 --  ::= { ifInvMIBObjects 1 }


ifInvStackEntry OBJECT-TYPE
        SYNTAX IfInvStackEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
               "Information on a particular relationship between two sub-
                layers, specifying that one sub-layer runs underneath the
                other sub-layer.  Each sub-layer corresponds to a conceptual
                row in the ifTable."
        INDEX {
                ifStackLowerLayer,
                ifStackHigherLayer }
 -- 1.3.6.1.2.1.77.1.1.1 --  ::= { ifInvStackTable 1 }


IfInvStackEntry ::= SEQUENCE {
        ifInvStackStatus RowStatus }


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

                An instance of this object exists for each instance of the
                ifStackStatus object, and vice versa.  For example, if the
                variable ifStackStatus.H.L exists, then the variable
                ifInvStackStatus.L.H must also exist, and vice versa.  In
                addition, the two variables always have the same value.

                However, unlike ifStackStatus, the ifInvStackStatus object
                is NOT write-able.  A network management application wishing
                to change a relationship between sub-layers H and L cannot
                do so by modifying the value of ifInvStackStatus.L.H, but
                must instead modify the value of ifStackStatus.H.L.  After
                the ifStackTable is modified, the change will be reflected
                in this table."
 -- 1.3.6.1.2.1.77.1.1.1.1 --  ::= { ifInvStackEntry 1 }


-- conformance information

ifInvConformance OBJECT IDENTIFIER 
 -- 1.3.6.1.2.1.77.1.2 --  ::= { ifInvMIBObjects 2 }

ifInvGroups OBJECT IDENTIFIER 
 -- 1.3.6.1.2.1.77.1.2.1 --  ::= { ifInvConformance 1 }

ifInvCompliances OBJECT IDENTIFIER 
 -- 1.3.6.1.2.1.77.1.2.2 --  ::= { ifInvConformance 2 }


-- compliance statements

ifInvCompliance MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION
               "The compliance statement for SNMP entities which provide
                inverted information on the layering of network interfaces."

        MODULE 
        MANDATORY-GROUPS {
                        ifInvStackGroup }

        OBJECT ifInvStackStatus
          SYNTAX INTEGER {
                        active(1) }
          DESCRIPTION 
               "Support is only required for 'active'."
        MODULE IF-MIB
        MANDATORY-GROUPS {
                        ifStackGroup2 }

 -- 1.3.6.1.2.1.77.1.2.2.1 --  ::= { ifInvCompliances 1 }

-- units of conformance

ifInvStackGroup OBJECT-GROUP
        OBJECTS {
                ifInvStackStatus }
        STATUS current
        DESCRIPTION
               "A collection of objects providing inverted information on
                the layering of MIB-II interfaces."
 -- 1.3.6.1.2.1.77.1.2.1.1 --  ::= { ifInvGroups 1 }

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.
--