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

IMPORTS
	MODULE-IDENTITY,
	OBJECT-TYPE,
	mib-2
		FROM SNMPv2-SMI		-- [RFC2578]
	TruthValue
		FROM SNMPv2-TC		-- [RFC2579]
	MODULE-COMPLIANCE,
	OBJECT-GROUP
		FROM SNMPv2-CONF		-- [RFC2580]
	ifStackGroup2,
	ifStackHigherLayer,
	ifStackLowerLayer
		FROM IF-MIB		-- [RFC2863]
	ifInvStackGroup
		FROM IF-INVERTED-STACK-MIB		-- [RFC2864]
;

ifCapStackMIB MODULE-IDENTITY
	LAST-UPDATED "200711070000Z"	-- Nov 7, 2007 12:00:00 AM
	ORGANIZATION "IETF Ethernet Interfaces and Hub MIB Working Group"
	CONTACT-INFO
		"WG charter:
		  http://www.ietf.org/html.charters/OLD/hubmib-charter.html

		Mailing Lists:
		  General Discussion: hubmib@ietf.org





		  To Subscribe: hubmib-request@ietf.org
		  In Body: subscribe your_email_address

		Chair:  Bert Wijnen
		Postal: Alcatel-Lucent
		        Schagen 33
		        3461 GL Linschoten
		        Netherlands
		 Phone: +31-348-407-775
		 EMail: bwijnen@alcatel-lucent.com

		Editor: Edward Beili
		Postal: Actelis Networks Inc.
		        25 Bazel St., P.O.B. 10173
		        Petach-Tikva 10173
		        Israel
		 Phone: +972-3-924-3491
		 EMail: edward.beili@actelis.com"
	DESCRIPTION
		"The objects in this MIB module are used to describe
		cross-connect capabilities of stacked (layered) interfaces,
		complementing ifStackTable and ifInvStackTable defined in
		IF-MIB and IF-INVERTED-STACK-MIB, respectively.

		Copyright (C) The IETF Trust (2007).  This version
		of this MIB module is part of RFC 5066;  see the RFC
		itself for full legal notices."
	REVISION "200711070000Z"	-- Nov 7, 2007 12:00:00 AM
	DESCRIPTION
		"Initial version, published as RFC 5066."
	-- 1.3.6.1.2.1.166
	::= { mib-2 166 }


-- Sections of the module
-- Structured as recommended by [RFC4181], see
-- Appendix D: Suggested OID Layout

ifCapStackObjects OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.166.1
	::= { ifCapStackMIB 1 }

ifCapStackConformance OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.166.2
	::= { ifCapStackMIB 2 }

-- Groups in the module
--
-- ifCapStackTable group
--

ifCapStackTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF IfCapStackEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"This table, modeled after ifStackTable from IF-MIB,
		contains information on the possible 'on-top-of'
		relationships between the multiple sub-layers of network
		interfaces (as opposed to actual relationships described in
		ifStackTable).  In particular, it contains information on
		which sub-layers MAY possibly run 'on top of' which other
		sub-layers, as determined by cross-connect capability of the
		device, where each sub-layer corresponds to a conceptual row
		in the ifTable.  For example, when the sub-layer with ifIndex
		value x can be connected to run on top of the sub-layer with
		ifIndex value y, then this table contains:

		  ifCapStackStatus.x.y=true

		The ifCapStackStatus.x.y row does not exist if it is
		impossible to connect between the sub-layers x and y.

		Note that for most stacked interfaces (e.g., 2BASE-TL)
		there's always at least one higher-level interface (e.g., PCS
		port) for each lower-level interface (e.g., PME) and at
		least one lower-level interface for each higher-level
		interface, that is, there is at least a single row with a
		'true' status for any such existing value of x or y.

		This table is read-only as it describes device capabilities."
	REFERENCE
		"IF-MIB, ifStackTable"
	-- 1.3.6.1.2.1.166.1.1
	::= { ifCapStackObjects 1 }


ifCapStackEntry OBJECT-TYPE
	SYNTAX  IfCapStackEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"Information on a particular relationship between two
		sub-layers, specifying that one sub-layer MAY possibly run
		on 'top' of the other sub-layer.  Each sub-layer corresponds
		to a conceptual row in the ifTable (interface index for
		lower and higher layer, respectively)."
	INDEX {
		ifStackHigherLayer,
		ifStackLowerLayer }
	-- 1.3.6.1.2.1.166.1.1.1
	::= { ifCapStackTable 1 }


IfCapStackEntry ::= SEQUENCE {

	ifCapStackStatus TruthValue }


ifCapStackStatus OBJECT-TYPE
	SYNTAX  TruthValue
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The status of the 'cross-connect capability' relationship
		between two sub-layers.  The following values can be returned:
		  true(1)         - indicates that the sub-layer interface,
		                    identified by the ifStackLowerLayer MAY
		                    be connected to run 'below' the sub-layer
		                    interface, identified by the
		                    ifStackHigherLayer index.
		  false(2)        - the sub-layer interfaces cannot be
		                    connected temporarily due to
		                    unavailability of the interface(s), e.g.,
		                    one of the interfaces is located on an
		                    absent pluggable module.

		Note that lower-layer interface availability per higher-layer,
		indicated by the value of 'true', can be constrained by
		other parameters, for example, by the aggregation capacity of
		a higher-layer interface or by the lower-layer interface in
		question being already connected to another higher-layer
		interface.  In order to ensure that a particular sub-layer can
		be connected to another sub-layer, all respective objects
		(e.g., ifCapStackTable, ifStackTable, and efmCuPAFCapacity for
		EFMCu interfaces) SHALL be inspected.

		This object is read-only, unlike ifStackStatus, as it
		describes a cross-connect capability."
	-- 1.3.6.1.2.1.166.1.1.1.1
	::= { ifCapStackEntry 1 }


ifInvCapStackTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF IfInvCapStackEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"A table containing information on the possible relationships
		between the multiple sub-layers of network interfaces.  This
		table, modeled after ifInvStackTable from
		IF-INVERTED-STACK-MIB, is an inverse of the ifCapStackTable
		defined in this MIB module.





		In particular, this table contains information on which
		sub-layers MAY 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 MAY be
		connected to run underneath the sub-layer with ifIndex value
		y, then this table contains:

		   ifInvCapStackStatus.x.y=true

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

		This table is read-only as it describes a cross-connect
		capability."
	REFERENCE
		"IF-INVERTED-STACK-MIB, ifInvStackTable"
	-- 1.3.6.1.2.1.166.1.2
	::= { ifCapStackObjects 2 }


ifInvCapStackEntry OBJECT-TYPE
	SYNTAX  IfInvCapStackEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"Information on a particular relationship between two sub-
		layers, specifying that one sub-layer MAY run 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.166.1.2.1
	::= { ifInvCapStackTable 1 }


IfInvCapStackEntry ::= SEQUENCE {

	ifInvCapStackStatus TruthValue }


ifInvCapStackStatus OBJECT-TYPE
	SYNTAX  TruthValue
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The status of the possible 'cross-connect capability'
		relationship between two sub-layers.

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






		The ifInvCapStackStatus object is read-only, as it describes
		a cross-connect capability."
	REFERENCE
		"ifCapStackStatus"
	-- 1.3.6.1.2.1.166.1.2.1.1
	::= { ifInvCapStackEntry 1 }


--
-- Conformance Statements
--

ifCapStackGroups OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.166.2.1
	::= { ifCapStackConformance 1 }

ifCapStackCompliances OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.166.2.2
	::= { ifCapStackConformance 2 }

-- Units of Conformance

ifCapStackGroup OBJECT-GROUP
	OBJECTS {
		ifCapStackStatus,
		ifInvCapStackStatus }
	STATUS  current
	DESCRIPTION
		"A collection of objects providing information on the
		cross-connect capability of multi-layer (stacked) network
		interfaces."
	-- 1.3.6.1.2.1.166.2.1.1
	::= { ifCapStackGroups 1 }


-- Compliance Statements

ifCapStackCompliance MODULE-COMPLIANCE
	STATUS  current
	DESCRIPTION
		"The compliance statement for SNMP entities, which provide
		information on the cross-connect capability of multi-layer
		(stacked) network interfaces, with flexible cross-connect
		between the sub-layers."

	MODULE 
	MANDATORY-GROUPS {
			ifCapStackGroup }

	OBJECT ifCapStackStatus
	  SYNTAX TruthValue {
			true(1) }
	  DESCRIPTION 
		"Support for the false(2) value is OPTIONAL for
		implementations supporting pluggable interfaces."
	OBJECT ifInvCapStackStatus
	  SYNTAX TruthValue {
			true(1) }
	  DESCRIPTION 
		"Support for the false(2) value is OPTIONAL for
		implementations supporting pluggable interfaces."
	MODULE IF-MIB
	MANDATORY-GROUPS {
			ifStackGroup2 }

	MODULE IF-INVERTED-STACK-MIB
	MANDATORY-GROUPS {
			ifInvStackGroup }

	-- 1.3.6.1.2.1.166.2.2.1
	::= { ifCapStackCompliances 1 }

END
