-- ============================================================================
-- Copyright (c) 2010-2013 Hewlett-Packard Development Company, L.P.
--
-- Description: Flowtemplate Management Information Base.
-- Reference: 
-- Version: 1.0
-- History:
-- V1.0 created by tangshun.
-- ============================================================================
HPN-ICF-FLOWTEMPLATE-MIB DEFINITIONS ::= BEGIN

        IMPORTS
            hpnicfCommon
                FROM HPN-ICF-OID-MIB
            ifIndex
                FROM RFC1213-MIB
            Integer32, OBJECT-TYPE, MODULE-IDENTITY
                FROM SNMPv2-SMI
            RowStatus, MacAddress
                FROM SNMPv2-TC;

--
-- Nodes definitions
--
        hpnicfFlowTemplate MODULE-IDENTITY 
            LAST-UPDATED "200511241320Z"    -- Nov 24, 2005 at 13:20 GMT
            ORGANIZATION
                ""
            CONTACT-INFO
                ""
            DESCRIPTION 
                "Flow template management information base."
            ::= { hpnicfCommon 64 }

        hpnicfFlowTemplateMibObject OBJECT IDENTIFIER ::= { hpnicfFlowTemplate 1 }

        hpnicfFTConfigGroup OBJECT IDENTIFIER ::= { hpnicfFlowTemplateMibObject 1 }

        hpnicfFTGroupNextIndex OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-only
            STATUS current
            DESCRIPTION
                "This object contains an appropriate value to be used for hpnicfFTGroupIndex 
                 when creating rows in the hpnicfFTGroupTable.  If it is 2147483647, 
                 it denotes that hpnicfFTGroupTable can't create any instance. 
                "
            ::= { hpnicfFTConfigGroup 1 }    

        hpnicfFTGroupTable OBJECT-TYPE   
            SYNTAX SEQUENCE OF HpnicfFTGroupEntry
            MAX-ACCESS not-accessible
            STATUS current
            DESCRIPTION
                "A table of flow template group.
                 A flow template group, which is applied to interface,
                 must use hpnicfFTGroupTable to create a instance 
                 and hpnicfFTBasicGroupTable or hpnicfFTExtendGroupTable 
                 to configure flow template's need item.
                 A basic flow template must use hpnicfFTBasicGroupTable 
                 to configure some basic flow template's need item, 
                 such as: address, protocol, priority.
                 A extend flow template must use hpnicfFTExtendGroupTable
                 to configure packet's type and offset and length.
                "
            ::= { hpnicfFTConfigGroup 2 }

        hpnicfFTGroupEntry OBJECT-TYPE
            SYNTAX HpnicfFTGroupEntry
            MAX-ACCESS not-accessible
            STATUS current
            DESCRIPTION
                "Flow template group information."
            INDEX { hpnicfFTGroupIndex }
            ::= { hpnicfFTGroupTable 1 }

        HpnicfFTGroupEntry ::=
            SEQUENCE
            {
                hpnicfFTGroupIndex
                    Integer32,
                hpnicfFTGroupName
                    OCTET STRING,
                hpnicfFTGroupType
                    INTEGER,
                hpnicfFTGroupRowStatus
                    RowStatus
            }

        hpnicfFTGroupIndex OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS not-accessible
            STATUS current
            DESCRIPTION
                "Flow template group index."
            ::= { hpnicfFTGroupEntry 1 }

        hpnicfFTGroupName OBJECT-TYPE
            SYNTAX OCTET STRING (SIZE(1..31))
            MAX-ACCESS read-create
            STATUS current
            DESCRIPTION
                "Flow template group name."
            ::= { hpnicfFTGroupEntry 2 }

        hpnicfFTGroupType OBJECT-TYPE
            SYNTAX INTEGER 
            {
                basic(1),
                extend(2)
            }
            MAX-ACCESS read-create
            STATUS current
            DESCRIPTION
                "Type of flow template."
            ::= { hpnicfFTGroupEntry 3 }

        hpnicfFTGroupRowStatus OBJECT-TYPE
            SYNTAX RowStatus
            MAX-ACCESS read-create
            STATUS current
            DESCRIPTION
                "RowStatus."
            ::= { hpnicfFTGroupEntry 4 }
--
--nodes of hpnicfFTBasicGroupTable
--
        hpnicfFTBasicGroupTable OBJECT-TYPE   
            SYNTAX SEQUENCE OF HpnicfFTBasicGroupEntry
            MAX-ACCESS not-accessible
            STATUS current
            DESCRIPTION
                "A table of basic flow template group."
            ::= { hpnicfFTConfigGroup 3 }

        hpnicfFTBasicGroupEntry OBJECT-TYPE
            SYNTAX HpnicfFTBasicGroupEntry
            MAX-ACCESS not-accessible
            STATUS current
            DESCRIPTION
                "Basic flow template group information."
            INDEX { hpnicfFTGroupIndex }
            ::= { hpnicfFTBasicGroupTable 1 }

        HpnicfFTBasicGroupEntry ::=
            SEQUENCE
            {
                hpnicfFTBasicGroupAddressType
                    BITS,
                hpnicfFTBasicGroupPriorityType
                    BITS,
                hpnicfFTBasicGroupProtocolType
                    BITS,
                hpnicfFTBasicGroupSMacWildCard
                    MacAddress,
                hpnicfFTBasicGroupDMacWildCard
                    MacAddress,
                hpnicfFTBasicGroupRowStatus
                    RowStatus
            }

        hpnicfFTBasicGroupAddressType OBJECT-TYPE
            SYNTAX BITS
            {
                sourceIpv4Address(0),
                destIPv4Address(1),
                sourceIPv6Address(2),
                destIPv6Address(3),
                sourceMacAddress(4),
                destMacAddress(5)
            }
            MAX-ACCESS read-create
            STATUS current
            DESCRIPTION
                "Type of MAC and IP address.
                 This is a bit-map of possible conditions.
                 The various bit positions are:
                 sourceIpv4Address    source IPv4's address    
                 destIPv4Address      destination IPv4's address
                 sourceIPv6Address    source IPv6 address
                 destIPv6Address      destination IPv6 address
                 sourceMacAddress     source MAC address
                 destMacAddress       destination MAC address
                "
            ::= { hpnicfFTBasicGroupEntry 1 }

        hpnicfFTBasicGroupPriorityType OBJECT-TYPE
            SYNTAX BITS
            {
                vlanID(0),
                cos(1),
                topVlanID(2),
                topCos(3),
                fragment(4),
                tcpFlag(5),
                tos(6),
                dscp(7),
                ipprecedence(8)
            }
            MAX-ACCESS read-create
            STATUS current
            DESCRIPTION
                "Type of priority.
                 This is a bit-map of possible conditions.
                 The various bit positions are:
                 vlanID         VlanID
                 cos            802.1p priority
                 topVlanID      VlanID of top layer
                 topCos         802.1p priority of top layer
                 fragment       fragment
                 tcpFlag        TCP flag
                 tos            type of service
                 dscp           DSCP
                 ipprecedence   IP precedence
                "
            ::= { hpnicfFTBasicGroupEntry 2 }

        hpnicfFTBasicGroupProtocolType OBJECT-TYPE
            SYNTAX BITS
            {
                l2Potocol(0),
                ipv4L3Protocol(1),
                ipv6L3Protocol(2),
                icmpProtocolType(3),
                icmpProtocolCode(4),
                icmpv6ProtocolType(5),
                icmpv6ProtocolCode(6),
                sourceL4Port(7),
                destL4Port(8)
            }
            MAX-ACCESS read-create
            STATUS current
            DESCRIPTION
                "Type of protocol.
                 This is a bit-map of possible conditions.
                 The various bit positions are:
                 l2Potocol               layer 2 protocol
                 ipv4L3Protocol          layer 3 protocol of IPv4 
                 ipv6L3Protocol          layer 3 protocol of IPv6
                 icmpProtocolType        Type of ICMP protocol of IPv4
                 icmpProtocolCode        Code of ICMP protocol of IPv4
                 icmpv6ProtocolType      Type of ICMP protocol of IPv6
                 icmpv6ProtocolCode      Code of ICMP protocol of IPv6
                 sourceL4Port            port of layer 4 of source
                 destL4Port              port of layer 4 of destination
                "
            ::= { hpnicfFTBasicGroupEntry 3 }

        hpnicfFTBasicGroupSMacWildCard OBJECT-TYPE
            SYNTAX MacAddress
            MAX-ACCESS read-create
            STATUS current
            DESCRIPTION
                "Source MAC address field in Ethernet packet head."
            ::= { hpnicfFTBasicGroupEntry 4 }

        hpnicfFTBasicGroupDMacWildCard OBJECT-TYPE
            SYNTAX MacAddress
            MAX-ACCESS read-create
            STATUS current
            DESCRIPTION
                "Destination MAC address field in Ethernet packet head."
            ::= { hpnicfFTBasicGroupEntry 5 }

        hpnicfFTBasicGroupRowStatus OBJECT-TYPE
            SYNTAX RowStatus
            MAX-ACCESS read-create
            STATUS current
            DESCRIPTION
                "RowStatus."
            ::= { hpnicfFTBasicGroupEntry 6 }
--
--nodes of hpnicfFTExtendGroupTable
--
        hpnicfFTExtendGroupTable OBJECT-TYPE
            SYNTAX SEQUENCE OF HpnicfFTExtendGroupEntry
            MAX-ACCESS not-accessible
            STATUS current
            DESCRIPTION
                "A table of extend flow template group information."
            ::= { hpnicfFTConfigGroup 4 }

        hpnicfFTExtendGroupEntry OBJECT-TYPE
            SYNTAX HpnicfFTExtendGroupEntry
            MAX-ACCESS not-accessible
            STATUS current
            DESCRIPTION
                "Extend flow template group information entry."
            INDEX { hpnicfFTGroupIndex, hpnicfFTExtendGroupOffsetType }
            ::= { hpnicfFTExtendGroupTable 1 }

        HpnicfFTExtendGroupEntry ::=
            SEQUENCE
            {
                hpnicfFTExtendGroupOffsetType
                    INTEGER,
                hpnicfFTExtendGroupOffsetMaxValue
                    Integer32,
                hpnicfFTExtendGroupLengthMaxValue
                    Integer32,
                hpnicfFTExtendGroupRowStatus
                    RowStatus
            }

        hpnicfFTExtendGroupOffsetType OBJECT-TYPE
            SYNTAX INTEGER
            {
                start(1),
                mpls(2),
                l2(3),
                l4(4),
                l5(5),
                ipv4(6),
                ipv6(7)
            }
            MAX-ACCESS not-accessible
            STATUS current
            DESCRIPTION
                "Offset type of the packet.
                 start    Offset from the start of the packet
                 mpls     Offset from the head of MPLS
                 l2       Offset from the head of the L2 frame
                 l4       Offset from the head of L4 packet
                 l5       Offset from the head of the L5 packet
                 ipv4     Offset from the head of the IPv4 packet
                 ipv6     Offset from the head of the IPv6 packet
                "
            ::= { hpnicfFTExtendGroupEntry 1 }

        hpnicfFTExtendGroupOffsetMaxValue OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-create
            STATUS current
            DESCRIPTION
                "The max value of offset."
            ::= { hpnicfFTExtendGroupEntry 2 }    

        hpnicfFTExtendGroupLengthMaxValue OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-create
            STATUS current
            DESCRIPTION
                "The max value of length."
            ::= { hpnicfFTExtendGroupEntry 3 }

        hpnicfFTExtendGroupRowStatus OBJECT-TYPE
            SYNTAX RowStatus
            MAX-ACCESS read-create
            STATUS current
            DESCRIPTION
                "RowStatus."
            ::= { hpnicfFTExtendGroupEntry 4 }

--
--nodes of hpnicfFTApplyGroup
--
        hpnicfFTApplyGroup OBJECT IDENTIFIER ::= { hpnicfFlowTemplateMibObject 2 }

        hpnicfFTIfApplyTable OBJECT-TYPE
            SYNTAX SEQUENCE OF HpnicfFTIfApplyEntry
            MAX-ACCESS not-accessible
            STATUS current
            DESCRIPTION
                "A table of any interface with flowtemplate.
                 A flow template, which will be applied interface,
                 is an instance at hpnicfFTGroupTable 
                 and hpnicfFTBasicGroupTable or hpnicfFTExtendGroupTable.
                 A basic flow template is an instance at hpnicfFTGroupTable 
                 and hpnicfFTBasicGroupTable, and the instance's RowStatus 
                 must be 'active' at each table.
                 A extend flow template is an instance at hpnicfFTGroupTable
                 and hpnicfFTExtendGroupTable, and the instance's RowStatus 
                 must be 'active' at each table.  
                "
            ::= { hpnicfFTApplyGroup 1 }

        hpnicfFTIfApplyEntry OBJECT-TYPE
            SYNTAX HpnicfFTIfApplyEntry
            MAX-ACCESS not-accessible
            STATUS current
            DESCRIPTION
                "Any interface with flowtemplate information." 
            INDEX { ifIndex, hpnicfFTGroupIndex }
            ::= { hpnicfFTIfApplyTable 1 } 

        HpnicfFTIfApplyEntry ::=
            SEQUENCE
            {
                hpnicfFTIfApplyGroupName
                    OCTET STRING,
                hpnicfFTIfApplyRowStatus
                    RowStatus
            }

        hpnicfFTIfApplyGroupName OBJECT-TYPE
            SYNTAX OCTET STRING
            MAX-ACCESS read-only
            STATUS current
            DESCRIPTION
                "The name of flow template."
            ::= { hpnicfFTIfApplyEntry 1 }

        hpnicfFTIfApplyRowStatus OBJECT-TYPE
            SYNTAX RowStatus
            MAX-ACCESS read-create
            STATUS current
            DESCRIPTION
                "RowStatus."
            ::= { hpnicfFTIfApplyEntry 2 }
END 
