-- =================================================================
-- Copyright (C) 2004 by  HUAWEI 3Com TECHNOLOGIES. All rights reserved.
--
-- Description:protocol vlan mib
-- Reference:IEEE 802.1v clause 8.6.4
-- Version: V1.3
-- 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.
-- =================================================================
A3COM-HUAWEI-PROTOCOL-VLAN-MIB DEFINITIONS ::= BEGIN

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


    h3cProtocolVlan MODULE-IDENTITY
        LAST-UPDATED "200408311800Z"
        ORGANIZATION
            "Huawei 3Com Technology Co., Ltd."
        CONTACT-INFO
            "Platform Team Huawei 3Com Technology Co., Ltd.
            Hai-Dian District Beijing P.R. China
            http://www.huawei-3com.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 layer3 and layer2.
            "
        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)
        }

    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.
            Detail information refers to 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 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 are ip, ipx, at, ipv6, etc.
            Now protocols supported on layer 2 are llc, snap, ethernetii, etc.

            For details, 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 seperator 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          | IP address with subnet mask in dotted decimal format.|
            |                  |                  | such as 10.10.11.12;255.255.0.0. By default,subnet   |
            |                  |                  | mask is 255.255.255.0 .                              |
            |------------------|------------------|------------------------------------------------------|
            | ipv6             | notused          | Zero length string                                   |
            |------------------|------------------|------------------------------------------------------|
            | at               | notused          | Zero length string                                   |
            |------------------|------------------|------------------------------------------------------|
            | ipx              | ethernetii       | Zero length string                                   |
            |                  | llc              |                                                      |
            |                  | raw              |                                                      |
            |                  | snap             |                                                      |
            |------------------|------------------|------------------------------------------------------|
            | mode-snap        | notused          | zero length string                                   |
            |                  |------------------|------------------------------------------------------|
            |                  | etype            | hex string like '600', which means 0x0600.           |
            |                  |                  | The range is [0x600..0xffff]                         |
            |------------------|------------------|------------------------------------------------------|
            | mode-ethernetii  | notused          | zero length string                                   |
            |                  |------------------|------------------------------------------------------|
            |                  | 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.

            h3cProtocolVlanPortVlanId refers to h3cProtocolVlanVlanId
            in h3cProtocolVlanTable.

            h3cProtocolVlanPortProtocolId refers to h3cProtocolVlanProtocolIndex
            in h3cProtocolVlanTable. So if the value of h3cProtocolVlanPortVlanId
            and h3cProtocolVlanPortProtocolId have no corresponding entry in
            h3cProtocolVlanTable, set operation for this table will fail.

            Only hybrid ports are supported by this table.
            Only untagged packets are supported by this 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
         }

    h3cProtocolVlanPortIndex OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "
            The maximum number is the total number of the ports supported by device.
            "
        REFERENCE
            "hwLswPortIndex in A3COM-HUAWEI-DEVICE-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
            "Refer to the description of h3cProtocolVlanProtocolType."
        ::= { h3cProtocolVlanPortEntry 4 }

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

    h3cProtocolVlanPortTypeValue OBJECT-TYPE
        SYNTAX OCTET STRING
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "Refer to 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 }

    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
