-- $Source#
-- *****************************************************************
-- CISCO-VMPS-MIB.my:  MIB for Cisco VLAN Membership Policy Server
--
-- February 2001, Jayakumar Kadirvelu 
-- April    2002, Dipesh Gorashia
-- October  2003, Binh Le
-- January  2004, Dipesh Gorashia
--
-- Copyright (c) 2001, 2002, 2003, 2004 by Cisco Systems, Inc.
-- All rights reserved.
--
-- *****************************************************************
--

CISCO-VMPS-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE,
        Counter32, Integer32, IpAddress
             FROM SNMPv2-SMI
        MODULE-COMPLIANCE, OBJECT-GROUP
             FROM SNMPv2-CONF
        RowStatus, TimeStamp, MacAddress,
        TEXTUAL-CONVENTION, DisplayString,
        TruthValue
             FROM SNMPv2-TC
        SnmpAdminString
             FROM SNMP-FRAMEWORK-MIB
        ciscoMgmt
             FROM CISCO-SMI;

ciscoVmpsMIB MODULE-IDENTITY
        LAST-UPDATED    "200401200000Z"
        ORGANIZATION    "Cisco System 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,
                        cs-lan-switch-snmp@cisco.com"
        DESCRIPTION
                "The MIB module for the management of the
                 VLAN Membership Policy Server."
        REVISION       "200401200000Z"
        DESCRIPTION
                "Added new object vmpsRcpRemoteUserName2 and
                 deprecated the object vmpsRcpRemoteUserName." 
        REVISION       "200310161000Z"
        DESCRIPTION
                "Added following objects:
                        vmpsAutoBackupEnable and 
                        vmpsAutoBackupFileName."
        REVISION       "200206191000Z"
        DESCRIPTION
                "Corrected description of vmpsLastFailClient."
        REVISION       "200204041000Z"
        DESCRIPTION
               "Added new object vmpsRcpRemoteUserName to support 
                RCP download of VMPS database."
        REVISION       "200101301304Z"
        DESCRIPTION
                "Corrected description of vmpsTriggerDownload"
        ::= { ciscoMgmt 53 }

ciscoVlanMemberPolicyServerMIBObjects
	OBJECT IDENTIFIER ::= { ciscoVmpsMIB 1 }

-- Information about a VMPS instance
vmpsInfo OBJECT IDENTIFIER ::= 
	{ ciscoVlanMemberPolicyServerMIBObjects 1 }

vmpsDatabase OBJECT IDENTIFIER ::= 
	{ ciscoVlanMemberPolicyServerMIBObjects 2 }

vmpsGlobalConfig OBJECT IDENTIFIER ::=
        { ciscoVlanMemberPolicyServerMIBObjects 3 }

VlanName ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
            "The user friendly ASCII string associated with a VLAN."
    SYNTAX  OCTET STRING (SIZE (0..32))  -- DisplayString  

-- VMPS process information/configuration

vmpsConfigTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF VmpsConfigEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "A table for creating and controling an instance of
             the VMPS." 
    ::= { vmpsInfo 1 }

vmpsConfigEntry OBJECT-TYPE
    SYNTAX     VmpsConfigEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the vmpsConfigTable."
    INDEX { vmpsIndex }
    ::= { vmpsConfigTable 1 }

VmpsConfigEntry ::= SEQUENCE {
    vmpsIndex                 Integer32,
    vmpsAdminStatus           INTEGER,
    vmpsDownloadServerAddress IpAddress,
    vmpsConfigFileName        DisplayString,
    vmpsTriggerDownload       INTEGER,
    vmpsFallbackVlan          VlanName,
    vmpsSecureMode            INTEGER,
    vmpsManagementDomain      DisplayString,
    vmpsRowStatus             RowStatus,
    vmpsRcpRemoteUserName     SnmpAdminString,
    vmpsRcpRemoteUserName2    SnmpAdminString  
}

vmpsIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An arbitrary index identifying this particular
             instance of the VMPS.  This index need not be
             consistent across reboots.  For devices only
             supporting one instance of the VMPS this object need
             only accept the value of 1.  Different instances of
             the VMPS of one device will presumable be for
             different management domains."
    ::= { vmpsConfigEntry 1 }

vmpsAdminStatus OBJECT-TYPE
    SYNTAX     INTEGER { active(1), inactive(2) }
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The desired state of the VMPS as prescribed by the
             operator. The actions of the agent will, if at all
             possible, eventually result in the desired state being
             reflected in the lecsOperStatus." 
    DEFVAL   { active }
    ::= { vmpsConfigEntry 2 }

vmpsDownloadServerAddress OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The IP address of the host supplying the TFTP configuration
             data for the VMPS. If this value of this object is 0.0.0.0 
             then the VMPS will not attempt to download configuration 
             information."
    DEFVAL {'00000000'H}
    ::= { vmpsConfigEntry 3 }

vmpsConfigFileName OBJECT-TYPE
    SYNTAX     DisplayString
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The filename of the configuration file the VMPS will
             attempt to download."
    DEFVAL {''H}
    ::= { vmpsConfigEntry 4 }

vmpsTriggerDownload OBJECT-TYPE
    SYNTAX     INTEGER { noOperation (1), loadDatabase(2),
                         loadRcpDataBase(3) }  
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "When set to `loadDatabase' this object will cause the VMPS 
             to initiate a TFTP download of the configuration tables 
             stored at the host identified by the
             vmpsDownloadServerAddress. Setting to 'loadRcpDataBase'
             will cause the VMPs to initiate RCP download. A download
             cannot be preformed unless the host address is properly
             set. This object will always return noOperation(1) when
             read. Setting this object to loadDatabase(2) while the 
             vmpsOperStatus is loading(3) is effectively a no-op."
    ::= { vmpsConfigEntry 5 }

vmpsFallbackVlan OBJECT-TYPE
    SYNTAX     VlanName
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "This is the VLAN returned in the configuration response 
             when a given configuration request contains data that
             matches nothing in the VMPS database (given the specified
             classifiers). A value of the empty string signifies that
             there is no fall-back VLAN."
    DEFVAL {''H}
    ::= { vmpsConfigEntry 6 }
    
vmpsSecureMode OBJECT-TYPE
    SYNTAX     INTEGER { secure(1), open(2) }
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "If in secure mode the VMPS will instruct the requesting 
             device to shutdown a port as a result of a match
             failure."
    DEFVAL { open }
    ::= { vmpsConfigEntry 7 }

vmpsManagementDomain OBJECT-TYPE
    SYNTAX     DisplayString (SIZE (1..32))
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The management domain this VMPS is servicing."
    ::= { vmpsConfigEntry 8 }

vmpsRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The status of the conceptual row.  A valid value of
             vmpsManagementDomain must be set before the row can
             become active.  Devices that only support one instance
             of the VMPS may opt to always have a row in this table
             instantiated and not allow row manipulations."
    ::= { vmpsConfigEntry 9 }

vmpsRcpRemoteUserName OBJECT-TYPE
    SYNTAX     SnmpAdminString (SIZE(1..255)) 
    MAX-ACCESS read-create
    STATUS     deprecated
    DESCRIPTION
            "Remote username for download of the VMPS database 
             file via RCP protocol. This object must be set when
             vmpsTriggerDownload is set to loadRcpDataBase(3).
             This object will be have no effect for protocols 
             other than RCP."
    ::= { vmpsConfigEntry 10 }

vmpsRcpRemoteUserName2 OBJECT-TYPE
    SYNTAX     SnmpAdminString
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "This object deprecates the object vmpsRcpRemoteUserName to
             support full range, i.e. SIZE(0..255), of
             TEXTUAL-CONVENTION SnmpAdminString.

             The object indicates remote username for download of the
             VMPS database file via RCP protocol. This object must be
             set when vmpsTriggerDownload is to loadRcpDataBase(3).
             This object will be have no effect for protocols
             other than RCP."
    ::= { vmpsConfigEntry 11 }

vmpsStatsTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF VmpsStatsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "Statistics relating to this instance of the VMPS." 
::= { vmpsInfo 2 }

vmpsStatsEntry OBJECT-TYPE
    SYNTAX     VmpsStatsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "An entry (conceptual row) in the vmpsStatsTable." 
    AUGMENTS { vmpsConfigEntry }
    ::= { vmpsStatsTable 1 }

VmpsStatsEntry ::= SEQUENCE {
    vmpsLastRestart    TimeStamp,
    vmpsInConfigReqs   Counter32,
    vmpsInConfigErrors Counter32,
    vmpsOutConfigFails Counter32,
    vmpsLastFailClient MacAddress,
    vmpsOperStatus     INTEGER
}

vmpsLastRestart OBJECT-TYPE
    SYNTAX     TimeStamp
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The value of sysUpTime when the VMPS was last 
     restarted."
    ::= { vmpsStatsEntry 1 }

vmpsInConfigReqs OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of configure requests, including
             vmpsInConfigErrors, that have been received by the VMPS." 
    ::= { vmpsStatsEntry 2 }

vmpsInConfigErrors OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Then number of packets received by the  VMPS but which
             were not correctly formatted configure requests."
::= { vmpsStatsEntry 3 }

vmpsOutConfigFails OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number  of  configure responses  sent  by this  
             particular VMPS whose status  was other than  success."
    ::= { vmpsStatsEntry 4 }

vmpsLastFailClient OBJECT-TYPE
    SYNTAX     MacAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The MAC address of the VLAN client whose last
             configuration request  was rejected. This MAC address
             will be for the VLAN client who was delivered the last
             configure response that caused the vmpsOutConfigFails
             object to increment. This value is taken directly
             from the configure request and is not guaranteed to
             be correctly identify a client."  
    ::= { vmpsStatsEntry 5 }

vmpsOperStatus OBJECT-TYPE
    SYNTAX     INTEGER { active(1), inactive(2), loading(3) }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "This object reflects the actual state of the VMPS
             which may differ from that of the vmpsAdminStatus
             object. This can occur when the configuration database
             fails to load but the corresponding vmpsAdminStatus is 
             `active'. The state loading(3) indicates that the VMPS
             is currently loading the configuration database from
             the TFTP server." 
    ::= { vmpsStatsEntry 6 }

vmpsAutoBackupEnable OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
            "This object enables or disables the auto-save of the
             downloaded VMPS configuration on to a local storage of
             the device. If the value is set to 'true', the VMPS 
             configuration will be backed up into the location 
             specified by vmpsAutoBackupFileName everytime the 
             configuration file is downloaded."
    ::= { vmpsGlobalConfig 1 }

vmpsAutoBackupFileName OBJECT-TYPE
    SYNTAX     SnmpAdminString
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
            "This object specifies the VMPS back-up configuration
             location, in the format of <devices>:[<filename>].

             <device> can be (but not limited to): flash, bootflash,
             slot0, slot1, disk0."
    ::= { vmpsGlobalConfig 2 }
                 

-- Database information

vmpsMacConfigTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF VmpsMacConfigEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "A (conceptual) table utilized by a VMPS to map a MAC
             address of a end station to a VLAN." 
    ::= { vmpsDatabase 1 }

vmpsMacConfigEntry OBJECT-TYPE 
    SYNTAX     VmpsMacConfigEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) of a mapping between a MAC
             address in utilization by an end station and a VLAN." 
    INDEX    { vmpsIndex, vmpsMacConfigAddress }
    ::= { vmpsMacConfigTable 1 }

VmpsMacConfigEntry ::= SEQUENCE {
    vmpsMacConfigAddress              MacAddress,
    vmpsMacConfigVlan                 VlanName,
    vmpsMacConfigLastAccessed         TimeStamp,
    vmpsMacConfigLastRequestor        IpAddress,
    vmpsMacConfigLastRequestPortId    DisplayString,
    vmpsMacConfigLastResponseStatus   INTEGER,
    vmpsMacConfigStatus               RowStatus
}

vmpsMacConfigAddress OBJECT-TYPE
    SYNTAX     MacAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The MAC address of an end station to be associated
             with an VLAN." 
    ::= { vmpsMacConfigEntry 1 }

vmpsMacConfigVlan OBJECT-TYPE
    SYNTAX     VlanName
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "A VLAN that will be returned to an end
             station that provides the corresponding MAC address in
             a configuration request. A zero length string
             indicates that the corresponding MAC address is not
             permitted on any VLANs, including the fall-back."
    ::= { vmpsMacConfigEntry 2 }

vmpsMacConfigLastAccessed OBJECT-TYPE
    SYNTAX     TimeStamp
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of sysUpTime when this entry was last used
             to map a MAC address to a VLAN name. Managers may
             opt to use this object to garbage collect entries that
             have not been used for a prolonged period of time."
    ::= { vmpsMacConfigEntry 3 }

vmpsMacConfigLastRequestor OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The IP address of the device that requested the VLAN 
             associated with the MAC of this row. The manager may use
             this object in an attempt to locate where a dynamic host
             currently resides."
    ::= { vmpsMacConfigEntry 4 }

vmpsMacConfigLastRequestPortId OBJECT-TYPE
    SYNTAX     DisplayString
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The ID of the port included in the configuration request 
             that corresponded to the designated entry in this table."
    ::= { vmpsMacConfigEntry 5 }

vmpsMacConfigLastResponseStatus OBJECT-TYPE
    SYNTAX     INTEGER  { success(1), versionNotSupported(2),
                          insufficientResources(3), accessDenied(4),
                          portShutdown(5), unknownManagementDomain(6) }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION 
            "The value of the status field in the response for the last 
             configure request for this MAC-address."
    ::= { vmpsMacConfigEntry 6 }

vmpsMacConfigStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The row cannot be set to `active' until an
             appropriate value exists for vmpsMacConfigVlan."
    ::= { vmpsMacConfigEntry 7}

vmpsVlanConfigTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF VmpsVlanConfigEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "A list of VLANs with restricted access from dynamic
             ports. This list takes the form of a group of VLANs  
             and a group of ports permitted for those VLANs. If no
             entry exists for a particular VLAN then there are no
             restrictions as to what ports are allowed to access
             that VLAN. If entries exist for a VLAN, then all ports
             not explicitly permitted for that VLAN are denied
             access (in the form of a failed configuration
             response)." 
    ::= { vmpsDatabase 2 }

vmpsVlanConfigEntry OBJECT-TYPE
    SYNTAX     VmpsVlanConfigEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the vmpsVlanConfigTable."
    INDEX { vmpsIndex, vmpsVlanName, vmpsDeviceId, vmpsPortName}
    ::= { vmpsVlanConfigTable 1 }

VmpsVlanConfigEntry ::= SEQUENCE {
    vmpsVlanName            VlanName,
    vmpsDeviceId            IpAddress,
    vmpsPortName            DisplayString,
    vmpsVlanConfigStatus    RowStatus
}

vmpsVlanName OBJECT-TYPE
    SYNTAX     VlanName
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The VLAN name associated with a group of ports which
             are allowed access to that VLAN dynamically." 
    ::= { vmpsVlanConfigEntry 1 }

vmpsDeviceId OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The IP address of the device containing the
             permitted ports."
    ::= { vmpsVlanConfigEntry 2 }

vmpsPortName OBJECT-TYPE
    SYNTAX     DisplayString
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The ifName of the port on which dynamic access to
             the specified VLAN is allowed."
    ::= { vmpsVlanConfigEntry 3 }

vmpsVlanConfigStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The status object associated with the conceptual row."
    ::= { vmpsVlanConfigEntry 4}

-- Notifications
ciscoVlanMemberPolicyServerMIBNotifications
    OBJECT IDENTIFIER ::= { ciscoVmpsMIB 2 }
-- no notifications defined

-- Conformance

ciscoVlanMemberPolicyServerMIBConformance 
    OBJECT IDENTIFIER ::= { ciscoVmpsMIB 3 }

ciscoVlanMemberPolicyServerMIBCompliances 
    OBJECT IDENTIFIER ::= { ciscoVlanMemberPolicyServerMIBConformance 1 } 

ciscoVlanMemberPolicyServerMIBGroups 
    OBJECT IDENTIFIER ::= { ciscoVlanMemberPolicyServerMIBConformance 2 } 

ciscoVlanMemberPolicyServerMIBCompliance MODULE-COMPLIANCE
    STATUS deprecated
    DESCRIPTION
            "The compliance statement for entities which
             implement the VMPS MIB. This statement is replaced by
             ciscoVmpsMIBCompliance2."
    MODULE
    MANDATORY-GROUPS { ciscoVlanMemberPolicyServerGroup }
    ::= { ciscoVlanMemberPolicyServerMIBCompliances 1 }

ciscoVmpsMIBCompliance2 MODULE-COMPLIANCE
    STATUS deprecated
    DESCRIPTION
            "The compliance statement for entities which
             implement the VMPS MIB. This statement is replaced by
             ciscoVmpsMIBCompliance3."
    MODULE
    MANDATORY-GROUPS { ciscoVlanMemberPolicyServerGroup }

    GROUP ciscoVlanMemberPolicyServerRcpGroup
    DESCRIPTION
            "This group is an optional group containing an object
             to support RCP downnload of VMPS database."

    GROUP ciscoVmpsAutoBackupGroup
    DESCRIPTION
            "This group is an optional group containing objects
             to support auto backup of downloaded VMPS 
             configuration."
 
    ::= { ciscoVlanMemberPolicyServerMIBCompliances 2 }

ciscoVmpsMIBCompliance3 MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
            "The compliance statement for entities which
             implement the VMPS MIB."
    MODULE
    MANDATORY-GROUPS { ciscoVlanMemberPolicyServerGroup }

    GROUP ciscoVmpsAutoBackupGroup
    DESCRIPTION
            "This group is an optional group containing objects
             to support auto backup of downloaded VMPS
             configuration."

    GROUP ciscoVlanMemberPolicyServerRcpGroup2
    DESCRIPTION
            "This group is an optional group containing an object
             to support RCP downnload of VMPS database."

    ::= { ciscoVlanMemberPolicyServerMIBCompliances 3 }


-- Units of Conformance

ciscoVlanMemberPolicyServerGroup OBJECT-GROUP
    OBJECTS  { vmpsLastRestart, vmpsInConfigReqs, vmpsInConfigErrors,
               vmpsOutConfigFails, vmpsLastFailClient, vmpsOperStatus, 
               vmpsAdminStatus, vmpsDownloadServerAddress, 
               vmpsConfigFileName, vmpsTriggerDownload, vmpsFallbackVlan, 
               vmpsSecureMode, vmpsManagementDomain, vmpsRowStatus,
               vmpsMacConfigVlan, vmpsMacConfigLastAccessed,
               vmpsMacConfigLastRequestor,
               vmpsMacConfigLastRequestPortId,
               vmpsMacConfigLastResponseStatus, vmpsMacConfigStatus,
               vmpsVlanConfigStatus   
    }
    STATUS current
    DESCRIPTION
            "A collection of objects for the managing of VMPS
             operation." 
    ::= { ciscoVlanMemberPolicyServerMIBGroups 1 }

ciscoVlanMemberPolicyServerRcpGroup OBJECT-GROUP
    OBJECTS  { vmpsRcpRemoteUserName }
    STATUS deprecated
    DESCRIPTION
            "Group to support RCP downnload of VMPS database."
    ::= { ciscoVlanMemberPolicyServerMIBGroups 2 }

ciscoVmpsAutoBackupGroup OBJECT-GROUP
    OBJECTS { vmpsAutoBackupEnable, vmpsAutoBackupFileName }
    STATUS current
    DESCRIPTION
            "Group to support auto backup of downloaded VMPS
             configuration."
    ::= { ciscoVlanMemberPolicyServerMIBGroups 3 }   

ciscoVlanMemberPolicyServerRcpGroup2 OBJECT-GROUP
    OBJECTS  { vmpsRcpRemoteUserName2 }
    STATUS current
    DESCRIPTION
            "Group to support RCP downnload of VMPS database."
    ::= { ciscoVlanMemberPolicyServerMIBGroups 4 }
END
