ADTRAN-GENBONDING-MIB DEFINITIONS ::= BEGIN

  -- TITLE:     Adtran Generic Bonding MIB
  -- DATE:      Aug 4, 2006
  --
  -- REVISION HISTORY: Date           Comments
  --                   08/04/2006     gdo - Initial release.
  
  -- This MIB defines the generic MIB for the Mini-DSLAM products.

IMPORTS
      MODULE-IDENTITY, OBJECT-TYPE,
      Integer32
        FROM SNMPv2-SMI
      MODULE-COMPLIANCE, OBJECT-GROUP
        FROM SNMPv2-CONF
      TEXTUAL-CONVENTION,DisplayString, RowStatus
        FROM SNMPv2-TC
	  adGenSlotInfoIndex
	  	FROM ADTRAN-GENSLOT-MIB
      adGenBondingID
      	FROM ADTRAN-GENMINIDSLAM-MIB;

adGenBonding MODULE-IDENTITY
      LAST-UPDATED "200608041650Z"
      ORGANIZATION "ADTRAN, Inc."
      CONTACT-INFO
        "CND Tech Support
         Postal: ADTRAN, Inc.
                 901 Explorer Blvd.
                 Huntsville, AL  35806
                 Tel: +1 800 726-8663
                 Fax: +1 256 963 6217
                 E-mail: support@adtran.com"
      DESCRIPTION
        "The MIB module for managing bonding of interfaces."
      ::= { adGenBondingID 1 }

adGenBondingMib OBJECT IDENTIFIER ::= { adGenBonding 1 }
adGenBondingMibObjects OBJECT IDENTIFIER ::= {adGenBondingMib 1}
adGenBondingMibConformance OBJECT IDENTIFIER ::= { adGenBondingMib 2 }

-- Textual conventions

AdGenBondingPort ::= TEXTUAL-CONVENTION
      STATUS      current
      DESCRIPTION
        "Index value for the bond-able port. This is effectively the same
         as the adGenPortInfoIndex. Not all ports can use bonding however,
         hence the use of this TC."
      SYNTAX      Integer32

--
-- The Bonding Group table consists of the number of Bonding groups and a
-- table of Bonding groups.  
--

adGenBondingSlotInfoTable OBJECT-TYPE
	  SYNTAX 	  SEQUENCE OF AdGenBondingSlotInfoEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
        "The Bonding Group Slot Information table."
      ::= { adGenBondingMibObjects 1 }

adGenBondingSlotInfoEntry OBJECT-TYPE
      SYNTAX      AdGenBondingSlotInfoEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
        "An entry in the Bonding Group Slot Info table."
      INDEX       { adGenSlotInfoIndex }
      ::= { adGenBondingSlotInfoTable 1 }

AdGenBondingSlotInfoEntry ::= SEQUENCE {
      adGenBondingGroupNumberNext		Integer32, 
      adGenGenBondingSlotStatus      DisplayString
      }
	  
adGenBondingGroupNumberNext OBJECT-TYPE
      SYNTAX      Integer32
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
        "Returns the next available group number for this slot."
      ::= { adGenBondingSlotInfoEntry 1 } 
      
adGenGenBondingSlotStatus OBJECT-TYPE
         SYNTAX         DisplayString
         MAX-ACCESS     read-only
         STATUS         current
         DESCRIPTION
             "Error status messages for bonding groups on a slot."

         ::= { adGenBondingSlotInfoEntry 2 }


adGenBondingGroupTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF AdGenBondingGroupEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
        "The Bonding Group Configuration table."
      ::= { adGenBondingMibObjects 2 }

adGenBondingGroupEntry OBJECT-TYPE
      SYNTAX      AdGenBondingGroupEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
        "An entry in the Bonding Group table."
      INDEX       { adGenSlotInfoIndex,
      				adGenBondingGroupIndex }
      ::= { adGenBondingGroupTable 1 }

AdGenBondingGroupEntry ::= SEQUENCE {
      adGenBondingGroupIndex           Integer32,
      adGenBondingGroupRowStatus       RowStatus,
	  adGenBondingGroupName			   DisplayString,
      adGenBondingGroupPortsString     DisplayString,
      adGenBondingGroupNumPorts        Integer32
      }

adGenBondingGroupIndex OBJECT-TYPE
      SYNTAX      Integer32
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
        "A unique value for the Bonding Group."
      ::= { adGenBondingGroupEntry 1 }

adGenBondingGroupRowStatus OBJECT-TYPE
      SYNTAX      RowStatus
      MAX-ACCESS  read-create
      STATUS      current
      DESCRIPTION
        "This object permits the creation or deletion of rows from
         the adGenBondingGroupTable.

         To create a new row of the adGenBondingGroupTable, this object
         must first be set to createAndGo or createAndWait. 
        
        If settable, a successful set of the adGenBondingGroupPortsString
        must be performed before the adGenBondingGroupRowStatus of a new
        row can be changed to the active state. Optionally, a name may
        be given to a row by changing the object adGenBondingGroupName. 
        
		The ports associated with a bonding group may only be changed while
		the conceptual row's adGenBondingGroupRowStatus object is set to the
		'notInService' state. 
		
        To remove (delete) an adGenBondingGroupTable entry from this table, set
        adGenBondingGroupRowStatus to 'destroy'."

      ::= { adGenBondingGroupEntry 2 }

adGenBondingGroupName OBJECT-TYPE
      SYNTAX      DisplayString
      MAX-ACCESS  read-create
      STATUS      current
      DESCRIPTION
        "A user defineable name for the Bonding Group."
      ::= { adGenBondingGroupEntry 3 }

adGenBondingGroupPortsString OBJECT-TYPE
      SYNTAX      DisplayString
      MAX-ACCESS  read-create
      STATUS      current
      DESCRIPTION
        "Returns a string with the ports which are a member of this group.
         The string is formatted with hyphens and commas where applicable.
         Example: '2,3' or '2,5-12'"
      ::= { adGenBondingGroupEntry 4 }

adGenBondingGroupNumPorts OBJECT-TYPE
      SYNTAX      Integer32
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
        "The number of ports currently assigned to the group."
      ::= { adGenBondingGroupEntry 5 } 
      
--
-- The Bonding Ports Table
--
-- The Bonding Ports Table consists of a table of bonded ports.  Each row
-- in the table contains status information about a port which is part
-- of a bonding group, and also contains a configuration object to select
-- to which bonding group the port belongs.
--

adGenBondingPortsTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF AdGenBondingPortsEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
        "The Bonding Port Status and Configuration table."
      ::= { adGenBondingMibObjects 3 }

adGenBondingPortsEntry OBJECT-TYPE
      SYNTAX      AdGenBondingPortsEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
        "An entry in the Bonding Ports table."
      INDEX       { adGenSlotInfoIndex,
      				adGenBondingPortsIndex }
      ::= { adGenBondingPortsTable 1 }

AdGenBondingPortsEntry ::= SEQUENCE {
      adGenBondingPortsIndex              AdGenBondingPort,
      adGenBondingPortsGroupMembership           Integer32 }

adGenBondingPortsIndex OBJECT-TYPE
      SYNTAX      AdGenBondingPort
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
        "This corresponds to the 'adGenPortInfoIndex' of the interface
        on which this port is established."
      ::= { adGenBondingPortsEntry 1 }

adGenBondingPortsGroupMembership OBJECT-TYPE
      SYNTAX      Integer32
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
        "The group number this port is assigned to. If the port is not
         assigned to any group, or if bonding isn't used on this port assign
         the port to group 0 (doesn't exist). Some implementations may
         choose to make this object read-only and instead rely on
         adGenBondingPortsString to assign ports to a group."
      ::= { adGenBondingPortsEntry 2 }

--
-- The Bonding Ports Status Table
--
-- The Bonding Status Table consists of a table of bonded ports.  Each row
-- contains status information about a port which is part of a bonding group. 
-- Unbonded ports do not return any information in this table.
--

adGenBondingPortStatusTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF AdGenBondingPortStatusEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
        "The Bonding Port Status table."
      ::= { adGenBondingMibObjects 4 }

adGenBondingPortStatusEntry OBJECT-TYPE
      SYNTAX      AdGenBondingPortStatusEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
        "An entry in the Bonding Ports table."
      INDEX       { adGenSlotInfoIndex,
      				adGenBondingGroupIndex,
      				adGenBondingPortStatusPortIndex }
      ::= { adGenBondingPortStatusTable 1 }

AdGenBondingPortStatusEntry ::= SEQUENCE {
      adGenBondingPortStatusPortIndex		  AdGenBondingPort,
      adGenBondingPortGroupState              INTEGER,
      adGenBondingPortDiffDelay               Integer32,
      adGenBondingPortTxId					  Integer32,
      adGenBondingPortRxId					  Integer32}

adGenBondingPortStatusPortIndex OBJECT-TYPE
      SYNTAX      AdGenBondingPort
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
        "This corresponds to the 'adGenPortInfoIndex' of the interface
        on which this port is established."
      ::= { adGenBondingPortStatusEntry 1 }

adGenBondingPortGroupState OBJECT-TYPE
      SYNTAX      INTEGER {
            notProvisioned(1),
            notUsable(2),
            readyForTraffic(3),
            carryingTraffic(4)

      }
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
        "This corresponds to the 'adGenPortInfoIndex' of the interface
        on which this port is established."
      ::= { adGenBondingPortStatusEntry 2 }

adGenBondingPortDiffDelay OBJECT-TYPE
      SYNTAX      Integer32
      UNITS		  "100 microseconds"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
        "Differential delay for this link."
      ::= { adGenBondingPortStatusEntry 3 }

adGenBondingPortTxId OBJECT-TYPE
      SYNTAX      Integer32
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
        "Transmit ID used for this link."
      ::= { adGenBondingPortStatusEntry 4 }

adGenBondingPortRxId OBJECT-TYPE
      SYNTAX      Integer32
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
        "Link ID received from the far end by this link."
      ::= { adGenBondingPortStatusEntry 5 }


-- Conformance Information

adGenBondingMibGroups OBJECT IDENTIFIER ::= { adGenBondingMibConformance 1 }
adGenBondingMibCompliances OBJECT IDENTIFIER ::= { adGenBondingMibConformance 2 }

-- Compliance Statements

adGenBondingMibCompliance MODULE-COMPLIANCE
      STATUS      current
      DESCRIPTION
        "The compliance statement for network elements implementing
        the ADTRAN Generic Bonding MIB."
      MODULE -- this module

-- Mandatory Part

      MANDATORY-GROUPS {
        adGenBondingGroupGroup,
        adGenBondingPortsGroup,
        adGenBondingPortStatusGroup }

-- Compliance Part

      OBJECT adGenBondingPortsGroupMembership
      MIN-ACCESS read-only
      DESCRIPTION
        "Write access is not required. Some implementations 
         may choose to rely instead on adGenBondingPortsString
         in order to assign ports to a group."

   ::= { adGenBondingMibCompliances 1 }

-- Units of Conformance

adGenBondingGroupGroup OBJECT-GROUP
      OBJECTS {
        adGenBondingGroupNumberNext,
        adGenBondingGroupRowStatus,
        adGenBondingGroupPortsString,
        adGenBondingGroupNumPorts }
      STATUS     current
      DESCRIPTION
        "A set of objects used in the configuration and 
         retrieval of status for a bonding group."
      ::= { adGenBondingMibGroups 1 }

adGenBondingPortsGroup OBJECT-GROUP
      OBJECTS {
        adGenBondingPortsGroupMembership }
      STATUS     current
      DESCRIPTION
        "A set of objects which allow configuration for a 
         bond-able link."
      ::= { adGenBondingMibGroups 2 }

adGenBondingPortStatusGroup OBJECT-GROUP
	  OBJECTS {
        adGenBondingPortGroupState,
        adGenBondingPortDiffDelay,
        adGenBondingPortTxId,
        adGenBondingPortRxId }
      STATUS	current
      DESCRIPTION
        "A set of objects providing status for a bonded link."
      ::= { adGenBondingMibGroups 3 }  


END

