TRAFFIC-TEMPLATE-MIB DEFINITIONS ::= BEGIN

    IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE, Integer32
            FROM SNMPv2-SMI
        MODULE-COMPLIANCE, OBJECT-GROUP
            FROM SNMPv2-CONF
        PortList
            FROM Q-BRIDGE-MIB
        DisplayString, TruthValue, RowStatus
            FROM SNMPv2-TC
        hpSwitch
            FROM HP-ICF-OID
        ;

    hpicfTrafficTemplateMIB MODULE-IDENTITY
        LAST-UPDATED "201202020000Z"  --February 2, 2012

        ORGANIZATION "HP Networking"
        CONTACT-INFO "Hewlett-Packard Company
                      8000 Foothills Blvd.
                      Roseville, CA 95747"
        DESCRIPTION  "This MIB defines HP proprietary objects used to configure
                      traffic templates for CoS (Class of Service) queuing."

        REVISION     "201202020000Z"  --February 2, 2012
        DESCRIPTION  "Added hpSwitchTrafficGroupEgressDiscardThreshold,
                      hpSwitchTrafficTemplateNumQueues, and
                      hpSwitchTrafficTemplatePredefined.
                      Updated description text."

        REVISION     "201003041230Z"  --March 4, 2010
        DESCRIPTION  "Initial version."

        ::= { hpSwitch 72 }

    hpicfTrafficTemplateObjects    OBJECT IDENTIFIER ::= { hpicfTrafficTemplateMIB 1 }

-- **********************************************************************************
-- Traffic Template scalars
-- **********************************************************************************

    hpicfTrafficTemplateScalars    OBJECT IDENTIFIER ::= { hpicfTrafficTemplateObjects 1 }

    hpSwitchTrafficTemplateSystemDefaultName OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE(0..255))
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION "The name of the traffic template used as the system default
                     when no name has been explicitly set.  Limited to 40 characters
                     on some devices."
        ::= { hpicfTrafficTemplateScalars 1 }

-- ********************************************************************************
-- Traffic Template Table
-- ********************************************************************************

    hpSwitchTrafficTemplate    OBJECT IDENTIFIER ::= { hpicfTrafficTemplateObjects 2 }

    hpSwitchTrafficTemplateTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF HpSwitchTrafficTemplateEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "A table that contains information about traffic templates
                     for CoS (class of service) queue configuration in the device."
        ::= { hpSwitchTrafficTemplate 1 }

    hpSwitchTrafficTemplateEntry OBJECT-TYPE
        SYNTAX      HpSwitchTrafficTemplateEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "Information about a single traffic template for CoS queue
                     configuration in the device."
        INDEX       { hpSwitchTrafficTemplateName }
        ::= { hpSwitchTrafficTemplateTable 1 }

    HpSwitchTrafficTemplateEntry ::=
        SEQUENCE {
            hpSwitchTrafficTemplateName          DisplayString,
            hpSwitchTrafficTemplateMappedPorts   PortList,
            hpSwitchTrafficTemplateRowStatus     RowStatus,
            hpSwitchTrafficTemplateNumQueues     Integer32,
            hpSwitchTrafficTemplatePredefined    TruthValue
        }

    hpSwitchTrafficTemplateName OBJECT-TYPE
        SYNTAX      DisplayString (SIZE(0..80))
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "A unique name by which this template is referenced.
                     Limited to 40 characters on some devices."
        ::= { hpSwitchTrafficTemplateEntry 1 }

    hpSwitchTrafficTemplateMappedPorts OBJECT-TYPE
        SYNTAX      PortList
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "The set of ports to which this traffic template is
                     mapped.  The set of ports is identified by a PortList
                     in which each port is represented by a bit.  A port
                     cannot be mapped to more than one traffic template.

                     Not all devices support different traffic templates
                     for different ports.  The port map is ignored on
                     devices that use a common template for all ports."

        ::= { hpSwitchTrafficTemplateEntry 2 }

    hpSwitchTrafficTemplateRowStatus OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "The Row Status of this traffic template entry.

                     To create a new traffic template, send a SET
                     request with a RowStatus of 'createAndWait'.
                     This will result in the creation of a template of that
                     name and a new hpSwitchTrafficGroupTable entry with
                     system default values.
                     
                     active - all traffic groups in the template row are valid
                     and the template is applied to one or more interfaces.
                     
                     notReady - template is not valid or is undergoing
                     modification.

                     notInService - template is valid, but is not applied
                     to any interface.

                     createAndWait - create a new traffic template.

                     delete - delete the traffic template.

                     createAndGo - not valid for this table.
                     
                     A device reboot is required to apply updated templates
                     to their interfaces."

        ::= { hpSwitchTrafficTemplateEntry 3 }

    hpSwitchTrafficTemplateNumQueues OBJECT-TYPE
        SYNTAX      Integer32 (1..9000)
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION "The number of egress queues this template is valid for."
        ::= { hpSwitchTrafficTemplateEntry 4 }

    hpSwitchTrafficTemplatePredefined OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION "Indicates that this template is factory predefined.
                     Predefined templates may not be deleted and their queue
                     configuration may not be modified."
        ::= { hpSwitchTrafficTemplateEntry 5 }

-- ********************************************************************************
-- Traffic Group Table
-- ********************************************************************************

    hpSwitchTrafficGroupTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF HpSwitchTrafficGroupEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "A table that contains the mapping of 802.1q packet
                     priorities to CoS traffic queues in the device.
                     Entries in this table define traffic class groups
                     containing a queue number, an optional ID number, a
                     set of priority values mapped to the queue, an
                     optional name, and a lossless flag when Priority
                     Flow Control is enabled for a port.

                     A SET to an object in any row of this table causes
                     the RowStatus of the parent template to change to
                     notReady.  Changes are temporary until the template
                     RowStatus is successfully SET to active."

        ::=  { hpSwitchTrafficTemplate 2 }

    hpSwitchTrafficGroupEntry OBJECT-TYPE
        SYNTAX      HpSwitchTrafficGroupEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "Traffic group configuration for a given queue."
        INDEX       { hpSwitchTrafficTemplateName, hpSwitchTrafficQueue }
        ::= { hpSwitchTrafficGroupTable 1 }

    HpSwitchTrafficGroupEntry ::=
        SEQUENCE {
            hpSwitchTrafficQueue                       Integer32,
            hpSwitchTrafficGroupID                     Integer32,
            hpSwitchTrafficGroupName                   OCTET STRING,
            hpSwitchTrafficGroupPriorityMap            BITS,
            hpSwitchTrafficGroupLossless               TruthValue,
            hpSwitchTrafficGroupEgressDiscardThreshold INTEGER
        }

    hpSwitchTrafficQueue OBJECT-TYPE
        SYNTAX      Integer32 (1..9000)
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "The internal number of the queue this entry will apply to."
        ::= { hpSwitchTrafficGroupEntry 1 }

    hpSwitchTrafficGroupID OBJECT-TYPE
        SYNTAX      Integer32 (0..15)
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION "The ID value of this traffic class group in the DCBX
                     exchange.  Only IDs 0-7 are allowed in a SET request.
                     This setting is not supported on all devices."
        ::= { hpSwitchTrafficGroupEntry 2 }

    hpSwitchTrafficGroupName OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE(0..255))
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION "An optional user-defined name for this traffic group.
                     Limited to 40 characters on some devices."
        ::= { hpSwitchTrafficGroupEntry 3 }

    hpSwitchTrafficGroupPriorityMap OBJECT-TYPE
        SYNTAX      BITS {
                        priority0 (0),
                        priority1 (1),
                        priority2 (2),
                        priority3 (3),
                        priority4 (4),
                        priority5 (5),
                        priority6 (6),
                        priority7 (7),
                        priority8 (8),
                        priority9 (9),
                        priority10 (10),
                        priority11 (11),
                        priority12 (12),
                        priority13 (13),
                        priority14 (14),
                        priority15 (15)
                    }
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION "A bitmap of 802.1q priority values assigned to this
                     traffic group.  Each priority value 0-7 must be
                     assigned to exactly one group for the template
                     to be valid."
        ::= { hpSwitchTrafficGroupEntry 4 }

    hpSwitchTrafficGroupLossless OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION "A flag indicating that this queue is to be
                     configured for lossless behavior when Priority Flow
                     Control (PFC) is enabled on a port.  Designating a
                     queue as lossless causes ingress thresholds to be
                     set that will trigger PFC frames when this queue
                     exceeds or falls below a specific threshold.  The
                     queue will also respond to PFC frames received from
                     a neighbor.

                     This flag may not be set if any queue in the template
                     is configured for a 'medium' or 'low' discard threshold
                     (see hpSwitchTrafficGroupEgressDiscardThreshold).

                     This flag is not supported on all devices."

        ::= { hpSwitchTrafficGroupEntry 5 }

    hpSwitchTrafficGroupEgressDiscardThreshold OBJECT-TYPE
        SYNTAX      INTEGER {
                        low (1),
                        medium (2),
                        high (3)
                    }
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION "The Egress Buffer Discard Threshold setting for this
                     traffic group.  This setting controls the maximum size
                     of the group egress queue.  When set to 'medium' or 'low',
                     the maximum number of buffers permitted in the queue is
                     reduced so packets are dropped sooner and their buffers
                     made available for higher priority traffic.  However,
                     this also reduces the maximum traffic burst that can be
                     absorbed without dropping packets.  The default is 'high'.

                     This setting may not be changed if any queue in the
                     template is configured for lossless behavior (see
                     hpSwitchTrafficGroupLossless).

                     This setting is not supported on all devices."

        ::= { hpSwitchTrafficGroupEntry 6 } 


-- ********************************************************************************
-- Conformance Information
-- ********************************************************************************

    hpicfTrafficTempalteConformance OBJECT IDENTIFIER ::= { hpicfTrafficTemplateMIB 2 }
    hpicfTrafficTemplateGroups      OBJECT IDENTIFIER ::= { hpicfTrafficTempalteConformance 1 }
    hpicfTrafficTemplateCompliances OBJECT IDENTIFIER ::= { hpicfTrafficTempalteConformance 2 }

-- units of conformance

    hpicfTrafficTemplateScalarGroup OBJECT-GROUP
        OBJECTS {
            hpSwitchTrafficTemplateSystemDefaultName
        }
        STATUS      current
        DESCRIPTION "A collection of scalars related to traffic template
                     configuration."
        ::= { hpicfTrafficTemplateGroups 1 }

    hpicfTrafficTemplateGroup OBJECT-GROUP
        OBJECTS {
            hpSwitchTrafficTemplateMappedPorts,
            hpSwitchTrafficTemplateRowStatus
        }
        STATUS      deprecated
        DESCRIPTION "###DEPRECATED###
                     A collection of objects providing configuration
                     of traffic templates.

                     This conformance is deprecated and replaced by
                     hpicfTrafficTemplateGroup2."
        ::= { hpicfTrafficTemplateGroups 2 }

    hpicfTrafficGroup OBJECT-GROUP
        OBJECTS {
            hpSwitchTrafficGroupID,
            hpSwitchTrafficGroupName,
            hpSwitchTrafficGroupPriorityMap,
            hpSwitchTrafficGroupLossless
        }
        STATUS      deprecated
        DESCRIPTION "###DEPRECATED###
                     A collection of objects providing configuration
                     of traffic groups in a template.

                     This conformance is deprecated and replaced by
                     hpicfTrafficGroup2."
        ::= { hpicfTrafficTemplateGroups 3 }

    hpicfTrafficTemplateGroup2 OBJECT-GROUP
        OBJECTS {
            hpSwitchTrafficTemplateMappedPorts,
            hpSwitchTrafficTemplateRowStatus,
            hpSwitchTrafficTemplateNumQueues,
            hpSwitchTrafficTemplatePredefined
        }
        STATUS      current
        DESCRIPTION "A collection of objects providing configuration
                     of traffic templates."
        ::= { hpicfTrafficTemplateGroups 4 }

    hpicfTrafficGroup2 OBJECT-GROUP
        OBJECTS {
            hpSwitchTrafficGroupID,
            hpSwitchTrafficGroupName,
            hpSwitchTrafficGroupPriorityMap,
            hpSwitchTrafficGroupLossless,
            hpSwitchTrafficGroupEgressDiscardThreshold
        }
        STATUS      current
        DESCRIPTION "A collection of objects providing configuration
                     of traffic groups in a template."
        ::= { hpicfTrafficTemplateGroups 5 }

-- compliance statements

    hpicfTrafficTemplateCompliance MODULE-COMPLIANCE
        STATUS      deprecated
        DESCRIPTION "###DEPRECATED###
                     The compliance statement for device support of
                     TRAFFIC-TEMPLATE-MIB.

                     This compliance is deprecated and replaced by
                     hpicfTrafficTemplateCompliance2."
        MODULE -- This Module
        MANDATORY-GROUPS {
            hpicfTrafficTemplateScalarGroup,
            hpicfTrafficTemplateGroup,
            hpicfTrafficGroup
        }
        ::= { hpicfTrafficTemplateCompliances 1 }

    hpicfTrafficTemplateCompliance2 MODULE-COMPLIANCE
        STATUS      current
        DESCRIPTION "The compliance statement for device support of
                     TRAFFIC-TEMPLATE-MIB."
        MODULE -- This Module
        MANDATORY-GROUPS {
            hpicfTrafficTemplateScalarGroup,
            hpicfTrafficTemplateGroup2,
            hpicfTrafficGroup2
        }
        ::= { hpicfTrafficTemplateCompliances 2 }

END
