-- =================================================================
-- Copyright (c) 2004-2013 Hangzhou H3C Tech. Co., Ltd. All rights reserved.
--
-- Description: policy-based routing(PBR) MIB File
-- Reference:
-- Version: V1.1
-- History:
--      V1.0 created by houyefei
--        initial version 2010-12-10
--      V1.1 2012-7-21 modified by houyefei
--         Add h3cPBRLocalPolicy
--         Add h3cPBRMibPolicyNodeTable, h3cPBRMibIfPolicyTable,
--             h3cPBRMibMatchAclTable, h3cPBRMibMatchAclTable,
--             h3cPBRMibApplyNexthopTablel,
--             h3cPBRMibApplyDefaultNexthopTable
--           2012-8-13 modified by houyefei
--         Modify h3cPBRNexthopTrapEnabled
--         Add h3cPBRIPv6NexthopTrapEnabled
-- =================================================================
H3C-PBR-MIB DEFINITIONS ::= BEGIN

IMPORTS
    h3cCommon
        FROM HUAWEI-3COM-OID-MIB
    OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE, Integer32
        FROM SNMPv2-SMI
    TruthValue, DisplayString, RowStatus
        FROM SNMPv2-TC
    ifIndex
        FROM IF-MIB
    InetAddress, InetAddressType
        FROM INET-ADDRESS-MIB;

h3cPBR MODULE-IDENTITY
    LAST-UPDATED
        "201012101558Z"
    ORGANIZATION
        "Hangzhou H3C Technologies Co., Ltd."
    CONTACT-INFO
        "Platform Team Hangzhou H3C Technologies Co., Ltd.
        Hai-Dian District Beijing P.R. China
        http://www.h3c.com
        Zip:100085
        "
    DESCRIPTION
        "This MIB contains objects to manage the configuration and information
        of PBR.  It routes IP packets by user defined policy
        other than normal destination address based routing.
        "
    REVISION
        "201012101558Z"
    DESCRIPTION
        "The initial version of this MIB file."
    ::= { h3cCommon 113 }

-- Objects define
h3cPBRObjects OBJECT IDENTIFIER ::= { h3cPBR 1 }

h3cPBRGlobal OBJECT IDENTIFIER ::= { h3cPBRObjects 1 }

h3cPBRNexthopTrapEnabled OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The value is a global setting only for IPv4 PBR.  If the
         value is set to 'false', the feature is disabled."
    DEFVAL { true }
    ::= { h3cPBRGlobal 1 }

h3cPBRLocalPolicy OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..19))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The value is a global setting.  An existing policy name setting enables
        local PBR for IPv4 packets initiated by the device.
        Only one policy can be applied locally.
        An empty name setting disables the feature.
        "
    ::= { h3cPBRGlobal 2 }

h3cPBRIPv6NexthopTrapEnabled OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The value is a global setting only for IPv6 PBR.  If the
         value is set to 'false', the feature is disabled."
    DEFVAL { true }
    ::= { h3cPBRGlobal 3 }
    
-- PBR trap table
h3cPBRMibTrap OBJECT IDENTIFIER ::= { h3cPBRObjects 2 }

h3cPBRTrapObjects OBJECT IDENTIFIER  ::= { h3cPBRMibTrap 1 }

h3cPBRNexthopAddrType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "Indicating address type of h3cPBRNexthopAddr, which can be IPv4
        or IPv6."
    ::= { h3cPBRTrapObjects 1 }

h3cPBRNexthopAddr OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The involved next hop IP address of trap information."
    ::= { h3cPBRTrapObjects 2 }

h3cPBRTraps OBJECT IDENTIFIER  ::= { h3cPBRMibTrap 2 }

h3cPBRTrapsPrefix OBJECT IDENTIFIER  ::= { h3cPBRTraps 0 }

h3cPBRNexthopFailedTrap NOTIFICATION-TYPE
    OBJECTS
    {
        h3cPBRNexthopAddrType,
        h3cPBRNexthopAddr
    }
    STATUS      current
    DESCRIPTION
        "When the next hop of PBR apply clause became
        unreachable according to routing information, trap is generated
        and is sent to the remote monitoring device."
    ::= { h3cPBRTrapsPrefix 1 }

-- PBR policy node table
h3cPBRTables OBJECT IDENTIFIER ::= { h3cPBR 2 }

h3cPBRMibPolicyNodeTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cPBRMibPolicyNodeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table for PBR nodes.
                "
    ::= { h3cPBRTables 1 }

h3cPBRMibPolicyNodeEntry  OBJECT-TYPE
    SYNTAX      H3cPBRMibPolicyNodeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry for PBR nodes.
                "
    INDEX
    {
            h3cPBRMibPolicyNodeAddrType,
            h3cPBRMibPolicyName,
            h3cPBRMibPolicyNodeId
    }
    ::= { h3cPBRMibPolicyNodeTable 1 }

H3cPBRMibPolicyNodeEntry ::=
    SEQUENCE
    {
            h3cPBRMibPolicyNodeAddrType      InetAddressType,
            h3cPBRMibPolicyName              DisplayString,
            h3cPBRMibPolicyNodeId            Integer32,
            h3cPBRMibPolicyNodeMode          TruthValue,
            h3cPBRMibPolicyNodeRowStatus     RowStatus
    }

h3cPBRMibPolicyNodeAddrType    OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Address type of policy node, which can be IPv4 or IPv6."
    ::= { h3cPBRMibPolicyNodeEntry 1 }

h3cPBRMibPolicyName    OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (1..19))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Policy name of PBR node."
    ::= { h3cPBRMibPolicyNodeEntry 2 }

h3cPBRMibPolicyNodeId   OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Sequence identifier of PBR node."
    ::= { h3cPBRMibPolicyNodeEntry 3 }

h3cPBRMibPolicyNodeMode   OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Mode of PBR node.  If the mode of a node is marked as true,
                the packets that meet the matching rules are processed by
                action rules in the node.  If the mode of a node is marked as
                false, the packets that meet the matching rules are
                sent back to the normal forwarding path."
    DEFVAL { true }
    ::= { h3cPBRMibPolicyNodeEntry 4 }

h3cPBRMibPolicyNodeRowStatus   OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "Operation status of this table entry.
            Three actions are used: active,
            createAndGo, and destroy.
            "
    ::= { h3cPBRMibPolicyNodeEntry 5 }

-- PBR local policy


-- PBR interface policy relation table

h3cPBRMibIfPolicyTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cPBRMibIfPolicyEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table for interfaces being applied with PBR
                 nodes with the same policy name.
                "
    ::= { h3cPBRTables 2 }

h3cPBRMibIfPolicyEntry  OBJECT-TYPE
    SYNTAX      H3cPBRMibIfPolicyEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry for reference relation between interface and policy
                nodes."
    INDEX
    {
            h3cPBRMibPolicyAddressType,
            ifIndex
    }
    ::= { h3cPBRMibIfPolicyTable 1 }

H3cPBRMibIfPolicyEntry ::=
    SEQUENCE
    {
            h3cPBRMibPolicyAddressType   InetAddressType,
            h3cPBRMibAppliedPolicyName   DisplayString,
            h3cPBRMibIfPolicyRowStatus   RowStatus
    }

h3cPBRMibPolicyAddressType    OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION  "Address type of policy node, which can be
                 IPv4 or IPv6."
    ::= { h3cPBRMibIfPolicyEntry 1 }

h3cPBRMibAppliedPolicyName    OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (1..19))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Policy name of PBR nodes."
    ::= { h3cPBRMibIfPolicyEntry 2 }

h3cPBRMibIfPolicyRowStatus  OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "Operation status of this table entry.
            Three actions are used: active,
            createAndGo, and destroy.
            "
    ::= { h3cPBRMibIfPolicyEntry 3 }

-- PBR policy node acl rule table

h3cPBRMibMatchAclTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cPBRMibMatchAclEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table for ACLs being used by a policy node.  Only one ACL
                can be used within a node at most.
                "
    ::= { h3cPBRTables 3 }

h3cPBRMibMatchAclEntry  OBJECT-TYPE
    SYNTAX      H3cPBRMibMatchAclEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry for policy node that uses an ACL group as its
                if-match rule."
    INDEX
    {
            h3cPBRMibPolicyNodeAddrType,
            h3cPBRMibPolicyName,
            h3cPBRMibPolicyNodeId
    }
    ::= { h3cPBRMibMatchAclTable 1 }

H3cPBRMibMatchAclEntry ::=
    SEQUENCE
    {
            h3cPBRMibAclGroupId   Integer32
    }

h3cPBRMibAclGroupId    OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Index of number-acl group.
                 Setting -1 indicates closing this rule.
                "
    ::= { h3cPBRMibMatchAclEntry 1 }

-- PBR policy node apply precedence action table

h3cPBRMibApplyPrecedenceTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cPBRMibApplyPrecedenceEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table for precedence values being used by a policy node.
                 Only one precedence value can be used within a node at most.
                "
    ::= { h3cPBRTables 4 }

h3cPBRMibApplyPrecedenceEntry  OBJECT-TYPE
    SYNTAX      H3cPBRMibApplyPrecedenceEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry for policy node with an action
                 to set IP precedence for matching packets.
                "
    INDEX
    {
            h3cPBRMibPolicyNodeAddrType,
            h3cPBRMibPolicyName,
            h3cPBRMibPolicyNodeId
    }
    ::= { h3cPBRMibApplyPrecedenceTable 1 }

H3cPBRMibApplyPrecedenceEntry ::=
    SEQUENCE
    {
            h3cPBRMibApplyPrecedenceValue Integer32
    }

h3cPBRMibApplyPrecedenceValue    OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Value of precedence being applied on IP header.
                   <0-7>           Value of precedence
                   routine         Specify routine precedence(0)
                   priority        Specify priority precedence(1)
                   immediate       Specify immediate precedence(2)
                   flash           Specify flash precedence(3)
                   flash-override  Specify flash-override precedence(4)
                   critical        Specify critical precedence(5)
                   internet        Specify internetwork control precedence(6)
                   network         Specify network control precedence(7)
                 Setting -1 indicates closing this action.
                "
    ::= { h3cPBRMibApplyPrecedenceEntry 1 }

-- PBR policy node apply next hop action table

h3cPBRMibApplyNexthopTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cPBRMibApplyNexthopEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table for next hop actions being used by a policy node.
                "
    ::= { h3cPBRTables 5 }

h3cPBRMibApplyNexthopEntry  OBJECT-TYPE
    SYNTAX      H3cPBRMibApplyNexthopEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry for policy node with an action
                 to set next hop for matching packets.
                "
    INDEX
    {
            h3cPBRMibPolicyNodeAddrType,
            h3cPBRMibPolicyName,
            h3cPBRMibPolicyNodeId,
            h3cPBRMibApplyNexthopIndex
    }
    ::= { h3cPBRMibApplyNexthopTable 1 }

H3cPBRMibApplyNexthopEntry ::=
    SEQUENCE
    {
            h3cPBRMibApplyNexthopIndex       Integer32,
            h3cPBRMibApplyNexthopVpnName     DisplayString,
            h3cPBRMibApplyNexthopAddressType InetAddressType,
            h3cPBRMibApplyNexthopAddress     InetAddress,
            h3cPBRMibApplyNexthopTrackId     Integer32,
            h3cPBRMibApplyNexthopDirect      TruthValue,
            h3cPBRMibApplyNexthopRowStatus   RowStatus
    }

h3cPBRMibApplyNexthopIndex    OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Index of next hop for the apply next hop action."
    ::= { h3cPBRMibApplyNexthopEntry 1 }

h3cPBRMibApplyNexthopVpnName    OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..31))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Name of VPN instance where apply next hop action is used."
    ::= { h3cPBRMibApplyNexthopEntry 2 }

h3cPBRMibApplyNexthopAddressType     OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Address type of h3cPBRMibApplyNexthopAddress,
                 which can be IPv4 or IPv6."
    ::= { h3cPBRMibApplyNexthopEntry 3 }


h3cPBRMibApplyNexthopAddress     OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Next hop IP address of apply next hop action."
    ::= { h3cPBRMibApplyNexthopEntry 4 }

h3cPBRMibApplyNexthopTrackId     OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Identifier of track object related with next hop.
                 Setting 0 indicates closing this function.
                "
    ::= { h3cPBRMibApplyNexthopEntry 5 }

h3cPBRMibApplyNexthopDirect        OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Direct route attribute of next hop
                according to route information."
    DEFVAL { false }
    ::= { h3cPBRMibApplyNexthopEntry 6 }


h3cPBRMibApplyNexthopRowStatus  OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "Operation status of this table entry.
            Three actions are used: active,
            createAndGo, and destroy.
            "
    ::= { h3cPBRMibApplyNexthopEntry 7 }

-- PBR policy node apply default next hop action table

h3cPBRMibApplyDefaultNexthopTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cPBRMibApplyDefaultNexthopEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "A table for default next hop actions being used by a policy
                node."
    ::= { h3cPBRTables 6 }

h3cPBRMibApplyDefaultNexthopEntry  OBJECT-TYPE
    SYNTAX      H3cPBRMibApplyDefaultNexthopEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "An entry for policy node with an action
                 to set default next hop for matching packets.
                "
    INDEX
    {
            h3cPBRMibPolicyNodeAddrType,
            h3cPBRMibPolicyName,
            h3cPBRMibPolicyNodeId,
            h3cPBRMibApplyDefaultNexthopIndex
    }
    ::= { h3cPBRMibApplyDefaultNexthopTable 1 }

H3cPBRMibApplyDefaultNexthopEntry ::=
    SEQUENCE
    {
            h3cPBRMibApplyDefaultNexthopIndex       Integer32,
            h3cPBRMibApplyDefaultNexthopVpnName     DisplayString,
            h3cPBRMibApplyDefaultNexthopAddressType InetAddressType,
            h3cPBRMibApplyDefaultNexthopAddress     InetAddress,
            h3cPBRMibApplyDefaultNexthopTrackId     Integer32,
            h3cPBRMibApplyDefaultNexthopDirect      TruthValue,
            h3cPBRMibApplyDefaultNexthopRowStatus   RowStatus
    }

h3cPBRMibApplyDefaultNexthopIndex    OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Index of default next hop  for the apply
                default next hop action."
    ::= { h3cPBRMibApplyDefaultNexthopEntry 1 }

h3cPBRMibApplyDefaultNexthopVpnName    OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..31))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Name of VPN instance where apply default next hop action
                is used."
    ::= { h3cPBRMibApplyDefaultNexthopEntry 2 }

h3cPBRMibApplyDefaultNexthopAddressType     OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Address type of h3cPBRMibApplyDefaultNexthopAddress,
                 which can be IPv4 or IPv6."
    ::= { h3cPBRMibApplyDefaultNexthopEntry 3 }


h3cPBRMibApplyDefaultNexthopAddress     OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Next hop IP address of apply default next hop action."
    ::= { h3cPBRMibApplyDefaultNexthopEntry 4 }

h3cPBRMibApplyDefaultNexthopTrackId     OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Identifier of track object related with default next hop.
                 Setting 0 indicates closing this function."
    ::= { h3cPBRMibApplyDefaultNexthopEntry 5 }

h3cPBRMibApplyDefaultNexthopDirect        OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Direct route attribute of apply default next hop
                address according to route information."
    DEFVAL { false }
    ::= { h3cPBRMibApplyDefaultNexthopEntry 6 }


h3cPBRMibApplyDefaultNexthopRowStatus  OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "Operation status of this table entry.
            Three actions are used: active,
            createAndGo, and destroy.
            "
    ::= { h3cPBRMibApplyDefaultNexthopEntry 7 }

END
