CISCO-VLAN-MEMBERSHIP-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE,
        NOTIFICATION-TYPE,
        Counter32, Integer32, IpAddress         FROM SNMPv2-SMI
        MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
                  FROM SNMPv2-CONF
        RowStatus, TruthValue                   FROM SNMPv2-TC
        ifIndex                                 FROM IF-MIB
        ciscoMgmt                               FROM CISCO-SMI
        VlanIndex                               FROM CISCO-VTP-MIB
        CiscoPortList                           FROM CISCO-TC;

ciscoVlanMembershipMIB MODULE-IDENTITY
        LAST-UPDATED "200404070000Z"
        ORGANIZATION "Cisco Systems Inc. "
        CONTACT-INFO
            "Cisco Systems
             Customer Service

             Postal: 170 W Tasman Drive
             San Jose, CA  95134
             USA

             Tel: +1 800 553-NETS

             E-mail: cs-vlans@cisco.com"
        DESCRIPTION
            "The  MIB module for    the management    of   the
            VLAN Membership within  the frame  work of Cisco
            VLAN Architecture, v 2.0 by Keith McCloghrie. The MIB
            provides information on VLAN Membership Policy Servers
            used by a device and VLAN membership assignments of
            non-trunk bridge ports of the device."
        REVISION    "200404070000Z"
        DESCRIPTION
            "Change the SYNTAX of vmMembershipSummaryMember2kPorts
            from PortList to CiscoPortList."
        REVISION    "200310100000Z"
        DESCRIPTION
            "Add vmVoiceVlanCdpVerifyEnable to support the feature 
            of voice VLANs' detection through CDP packets."
        REVISION    "200306050000Z"
        DESCRIPTION 
            "Deprecate vmMembershipSummaryMemberPorts and define
            vmMembershipSummaryMember2kPorts to support up to 2k 
            bridge ports." 
        REVISION    "200203280000Z"
        DESCRIPTION
            "Add vmVoiceVlanTable to support VVID feature"    
        REVISION    "200105010000Z"
        DESCRIPTION
            "Import VlanIndex from CISCO-VTP-MIB"
        REVISION    "200101300000Z"
        DESCRIPTION
            "Corrected description of vmVmpsReconfirmResult"
        REVISION    "200001060000Z"
        DESCRIPTION
            "Added 4k VLAN support"
        REVISION    "9901180000Z"
        DESCRIPTION
            "Add vmNotificationsEnabled.
             Add support for multi-vlan ports.
                         Other minor edits."
        REVISION    "9612060000Z"
        DESCRIPTION
            "Initial version of this MIB module."
        ::= { ciscoMgmt 68 }

ciscoVlanMembershipMIBObjects
        OBJECT IDENTIFIER ::= { ciscoVlanMembershipMIB 1 }

-- Textual Conventions
vmVmps OBJECT IDENTIFIER ::=
        { ciscoVlanMembershipMIBObjects 1 }

vmMembership OBJECT IDENTIFIER ::=
        { ciscoVlanMembershipMIBObjects 2 }

vmStatistics OBJECT IDENTIFIER ::=
        { ciscoVlanMembershipMIBObjects 3 }

vmStatus OBJECT IDENTIFIER ::=
        { ciscoVlanMembershipMIBObjects 4 }

vmVoiceVlan OBJECT IDENTIFIER ::=
        { ciscoVlanMembershipMIBObjects 5 }
        
-- General Info
vmVmpsVQPVersion  OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                "The VLAN Query Protocol (VQP) version supported on
                 the device. VQP is the protocol used to query
                 VLAN Membership Policy Server (VMPS) for VLAN
                 membership assignments of dynamic VLAN ports.
                 A VMPS provides VLAN membership policy
                 assignments based on the content of the packets
                 received on a port. "
        ::= { vmVmps 1 }

vmVmpsRetries OBJECT-TYPE
        SYNTAX     INTEGER(1..10)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
                "The number of retries for VQP requests to a VMPS before
                 using the next available VMPS."
        ::= { vmVmps 2 }

vmVmpsReconfirmInterval OBJECT-TYPE
        SYNTAX     INTEGER (0..120)
        UNITS      "Minutes"
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
                "The switch will reconfirm membership of addresses on
                 each port with VMPS periodically. This object specifies
                 the interval to perform reconfirmation. If the value is
                 set to 0, the switch does not reconfirm membership with
                 VMPS."
                DEFVAL     { 60 }
        ::= { vmVmps 3 }

vmVmpsReconfirm OBJECT-TYPE
        SYNTAX     INTEGER { ready(1), execute(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
                "Setting this object to execute(2) causes the switch
                 to reconfirm membership of every dynamic port.
                 Reading this object always return ready(1)."
        ::= { vmVmps 4 }

vmVmpsReconfirmResult OBJECT-TYPE
        SYNTAX        INTEGER {
                      other(1),
                      inProgress(2),
                      success(3),
                      noResponse(4),
                      noVmps(5),
                      noDynamicPort(6),
                      noHostConnected(7)
                      }
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
                "This object returns the result of the last request
                 that sets vmVmpsReconfirm to execute(2). The
                 semantics of the possible results are as follows:

                      other(1)           - none of following
                      inProgress(2)      - reconfirm in progress
                      success(3)         - reconfirm completed successfully
                      noResponse(4)      - reconfirm failed because no
                                           VMPS responded
                      noVmps(5)          - No VMPS configured
                      noDynamicPort(6)   - No dynamic ports configured
                      noHostConnected(7) - No hosts on dynamic ports
                                 "
        ::= { vmVmps 5 }

vmVmpsCurrent OBJECT-TYPE
        SYNTAX     IpAddress
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                "This is the IpAddress of the current VMPS used."
        ::= { vmVmps 6 }

vmVmpsTable  OBJECT-TYPE
        SYNTAX     SEQUENCE OF VmVmpsEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               " A table of VMPS to use. The device will use
                 the the primary VMPS by default. If the
                 device is unable to reach the primary server
                 after vmVmpsRetries retries, it uses the first
                 secondary server in the table until it runs out
                 of secondary servers, in which case it will return
                 to using the primary server. Entries in this table
                 may be created and deleted via this MIB or
                 the management console on a device."
        ::= { vmVmps 7 }

vmVmpsEntry OBJECT-TYPE
        SYNTAX     VmVmpsEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               " An entry (conceptual row) in the vmVmpsTable."
        INDEX { vmVmpsIpAddress }
        ::= { vmVmpsTable 1 }

VmVmpsEntry ::= SEQUENCE {
        vmVmpsIpAddress         IpAddress,
        vmVmpsPrimary           TruthValue,
        vmVmpsRowStatus         RowStatus
}

vmVmpsIpAddress OBJECT-TYPE
        SYNTAX      IpAddress
--      MAX-ACCESS  accessible-for-notify
        MAX-ACCESS  read-only 
        STATUS      current
        DESCRIPTION
                "The Ip Address of the VMPS."
        ::= { vmVmpsEntry 1 }

vmVmpsPrimary OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
                "The status of the VMPS. Setting this value
                 to true will make this VMPS the primary server
                 and make the switch use this as the current server.
                 Setting this entry to true causes other rows
                 to transition to false. Attempting to write
                 a value of false after creation will result in
                 a return of bad value. Deleting an entry whose
                 value is true will result in the first entry
                 in the table being set to true."
        ::= { vmVmpsEntry 2 }

vmVmpsRowStatus OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
                "The status of this conceptual row."
        ::= { vmVmpsEntry 3 }

-- VLAN Membership Info
vmMembershipSummaryTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF VmMembershipSummaryEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " A summary of VLAN membership of non-trunk
                  bridge ports. This is a convenience table
                  for retrieving VLAN membership information.

                  A row is created for a VLAN if:
                  a) the VLAN exists, or
                  b) a port is assigned to a non-existent VLAN.

                  VLAN membership can only be modified via the
                  vmMembershipTable."
        ::= { vmMembership 1 }

vmMembershipSummaryEntry OBJECT-TYPE
        SYNTAX     VmMembershipSummaryEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " An entry (conceptual row) in the
                  vmMembershipSummaryTable."
        INDEX { vmMembershipSummaryVlanIndex}
        ::= { vmMembershipSummaryTable 1 }

VmMembershipSummaryEntry ::= SEQUENCE {
        vmMembershipSummaryVlanIndex    VlanIndex,
        vmMembershipSummaryMemberPorts  OCTET STRING,
        vmMembershipSummaryMember2kPorts CiscoPortList
}

vmMembershipSummaryVlanIndex OBJECT-TYPE
        SYNTAX      VlanIndex
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
                "The VLAN id of the VLAN."

        ::= { vmMembershipSummaryEntry 1 }

vmMembershipSummaryMemberPorts OBJECT-TYPE
        SYNTAX     OCTET STRING( SIZE(0..128) )
        MAX-ACCESS read-only
        STATUS     deprecated
        DESCRIPTION
                "The set of the device's member ports that belong
                 to the VLAN.

                 Each octet within the value of this object specifies a
                 set of eight ports, with the first octet specifying ports
                 1 through 8, the second octet specifying ports 9
                 through 16, etc.   Within each octet, the most
                 significant bit represents the lowest numbered
                 port, and the least significant bit represents the
                 highest numbered port.  Thus, each port of the
                 VLAN is represented by a single bit within the
                 value of this object.  If that bit has a value of
                 '1' then that port is included in the set of
                 ports; the port is not included if its bit has a
                 value of '0'.

                 A port number is the value of dot1dBasePort for
                 the port in the BRIDGE-MIB (RFC 1493)."

        ::= { vmMembershipSummaryEntry 2 }

vmMembershipSummaryMember2kPorts OBJECT-TYPE
        SYNTAX    CiscoPortList 
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                "The set of the device's member ports that belong
                 to the VLAN. It has the VLAN membership information
                 of up to 2k ports with the port number from 1 to 2048.

                 Each octet within the value of this object specifies a
                 set of eight ports, with the first octet specifying 
                 ports 1 through 8, the second octet specifying ports 9
                 through 16, etc.   Within each octet, the most
                 significant bit represents the lowest numbered
                 port, and the least significant bit represents the
                 highest numbered port.  Thus, each port of the
                 VLAN is represented by a single bit within the
                 value of this object.  If that bit has a value of
                 '1' then that port is included in the set of
                 ports; the port is not included if its bit has a
                 value of '0'.

                 A port number is the value of dot1dBasePort for
                 the port in the BRIDGE-MIB (RFC 1493)."
        ::= { vmMembershipSummaryEntry 3 }

vmMembershipTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF VmMembershipEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " A table for configuring VLAN port membership.
                  There is one row for each bridge port that is
                  assigned to a static or dynamic access port. Trunk
                  ports are not  represented in this table.  An entry
                  may be created and deleted when ports are created or
                  deleted via SNMP or the management console on a 
                  device."
        ::= { vmMembership 2 }

vmMembershipEntry OBJECT-TYPE
        SYNTAX     VmMembershipEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " An entry (conceptual row) in the vmMembershipTable."
        INDEX { ifIndex }
        ::= { vmMembershipTable 1 }

VmMembershipEntry ::= SEQUENCE {
        vmVlanType    INTEGER,
        vmVlan        INTEGER,
        vmPortStatus  INTEGER,
        vmVlans       OCTET STRING,
        vmVlans2k     OCTET STRING,
        vmVlans3k     OCTET STRING,
        vmVlans4k     OCTET STRING
}

vmVlanType  OBJECT-TYPE
        SYNTAX     INTEGER {
                            static(1),
                            dynamic(2),
                            multiVlan(3)}
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
                " The type of VLAN membership assigned to this port.
                  A port with static vlan membership is assigned to a
                  single VLAN directly. A port with dynamic membership
                  is assigned a single VLAN based on content of packets
                  received on the port and via VQP queries to VMPS.
                  A port with multiVlan membership may be assigned to
                  one or more VLANs directly.

                  A static or dynamic port membership is specified
                  by the value of vmVlan. A multiVlan port membership is
                  specified by the value of vmVlans."
        ::= { vmMembershipEntry 1 }

vmVlan  OBJECT-TYPE
        SYNTAX     INTEGER(0..4095)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
                "The VLAN id of the VLAN the port is assigned to
                 when vmVlanType is set to static or dynamic.
                 This object is not instantiated if not applicable.

                 The value may be 0 if the port is not assigned
                 to a VLAN.

                 If vmVlanType is static, the port is always
                 assigned to a VLAN and the object may not be
                 set to 0.

                 If vmVlanType is dynamic the object's value is
                 0 if the port is currently not assigned to a VLAN.
                 In addition, the object may be set to 0 only."
        ::= { vmMembershipEntry 2 }

vmPortStatus  OBJECT-TYPE
        SYNTAX     INTEGER {
                            inactive(1),
                            active(2),
                            shutdown(3) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " An indication of the current VLAN status of the port.
                  A status of inactive(1) indicates that a dynamic port
                  does not yet have a VLAN assigned, or a port is 
                  assigned to a VLAN that is currently not active. A 
                  status of active(2) indicates that the currently 
                  assigned VLAN is active. A status of shutdown(3) 
                  indicates that the port has been disabled as a result
                  of VQP shutdown response."
        ::= { vmMembershipEntry 3 }

vmVlans  OBJECT-TYPE
        SYNTAX     OCTET STRING(SIZE(0..128))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
                "The VLAN(s) the port is assigned to when the
                 port's vmVlanType is set to multiVlan.
                 This object is not instantiated if not applicable.

                 The port is always assigned to one or more VLANs
                 and the object may not be set so that there are
                 no vlans assigned.

                 Each octet within the value of this object specifies a
                 set of eight VLANs, with the first octet specifying
                 VLAN id 1 through 8, the second octet specifying VLAN
                 ids 9 through 16, etc.   Within each octet, the most
                 significant bit represents the lowest numbered
                 VLAN id, and the least significant bit represents the
                 highest numbered VLAN id.  Thus, each VLAN of the
                 port is represented by a single bit within the
                 value of this object.  If that bit has a value of
                 '1' then that VLAN is included in the set of
                 VLANs; the VLAN is not included if its bit has a
                 value of '0'."
        ::= { vmMembershipEntry 4 }

vmVlans2k  OBJECT-TYPE
        SYNTAX     OCTET STRING(SIZE(0..128))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
                "The VLAN(s) the port is assigned to when the
                 port's vmVlanType is set to multiVlan.
                 This object is not instantiated if not applicable.

                 The port is always assigned to one or more VLANs
                 and the object may not be set so that there are
                 no vlans assigned.

                 Each octet within the value of this object specifies a
                 set of eight VLANs, with the first octet specifying
                 VLAN id 1024 through 1031, the second octet specifying 
                 VLAN ids 1032 through 1039, etc.  Within each octet, 
                 the most significant bit represents the lowest 
                 numbered VLAN id, and the least significant bit 
                 represents the highest numbered VLAN id.  Thus, each 
                 VLAN of the port is represented by a single bit within
                 the value of this object.  If that bit has a value of
                 '1' then that VLAN is included in the set of
                 VLANs; the VLAN is not included if its bit has a
                 value of '0'."
        ::= { vmMembershipEntry 5 }

vmVlans3k  OBJECT-TYPE
        SYNTAX     OCTET STRING(SIZE(0..128))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
                "The VLAN(s) the port is assigned to when the
                 port's vmVlanType is set to multiVlan.
                 This object is not instantiated if not applicable.

                 The port is always assigned to one or more VLANs
                 and the object may not be set so that there are
                 no vlans assigned.

                 Each octet within the value of this object specifies a
                 set of eight VLANs, with the first octet specifying
                 VLAN id 2048 through 2055, the second octet specifying 
                 VLAN ids 2056 through 2063, etc.   Within each octet, 
                 the most significant bit represents the lowest 
                 numbered VLAN id, and the least significant bit 
                 represents the highest numbered VLAN id.  Thus, each
                 VLAN of the port is represented by a single bit within
                 the value of this object.  If that bit has a value of
                 '1' then that VLAN is included in the set of
                 VLANs; the VLAN is not included if its bit has a
                 value of '0'."
        ::= { vmMembershipEntry 6 }

vmVlans4k  OBJECT-TYPE
        SYNTAX     OCTET STRING(SIZE(0..128))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
                "The VLAN(s) the port is assigned to when the
                 port's vmVlanType is set to multiVlan.
                 This object is not instantiated if not applicable.

                 The port is always assigned to one or more VLANs
                 and the object may not be set so that there are
                 no vlans assigned.

                 Each octet within the value of this object specifies a
                 set of eight VLANs, with the first octet specifying
                 VLAN id 3072 through 3079, the second octet specifying 
                 VLAN ids 3040 through 3047, etc.   Within each octet, 
                 the most significant bit represents the lowest 
                 numbered VLAN id, and the least significant bit 
                 represents the highest numbered VLAN id.  Thus, each
                 VLAN of the port is represented by a single bit within
                 the value of this object.  If that bit has a value of
                 '1' then that VLAN is included in the set of
                 VLANs; the VLAN is not included if its bit has a
                 value of '0'."
        ::= { vmMembershipEntry 7 }

-- VQP Statistics
vmVQPQueries OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The total number of VQP requests sent by this device 
                  to all VMPS since last system re-initialization."
        ::= { vmStatistics 1 }

vmVQPResponses OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The number of VQP responses received by this device 
                  from all VMPS since last system re-initialization."
        ::= { vmStatistics 2 }

vmVmpsChanges OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The number of times, since last system 
                  re-initialization, the current VMPS was changed. The
                  current VMPS is changed whenever the VMPS fails to 
                  response after vmVmpsRetries of a VQP request."
        ::= { vmStatistics 3 }

vmVQPShutdown OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The number of times, since last system 
                  re-initialization, a VQP response indicates 
                  'shutdown'. A 'shutdown' response is a result of 
                  the membership policy configured at a VMPS
                  by the administrator."
        ::= { vmStatistics 4 }

vmVQPDenied OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The number of times, since last system 
                  re-initialization, a VQP response indicates 
                  'denied'. A 'denied' response is a result of 
                  the membership policy configured at a VMPS
                  by the administrator."
        ::= { vmStatistics 5 }

vmVQPWrongDomain OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The number of times, since last system 
                  re-initialization, a VQP response indicates wrong 
                  management domain. A wrong management domain 
                  response indicates that the VMPS used serves a 
                  management domain that is different
                  from the device's management domain."
        ::= { vmStatistics 6 }

vmVQPWrongVersion OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The number of times, since last system 
                  re-initialization, a VQP response indicates wrong 
                  VQP version. A wrong VQP version response 
                  indicates that the VMPS used supports a VQP 
                  version that is different from the device's 
                  VQP version."
        ::= { vmStatistics 7 }

vmInsufficientResources OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The number of times, since last system 
                  re-initialization, a VQP response indicates 
                  insufficient resources. An insufficient resources 
                  response indicates that the VMPS used does not 
                  have the required resources to verify the
                  membership assignment requested."
        ::= { vmStatistics 8 }

-- Status

vmNotificationsEnabled OBJECT-TYPE
        SYNTAX     TruthValue
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
                 "An indication of whether the notifications/traps
                  defined in this MIB are enabled."
        ::= { vmStatus 1 }
        
-- Voice Vlan Configuration  
        
vmVoiceVlanTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF VmVoiceVlanEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " A table for configuring the Voice VLAN-ID
                for the ports. An entry will exist for each
                interface which supports Voice Vlan feature."
        ::= { vmVoiceVlan 1 }

vmVoiceVlanEntry OBJECT-TYPE
        SYNTAX     VmVoiceVlanEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " An entry (conceptual row) in the vmVoiceVlanTable.
                Only interfaces which support Voice Vlan feature
                are shown."
        INDEX { ifIndex }
        ::= { vmVoiceVlanTable 1 }

VmVoiceVlanEntry ::= SEQUENCE {
        vmVoiceVlanId               INTEGER,
        vmVoiceVlanCdpVerifyEnable  TruthValue
}

vmVoiceVlanId OBJECT-TYPE
        SYNTAX        INTEGER ( 0..4096 )
        MAX-ACCESS    read-write
        STATUS        current
        DESCRIPTION   "The Voice Vlan ID (VVID) to which this
                      port belongs to.
     
                      0    -    The CDP packets transmitting 
                                through this port would contain
                                Appliance VLAN-ID TLV with value 
                                of 0. VoIP and related packets 
                                are expected to be sent and 
                                received with VLAN-id=0 and an 
                                802.1p priority. 

                      1..4094 - The CDP packets transmitting
                                through this port would contain
                                Appliance VLAN-ID TLV with N.
                                VoIP and related packets are
                                expected to be sent and received
                                with VLAN-id=N and an 802.1p
                                priority.

                      4095  -   The CDP packets transmitting
                                through this port would contain
                                Appliance VLAN-ID TLV with value
                                of 4095. VoIP and related packets
                                are expected to be sent and 
                                received untagged without an 
                                802.1p priority.

                      4096  -   The CDP packets transmitting 
                                through this port would not 
                                include Appliance VLAN-ID TLV; 
                                or, if the VVID is not supported 
                                on the port, this MIB object will
                                not be configurable and will 
                                return 4096." 
        ::= { vmVoiceVlanEntry 1 }

vmVoiceVlanCdpVerifyEnable OBJECT-TYPE
        SYNTAX        TruthValue 
        MAX-ACCESS    read-write
        STATUS        current
        DESCRIPTION   "Enable or Disable the feature of CDP message 
                      verification of voice VLANs.
                      
                      true   - The voice VLAN vmVoiceVlan is enabled 
                               only after CDP messages are received 
                               from the IP phone.

                      false -  The voice VLAN vmVoiceVlan is enabled
                               as soon as the IP phone interface is
                               up. There is no verification needed 
                               from CDP messages from the IP phone."
        ::= { vmVoiceVlanEntry 2 }


-- Notifications
vmNotifications
        OBJECT IDENTIFIER ::= { ciscoVlanMembershipMIB 2 }

vmNotificationsPrefix
        OBJECT IDENTIFIER ::= { vmNotifications 0 }

vmVmpsChange NOTIFICATION-TYPE
    OBJECTS     { vmVmpsIpAddress}
    STATUS      current
    DESCRIPTION
          " A VMPS change notification is generated whenever
            vmVmpsChanges is incremented. The IP address
            of the new VMPS is sent."
    ::= { vmNotificationsPrefix 1 }

-- Conformance

vmMIBConformance
        OBJECT IDENTIFIER ::= { ciscoVlanMembershipMIB 3 }

vmMIBCompliances
        OBJECT IDENTIFIER ::= { vmMIBConformance 1 }

vmMIBGroups
        OBJECT IDENTIFIER ::= { vmMIBConformance 2 }

vmMIBCompliance MODULE-COMPLIANCE
        STATUS   obsolete -- superseded by vmMIBComplianceR2
        DESCRIPTION
                " The   compliance   statement for   entities    which
                  implement the VLANs."
        MODULE
        MANDATORY-GROUPS { vmMembershipGroup }

        GROUP    vmVQPClientGroup
        DESCRIPTION
                " A VQP client must implement this group."

        GROUP    vmVQPNotificationsGroup
        DESCRIPTION
               " A VQP client must implement this group."
        ::= { vmMIBCompliances 1 }

vmMIBCompliance2 MODULE-COMPLIANCE
        STATUS   deprecated
        DESCRIPTION
                " The   compliance   statement for   entities    which
                  implement the VLANs."
        MODULE
        MANDATORY-GROUPS { vmMembershipGroup2 }

        GROUP    vmVQPClientGroup
        DESCRIPTION
                " A VQP client must implement this group."

        GROUP    vmVQPNotificationsGroup
        DESCRIPTION
               " A VQP client must implement this group."
        ::= { vmMIBCompliances 2 }

vmMIBCompliance3 MODULE-COMPLIANCE
        STATUS   deprecated
        DESCRIPTION
                " The   compliance   statement for   entities    which
                  implement the VLANs."
        MODULE
        MANDATORY-GROUPS { vmMembershipGroup2 }

        GROUP    vmVQPClientGroup
        DESCRIPTION
                " A VQP client must implement this group."

        GROUP    vmVQPNotificationsGroup
        DESCRIPTION
                " A VQP client must implement this group."

        GROUP    vm4kVlanGroup
        DESCRIPTION
                " This group must be implemented by the
                  entities which support the range of VlanIndex
                  between 1024 and 4095."

        ::= { vmMIBCompliances 3 }

vmMIBCompliance4 MODULE-COMPLIANCE
        STATUS   deprecated
        DESCRIPTION
                " The   compliance   statement for   entities    which
                  implement the VLANs."
        MODULE
        MANDATORY-GROUPS { vmMembershipGroup3 }

        GROUP    vmVQPClientGroup
        DESCRIPTION
                " A VQP client must implement this group."

        GROUP    vmVQPNotificationsGroup
        DESCRIPTION
                " A VQP client must implement this group."

        GROUP    vm1kVlanGroup
        DESCRIPTION
                " This group must be implemented by the
                  entities which support the multiVlan
                  membership."

        GROUP    vm4kVlanGroup
        DESCRIPTION
                " This group must be implemented by the
                  entities which support the range of VlanIndex
                  between 1024 and 4095 and multiVlan
                  membership."

        OBJECT   vmVlanType
        SYNTAX   INTEGER { static(1) }
        MIN-ACCESS  read-only
        DESCRIPTION
                "Write access is not required. Only static(1)
                 is required to be implemented."

        GROUP    vmStatusGroup
        DESCRIPTION
                " This group must be implemented by the
                  entities which support the 
                  traps/notifications defined in this
                  MIB. "

        GROUP    vmVoiceVlanGroup
        DESCRIPTION
                " This group must be implemented by the
                  entities which support the Voice VLAN
                  feature. "
        ::= { vmMIBCompliances 4 }

vmMIBCompliance5 MODULE-COMPLIANCE
        STATUS   current
        DESCRIPTION
                " The   compliance   statement for   entities    which
                  implement the VLANs."
        MODULE
        MANDATORY-GROUPS { vmMembershipGroup3 }

        GROUP    vmVQPClientGroup
        DESCRIPTION
                " A VQP client must implement this group."

        GROUP    vmVQPNotificationsGroup
        DESCRIPTION
                " A VQP client must implement this group."

        GROUP    vm1kVlanGroup
        DESCRIPTION
                " This group must be implemented by the
                  entities which support the multiVlan
                  membership."

        GROUP    vm4kVlanGroup
        DESCRIPTION
                " This group must be implemented by the
                  entities which support the range of VlanIndex
                  between 1024 and 4095 and multiVlan
                  membership."

        OBJECT   vmVlanType
        SYNTAX   INTEGER { static(1) }
        MIN-ACCESS  read-only
        DESCRIPTION
                "Write access is not required. Only static(1)
                 is required to be implemented."

        GROUP    vmStatusGroup
        DESCRIPTION
                " This group must be implemented by the
                  entities which support the
                  traps/notifications defined in this
                  MIB. "

        GROUP    vmVoiceVlanGroup
        DESCRIPTION
                " This group must be implemented by the
                  entities which support the Voice VLAN
                  feature. "

        GROUP    vmVoiceVlanExtGroup
        DESCRIPTION
                " This group must be implemented by the
                  entities which support the CDP only
                  verification of Voice VLAN feature."
        ::= { vmMIBCompliances 5 }


-- Units of Conformance

vmMembershipGroup OBJECT-GROUP
        OBJECTS  { vmMembershipSummaryMemberPorts,
                   vmVlan, vmVlanType, vmPortStatus }
        STATUS   deprecated
        DESCRIPTION
                " A collection of objects for displaying and
                  configuring VLAN membership."
        ::= { vmMIBGroups 1 }

vmVQPClientGroup OBJECT-GROUP
        OBJECTS  { vmVmpsVQPVersion, vmVmpsRetries, vmVmpsReconfirm,
                   vmVmpsReconfirmInterval, vmVmpsReconfirmResult,
                   vmVmpsCurrent, vmVmpsIpAddress, vmVmpsPrimary,
                   vmVmpsRowStatus, vmVQPQueries, vmVQPResponses,
                   vmVmpsChanges, vmVQPShutdown, vmVQPDenied,
                   vmVQPWrongDomain, vmVQPWrongVersion,
                   vmInsufficientResources }
        STATUS   current
        DESCRIPTION
                " A collection of objects for the managing a VQP
                  client."
        ::= { vmMIBGroups 2 }

vmVQPNotificationsGroup NOTIFICATION-GROUP
        NOTIFICATIONS { vmVmpsChange }
        STATUS        current
        DESCRIPTION
                " The notification group for a VQP client. "
        ::= { vmMIBGroups 3 }

vmStatusGroup OBJECT-GROUP
        OBJECTS  { vmNotificationsEnabled }
        STATUS   current
        DESCRIPTION
                " A collection of objects for conveying general
                  status information."
        ::= { vmMIBGroups 4 }

vmMembershipGroup2 OBJECT-GROUP
        OBJECTS  { vmMembershipSummaryMemberPorts,
                   vmVlan, vmVlans, vmVlanType, vmPortStatus }
        STATUS   deprecated
        DESCRIPTION
                " A collection of objects for displaying and
                  configuring VLAN membership."
        ::= { vmMIBGroups 5 }

vm4kVlanGroup OBJECT-GROUP
        OBJECTS  { vmVlans2k, vmVlans3k, vmVlans4k }
        STATUS   current
        DESCRIPTION
                "A collection of objects providing multiVlan 
                information for VLANS with VlanIndex from 
                1024 to 4095 which are assigned to one port."
        ::= { vmMIBGroups 6 }

vmVoiceVlanGroup OBJECT-GROUP
        OBJECTS  { vmVoiceVlanId }
        STATUS   current
        DESCRIPTION
                "A collection of objects providing information
                of Voice Vlan feature." 
        ::= { vmMIBGroups 7 }

vm1kVlanGroup OBJECT-GROUP
        OBJECTS  { vmVlans }
        STATUS   current
        DESCRIPTION
                "A collection of objects providing multiVlan 
                information for VLANS with VlanIndex from 
                0 to 1023 which are assigned to one port."
        ::= { vmMIBGroups 8 }

vmMembershipGroup3 OBJECT-GROUP
        OBJECTS  { vmMembershipSummaryMember2kPorts,
                   vmVlan, vmVlanType, vmPortStatus }
        STATUS   current
        DESCRIPTION
                " A collection of objects for displaying and
                  configuring VLAN membership."
        ::= { vmMIBGroups 9 }

vmVoiceVlanExtGroup OBJECT-GROUP
        OBJECTS  { vmVoiceVlanCdpVerifyEnable }
        STATUS   current
        DESCRIPTION
                "A collection of objects providing the 
                information of CDP verification 
                of Voice Vlan feature."
        ::= { vmMIBGroups 10 }
END
