-- ==================================================================
-- Copyright (c) 2010-2013 Hewlett-Packard Development Company, L.P.
--
-- Description: 802.1Q-in-Q and BPDU Tunnel MIB
-- Reference:
-- Version: V1.1
-- History:
-- V1.0 2006-03-10 Initial version Created by Baiping Chen
-- V1.1 2007/10/15 modified by wangjinwang
--   Add hpnicfQinQServiceTPIDValue and hpnicfQinQCustomerTPIDValue
--   to hpnicfQinQGlobalConfigGroup.
--   Add hpnicfQinQIfServiceTPIDValue hpnicfQinQIfCustomerTPIDValue
--   hpnicfQinQIfUplinkSwitch and hpnicfQinQIfDownlinkSwitch
--   to hpnicfQinQIfConfigTable.
-- ==================================================================
HPN-ICF-QINQ-MIB DEFINITIONS ::= BEGIN
    IMPORTS
        RowStatus, TEXTUAL-CONVENTION
            FROM SNMPv2-TC
        MODULE-IDENTITY, OBJECT-TYPE, Integer32
            FROM SNMPv2-SMI
        ifIndex
            FROM RFC1213-MIB
        hpnicfCommon
            FROM HPN-ICF-OID-MIB;

-- ==================================================================
--
-- module identity part
--
-- ==================================================================
    hpnicfQINQ MODULE-IDENTITY
        LAST-UPDATED
            "200603100000Z"
        ORGANIZATION
            ""
        CONTACT-INFO
            ""
        DESCRIPTION
            "802.1Q-in-Q MIB"
        REVISION
            "200603100000Z"
        DESCRIPTION
            "The initial version of this MIB."
        ::= { hpnicfCommon 69 }


-- ==================================================================
--
-- Textual Conventions
--
-- ==================================================================
        HpnicfQinQSwitchState ::= TEXTUAL-CONVENTION
        STATUS      current
        DESCRIPTION
            "An enumerated value which indicates the state of
            switch."
        SYNTAX  INTEGER
        {
            enabled(1),
            disabled(2)
        }


-- ==================================================================
--
-- =====================object definition begin======================
--
-- ==================================================================
    hpnicfQinQMibObject      OBJECT IDENTIFIER ::= { hpnicfQINQ 1 }

    hpnicfQinQGlobalConfigGroup OBJECT IDENTIFIER ::= { hpnicfQinQMibObject 1 }

    hpnicfQinQBpduTunnelSwitch  OBJECT-TYPE
        SYNTAX HpnicfQinQSwitchState
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "The global configuration switch of BPDU 802.1q tunnel.
            If global configuration is disabled, BPDU tunnel function
            will be disabled despite of the corresponding configuration
            of interface. BPDU tunnel function of a certain interface
            would work only if the global and interface's switch are
            both enabled."
        DEFVAL { enabled }
        ::= { hpnicfQinQGlobalConfigGroup 1 }

    hpnicfQinQEthernetTypeValue  OBJECT-TYPE
        SYNTAX      Integer32 (1..65535)
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "Ethernet protocol type configuring for a global value.
            The ethernet protocol type is also the TPID(Tag Protocol
            Identity) field of a VLAN tag described in 802.1q
            document. This value can be also configured for an
            individual interface or VLAN. The node that configure
            this value for a single interface is hpnicfQinQIfEthernetType,
            whose priority is higher than hpnicfQinQEthernetTypeValue.
            That means, if the value configured for a interface is
            different from the global value, the switch will select
            the configuration of the interface and ignore the global
            configuration. The ethernet protocol type of node
            hpnicfQinQVidEthernetType that configured for a VLAN has
            the highest priority."
        DEFVAL { 33024 }
        ::= { hpnicfQinQGlobalConfigGroup 2 }

    hpnicfQinQServiceTPIDValue  OBJECT-TYPE
        SYNTAX      Integer32 (1..65535)
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "Ethernet protocol type configured for service VLAN tags
            globally.  The ethernet protocol type is also the TPID(Tag
            Protocol Identity) field of a VLAN tag described in 802.1q
            document.  This value can be also configured for an
            individual interface.  The node that configure this
            value for a single interface is hpnicfQinQIfServiceTPIDValue,
            whose priority is higher than hpnicfQinQServiceTPIDValue.
            That means, if the value configured for a interface is
            different from the global value, the switch will select
            the configuration of the interface and ignore the global
            configuration."
        ::= { hpnicfQinQGlobalConfigGroup 3 }

    hpnicfQinQCustomerTPIDValue  OBJECT-TYPE
        SYNTAX      Integer32 (1..65535)
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "Ethernet protocol type configured for customer VLAN tags
            globally.  The ethernet protocol type is also the TPID(Tag
            Protocol Identity) field of a VLAN tag described in 802.1q
            document.  This value can be also configured for an
            individual interface.  The node that configure this
            value for a single interface is hpnicfQinQIfCustomerTPIDValue,
            whose priority is higher than hpnicfQinQCustomerTPIDValue.
            That means, if the value configured for a interface is
            different from the global value, the switch will select
            the configuration of the interface and ignore the global
            configuration."
        ::= { hpnicfQinQGlobalConfigGroup 4 }

    hpnicfQinQBpduTunnelTable  OBJECT-TYPE
        SYNTAX      SEQUENCE OF HpnicfQinQBpduTunnelEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A table for configuring 802.1q BPDU tunnel function
            for interfaces."
        ::= { hpnicfQinQMibObject 2 }

    hpnicfQinQBpduTunnelEntry  OBJECT-TYPE
        SYNTAX      HpnicfQinQBpduTunnelEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "An entry for configuring 802.1q BPDU tunnel function
            for interfaces."
        INDEX
        {
            ifIndex,
            hpnicfQinQProtocolIndex
        }
        ::= { hpnicfQinQBpduTunnelTable 1 }

    HpnicfQinQBpduTunnelEntry ::=
        SEQUENCE
        {
            hpnicfQinQProtocolIndex INTEGER,
            hpnicfQinQBpduRowStatus RowStatus
        }

    hpnicfQinQProtocolIndex  OBJECT-TYPE
        SYNTAX      INTEGER
        {
            bpdu(1),
            stp(2),
            gmosaic(3),
            igmp(4)
        }
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "The index of protocol on which the BPDU tunnel state
            will be set. 'bpdu' represents status of BPDU tunnel.
            'stp' represents STP tunnel. 'gmosaic' represents GMOSAIC
            tunnel. 'igmp' represents IGMP tunnel. STP/GMOSAIC/IGMP
            tunnel will start to work only if BPDU tunnel and
            STP/GMOSAIC/IGMP tunnel are both enabled."
        ::= { hpnicfQinQBpduTunnelEntry 1 }

    hpnicfQinQBpduRowStatus     OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Operation status of this table entry."
        ::= { hpnicfQinQBpduTunnelEntry 2 }


    hpnicfQinQPriorityRemarkTable  OBJECT-TYPE
        SYNTAX      SEQUENCE OF HpnicfQinQPriorityRemarkEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A table for configuring priority field in 802.1Q-in-Q
            outer VLAN tag for interfaces. This feature uses the
            priority of an inner VLAN tag to remark the priority
            of an outer VLAN tag."
        ::= { hpnicfQinQMibObject 3 }

    hpnicfQinQPriorityRemarkEntry  OBJECT-TYPE
        SYNTAX      HpnicfQinQPriorityRemarkEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "An entry for configuring priority remark function for
            interfaces."
        INDEX
        {
            ifIndex,
            hpnicfQinQPriorityValue
        }
        ::= { hpnicfQinQPriorityRemarkTable 1 }

    HpnicfQinQPriorityRemarkEntry ::=
        SEQUENCE
        {
            hpnicfQinQPriorityValue Integer32,
            hpnicfQinQPriorityRemarkValue Integer32,
            hpnicfQinQPriorityRowStatus RowStatus
        }

    hpnicfQinQPriorityValue  OBJECT-TYPE
        SYNTAX      Integer32 (1..8)
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "The priority value in inner VLAN tag. Since the priority
            range is from 0 to 7, yet the index range is from 1 to 8.
            Thus, the actual priority value equals to the value that
            subtracts 1 from corresponding index value."
        ::= { hpnicfQinQPriorityRemarkEntry 1 }

    hpnicfQinQPriorityRemarkValue  OBJECT-TYPE
        SYNTAX      Integer32 (0..7)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The new priority value used to fill outer tag."
        ::= { hpnicfQinQPriorityRemarkEntry 2 }

    hpnicfQinQPriorityRowStatus     OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Operation status of this table entry."
        ::= { hpnicfQinQPriorityRemarkEntry 3 }


    hpnicfQinQVidTable  OBJECT-TYPE
        SYNTAX      SEQUENCE OF HpnicfQinQVidEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A table for configuring VLAN ID of the 802.1Q-in-Q
            interfaces."
        ::= { hpnicfQinQMibObject 4 }

    hpnicfQinQVidEntry  OBJECT-TYPE
        SYNTAX      HpnicfQinQVidEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "An entry for configuring VLAN ID of the 802.1Q-in-Q
            interfaces."
        INDEX
        {
            ifIndex,
            hpnicfQinQVlanID
        }
        ::= { hpnicfQinQVidTable 1 }

    HpnicfQinQVidEntry ::=
        SEQUENCE
        {
            hpnicfQinQVlanID Integer32,
            hpnicfQinQInboundVidListLow OCTET STRING,
            hpnicfQinQInboundVidListHigh OCTET STRING,
            hpnicfQinQVidEthernetType Integer32,
            hpnicfQinQVidRowStatus RowStatus
        }

    hpnicfQinQVlanID    OBJECT-TYPE
        SYNTAX      Integer32 (1..4094)
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "VLAN ID"
        ::= { hpnicfQinQVidEntry 1 }

    hpnicfQinQInboundVidListLow    OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE(256))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The inbound VLAN IDs which need 802.1Q-in-Q processing.
            The VLAN ID range, described by bitmap, is from 1 to
            2048. The length of bitmap is 256 in bytes. Each octet
            within this value specifies a set of eight VLANs, with
            the first octet specifying VLANs 1 through 8, the second
            octet specifying VLANs 9 through 16, etc. Within each
            octet, the most significant bit represents the highest
            numbered VLAN, and the least significant bit represents
            the lowest numbered VLAN."
        ::= { hpnicfQinQVidEntry 2 }

    hpnicfQinQInboundVidListHigh    OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE(256))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The inbound VLAN IDs which need 802.1Q-in-Q processing.
            The VLAN ID range, described by bitmap, is from 2049 to
            4094. The length of bitmap is 256 in bytes. Each octet
            within this value specifies a set of eight VLANs, with
            the first octet specifying VLANs 2049 through 2056, the
            second octet specifying VLANs 2057 through 2064, etc.
            Within each octet, the most significant bit represents
            the highest numbered VLAN, and the least significant bit
            represents the lowest numbered VLAN."
        ::= { hpnicfQinQVidEntry 3 }

    hpnicfQinQVidEthernetType   OBJECT-TYPE
        SYNTAX      Integer32 (1..65535)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Ethernet protocol type configuring for a VLAN."
        DEFVAL { 33024 }
        ::= { hpnicfQinQVidEntry 4 }

    hpnicfQinQVidRowStatus  OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Operation status of this table entry."
        ::= { hpnicfQinQVidEntry 5 }


    hpnicfQinQVidSwapTable  OBJECT-TYPE
        SYNTAX      SEQUENCE OF HpnicfQinQVidSwapEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A table for configuring 802.1Q-in-Q inner VLAN ID
            swapping function for interfaces."
        ::= { hpnicfQinQMibObject 5 }

    hpnicfQinQVidSwapEntry  OBJECT-TYPE
        SYNTAX      HpnicfQinQVidSwapEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "An entry for configuring 802.1Q-in-Q inner VLAN ID
            swapping function for interfaces."
        INDEX
        {
            ifIndex,
            hpnicfQinQVlanID,
            hpnicfQinQVidSwapOld
        }
        ::= { hpnicfQinQVidSwapTable 1 }

    HpnicfQinQVidSwapEntry ::=
        SEQUENCE
        {
            hpnicfQinQVidSwapOld Integer32,
            hpnicfQinQVidSwapNew Integer32,
            hpnicfQinQVidSwapRowStatus RowStatus
        }

    hpnicfQinQVidSwapOld    OBJECT-TYPE
        SYNTAX      Integer32 (1..4094)
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "The old VLAN ID of original 802.1Q packets."
        ::= { hpnicfQinQVidSwapEntry 1 }

    hpnicfQinQVidSwapNew    OBJECT-TYPE
        SYNTAX      Integer32 (1..4094)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The new VLAN ID of original 802.1Q packets."
        ::= { hpnicfQinQVidSwapEntry 2 }

    hpnicfQinQVidSwapRowStatus     OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Operation status of this table entry."
        ::= { hpnicfQinQVidSwapEntry 3 }


    hpnicfQinQPrioritySwapTable  OBJECT-TYPE
        SYNTAX      SEQUENCE OF HpnicfQinQPrioritySwapEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A table for configuring 802.1Q-in-Q inner VLAN priority
            swapping function for interfaces. Using this function,
            the priority of inner VLAN tag can be modified."
        ::= { hpnicfQinQMibObject 6 }

    hpnicfQinQPrioritySwapEntry  OBJECT-TYPE
        SYNTAX      HpnicfQinQPrioritySwapEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "An entry for configuring 802.1Q-in-Q inner VLAN
            priority swapping function for interfaces."
        INDEX
        {
            ifIndex,
            hpnicfQinQVlanID,
            hpnicfQinQPrioritySwapOld
        }
        ::= { hpnicfQinQPrioritySwapTable 1 }

    HpnicfQinQPrioritySwapEntry ::=
        SEQUENCE
        {
            hpnicfQinQPrioritySwapOld Integer32,
            hpnicfQinQPrioritySwapNew Integer32,
            hpnicfQinQPrioritySwapRowStatus RowStatus
        }

    hpnicfQinQPrioritySwapOld    OBJECT-TYPE
        SYNTAX      Integer32 (1..8)
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "The old priority of original 802.1Q packets. It is the
            priority of inner VLAN tag. Since the VLAN priority range
            is from 0 to 7, yet the index range is from 1 to 8. Thus,
            the actual priority value equals to the value that
            subtracts 1 from corresponding index value."
        ::= { hpnicfQinQPrioritySwapEntry 1 }

    hpnicfQinQPrioritySwapNew    OBJECT-TYPE
        SYNTAX      Integer32 (0..7)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The new priority of original 802.1Q packets. It is the
            priority of inner VLAN tag after swapped."
        ::= { hpnicfQinQPrioritySwapEntry 2 }

    hpnicfQinQPrioritySwapRowStatus     OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Operation status of this table entry."
        ::= { hpnicfQinQPrioritySwapEntry 3 }


    hpnicfQinQIfConfigTable  OBJECT-TYPE
        SYNTAX      SEQUENCE OF HpnicfQinQIfConfigEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A table for configuring 802.1Q-in-Q functions for
            interfaces."
        ::= { hpnicfQinQMibObject 7 }

    hpnicfQinQIfConfigEntry  OBJECT-TYPE
        SYNTAX      HpnicfQinQIfConfigEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "An entry for configuring 802.1Q-in-Q functions for
            interfaces."
        INDEX
        {
            ifIndex
        }
        ::= { hpnicfQinQIfConfigTable 1 }

    HpnicfQinQIfConfigEntry ::=
        SEQUENCE
        {
            hpnicfQinQIfEthernetType Integer32,
            hpnicfQinQIfSwitch HpnicfQinQSwitchState,
            hpnicfQinQIfRowStatus RowStatus,
            hpnicfQinQIfServiceTPIDValue Integer32,
            hpnicfQinQIfCustomerTPIDValue Integer32,
            hpnicfQinQIfUplinkSwitch HpnicfQinQSwitchState,
            hpnicfQinQIfDownlinkSwitch HpnicfQinQSwitchState
        }

    hpnicfQinQIfEthernetType    OBJECT-TYPE
        SYNTAX      Integer32 (1..65535)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Ethernet protocol type configuring for an interface."
        DEFVAL { 33024 }
        ::= { hpnicfQinQIfConfigEntry 1 }

    hpnicfQinQIfSwitch    OBJECT-TYPE
        SYNTAX      HpnicfQinQSwitchState
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Switch of 802.1Q-in-Q functions configuring for an
            interface."
        DEFVAL { disabled }
        ::= { hpnicfQinQIfConfigEntry 2 }

    hpnicfQinQIfRowStatus    OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Operation status of this table entry."
        ::= { hpnicfQinQIfConfigEntry 3 }

    hpnicfQinQIfServiceTPIDValue    OBJECT-TYPE
        SYNTAX      Integer32 (1..65535)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Service TPID value configured for an interface."
        ::= { hpnicfQinQIfConfigEntry 4 }

    hpnicfQinQIfCustomerTPIDValue    OBJECT-TYPE
        SYNTAX      Integer32 (1..65535)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Customer TPID value configured for an interface."
        ::= { hpnicfQinQIfConfigEntry 5 }

    hpnicfQinQIfUplinkSwitch    OBJECT-TYPE
        SYNTAX      HpnicfQinQSwitchState
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Switch of the uplink 802.1Q-in-Q function
            for an interface."
        DEFVAL { disabled }
        ::= { hpnicfQinQIfConfigEntry 6 }

    hpnicfQinQIfDownlinkSwitch    OBJECT-TYPE
        SYNTAX      HpnicfQinQSwitchState
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Switch of the downlink 802.1Q-in-Q function
            for an interface."
        DEFVAL { disabled }
        ::= { hpnicfQinQIfConfigEntry 7 }

END
