-- =================================================================
-- Copyright (c) 2004-2013 Hangzhou H3C Tech. Co., Ltd. All rights reserved.
--
-- Description:protocol vlan mib
-- Reference:IEEE 802.1v clause 8.6.4
-- Version: V1.4
-- History:
--     V1.0 Initial version 2004-08-18
--     V1.1 Updated version 2004-08-31
--     V1.2 2004-10-12 updated by gaolong
--          Change value of H3cvProtocolVlanProtocolType from underscores to hyphens.
--          Remove h3cProtocolVlanVlanId, h3cProtocolVlanProtocolIndex from h3cProtocolVlanProtocolGroup
--          because they are not-accessible objects.
--          Remove h3cProtocolVlanPortIndex, h3cProtocolVlanPortVlanId, h3cProtocolVlanPortProtocolId
--          from h3cProtocolVlanPortGroup because they are not-accessible objects.
--     V1.3 2005-08-31 updated by jiangjun
--          Add h3cDifferentProtocolNumAllPort object to support the maximum
--          number of different protocols that can be applied on all ports.
--          Add enum value (ipv6) to H3cvProtocolVlanProtocolType.
--          Update file format by gaolong.
--     V1.4 2013-04-23 updated by yangxiaoren
--          Add h3cProtocolVlanPortStatus object to support the protocol VLAN
--          status of port applied.
--          Add enum value notConfigured(201) to h3cvProtocolVlanProtocolType.
-- =================================================================
H3C-PROTOCOL-VLAN-MIB DEFINITIONS ::= BEGIN

    IMPORTS
        h3cCommon
            FROM HUAWEI-3COM-OID-MIB
        OBJECT-GROUP, MODULE-COMPLIANCE
            FROM SNMPv2-CONF
        Integer32, OBJECT-TYPE, MODULE-IDENTITY
            FROM SNMPv2-SMI
        RowStatus, TEXTUAL-CONVENTION
            FROM SNMPv2-TC;


    h3cProtocolVlan MODULE-IDENTITY
        LAST-UPDATED "200408311800Z"
        ORGANIZATION
            "Hangzhou H3C Tech. Co., Ltd."
        CONTACT-INFO
            "Platform Team Hangzhou H3C Tech. Co., Ltd.
            Hai-Dian District Beijing P.R. China
            http://www.h3c.com
            Zip:100085
            "
        DESCRIPTION
            "This MIB contains the objects for managing the protocol-based
             VLAN configurations."
        REVISION "200408311938Z"        -- August 31, 2004 at 19:38 GMT
        DESCRIPTION
            "The initial revision of this MIB module ."
        ::= { h3cCommon 16 }

--
-- Textual conventions
--

    H3cvProtocolVlanProtocolType ::= TEXTUAL-CONVENTION
        STATUS current
        DESCRIPTION
            "
            Contains protocols both for Layer 3 and Layer 2.
            "
        SYNTAX INTEGER
        {
            -- Layer 3 protocols
            ip(1),
            ipx(2),
            at(3),
            ipv6(4),

            -- Layer 2 protocols
            mode-llc(101),
            mode-snap(102),
            mode-ethernetii(103),

            -- Protocol no configure
            notConfigure(201)
        }

    H3cvProtocolVlanProtocolSubType ::= TEXTUAL-CONVENTION
        STATUS current
        DESCRIPTION
            "
            combine with H3cvProtocolVlanProtocolType.

            ethernetii(2), llc(3), raw(4), snap(5) are used when the value
            of H3cvProtocolVlanProtocolType is for Layer 3 protocols.
            etype(6) is used when the value of H3cvProtocolVlanProtocolType
            is for Layer 2 protocols.
            For detailed information, see the DESCRIPTION part of
            h3cProtocolVlanProtocolTypeValue.
            "
        SYNTAX INTEGER
        {
            notused(1),        -- this value indicates the object is not used.

            ethernetii(2),
            llc(3),
            raw(4),
            snap(5),

            etype(6)
        }

--
-- Node definitions
--

    h3cProtocolVlanOperate OBJECT IDENTIFIER ::= { h3cProtocolVlan 1 }


    h3cProtocolNumAllVlan OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The maximum number of protocols that can be configured on all VLANs.
            This number may vary with products."
        ::= { h3cProtocolVlanOperate 1 }

    h3cProtocolNumPerVlan OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The maximum number of protocols that can be configured per VLAN.
            This number may vary with products."

        ::= { h3cProtocolVlanOperate 2 }

    h3cProtocolNumAllPort OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The maximum number of protocols that can be applied on all ports.
            This number may vary with products."
        ::= { h3cProtocolVlanOperate 3 }

    h3cProtocolNumPerPort OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The maximum number of protocols that can be applied to each port.
            This number may vary with products."
        ::= { h3cProtocolVlanOperate 4 }

    h3cProtocolVlanTable OBJECT-TYPE
        SYNTAX SEQUENCE OF H3cProtocolVlanEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Protocol-based VLAN configuration table."
        ::= { h3cProtocolVlanOperate 5 }

    h3cProtocolVlanEntry OBJECT-TYPE
        SYNTAX H3cProtocolVlanEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Protocol-based VLAN configuration entry."
        INDEX { h3cProtocolVlanVlanId, h3cProtocolVlanProtocolIndex }
        ::= { h3cProtocolVlanTable 1 }

    H3cProtocolVlanEntry ::=
        SEQUENCE {
            h3cProtocolVlanVlanId
                Integer32,
            h3cProtocolVlanProtocolIndex
                Integer32,
            h3cProtocolVlanProtocolType
                H3cvProtocolVlanProtocolType,
            h3cProtocolVlanProtocolSubType
                H3cvProtocolVlanProtocolSubType,
            h3cProtocolVlanProtocolTypeValue
                OCTET STRING,
            h3cProtocolVlanRowStatus
                RowStatus
         }

    h3cProtocolVlanVlanId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Vlan ID."
        ::= { h3cProtocolVlanEntry 1 }

    h3cProtocolVlanProtocolIndex OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "The protocol index value of a row in this table is in the range
            of [0..h3cProtocolNumPerVlan-1].
            This object may not be provided during creation. In this case,
            a number is assigned by system automatically."
        ::= { h3cProtocolVlanEntry 2 }

    h3cProtocolVlanProtocolType OBJECT-TYPE
        SYNTAX H3cvProtocolVlanProtocolType
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "
            Specify protocol types supported by a protocol-based VLAN.
            Now protocols supported on Layer 3 include ip, ipx, at, ipv6, etc.
            Now protocols supported on Layer 2 include llc, snap, ethernetii, etc.

            For detailed information, see description of
            h3cProtocolVlanProtocolTypeValue.
            "
        ::= { h3cProtocolVlanEntry 3 }

    h3cProtocolVlanProtocolSubType OBJECT-TYPE
        SYNTAX H3cvProtocolVlanProtocolSubType
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "
            See description of h3cProtocolVlanProtocolTypeValue.
            "
        ::= { h3cProtocolVlanEntry 4 }

    h3cProtocolVlanProtocolTypeValue OBJECT-TYPE
        SYNTAX OCTET STRING(SIZE(0..255))
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "
            The value of the configured protocol type.
            By default, semicolon(;) is used as a separator between different
            parts in the content of the object.

            The relationship among h3cProtocolVlanProtocolType, h3cProtocolVlanProtocolSubType
            and h3cProtocolVlanProtocolTypeValue is as follows:

            |----------------------------------------------------------------------------------------------|
            | h3cProtocolVlan- | h3cProtocolVlan- | h3cProtocolVlanProtocolTypeValue                    |
            | ProtocolType      | ProtocolSubType   |                                                      |
            |-------------------|-------------------|------------------------------------------------------|
            | ip                | notused           | notused for create operation                         |
            |-------------------|-------------------|------------------------------------------------------|
            | ipv6              | notused           | notused for create operation                         |
            |-------------------|-------------------|------------------------------------------------------|
            | at                | notused           | notused for create operation                         |
            |-------------------|-------------------|------------------------------------------------------|
            | ipx               | ethernetii        | notused for create operation
            |                   | llc               |                                                      |
            |                   | raw               |                                                      |
            |                   | snap              |                                                      |
            |-------------------|-------------------|------------------------------------------------------|
            | mode-snap         | etype             | hex string like '600', which means 0x0600.           |
            |                   |                   | The range is [0x600..0xffff]                         |
            |-------------------|-------------------|------------------------------------------------------|
            | mode-ethernetii   | etype             | hex string like '600', which means 0x0600.           |
            |                   |                   | The range is [0x600..0xffff]                         |
            |-------------------|-------------------|------------------------------------------------------|
            | mode-llc          | notused           | the sequence of different parts is as follows.       |
            |                   |                   | [dsap value][;ssap value][dsap value;ssap value]     |
            |                   |                   | Both range is [0x00..0xff]                           |
            |                   |                   |                                                      |
            |                   |                   | For example. Suppose value of dsap and ssap are 0x09 |
            |                   |                   | and 0x0a.                                            |
            |                   |                   | If neither dsap or ssap, the string length is zero.  |
            |                   |                   | If dsap provided, the string is '09;' or '09'        |
            |                   |                   | If ssap provided, the value is ';0a'                 |
            |                   |                   | If dsap and ssap provided, the value is '09;0a'      |
            |-------------------|-------------------|------------------------------------------------------|
            "
        ::= { h3cProtocolVlanEntry 5 }

    h3cProtocolVlanRowStatus OBJECT-TYPE
        SYNTAX RowStatus
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "The row status of this table."
        ::= { h3cProtocolVlanEntry 6 }

    h3cProtocolVlanPortTable OBJECT-TYPE
        SYNTAX SEQUENCE OF H3cProtocolVlanPortEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Protocol-based VLAN port information table."
        ::= { h3cProtocolVlanOperate 6 }

    h3cProtocolVlanPortEntry OBJECT-TYPE
        SYNTAX H3cProtocolVlanPortEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Protocol-based VLAN port information entry."
        INDEX { h3cProtocolVlanPortIndex, h3cProtocolVlanPortVlanId,
                h3cProtocolVlanPortProtocolId }
        ::= { h3cProtocolVlanPortTable 1 }

    H3cProtocolVlanPortEntry ::=
        SEQUENCE {
            h3cProtocolVlanPortIndex
                Integer32,
            h3cProtocolVlanPortVlanId
                Integer32,
            h3cProtocolVlanPortProtocolId
                Integer32,
            h3cProtocolVlanPortProtocolType
                H3cvProtocolVlanProtocolType,
            h3cProtocolVlanPortProtocolSubType
                H3cvProtocolVlanProtocolSubType,
            h3cProtocolVlanPortTypeValue
                OCTET STRING,
            h3cProtocolVlanPortRowStatus
                RowStatus,
            h3cProtocolVlanPortStatus
                INTEGER
         }

    h3cProtocolVlanPortIndex OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "
            The maximum number is the total number of ports supported by device.
            "
        REFERENCE
            "h3cLswPortIndex in H3C-LSW-DEV-ADM-MIB"
        ::= { h3cProtocolVlanPortEntry 1 }

    h3cProtocolVlanPortVlanId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "The protocol-based VLAN ID."
        ::= { h3cProtocolVlanPortEntry 2 }

    h3cProtocolVlanPortProtocolId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "The protocol index."
        ::= { h3cProtocolVlanPortEntry 3 }

    h3cProtocolVlanPortProtocolType OBJECT-TYPE
        SYNTAX H3cvProtocolVlanProtocolType
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "See the description of h3cProtocolVlanProtocolType."
        ::= { h3cProtocolVlanPortEntry 4 }

    h3cProtocolVlanPortProtocolSubType OBJECT-TYPE
        SYNTAX H3cvProtocolVlanProtocolSubType
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "See the description of h3cProtocolVlanProtocolSubType."
        ::= { h3cProtocolVlanPortEntry 5 }

    h3cProtocolVlanPortTypeValue OBJECT-TYPE
        SYNTAX OCTET STRING
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "See the description of h3cProtocolVlanProtocolTypeValue."
        ::= { h3cProtocolVlanPortEntry 6 }

    h3cProtocolVlanPortRowStatus OBJECT-TYPE
        SYNTAX RowStatus
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "The row status of this table."
        ::= { h3cProtocolVlanPortEntry 7 }

    h3cProtocolVlanPortStatus OBJECT-TYPE
        SYNTAX  INTEGER
        {
            active   (1),
            inactive (2)
        }
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The protocol VLAN status on the port.  The value is active only
            when h3cProtocolVlanPortProtocolId has the corresponding entry in
            h3cProtocolVlanTable, the port link type is hybrid, and the VLAN is
            allowed by the port.

            active:   protocol VLAN has been applied on the port.
            inactive: protocol VLAN is not applied on the port."
        ::= { h3cProtocolVlanPortEntry 8 }

    h3cDifferentProtocolNumAllPort OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The maximum number of different protocols that can be applied to all ports."
        ::= { h3cProtocolVlanOperate 7 }

    h3cProtocolVlanConformance OBJECT IDENTIFIER ::= { h3cProtocolVlan 2 }


    h3cProtocolVlanCompliances OBJECT IDENTIFIER ::= { h3cProtocolVlanConformance 1 }


    h3cProtocolVlanCompliance MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION
            "The compliance statement for protocol VLAN MIB."
        MODULE -- this module
        MANDATORY-GROUPS {  h3cProtocolVlanOperateGroup,
                            h3cProtocolVlanProtocolGroup,
                            h3cProtocolVlanPortGroup
                         }
        ::= { h3cProtocolVlanCompliances 1 }


    h3cProtocolVlanGroups OBJECT IDENTIFIER ::= { h3cProtocolVlanConformance 2 }

    h3cProtocolVlanOperateGroup OBJECT-GROUP
        OBJECTS { h3cProtocolNumAllVlan, h3cProtocolNumPerVlan,
                  h3cProtocolNumAllPort, h3cProtocolNumPerPort,
                  h3cDifferentProtocolNumAllPort
                }
        STATUS current
        DESCRIPTION
            "A group of scalar objects describing the maximum number."
        ::= { h3cProtocolVlanGroups 1 }

    h3cProtocolVlanProtocolGroup OBJECT-GROUP
        OBJECTS { h3cProtocolVlanProtocolType, h3cProtocolVlanProtocolSubType,
                  h3cProtocolVlanProtocolTypeValue, h3cProtocolVlanRowStatus
                }
        STATUS current
        DESCRIPTION
            "A group of protocol VLAN protocol."
        ::= { h3cProtocolVlanGroups 2 }

    h3cProtocolVlanPortGroup OBJECT-GROUP
        OBJECTS { h3cProtocolVlanPortProtocolType, h3cProtocolVlanPortProtocolSubType,
                  h3cProtocolVlanPortTypeValue, h3cProtocolVlanPortRowStatus
                }
        STATUS current
        DESCRIPTION
            "A group of protocol VLAN port."
        ::= { h3cProtocolVlanGroups 3 }

END
