-- ====================================================================
-- ==  Copyright (C) 2004 Paradyne Corporation.                      ==
-- ====================================================================

PDN-STACKABLE-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, NOTIFICATION-TYPE, 
    Integer32
        FROM SNMPv2-SMI
    OBJECT-GROUP, NOTIFICATION-GROUP, MODULE-COMPLIANCE
        FROM SNMPv2-CONF
    DisplayString, TruthValue
        FROM SNMPv2-TC
    pdn-common
        FROM PDN-HEADER-MIB
    SwitchState
        FROM PDN-TC;
    
        
pdnStackable MODULE-IDENTITY
    LAST-UPDATED "200409140000Z"  -- September 14, 2003
    ORGANIZATION "Paradyne Networks
                  MIB Working Group
                  Other information about group editing the MIB"
    CONTACT-INFO "Paradyne Networks, Inc.
                  8545 126th Avenue North
                  Largo, FL 33733
                  www.paradyne.com
        
                  General Comments to: mibwg_team@paradyne.com

                  Editors
                        Clay Sikes"

    DESCRIPTION
        "This MIB contains objects that are used for configuration and
         statistics reporting things that are unique to a stackable product."

    REVISION "200409140000Z"  -- September 14, 2004
    DESCRIPTION "Added stack links for the Verdun ML PPP project.  Also,
                 cleaned up errors flaged by libsmi.  These changes were
                 radical, but only effected stuff that has not been
                 implemented in any agents."

    REVISION "200303120000Z"  -- March 12, 2003
    DESCRIPTION "Added third stack link for the Verdun product."

    REVISION "200207310000Z"  -- June 31, 2002
    DESCRIPTION "Added Single Management Entity objects"

    REVISION "200205150000Z"  -- May 15, 2002
    DESCRIPTION "Initial Release."

::=  { pdn-common 36 }



-- ====================================================================
-- == Define groups for Notifications, MIB Objects, Accessible for   ==
-- == Notifications (AFNs), and Conformance.                         ==
-- == These may just be place holders.                               ==
-- ====================================================================

pdnStackableNotifications  OBJECT IDENTIFIER ::= { pdnStackable 0 }
pdnStackableObjects        OBJECT IDENTIFIER ::= { pdnStackable 1 }
pdnStackableAFNs           OBJECT IDENTIFIER ::= { pdnStackable 2 }
pdnStackableConformance    OBJECT IDENTIFIER ::= { pdnStackable 3 }



-- ====================================================================
-- == Textual Conventions                                            ==
-- ====================================================================
-- None defined



-- ====================================================================
-- == MIB Objects                                                    ==
-- ====================================================================


-- The WAN Interface Group
wanInterface OBJECT-TYPE
    SYNTAX      BITS {
                    stackLink1(0),
                    stackLink2(1),
                    plugInModule(2),
                    stackLink3(3),
                    stackLink4(4),
                    stackLink5(5),
                    stackLink6(6),
                    stackLink7(7),
                    stackLink8(8),
                    stackLink9(9),
                    stackLink10(10),
                    stackLink11(11),
                    stackLink12(12),
                    stackLink13(13),
                    stackLink14(14),
                    stackLink15(15),
                    stackLink16(16),
                    stackLink17(17),
                    stackLink18(18)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "This object allows the WAN interface to be selected. Given 
                that the syntax for this object is BITS, it is intented that 
                the implementation could support multiple-simulatneous 
                uplinks.

                There is no default value suggested or specified with a 
                DEFVAL directive. The intent is that the particular 
                project using this MIB object will specify its own
                default value. It seems like projects using this MIB object
                may be different enough that it would not be a good idea to
                specify a default here."
    ::= { pdnStackableObjects 1 }


pdnStackMethod  OBJECT-TYPE
    SYNTAX      INTEGER {
                    daisyChain(1),
                    star(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "This object identifies the method by which units are
                interconnected."
    ::= { pdnStackableObjects 2 }

pdnStackConfigurationTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PdnStackConfigurationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "This table is used to display the stack configuration.

                Implementation details regarding units becoming attached to 
                or removed from the Stack should be covered in the 
                implementation's Operational Specification."
    ::= { pdnStackableObjects 3 }

pdnStackConfigurationEntry OBJECT-TYPE
    SYNTAX      PdnStackConfigurationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Each entry represents a unit in the stack."
    INDEX       { pdnUnitExternalID }
    ::= { pdnStackConfigurationTable 1 }

PdnStackConfigurationEntry ::=
    SEQUENCE {
        pdnUnitExternalID           Unsigned32,
        pdnUnitEntPhysicalIndex     INTEGER,
        pdnUnitAssigned             TruthValue,
        pdnUnitGUID                 DisplayString,
        pdnUnitPresent              TruthValue
    }

pdnUnitExternalID OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "This object is the External ID used to refer
                to a particular unit. The value of this
                External ID will typically be indicated on
                the unit by some means such as a LED."
    ::= { pdnStackConfigurationEntry 1 }

pdnUnitEntPhysicalIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "This object serves to map the table row to
                 an entry into the entPhysicalTable. This object
                 will contain the entPhysicalIndex associated with
                 the unit."
    ::= { pdnStackConfigurationEntry 2 }

pdnUnitAssigned OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "This object indicates if the External ID has been
                assigned to a particular Globally Unique Identifier (GUID). 

                Writing a false(2) is a mechanism to
                delete a unit from a stack. When a unit is deleted from
                a stack, all data that the Stack knows about the unit
                is purged.

                On read operations:
                    true(1)  - indicates that the External ID has been
                               assigned to a unit
                    false(2) - indicates that the External ID has not
                               been assigned to a unit"
    ::= { pdnStackConfigurationEntry 3 }

pdnUnitGUID OBJECT-TYPE
    SYNTAX      DisplayString  
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "This object is the representation of the units' 
                Globally Unique Identifier (GUID). The requirement
                for this identifier is that is something that makes
                the unit uniquely identifiable. A MAC addresses is
                an example of something that could be used as a GUID.
                The particular implementation's Operational Specification
                should clarify what is used as the implementation's 
                GUID."
    ::= { pdnStackConfigurationEntry 4 }

pdnUnitPresent OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "This object identifies if the unit is present in the
                stack. Note that when a unit is removed from a stack, 
                its stack and configuration information is retained.
                    true(1)  - indicates that the unit is present
                    false(2) - indicates that the unit is no present" 
    ::= { pdnStackConfigurationEntry 5 }


pdnMoveUnitCmdTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PdnMoveUnitCmdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "This table contains the objects necessary to support a command
                to move a unit in a stack. This command only applies when
                singleManagementEntity is enabled." 
    ::= { pdnStackableObjects 4 }

pdnMoveUnitCmdEntry OBJECT-TYPE
    SYNTAX      PdnMoveUnitCmdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The table has a single row supporting a command to move a
                unit in a stack."
    INDEX       { pdnMoveUnitSrcNumber, pdnMoveUnitDestNumber }
    ::= { pdnMoveUnitCmdTable 1 }

PdnMoveUnitCmdEntry ::=
    SEQUENCE {
        pdnMoveUnitSrcNumber     Unsigned32,
        pdnMoveUnitDestNumber    Unsigned32,
        pdnMoveUnitCmd           INTEGER
    }

pdnMoveUnitSrcNumber OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "This object is used as a table index and serves as the identifier for
                the source unit in the move command. The implementation's Operational
                Specification should clearly specify what this object represents.
                For example, this object could be what is refered to as the
                unit's External ID."
    ::= { pdnMoveUnitCmdEntry 1 }

pdnMoveUnitDestNumber OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "This object is used as a table index and serves as the identifier for
                the destination unit in the move command.The implementation's Operational
                Specification should clearly specify what this object represents.
                For example, this object could be what is refered to as the
                unit's External ID."
    ::= { pdnMoveUnitCmdEntry 2 }

pdnMoveUnitCmd OBJECT-TYPE
    SYNTAX      INTEGER {
                    noOp(1),
                    move(2)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Writing the value move(2) will cause the stack and configuration 
                related information for the source unit to be moved to the
                destination unit. This object always returns a noOp(1) on a 
                read operation."
    ::= { pdnMoveUnitCmdEntry 3 }

pdnStackUnitAddedTrapEnable OBJECT-TYPE
    SYNTAX      SwitchState
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Indicates whether the pdnStackUnitAdded trap should be 
                generated. The following values are defined for this object:
                    enabled(1)   - Generates the trap
                    disabled(2)  - Does not generate the trap"
    ::= { pdnStackableObjects 5 }

pdnStackUnitComFailureTrapEnable OBJECT-TYPE
    SYNTAX      SwitchState
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Indicates whether the pdnStackUnitComFailure trap should be 
                generated. The following values are defined for this object:
                    enabled(1)   - Generates the trap
                    disabled(2)  - Does not generate the trap"
    ::= { pdnStackableObjects 6 }

pdnStackUnitComRestoredTrapEnable OBJECT-TYPE
    SYNTAX      SwitchState
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Indicates whether the pdnStackUnitComRestored trap should be 
                generated. The following values are defined for this object:
                    enabled(1)   - Generates the trap
                    disabled(2)  - Does not generate the trap"
    ::= { pdnStackableObjects 7 }


-- ====================================================================
-- == Traps                                                          ==
-- ====================================================================

pdnStackUnitAdded NOTIFICATION-TYPE
    OBJECTS     { pdnUnitGUID }
    STATUS      current
    DESCRIPTION "This trap signifies that a new unit has been added to a
                stack."
    ::= { pdnStackableNotifications 1 } 

pdnStackUnitComFailure NOTIFICATION-TYPE
    OBJECTS     { pdnUnitGUID }
    STATUS      current
    DESCRIPTION "This trap signifies that a loss of communication has occured
                with a unit that was part of a stack."
    ::= { pdnStackableNotifications 2 } 

pdnStackUnitComRestored NOTIFICATION-TYPE
    OBJECTS     { pdnUnitGUID }
    STATUS      current
    DESCRIPTION "This trap signifies that communication to a unit that was
                part of the stack has occured."
    ::= { pdnStackableNotifications 3 } 

            

-- ====================================================================
-- == Conformance Information                                        ==
-- ====================================================================


pdnStackableCompliances  OBJECT IDENTIFIER ::= { pdnStackableConformance 1 }
pdnStackableGroups       OBJECT IDENTIFIER ::= { pdnStackableConformance 2 }


-- ===========================
-- == Compliance Statements ==
-- ===========================
pdnStackableConmpliance  MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION "The compliance statement for elements implementing 
                 stackable units."
    MODULE      -- this module
    -- No mandatory groups are specified.

    GROUP       wanInterfaceGroup
    DESCRIPTION "This group is only required for implementations that 
                 need to select the WAN interface(s)."

    GROUP       singleManagementEntityGroup
    DESCRIPTION "This group is only required for implementations that
                 implement a `single logical management entity'. "

    GROUP       singleManagementEntityNotificationGroup
    DESCRIPTION "This group is only required for implementations that
                 generate notification related to the `single logical
                 management entity`."
    ::= { pdnStackableCompliances 1 }


-- ==========================
-- == Units of Conformance ==
-- ==========================

pdnStackableObjGroups       OBJECT IDENTIFIER ::= { pdnStackableGroups 1 }
pdnStackableAfnGroups       OBJECT IDENTIFIER ::= { pdnStackableGroups 2 }
pdnStackableNtfyGroups      OBJECT IDENTIFIER ::= { pdnStackableGroups 3 }


-- ============================
-- == pdnStackableObjGroups  ==
-- ============================

wanInterfaceGroup OBJECT-GROUP
    OBJECTS {
                wanInterface
    }
    STATUS      current
    DESCRIPTION "Objects related to the WAN."
    ::= { pdnStackableObjGroups  1 }

singleManagementEntityGroup OBJECT-GROUP
    OBJECTS {
                pdnStackMethod,
                pdnUnitEntPhysicalIndex,
                pdnUnitAssigned,
                pdnUnitGUID,
                pdnUnitPresent,
                pdnMoveUnitCmd,
                pdnStackUnitAddedTrapEnable,
                pdnStackUnitComFailureTrapEnable,
                pdnStackUnitComRestoredTrapEnable
    }
    STATUS      current
    DESCRIPTION "Objects related to the Single Management Entity."
    ::= { pdnStackableObjGroups 2 }


-- ============================
-- == pdnStackableAfnGroups  ==
-- ============================
-- None.

-- =============================
-- == pdnStackableNtfyGroups  ==
-- =============================

singleManagementEntityNotificationGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
                pdnStackUnitAdded,
                pdnStackUnitComFailure,
                pdnStackUnitComRestored
    }
    STATUS      current
    DESCRIPTION "Notifications that must be implemented for Single
                Management Entity implementations." 
    ::= { pdnStackableNtfyGroups 1 }

END
