--**MOD+***********************************************************************
-- * Module:    hpicfGppcv2.mib
-- *
-- * Copyright (C) 1996-2016 Hewlett Packard Enterprise Development LP
-- * All Rights Reserved.
-- * 
-- * The contents of this software are proprietary and confidential
-- * to the Hewlett Packard Enterprise Development LP. No part of this
-- * program may be photocopied, reproduced, or translated into another
-- * programming language without prior written consent of the
-- * Hewlett Packard Enterprise Development LP.
-- *
-- * Purpose:   Definition for HP-ICF-GPPCV2 MIB
-- *
-- **MOD-***********************************************************************/
HP-ICF-GPPCV2-MIB DEFINITIONS ::= BEGIN

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

    hpicfGppcv2MIB MODULE-IDENTITY
        LAST-UPDATED "201601150000Z" -- January 15, 2016
        ORGANIZATION "HP Networking"
        CONTACT-INFO "Hewlett Packard Company
                      8000 Foothills Blvd.
                      Roseville, CA 95747"

        DESCRIPTION  "This MIB module is for HP proprietary
                     General Purpose Packet Control Version 2 (Gppcv2)"

        REVISION     "201601150000Z" -- January 15, 2016
        DESCRIPTION  "Added policyUser to hpicfGppcv2NpSubType"

        REVISION     "201506230000Z" -- June 23, 2015
        DESCRIPTION  "Added hpicfGppcv2AcSharedFlag
                      to HpicfGppcv2AppControlEntry
                      and hpicfGppcv2MIBCompliance/hpicfGppcv2Group"

        REVISION     "201501210000Z" -- January 21, 2015
        DESCRIPTION  "Added hpicfGppcv2AcVACLEgressVIDList
                      to HpicfGppcv2AppControlEntry
                      and hpicfGppcv2MIBCompliance/hpicfGppcv2Group"

        REVISION     "201409090000Z" -- September 09, 2014
        DESCRIPTION  "Added gppcv2InvalidEtherTypeError to 
                      HpicfGppcv2LastErrorCode"
                      
        REVISION     "201404240000Z" -- April 24, 2014
        DESCRIPTION  "Added aclMac and classifierClassMac to 
                      HpicfGppcv2PolicyType
                      gppcv2ClassNoMixMacAndIPError to 
                      HpicfGppcv2LastErrorCode
                      aclMacStandard and aclMacExtended to 
                      hpicfGppcv2NpSubType"
                      
        REVISION     "201011120000Z" -- November 12, 2010
        DESCRIPTION  "Added hpicfGppcv2AcIngressTunnelList and
                      hpicfGppcv2AcEgressTunnelList to HpicfGppcv2AppControlEntry
                      and hpicfGppcv2MIBCompliance/hpicfGppcv2Group"

        REVISION     "201009280000Z" -- September 28, 2010
        DESCRIPTION  "Added policyIpsec in hpicfGppcv2NpSubType."

        REVISION     "201003012201Z"
        DESCRIPTION  "Initial revision."

        ::= { hpSwitch 61 }

-- ***********************************************
-- TEXTUAL Conventions
-- ***********************************************
    HpicfGppcv2PolicyName ::= TEXTUAL-CONVENTION
        DISPLAY-HINT "70a"
        STATUS       current
        DESCRIPTION  "Type definition for the name of a policy.
                     A policy name is a printable string consisting
                     of up to 64 characters from the ASCII character
                     set. The policy name is case sensitive"
        SYNTAX       OCTET STRING (SIZE(1..70))
    
    HpicfGppcv2PolicyType ::= TEXTUAL-CONVENTION
        STATUS      current
        DESCRIPTION "Type of the policy.
                    A policy of type 'aclIpv4' indicates that the policy
                    is an IPv4 Access Control List, an ACL that filters
                    packets based on source IPv4 address and subnet,
                    destination IPv4 address and subnet, and 
                    protocol amongst other packet information.

                    A policy of type 'aclIpv6' indicates that the policy
                    is an IPv6 Access Control List, an ACL that filters
                    packets based on source IPv6 address and subnet, 
                    destination IPv6 address and subnet, and 
                    protocol amongst other packet information.
                    
                    A policy of type 'classifierClassIpv4' indicates 
                    that the policy is an IPv4 Classifier class 
                    which specifies packets to be compared against the 
                    specified source IPv4 address and subnet, destination 
                    and subnet, protocol, etc.

                    A policy of type 'classifierClassIpv6' indicates 
                    that the policy is an IPv6 Classifier class 
                    which specifies packets to be compared against the 
                    specified source IPv6 address and subnet, destination 
                    and subnet, protocol, etc.

                    A policy type of 'classifierPolicy' indicates
                    that the policy will perform Quality of Service/mirror 
                    actions on packets that match statements in the
                    policy's classes.

                    A policy type of 'connectionRateFilterIpv4' indicates
                    that the policy is an IPv4 Connection Rate Filter, a 
                    list that specifies packets to be filtered or ignored 
                    based on source IPv4 address and subnet and protocol.
                   
                    A policy type of 'aclMac' indicates that the policy
                    is a MAC Access Control List.  This ACL filters the
                    packets based on source MAC address, destination
                    MAC address, CoS, ethertype and VLAN.
                    
                    A policy type of 'classifierClassMac' indicates that
                    the policy is an MAC Classifer class which specifies
                    packets to be compared against the specified source
                    MAC address, destination MAC address, Ethernet type,
                    etc."

        SYNTAX      INTEGER { aclIpv4(1),
                              aclIpv6(2),
                              classifierClassIpv4(3),
                              classifierClassIpv6(4),
                              classifierPolicy(5),
                              connectionRateFilterIpv4(6),
                              aclMac(7),
                              classifierClassMac(8)
                              }

    HpicfGppcv2LastErrorCode ::= TEXTUAL-CONVENTION
        STATUS      current
        DESCRIPTION "Error code of the last error that occurred.  A
                    non-zero value indicates that the last operation
                    performed by this instance of the application or
                    on the named policy did not succeed."
        SYNTAX      INTEGER {
                        noError(0),
                        gppcv2GenericError(1),
                        gppcv2LengthError(2),
                        gppcv2NameError(3),
                        gppcv2ParameterError(4),
                        gppcv2NotImplemented(5),
                        gppcv2MallocError(6),
                        gppcv2TooManyApps(7),
                        gppcv2TooManyPolicies(8),
                        gppcv2AlreadyReserved(9),
                        gppcv2EntryExists(10),
                        gppcv2PlatformError(11),
                        gppcv2AppUsingPolicy(12),
                        gppcv2InvalidPolicyType(13),
                        gppcv2NotReserved(14),
                        gppcv2NoPolicy(15),
                        gppcv2PolicyNotActive(16),
                        gppcv2PolicyHasRules(17),
                        gppcv2RuleExists(18),
                        gppcv2ReleaseRules(19),
                        gppcv2ReleaseAppCtrlEntry(20),
                        gppcv2CfgError(50),
                        gppcv2AceCreateError(70),
                        gppcv2AceConflictingRuleError(71),
                        gppcv2AceDuplicateError(72),
                        gppcv2AceDuplicateSequenceNumError(73),
                        gppcv2AceCfgLimitReachedError(74),
                        gppcv2AceNotFoundError(75),
                        gppcv2AclDuplcateNameError(76),
                        gppcv2AclMaxSequenceNumError(77),
                        gppcv2AclMgmtVlanConflictError(78),
                        gppcv2AclApplyError(79),
                        gppcv2AclCreateError(80),
                        gppcv2AclCfgLimitReachedError(81),
                        gppcv2AclNotFoundError(82),
                        gppcv2AclNotAppliedVlanError(83),
                        gppcv2AclNotAppliedPortError(84),
                        gppcv2InvalidTypeForCrfError(85),
                        gppcv2AclResequenceLimitError(86),
                        gppcv2ClassMaxSequenceNumError(87),
                        gppcv2ClassNotFoundError(88),
                        gppcv2ClassCreateError(89),
                        gppcv2ClassEntryCfgLimitReachedError(90),
                        gppcv2ClassListCfgLimitReachedError(91),
                        gppcv2ClassDuplicateNameError(92),
                        gppcv2ClassEntryAddError(93),
                        gppcv2ClassEntryNotFoundError(94),
                        gppcv2ClassConflictingRuleError(95),
                        gppcv2PolicyNotFoundError(96),
                        gppcv2PolicyNameConflictError(97),
                        gppcv2PolicyNotAppliedError(98),
                        gppcv2PolicyCreateError(99),
                        gppcv2PolicyAddClassError(100),
                        gppcv2PolicyDeleteClassError(101),
                        gppcv2PolicyClassNotFoundError(102),
                        gppcv2PolicyDeleteError(103),
                        gppcv2PolicyApplyError(104),
                        gppcv2PolicyIsAppliedCannotDeleteError(105),
                        gppcv2PolicyDuplicateClassError(106),
                        gppcv2PolicyClassifiedVlanOnVlanError(107),
                        gppcv2PolicyCfgLimitReachedError(108),
                        gppcv2PolicyApplyDetailedError(109),
                        gppcv2ClassNoMixMacAndIPError(110),
                        gppcv2InvalidEtherTypeError(111)}

-- ***********************************************
-- Start of MIB Objects
-- ***********************************************
    hpicfGppcv2Conformance OBJECT IDENTIFIER ::= { hpicfGppcv2MIB 1 }

-- ***********************************************
-- Gppcv2 application control table
-- ***********************************************
    hpicfGppcv2AppControlTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF HpicfGppcv2AppControlEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "The application control table.  This keeps track
                    of the applications that use Gppcv2, the policies
                    set by these applications, and information on
                    where/when/how to apply these policies.

                    This information includes the interfaces and VLANs
                    where the policy should be applied, whether it
                    should be applied at ingress or egress, and when it
                    should expire.

                    The following limitation is in place: there can be 
                    no more than one policy action per SNMP pdu."

        ::= { hpicfGppcv2MIB 2 }

    hpicfGppcv2AppControlEntry OBJECT-TYPE
        SYNTAX      HpicfGppcv2AppControlEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "An entry in the application control table."
        INDEX       { hpicfGppcv2AcAppName,
                    hpicfGppcv2AcAppInstance,
                    hpicfGppcv2AcPolicyType,
                    hpicfGppcv2AcPolicyName }
        ::= { hpicfGppcv2AppControlTable 1 }

    HpicfGppcv2AppControlEntry ::=
        SEQUENCE {
            hpicfGppcv2AcAppName          SnmpAdminString,
            hpicfGppcv2AcAppInstance      SnmpAdminString,
            hpicfGppcv2AcPolicyType       HpicfGppcv2PolicyType,
            hpicfGppcv2AcPolicyName       HpicfGppcv2PolicyName,
            hpicfGppcv2AcIngressIfList    PortList,
            hpicfGppcv2AcIngressVIDList   OCTET STRING,
            hpicfGppcv2AcEgressIfList     PortList,
            hpicfGppcv2AcEgressVIDList    OCTET STRING,
            hpicfGppcv2AcVIDList          OCTET STRING,
            hpicfGppcv2AcExpPolicy        INTEGER,
            hpicfGppcv2AcExpString        OCTET STRING,
            hpicfGppcv2AcLastErrorCode    INTEGER,
            hpicfGppcv2AcLastErrorString  SnmpAdminString,
            hpicfGppcv2AcRowAdminStatus   INTEGER,
            hpicfGppcv2AcRowStatus        RowStatus,
            hpicfGppcv2AcIngressTunnelList OCTET STRING,
            hpicfGppcv2AcEgressTunnelList OCTET STRING,
            hpicfGppcv2AcVACLEgressVIDList OCTET STRING,
            hpicfGppcv2AcSharedFlag       TruthValue
        }

    hpicfGppcv2AcAppName OBJECT-TYPE
        SYNTAX      SnmpAdminString (SIZE(1..16))
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "Name of the application that last modified this
                    row.  All applications of the same type should use
                    the same name and should use different instance
                    identifiers to identify themselves uniquely.

                    This is a printable string up to 16 bytes in size."
        ::= { hpicfGppcv2AppControlEntry 1 }

    hpicfGppcv2AcAppInstance OBJECT-TYPE
        SYNTAX      SnmpAdminString (SIZE(1..16))
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "Instance identifier of the application.  This is
                    used to distinguish between different instances of
                    the same application.

                    This is a printable string up to 16 bytes in size."
        ::= { hpicfGppcv2AppControlEntry 2 }

   hpicfGppcv2AcPolicyType OBJECT-TYPE
        SYNTAX      HpicfGppcv2PolicyType
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "Type of the policy, used to distinguish policies
                    with the same name." 

        ::= { hpicfGppcv2AppControlEntry 3 }

    hpicfGppcv2AcPolicyName OBJECT-TYPE
        SYNTAX      HpicfGppcv2PolicyName
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "Name of the policy.  Each policy is uniquely
                    identified by its name.  It is possible to apply the
                    same policy in different manners to different
                    interfaces and VLANs.

                    This is a printable string up to 64 characters in
                    size and case sensitive."
        ::= { hpicfGppcv2AppControlEntry 4 }

    hpicfGppcv2AcIngressIfList OBJECT-TYPE
        SYNTAX      PortList
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "List of interfaces to which this policy applies at
                    ingress."
        ::= { hpicfGppcv2AppControlEntry 5 }

    hpicfGppcv2AcIngressVIDList OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE(0..512))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "A string of octets containing one bit per Vlan-Id for
                    VLANS with vlan index values of 0 through 4096.
                    The first octet corresponds to VLANs with
                    vlan index values of 0 through 7, the second
                    octet to VLANs 8 through 15, etc.  The most
                    significant bit of each octet corresponds to the
                    lowest vlan index value in that octet.

                    For each VLAN that this policy should apply to
                    at ingress, the corresponding bit is set to '1'."
        ::= { hpicfGppcv2AppControlEntry 6 }

    hpicfGppcv2AcEgressIfList OBJECT-TYPE
        SYNTAX      PortList
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "List of interfaces to which this policy applies at
                    egress."
        ::= { hpicfGppcv2AppControlEntry 7 }

    hpicfGppcv2AcEgressVIDList OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE(0..512))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "A string of octets containing one bit per Vlan-Id for
                    VLANS with vlan index values of 0 through 4096.
                    The first octet corresponds to VLANs with
                    vlan index values of 0 through 7, the second
                    octet to VLANs 8 through 15, etc.  The most
                    significant bit of each octet corresponds to the
                    lowest vlan index value in that octet.

                    For each VLAN that this policy should apply to
                    at egress, the corresponding bit is set to '1'."
        ::= { hpicfGppcv2AppControlEntry 8 }

    hpicfGppcv2AcVIDList OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE(0..512))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "A string of octets containing one bit per Vlan-Id for
                    VLANS with vlan index values of 0 through 4096.
                    The first octet corresponds to VLANs with
                    vlan index values of 0 through 7, the second
                    octet to VLANs 8 through 15, etc.  The most
                    significant bit of each octet corresponds to the
                    lowest vlan index value in that octet.

                    For each VLAN that this policy should apply to
                    as a VLAN ACL, the corresponding bit is set to '1'."
        ::= { hpicfGppcv2AppControlEntry 9 }

    hpicfGppcv2AcExpPolicy OBJECT-TYPE
        SYNTAX      INTEGER { permanent(1) }
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "Expiration policy.  This indicates whether a policy
                    should expire automatically.

                    'permanent' means a policy should never expire
                    automatically."
        ::= { hpicfGppcv2AppControlEntry 10 }

    hpicfGppcv2AcExpString OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE(0..24))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "Expiration string.  This is used in conjunction with
                    hpicfGppcv2AcExpPolicy to indicate when a policy
                    should expire automatically.

                    The value stored in this object is interpreted
                    differently for different expiration policies.  When
                    the expiration policy is 'permanent', this value is
                    ignored."
        ::= { hpicfGppcv2AppControlEntry 11 }

    hpicfGppcv2AcLastErrorCode OBJECT-TYPE
        SYNTAX      HpicfGppcv2LastErrorCode
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION "Error code of the last error that occurred.  A
                    non-zero value indicates that the last operation
                    performed by this instance of the application on the
                    named policy did not succeed.  A detailed
                    description of the error is available in
                    hpicfGppcv2AcLastErrorString."
        ::= { hpicfGppcv2AppControlEntry 12 }

    hpicfGppcv2AcLastErrorString OBJECT-TYPE
        SYNTAX      SnmpAdminString (SIZE(0..255))
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION "Description of the last error that occurred.  This
                    is a printable ASCII string that describes the error
                    in some detail."
        ::= { hpicfGppcv2AppControlEntry 13 }

    hpicfGppcv2AcRowAdminStatus OBJECT-TYPE
        SYNTAX      INTEGER {
                        enabled(1),
                        disabled(2)
                    }
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "Administrative status of this row. The named policy
                    in this row is applied to the interfaces and/or
                    VLANs by this instance of the application only when
                    the administrative status is enabled.  This is the
                    main on/off switch for the row.  The row status must
                    be active for this switch to have an effect."
        ::= { hpicfGppcv2AppControlEntry 14 }

    hpicfGppcv2AcRowStatus OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "Status of this row.  Row status must be active, and
                    the admin status (see hpicfGppcv2AcRowAdminStatus)
                    must be enabled for this row to be activated."
        ::= { hpicfGppcv2AppControlEntry 15 }

hpicfGppcv2AcIngressTunnelList OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE(0..256))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "A string of octets containing one bit per tunnel-id for
                    tunnels with tunnel values of 0 through 2047.
                    The first octet corresponds to tunnel with values 
                    of 0 through 7, the second
                    octet with values from 8 through 15, etc.  The most
                    significant bit of each octet corresponds to the
                    lowest tunnel value in that octet.

                    For each tunnel that this policy should apply to
                    at ingress, the corresponding bit is set to '1'."
        ::= { hpicfGppcv2AppControlEntry 16}

   hpicfGppcv2AcEgressTunnelList OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE(0..256))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "A string of octets containing one bit per tunnel-id for
                    tunnels with tunnel values of 0 through 2047.
                    The first octet corresponds to tunnel with values 
                    of 0 through 7, the second
                    octet with values from 8 through 15, etc.  The most
                    significant bit of each octet corresponds to the
                    lowest tunnel value in that octet.

                    For each tunnel that this policy should apply to
                    at egress, the corresponding bit is set to '1'."
        ::= { hpicfGppcv2AppControlEntry 17 }

   hpicfGppcv2AcVACLEgressVIDList OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE(0..512))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "A string of octets containing one bit per VLAN-ID for
                    VLANs with VLAN index values of 0 through 4096.
                    The first octet corresponds to VLANs with
                    VLAN index values of 0 through 7, the second
                    octet to VLANs 8 through 15, etc.  The most
                    significant bit of each octet corresponds to the
                    lowest VLAN index value in that octet.

                    For each VLAN that this policy should apply to
                    as a VLAN ACL, the corresponding bit is set to '1'."
        ::= { hpicfGppcv2AppControlEntry 18 }

   hpicfGppcv2AcSharedFlag OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "The shared flag indicates whether to share the 
                    hardware resources for each application of this 
                    ACL on this type of interface where possible."
        ::= { hpicfGppcv2AppControlEntry 19 }

-- ***********************************************
-- Gppcv2 named policy table
-- ***********************************************
    hpicfGppcv2NamedPolicyTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF HpicfGppcv2NamedPolicyEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "The named policy table.  This table lists the name
                    and type of all policies that are applied via 
                    Gppcv2.

                    The following limitation is in place: there can be 
                    no more than one policy action per SNMP pdu."
        ::= { hpicfGppcv2MIB 3 }

    hpicfGppcv2NamedPolicyEntry OBJECT-TYPE
        SYNTAX      HpicfGppcv2NamedPolicyEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "An entry in the named policy table."
        INDEX       { hpicfGppcv2NpPolicyName, hpicfGppcv2NpPolicyType }
        ::= { hpicfGppcv2NamedPolicyTable 1 }

    HpicfGppcv2NamedPolicyEntry ::=
        SEQUENCE {
            hpicfGppcv2NpPolicyName       HpicfGppcv2PolicyName,
            hpicfGppcv2NpPolicyType       HpicfGppcv2PolicyType,
            hpicfGppcv2NpSubType          INTEGER,
            hpicfGppcv2NpReseqStart       Integer32,
            hpicfGppcv2NpReseqIncr        Integer32,
            hpicfGppcv2NpLastSeqNo        Integer32,
            hpicfGppcv2NpLastErrorCode    INTEGER,
            hpicfGppcv2NpLastErrorString  SnmpAdminString,
            hpicfGppcv2NpRowStatus        RowStatus 
        }

    hpicfGppcv2NpPolicyName OBJECT-TYPE
        SYNTAX      HpicfGppcv2PolicyName
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "Name of the policy.  The name of a policy is its
                    unique identification.  It is a printable string
                    in ASCII characters.  It can be up to 64 characters
                    in length and is case sensitive."
        ::= { hpicfGppcv2NamedPolicyEntry 1 }

    hpicfGppcv2NpPolicyType OBJECT-TYPE
        SYNTAX      HpicfGppcv2PolicyType
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "Type of the policy as defined in the 
                     TEXTUAL-CONVENTION."
        ::= { hpicfGppcv2NamedPolicyEntry 2 }

    hpicfGppcv2NpSubType OBJECT-TYPE
        SYNTAX      INTEGER { subtypeNone(1),
                              aclStandard(2),
                              aclExtended(3), 
                              aclConnectionRateFilter(4),
                              aclIdm(5),
                              aclExtendedIpv6(6),
                              policyQos(7),
                              policyMirror(8), 
                              policyPbr(9),
                              policyIpsec(10),
                              aclMacStandard(11),
                              aclMacExtended(12),
                              policyUser(13)}
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "Subtype of the policy.
                    A subtype of 'aclStandard' indicates that the 
                    policy is a standard Access Control List. The policy 
                    is used to permit or deny packets based on source 
                    IPv4 address and subnet only.

                    A subtype of 'aclExtended' indicates that the 
                    policy is an extended Access Control List, an ACL 
                    that filters packets based on source IPv4 address 
                    and subnet, destination IPv4 address and subnet, and 
                    protocol amongst other packet information.

                    A subtype of 'aclConnectionRateFilter' 
                    indicates that the policy is a 
                    connection-rate-filter Access Control List, similar
                    to an ACL-extended.

                    A subtype of 'aclIdm' indicates that the policy is
                    a Identity Driven Management ACL used to filter 
                    traffic based on the source MAC address, protocol 
                    and destination IP information of a packet.

                    A subtype of 'aclExtendedIpv6' indicates that the 
                    policy is an extended Access Control List, an ACL 
                    that filters packets based on source IPv6 address 
                    and subnet, destination IPv6 address and subnet, and 
                    protocol amongst other packet information.

                    A subype of 'policyQos' indicates that the 
                    policy will perform Quality of Service actions on 
                    packets that match statements in the policy's 
                    classes.

                    A subtype of 'policyMirror' indicates that 
                    the policy will perform mirror actions on packets 
                    that match statements in the policy's classes.

                    A subtype of 'policyPbr' indicates that the 
                    policy will perform Policy Based Routing actions 
                    on packets that match statements in the policy's 
                    classes.
                       
                    A subtype of 'policyIpsec' indicates that the
                    policy will perform IPsec actions on the packets
                    that match statements in the policy's classes.
                    
                    A subtype of 'aclMacStandard' indicates that the
                    policy is a standard MAC ACL.  This ACL filters
                    packets based on the source MAC address.

                    A subtype of 'aclMacExtended' indicates that the
                    policy is an extended MAC ACL.  This ACL filters
                    packets based on source MAC address, destination
                    MAC address, ethertype, CoS and VLAN.

                    A subtype of 'policyUser' indicates that the
                    policy will perform per user actions on packets
                    that match statements in the policy's classes."

        ::= { hpicfGppcv2NamedPolicyEntry 3 }

    hpicfGppcv2NpReseqStart OBJECT-TYPE
        SYNTAX      Integer32 (0..2147483647)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "Specifies the starting sequence number for resequence."
        ::= { hpicfGppcv2NamedPolicyEntry 4 }
  
    hpicfGppcv2NpReseqIncr OBJECT-TYPE
        SYNTAX      Integer32 (0..2147483647)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "Specifies the increment value for resequence."
        ::= { hpicfGppcv2NamedPolicyEntry 5 }

    hpicfGppcv2NpLastSeqNo OBJECT-TYPE
        SYNTAX      Integer32 (0..2147483647)
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION "Contains the highest valid sequence number for this policy
                    entry at any point of time."
        ::= { hpicfGppcv2NamedPolicyEntry 6 }

    hpicfGppcv2NpLastErrorCode OBJECT-TYPE
        SYNTAX      HpicfGppcv2LastErrorCode
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION "Error code of the last error that occurred.  A
                    non-zero value indicates that the last operation
                    performed on the ruleEntry of this policy
                    did not succeed.  A detailed
                    description of the error is available in
                    hpicfGppcv2NpLastErrorString."
        ::= { hpicfGppcv2NamedPolicyEntry 7 }

    hpicfGppcv2NpLastErrorString OBJECT-TYPE
        SYNTAX      SnmpAdminString (SIZE(0..255))
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION "Description of the last error that occurred.  This
                    is a printable ASCII string that describes the error
                    in some detail."
        ::= { hpicfGppcv2NamedPolicyEntry 8 }
   
    hpicfGppcv2NpRowStatus OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "Status of this row.  The named policy must be
                    active before rules can be added to it or removed
                    from it.  A newly created policy will remain in
                    notReady state until it is given a valid policy type
                    (see hpicfGppcv2NpPolicyType).

                    A row in the named policy table can not be deleted
                    if the named policy is referenced by a row in the
                    application control table.  The application
                    control entries that refer to this row must be
                    deleted before this row can be deleted."
        ::= { hpicfGppcv2NamedPolicyEntry 9 }

-- ***********************************************
-- Gppcv2 policy rules table
-- ***********************************************
    hpicfGppcv2PolicyRulesTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF HpicfGppcv2PolicyRulesEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "The policy rules table.  A policy can consist of
                    multiple rules.  All of the rules of a policy are
                    listed in this table.  Each rule consists of a
                    string and a numeric identifier - the rule id.

                    The following limitation is in place: there can be 
                    no more than one policy action per SNMP pdu."
        ::= { hpicfGppcv2MIB 4 }

    hpicfGppcv2PolicyRulesEntry OBJECT-TYPE
        SYNTAX      HpicfGppcv2PolicyRulesEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "An entry in the policy rules table."
        INDEX       { hpicfGppcv2NpPolicyName,
                    hpicfGppcv2NpPolicyType,
                    hpicfGppcv2PrRuleId }
        ::= { hpicfGppcv2PolicyRulesTable 1 }

    HpicfGppcv2PolicyRulesEntry ::=
        SEQUENCE {
            hpicfGppcv2PrRuleId     Integer32,
            hpicfGppcv2PrPolicyRule OCTET STRING,
            hpicfGppcv2PrRemark     OCTET STRING,
            hpicfGppcv2PrRowStatus  RowStatus 
        }

    hpicfGppcv2PrRuleId OBJECT-TYPE
        SYNTAX      Integer32  (1..2147483647)
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION "Numeric identifier of the rule.  The rules in a
                    policy are processed sequentially in increasing
                    order of their rule ids.  These numeric ids are
                    generated by the application that creates the
                    policy.  Rules within a policy have unique rule
                    IDs."
        ::= { hpicfGppcv2PolicyRulesEntry 1 }

    hpicfGppcv2PrPolicyRule OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE(0..512))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "Rule string.  This is a string that represents one
                    rule in the policy.  A policy can consist of one or
                    many rules.
                    For details on the format of the rule string please 
                    see: http://h17007.www1.hp.com"
        ::= { hpicfGppcv2PolicyRulesEntry 2 }

    hpicfGppcv2PrRemark OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE(0..128))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "Remark string.  This is a descriptive 
                    text string for a policy rule entry.
                    For details on the format of the rule string please 
                    see: http://h17007.www1.hp.com"
        ::= { hpicfGppcv2PolicyRulesEntry 3 }

    hpicfGppcv2PrRowStatus OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION "Status of this row.  A rule must have an active row
                    status in order to take effect.  Only active rules
                    within the named policy are applied when an
                    application applies the policy.  It is possible to
                    use this row status as an on/off switch for enabling
                    or disabling selected rules within a policy.

                    A newly created rule will remain in notReady state
                    until it is given a valid rule string (see
                    hpicfGppcv2PrPolicyRule)."
        ::= { hpicfGppcv2PolicyRulesEntry 4 }

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

    hpicfGppcv2MIBCompliances  OBJECT IDENTIFIER ::= { hpicfGppcv2Conformance 1 }
    hpicfGppcv2MIBGroups       OBJECT IDENTIFIER ::= { hpicfGppcv2Conformance 2 }

    hpicfGppcv2MIBCompliance MODULE-COMPLIANCE
        STATUS      deprecated

        DESCRIPTION "The compliance statement for HP routers
                    implementing the HP-ICF-Gppcv2-MIB."
        MODULE
            MANDATORY-GROUPS { hpicfGppcv2Group }
            GROUP       hpicfGppcv2Group
            DESCRIPTION "Support for this group is required for HP 
                        routers that implement Gppcv2."
        ::= { hpicfGppcv2MIBCompliances 1 }

    hpicfGppcv2MIBCompliance1 MODULE-COMPLIANCE
        STATUS      current
        DESCRIPTION "The compliance statement for HP routers
                    implementing the HP-ICF-Gppcv2-MIB."
        MODULE
            MANDATORY-GROUPS { hpicfGppcv2Group1 }
            GROUP       hpicfGppcv2Group1
            DESCRIPTION "Support for this group is required for HP 
                        routers that implement Gppcv2."
        ::= { hpicfGppcv2MIBCompliances 2 }


    hpicfGppcv2Group OBJECT-GROUP
        OBJECTS     {
            hpicfGppcv2AcIngressIfList,
            hpicfGppcv2AcIngressVIDList,
            hpicfGppcv2AcEgressIfList,
            hpicfGppcv2AcEgressVIDList,
            hpicfGppcv2AcVIDList,
            hpicfGppcv2AcExpPolicy,
            hpicfGppcv2AcExpString,
            hpicfGppcv2AcLastErrorCode,
            hpicfGppcv2AcLastErrorString,
            hpicfGppcv2AcRowAdminStatus,
            hpicfGppcv2AcRowStatus,
            hpicfGppcv2NpSubType,
            hpicfGppcv2NpReseqStart,       
            hpicfGppcv2NpReseqIncr,        
            hpicfGppcv2NpLastSeqNo,
            hpicfGppcv2NpLastErrorCode,
            hpicfGppcv2NpLastErrorString,
            hpicfGppcv2NpRowStatus,
            hpicfGppcv2PrPolicyRule,
            hpicfGppcv2PrRemark,
            hpicfGppcv2PrRowStatus,
            hpicfGppcv2AcIngressTunnelList,
            hpicfGppcv2AcEgressTunnelList,
            hpicfGppcv2AcVACLEgressVIDList
        }
        STATUS      deprecated
        DESCRIPTION "A collection of HP proprietary objects to support
                    Gppcv2."
        ::= { hpicfGppcv2MIBGroups 1 }

    hpicfGppcv2Group1 OBJECT-GROUP
        OBJECTS     {
            hpicfGppcv2AcIngressIfList,
            hpicfGppcv2AcIngressVIDList,
            hpicfGppcv2AcEgressIfList,
            hpicfGppcv2AcEgressVIDList,
            hpicfGppcv2AcVIDList,
            hpicfGppcv2AcExpPolicy,
            hpicfGppcv2AcExpString,
            hpicfGppcv2AcLastErrorCode,
            hpicfGppcv2AcLastErrorString,
            hpicfGppcv2AcRowAdminStatus,
            hpicfGppcv2AcRowStatus,
            hpicfGppcv2NpSubType,
            hpicfGppcv2NpReseqStart,       
            hpicfGppcv2NpReseqIncr,        
            hpicfGppcv2NpLastSeqNo,
            hpicfGppcv2NpLastErrorCode,
            hpicfGppcv2NpLastErrorString,
            hpicfGppcv2NpRowStatus,
            hpicfGppcv2PrPolicyRule,
            hpicfGppcv2PrRemark,
            hpicfGppcv2PrRowStatus,
            hpicfGppcv2AcIngressTunnelList,
            hpicfGppcv2AcEgressTunnelList,
            hpicfGppcv2AcVACLEgressVIDList,
            hpicfGppcv2AcSharedFlag
        }
        STATUS      current
        DESCRIPTION "A collection of HP proprietary objects to support
                    Gppcv2."
        ::= { hpicfGppcv2MIBGroups 2 }


END
