-- =================================================================
-- Copyright (c) 2010-2013 Hewlett-Packard Development Company, L.P.
--
-- 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 HpnicfvProtocolVlanProtocolType from underscores to hyphens.
--          Remove hpnicfProtocolVlanVlanId, hpnicfProtocolVlanProtocolIndex from hpnicfProtocolVlanProtocolGroup
--          because they are not-accessible objects.
--          Remove hpnicfProtocolVlanPortIndex, hpnicfProtocolVlanPortVlanId, hpnicfProtocolVlanPortProtocolId
--          from hpnicfProtocolVlanPortGroup because they are not-accessible objects.
--     V1.3 2005-08-31 updated by jiangjun
--          Add hpnicfDifferentProtocolNumAllPort object to support the maximum
--          number of different protocols that can be applied on all ports.
--          Add enum value (ipv6) to HpnicfvProtocolVlanProtocolType.
--          Update file format by gaolong.
--     V1.4 2013-04-23 updated by yangxiaoren
--          Add hpnicfProtocolVlanPortStatus object to support the protocol VLAN
--          status of port applied.
--          Add enum value notConfigured(201) to hpnicfvProtocolVlanProtocolType.
-- =================================================================
HPN-ICF-PROTOCOL-VLAN-MIB DEFINITIONS ::= BEGIN

    IMPORTS
        hpnicfCommon
            FROM HPN-ICF-OID-MIB
        OBJECT-GROUP, MODULE-COMPLIANCE
            FROM SNMPv2-CONF
        Integer32, OBJECT-TYPE, MODULE-IDENTITY
            FROM SNMPv2-SMI
        RowStatus, TEXTUAL-CONVENTION
            FROM SNMPv2-TC;


    hpnicfProtocolVlan MODULE-IDENTITY
        LAST-UPDATED "200408311800Z"
        ORGANIZATION
            ""
        CONTACT-INFO
            ""
        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 ."
        ::= { hpnicfCommon 16 }

--
-- Textual conventions
--

    HpnicfvProtocolVlanProtocolType ::= 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)
        }

    HpnicfvProtocolVlanProtocolSubType ::= TEXTUAL-CONVENTION
        STATUS current
        DESCRIPTION
            "
            combine with HpnicfvProtocolVlanProtocolType.

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

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

            etype(6)
        }

--
-- Node definitions
--

    hpnicfProtocolVlanOperate OBJECT IDENTIFIER ::= { hpnicfProtocolVlan 1 }


    hpnicfProtocolNumAllVlan 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."
        ::= { hpnicfProtocolVlanOperate 1 }

    hpnicfProtocolNumPerVlan 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."

        ::= { hpnicfProtocolVlanOperate 2 }

    hpnicfProtocolNumAllPort 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."
        ::= { hpnicfProtocolVlanOperate 3 }

    hpnicfProtocolNumPerPort 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."
        ::= { hpnicfProtocolVlanOperate 4 }

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

    hpnicfProtocolVlanEntry OBJECT-TYPE
        SYNTAX HpnicfProtocolVlanEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Protocol-based VLAN configuration entry."
        INDEX { hpnicfProtocolVlanVlanId, hpnicfProtocolVlanProtocolIndex }
        ::= { hpnicfProtocolVlanTable 1 }

    HpnicfProtocolVlanEntry ::=
        SEQUENCE {
            hpnicfProtocolVlanVlanId
                Integer32,
            hpnicfProtocolVlanProtocolIndex
                Integer32,
            hpnicfProtocolVlanProtocolType
                HpnicfvProtocolVlanProtocolType,
            hpnicfProtocolVlanProtocolSubType
                HpnicfvProtocolVlanProtocolSubType,
            hpnicfProtocolVlanProtocolTypeValue
                OCTET STRING,
            hpnicfProtocolVlanRowStatus
                RowStatus
         }

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

    hpnicfProtocolVlanProtocolIndex 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..hpnicfProtocolNumPerVlan-1].
            This object may not be provided during creation. In this case,
            a number is assigned by system automatically."
        ::= { hpnicfProtocolVlanEntry 2 }

    hpnicfProtocolVlanProtocolType OBJECT-TYPE
        SYNTAX HpnicfvProtocolVlanProtocolType
        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
            hpnicfProtocolVlanProtocolTypeValue.
            "
        ::= { hpnicfProtocolVlanEntry 3 }

    hpnicfProtocolVlanProtocolSubType OBJECT-TYPE
        SYNTAX HpnicfvProtocolVlanProtocolSubType
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "
            See description of hpnicfProtocolVlanProtocolTypeValue.
            "
        ::= { hpnicfProtocolVlanEntry 4 }

    hpnicfProtocolVlanProtocolTypeValue 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 hpnicfProtocolVlanProtocolType, hpnicfProtocolVlanProtocolSubType
            and hpnicfProtocolVlanProtocolTypeValue is as follows:

            |----------------------------------------------------------------------------------------------|
            | hpnicfProtocolVlan- | hpnicfProtocolVlan- | hpnicfProtocolVlanProtocolTypeValue                    |
            | 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'      |
            |-------------------|-------------------|------------------------------------------------------|
            "
        ::= { hpnicfProtocolVlanEntry 5 }

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

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

    hpnicfProtocolVlanPortEntry OBJECT-TYPE
        SYNTAX HpnicfProtocolVlanPortEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Protocol-based VLAN port information entry."
        INDEX { hpnicfProtocolVlanPortIndex, hpnicfProtocolVlanPortVlanId,
                hpnicfProtocolVlanPortProtocolId }
        ::= { hpnicfProtocolVlanPortTable 1 }

    HpnicfProtocolVlanPortEntry ::=
        SEQUENCE {
            hpnicfProtocolVlanPortIndex
                Integer32,
            hpnicfProtocolVlanPortVlanId
                Integer32,
            hpnicfProtocolVlanPortProtocolId
                Integer32,
            hpnicfProtocolVlanPortProtocolType
                HpnicfvProtocolVlanProtocolType,
            hpnicfProtocolVlanPortProtocolSubType
                HpnicfvProtocolVlanProtocolSubType,
            hpnicfProtocolVlanPortTypeValue
                OCTET STRING,
            hpnicfProtocolVlanPortRowStatus
                RowStatus,
            hpnicfProtocolVlanPortStatus
                INTEGER
         }

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

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

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

    hpnicfProtocolVlanPortProtocolType OBJECT-TYPE
        SYNTAX HpnicfvProtocolVlanProtocolType
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "See the description of hpnicfProtocolVlanProtocolType."
        ::= { hpnicfProtocolVlanPortEntry 4 }

    hpnicfProtocolVlanPortProtocolSubType OBJECT-TYPE
        SYNTAX HpnicfvProtocolVlanProtocolSubType
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "See the description of hpnicfProtocolVlanProtocolSubType."
        ::= { hpnicfProtocolVlanPortEntry 5 }

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

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

    hpnicfProtocolVlanPortStatus 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 hpnicfProtocolVlanPortProtocolId has the corresponding entry in
            hpnicfProtocolVlanTable, 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."
        ::= { hpnicfProtocolVlanPortEntry 8 }

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

    hpnicfProtocolVlanConformance OBJECT IDENTIFIER ::= { hpnicfProtocolVlan 2 }


    hpnicfProtocolVlanCompliances OBJECT IDENTIFIER ::= { hpnicfProtocolVlanConformance 1 }


    hpnicfProtocolVlanCompliance MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION
            "The compliance statement for protocol VLAN MIB."
        MODULE -- this module
        MANDATORY-GROUPS {  hpnicfProtocolVlanOperateGroup,
                            hpnicfProtocolVlanProtocolGroup,
                            hpnicfProtocolVlanPortGroup
                         }
        ::= { hpnicfProtocolVlanCompliances 1 }


    hpnicfProtocolVlanGroups OBJECT IDENTIFIER ::= { hpnicfProtocolVlanConformance 2 }

    hpnicfProtocolVlanOperateGroup OBJECT-GROUP
        OBJECTS { hpnicfProtocolNumAllVlan, hpnicfProtocolNumPerVlan,
                  hpnicfProtocolNumAllPort, hpnicfProtocolNumPerPort,
                  hpnicfDifferentProtocolNumAllPort
                }
        STATUS current
        DESCRIPTION
            "A group of scalar objects describing the maximum number."
        ::= { hpnicfProtocolVlanGroups 1 }

    hpnicfProtocolVlanProtocolGroup OBJECT-GROUP
        OBJECTS { hpnicfProtocolVlanProtocolType, hpnicfProtocolVlanProtocolSubType,
                  hpnicfProtocolVlanProtocolTypeValue, hpnicfProtocolVlanRowStatus
                }
        STATUS current
        DESCRIPTION
            "A group of protocol VLAN protocol."
        ::= { hpnicfProtocolVlanGroups 2 }

    hpnicfProtocolVlanPortGroup OBJECT-GROUP
        OBJECTS { hpnicfProtocolVlanPortProtocolType, hpnicfProtocolVlanPortProtocolSubType,
                  hpnicfProtocolVlanPortTypeValue, hpnicfProtocolVlanPortRowStatus
                }
        STATUS current
        DESCRIPTION
            "A group of protocol VLAN port."
        ::= { hpnicfProtocolVlanGroups 3 }

END
