-- *********************************************************************
-- CISCO-VSAN-MIB.my: Virtual Storage Area Network MIB
--
-- September 2002, Vinay Gaonkar
-- September 2003, Arul Mozhi 
-- May 2005,       John Fan
--
-- Copyright (c) 2002, 2003, 2004, 2005, 2006 by cisco Systems, Inc.
-- All rights reserved.
-- 
-- *********************************************************************

CISCO-VSAN-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE,
        NOTIFICATION-TYPE,
        Integer32, Unsigned32                   FROM SNMPv2-SMI
        MODULE-COMPLIANCE, OBJECT-GROUP,  
        NOTIFICATION-GROUP                      FROM SNMPv2-CONF
        TEXTUAL-CONVENTION, RowStatus,
        TruthValue, TimeStamp                   FROM SNMPv2-TC 
        SnmpAdminString                         FROM SNMP-FRAMEWORK-MIB
        ifIndex, InterfaceIndex                 FROM IF-MIB
        ciscoMgmt                               FROM CISCO-SMI 
        ListIndex, ListIndexOrZero, 
        CiscoMilliSeconds                       FROM CISCO-TC
        FcNameId, VsanIndex                     FROM CISCO-ST-TC; 

ciscoVsanMIB MODULE-IDENTITY
        LAST-UPDATED "200602060000Z"
        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-san@cisco.com"
        DESCRIPTION
            "The MIB module for the management of the Virtual Storage 
            Networks (VSANs) within the frame  work of Cisco's VSAN 
            Architecture.  This MIB enables the users to configure 
            and monitor VSAN parameters."

        REVISION    "200602060000Z"
        DESCRIPTION
            "Enhanced the description of vsanInterOperValue object." 
        REVISION    "200512070000Z"
        DESCRIPTION
            "Added new object group vsanGroupRev3 to contain
             vsanFcFeElementName object-type.
             Added new compliance vsanMIBCompliance7 to include new compliance
             group vsanGroupRev3. Updated comments section for
             vsanFcFeElementName."

        REVISION    "200510070000Z"
        DESCRIPTION
            "Added new notification vsanPortMembershipChange for 
            port-vsan changes for interfaces. Added new compliance 
            vsanMIBCompliance6 to include new compliance group 
            vsanNotificationGroupRev1."

        REVISION    "200506070000Z"
        DESCRIPTION
            " Extended the vsanMembershipSummaryTable to contain not
            just static assignments but also dynamic assignments.
            Added new compliance vsanMIBCompliance5 to include
            new compliance group vsanMembershipSummaryGroupRev1."

        REVISION    "200402180000Z"
        DESCRIPTION
            "Added two new objects vsanInorderDelivery and 
            vsanNetworkDropLatency to vsanTable. 
            Added a new compliance statement vsanMIBCompliance4."

        REVISION    "200312020000Z"
        DESCRIPTION
            "Added a conformance for the range of vsanInterOperValue.
            Added a new table 'vsanFcTimerTable', to configure FC timer
            values for VSANs." 

        REVISION    "200305070000Z"
        DESCRIPTION
            "Deprecated vsanInterOperMode object which is 
            superceded by a new object vsanInterOperValue.
            Added new compliance statement vsanMIBCompliance1."

        REVISION    "200304230000Z"
        DESCRIPTION
            "Added a new table vsanMembershipSummaryTable."

        REVISION    "200212180000Z"
        DESCRIPTION
            "Use CiscoMilliSeconds instead MilliSeconds from CISCO-TC."

        REVISION    "200211040000Z"
        DESCRIPTION
            "Changed the MIB descriptors fcSwitchLatency and 
            fcNetworkLatency to fcSwitchDropLatency and 
            fcNetworkDropLatency respectively.
            MAX-ACCESS for fcSwitchLatency is changed to read-write."

        REVISION    "200209230000Z"
        DESCRIPTION
            "Initial version of this MIB module."
        ::= { ciscoMgmt 282 }

ciscoVsanMIBObjects OBJECT IDENTIFIER ::= { ciscoVsanMIB 1 }
vsanMIBConformance  OBJECT IDENTIFIER ::= { ciscoVsanMIB 3 }
vsanConfiguration   OBJECT IDENTIFIER ::= { ciscoVsanMIBObjects 1 }
vsanMembership      OBJECT IDENTIFIER ::= { ciscoVsanMIBObjects 2 }
vsanNotification    OBJECT IDENTIFIER ::= { ciscoVsanMIBObjects 3 }
vsanFcConfiguration OBJECT IDENTIFIER ::= { ciscoVsanMIBObjects 4 }
vsanStats           OBJECT IDENTIFIER ::= { ciscoVsanMIBObjects 5 }
vsanNotifications   OBJECT IDENTIFIER ::= { vsanNotification 0 }

-- Textual Conventions

VsanMediaType ::= TEXTUAL-CONVENTION
        STATUS    current
        DESCRIPTION
            "Media type of the fabric.
            fibreChannel(1) - media type is Fibre Channel
            ethernet (2)    - media type is ethernet
            infiniband (3)  - media type is infiniband
            other(4)        - other." 
        SYNTAX  INTEGER {
                   fibreChannel(1),
                   ethernet (2),
                   infiniband (3),
                   other(4) 
                }

VsanAdminState ::= TEXTUAL-CONVENTION
        STATUS    current
        DESCRIPTION
            "State of the VSAN.
             active - the VSAN is active 
             suspended - VSAN is de-activated but the configuration 
             is retained."
        SYNTAX   INTEGER {
                   active(1),
                   suspended(2) 
                 }     
                                              
VsanOperationalState ::= TEXTUAL-CONVENTION
        STATUS    current
        DESCRIPTION
            "State of the VSAN.
             up - the VSAN is up. 
             down - VSAN is down. No traffic running on the VSAN."
        SYNTAX   INTEGER {
                   up(1),
                   down(2) 
                 }     

VsanLoadBalancingType ::= TEXTUAL-CONVENTION
        STATUS    current
        DESCRIPTION
             "Type of load balancing.

             srcIdDestId - based on only source ID (S_ID) and
                           destination ID (D_ID).
             srcIdDestIdOxId - Originator exchange ID (OX_ID)
                            is also used for load balancing in
                            addition to S_ID and D_ID.
             OX_ID is an exchange ID assigned by the originator
             Interconnect Port for an exchange with the target
             Interconnect Port."
        REFERENCE
             "For more information on OX_ID, refer to Fibre Channel
             Switch Fabric 2 (FC-SW2) section 5.8."
        SYNTAX   INTEGER {
                   srcIdDestId(1),
                   srcIdDestIdOxId(2) 
                 }

                                     
-- VSAN Information

vsanNumber  OBJECT-TYPE
    SYNTAX      Integer32 (0..4095)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of VSANs configured on this device."
        ::= { vsanConfiguration 1 }

vsanLastChange  OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The value of sysUpTime at the time of the last creation,
            deletion or modification of an entry in the vsanTable and
            the vsanIfTable, where modification is a change in the 
            value of any object instance within the table."
        ::= { vsanConfiguration 2 }

--
-- vsanTable
--
vsanTable  OBJECT-TYPE
        SYNTAX     SEQUENCE OF VsanEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "This table lists all the VSAN configured on this device.
               This table allows users to create, delete and manage the 
               VSANs on local device."
        ::= { vsanConfiguration 3 }

vsanEntry OBJECT-TYPE
        SYNTAX     VsanEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "An entry (conceptual row) in the vsanTable. This 
               contains information about a VSAN."
        INDEX { vsanIndex }
        ::= { vsanTable 1 }

VsanEntry ::= SEQUENCE {
        vsanIndex                 VsanIndex,
        vsanName                  SnmpAdminString,
        vsanMediaType             VsanMediaType,
        vsanAdminState            VsanAdminState,
        vsanMtu                   Unsigned32,
        vsanLoadBalancingType     VsanLoadBalancingType,
        vsanInterOperMode         TruthValue,
        vsanOperState             VsanOperationalState,
        vsanRowStatus             RowStatus,
        vsanInterOperValue        Integer32,
        vsanInorderDelivery       TruthValue,
        vsanNetworkDropLatency    CiscoMilliSeconds
}

vsanIndex OBJECT-TYPE
        SYNTAX VsanIndex
        MAX-ACCESS  not-accessible 
        STATUS      current             
        DESCRIPTION
                "The ID of the VSAN."
        ::= { vsanEntry 1 }

vsanName OBJECT-TYPE
        SYNTAX      SnmpAdminString(SIZE(0..32))
        MAX-ACCESS  read-create 
        STATUS      current
        DESCRIPTION
                "The name of the VSAN.
                Note that default value of this object will be the 
                string 'VSANxxxx' where xxxx is value of vsanIndex 
                expressed as 4 digits. For example, if vsanIndex is 
                23, the default value of this object is 'VSAN0023'."
        ::= { vsanEntry 2 }

vsanMediaType OBJECT-TYPE
        SYNTAX  VsanMediaType
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
                "The network media type on which this VSAN is defined."
        DEFVAL { fibreChannel }
        ::= { vsanEntry 3 }

vsanAdminState  OBJECT-TYPE
        SYNTAX     VsanAdminState
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION                                
                "Represents the configurable state of this VSAN. 
                The value 'active' for this object represents the 
                VSAN is configured and services for the VSAN is 
                activated.
                The value 'suspended' for this object represents the 
                VSAN is configured but services for the VSAN is 
                de-activated. User can use this state to preconfigure 
                all the VSAN parameters for the whole fabric."
        DEFVAL { active }
        ::= { vsanEntry 4 }

vsanMtu  OBJECT-TYPE
        SYNTAX     Unsigned32 (1..65535)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
                "The MTU of the VSAN. Normally, this object is 2112 
                for all VSANs for which object vsanMediaType has the 
                value 'fibreChannel'."
        DEFVAL { 2112 }
        ::= { vsanEntry 5 }

vsanLoadBalancingType  OBJECT-TYPE
        SYNTAX      VsanLoadBalancingType
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
                "The type of load balancing used on this VSAN." 
        DEFVAL { srcIdDestIdOxId }
        ::= { vsanEntry 6 }
   
vsanInterOperMode  OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-create
        STATUS      deprecated -- superceded by vsanInterOperValue
        DESCRIPTION
                "The interoperability mode of the local switch on this 
                VSAN. This object indicates if this device can 
                inter-operate with devices from other vendors on this 
                VSAN."
        DEFVAL { false }
        ::= { vsanEntry 7 }

vsanOperState  OBJECT-TYPE
        SYNTAX      VsanOperationalState
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
                "The operational state of the VSAN. Indicates whether 
                traffic can pass thru this VSAN."
        ::= { vsanEntry 8 }

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

vsanInterOperValue  OBJECT-TYPE
        SYNTAX      Integer32 (0..4)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
                "This object is used for configuring the 
                interoperability value of the VSAN, to 
                inter-operate with different vendor devices. 
                
                If the value of this object is 0, then the 
                interoperability is disabled.

                If the value of this object is 1, then the VSAN
                can inter-operate with all the Fibre Channel 
                vendor devices.

                The value '2' to '4' for this object represents the 
                interoperability with specific Fibre Channel vendor 
                devices for basic to advanced functionalities."
        DEFVAL { 0 }
        ::= { vsanEntry 10 }

vsanInorderDelivery  OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
                "The InorderDelivery guarantee flag for the local 
                switch on this VSAN.
                If the value of the object is 'true', then the 
                in-order delivery is guaranteed. If 'false', it is not
                guaranteed.
                When the value of fcInorderDelivery is changed, the 
                value of this object will be set to the new value of 
                that object."
        DEFVAL { false }
        ::= { vsanEntry 11 }

vsanNetworkDropLatency OBJECT-TYPE
        SYNTAX      CiscoMilliSeconds (500..60000)
        UNITS       "msec"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
                "Network latency of this switch on this VSAN. This is 
                the time interval after which the frames are dropped if
                they are not delivered in the order they were 
                transmitted.
                Note that vsanNetworkLatency is always greater than 
                fcSwitchLatency.
                When the value of fcNetworkDropLatency is changed, the 
                value of this object will be set to the new value of 
                that object."
        DEFVAL      { 2000 }
        ::= { vsanEntry 12 }

--
-- notifyVsanIndex
--
notifyVsanIndex OBJECT-TYPE
        SYNTAX      VsanIndex
        MAX-ACCESS  accessible-for-notify
        STATUS      current
        DESCRIPTION
                "The ID of the VSAN.
                This object is to be used only as an object in the 
                notification. We cannot use the vsanIndex in a 
                notification as it is defined to not-accessible in the 
                vsanTable."
        ::= { vsanConfiguration 4 }

-- VSAN membership 
--
vsanDenyUnknownWwn OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
                "On a Fibre Channel fabric, an N_port is required to 
                issue an Fabric Login (FLOGI) in order to login to the 
                fabric. The FLOGI contains port's Port World Wide Name 
                (WWN). By default, if this object is false and if a 
                Port WWN is not present in the VSAN WWN database (if 
                there is one), the static VSAN membership is used. If 
                this object is 'true', then the FLOGI is denied if the 
                Port WWN is not present in membership database.

                On other kinds of fabric, this object's value is 
                undefined."
        DEFVAL { false }
        ::= { vsanMembership 1 }


-- VSAN WWN list

vsanWwnListNumber  OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of WWNs configured both for static and dynamic 
            membership purposes on this device. This is number of rows 
            in the vsanWwnListTable."
        ::= { vsanMembership 2 }


--
-- VSAN WWN list table
--

vsanWwnListTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF VsanWwnListEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "A table of Port WWN lists. vsanIfTable and 
                vsanDynamicTable use these Port WWN lists for the 
                static and dynamic configuration of Port WWNs. In 
                static case, this list serves as a list of Port WWNs
                that are denied on a interface, whereas in the 
                dynamic case, it is the list of Port WWNs that are 
                allowed on any interface.
                Here is an example :

                listIndex  wwnIndex   WWN
                1             1       WWN1 
                1             2       WWN2 
                1             3       WWN3 
                1             4       WWN4 
                2             1       WWN5 
                2             2       WWN6 
                3             1       WWN7 
                3             2       WWN8 
                3             3       WWN9 
                4             1       WWN10 
                5             1       WWN11 
                5             2       WWN12"
        ::= { vsanMembership 3 }

vsanWwnListEntry OBJECT-TYPE
        SYNTAX     VsanWwnListEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "This entry contains a Port WWN indexed by a list index 
                and Port WWN index. So each entry is a member of Port 
                WWN list. A list consists of all the entries with the 
                same value of vsanWwnListIndex."
        INDEX  { vsanWwnListIndex, vsanWwnListWwnIndex }
        ::= { vsanWwnListTable 1 }

VsanWwnListEntry ::= SEQUENCE {
             vsanWwnListIndex      ListIndex, 
             vsanWwnListWwnIndex   Unsigned32,
             vsanWwnListWwn        FcNameId,  
             vsanWwnListRowStatus  RowStatus
}

vsanWwnListIndex  OBJECT-TYPE
        SYNTAX     ListIndex(1..2147483647)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "This is an index to a Port WWN list."
        ::= { vsanWwnListEntry 1 }

vsanWwnListWwnIndex  OBJECT-TYPE
        SYNTAX     Unsigned32 (1..2147483647)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "This is an index to a Port WWN within a Port WWN 
                list." 
        ::= { vsanWwnListEntry 2 }

vsanWwnListWwn  OBJECT-TYPE
        SYNTAX     FcNameId
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                "The Port WWN associated with this entry."
        ::= { vsanWwnListEntry 3 }

vsanWwnListRowStatus OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
               "The status of this conceptual row. Users can create,
                and delete the Port WWN entry." 
        ::= { vsanWwnListEntry 4 }


-- VSAN Static Membership

vsanIfNumber  OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of rows in the vsanIfTable."
        ::= { vsanMembership 4 }

--
-- VSAN interface table
--



vsanIfTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF VsanIfEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "A table containing VSAN-related information for 
                interfaces.
                This table gives a list of interface that are statically
                assigned to different VSANs. In addition, it also gives 
                the list of Port WWNs that are denied on a particular
                interface.
                Here is a example of this table :

                ifIndex   vsanIndex    denyList
                2            1           0
                9            4           4
                12           3           0
                34           2           0
                345          1           3
                456          1           0
                1234         2           0
                5676         3           0

                Entries are automatically created for every E_port and 
                Fx_ports on the device."
        ::= { vsanMembership 5 }

vsanIfEntry OBJECT-TYPE
        SYNTAX     VsanIfEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "This contains information on the static membership
                of a interface and the list of Port WWNs that are 
                denied fabric login on that interface.
                The table contains membership information only for 
                E_port and Fx_ports."
        INDEX { ifIndex }
        ::= { vsanIfTable 1 }

VsanIfEntry ::= SEQUENCE {
             vsanIfVsan                           VsanIndex, 
             vsanIfDenyList                       ListIndexOrZero  
}

vsanIfVsan  OBJECT-TYPE
        SYNTAX     VsanIndex
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
                "Index of the VSAN to which this interface is 
                statically assigned." 
        DEFVAL { 1 }
        ::= { vsanIfEntry 1 }

vsanIfDenyList  OBJECT-TYPE
        SYNTAX     ListIndexOrZero
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
                "Index of the Port WWN list in the vsanWwnListTable. 
                This is the list of Port WWNs which are denied the 
                login when the Nx_ports try to login to the fabric 
                on this interface. 
                The value of this object is 0, if and only if there 
                is no list to be denied on this port."
        DEFVAL { 0 }
        ::= { vsanIfEntry 2 }


-- VSAN Dynamic membership

vsanDynamicListNumber  OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of WWN lists configured for dynamic 
            membership. This is the number of rows in the 
            vsanDynamicTable."
        ::= { vsanMembership 6 }


-- VSAN Port WWN dynamic table

-- This table is a global list of Port WWNs that are allowed login 
-- into this device.

vsanDynamicTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF VsanDynamicEntry
        MAX-ACCESS not-accessible
        STATUS     current              
        DESCRIPTION
               "The global database of Port WWN list to VSAN mappings 
               which are used to determining dynamic membership of 
               VSANs. If the port WWN in the login request is present
               in the database, then it is allowed login to the 
               fabric. 
               Following is an example for this table:

                listIndex     vsanIndex    
                    1            3
                    2            3
                    3            3
                    5            4"
        ::= { vsanMembership 7 }

vsanDynamicEntry OBJECT-TYPE
        SYNTAX     VsanDynamicEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "A row containing VSAN information, which is 
                dynamically applied, based on a particular list of 
                Port WWNs."
        INDEX  { vsanWwnListIndex }
        ::= { vsanDynamicTable 1 }

VsanDynamicEntry ::= SEQUENCE {
             vsanDynamicVsan       VsanIndex, 
             vsanDynamicRowStatus  RowStatus
}

vsanDynamicVsan  OBJECT-TYPE
        SYNTAX     VsanIndex
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                "The VSAN associated with this Port WWN list. If a 
                Nx_port tries to login into the fabric with a Port WWN
                contained in this list, then the interface connected 
                to that port is assigned to this VSAN."    
        DEFVAL { 1 }        
        ::= { vsanDynamicEntry 1 }

vsanDynamicRowStatus OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
               "The status of this conceptual row. Users can create,
                and delete a Port WWN to VSAN mapping entry." 
        ::= { vsanDynamicEntry 2 }


-- 
-- Vsan membership summary table
--
vsanMembershipSummaryTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF VsanMembershipSummaryEntry
        MAX-ACCESS not-accessible
        STATUS     current              
        DESCRIPTION
               "The VSAN membership summary table. vsanIfTable provides
               static VSAN membership of each of the interfaces whereas
               cdpvmDynPortsTable provides dynamic VSAN membership.
               This table lists all interfaces which are
               statically or dynamically assigned to VSANs on
               the local device.

               Following is an example for this table:

                vsanIndex    SummaryInterface    
                    1            1212311
                    1            4311
                    1            56544
                    2            7665
                    3            76542"
        REFERENCE
               "For information on cdpvmDynPortsTable, refer to
               CISCO-DPVM-MIB."
        ::= { vsanMembership 8 }

vsanMembershipSummaryEntry OBJECT-TYPE
        SYNTAX     VsanMembershipSummaryEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "A row in the vsanMembershipSummaryTable. Each row
                identifies one interface such that the identified 
                interface is one of the potentially many interfaces
                which are members of a particular VSAN."
        INDEX  { vsanIndex, vsanMembershipSummaryInterface }
        ::= { vsanMembershipSummaryTable 1 }

VsanMembershipSummaryEntry ::= SEQUENCE {
             vsanMembershipSummaryInterface  InterfaceIndex,
             vsanMembershipSummaryIntfType   INTEGER
}

vsanMembershipSummaryInterface OBJECT-TYPE
        SYNTAX      InterfaceIndex
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
               "The ifIndex of the interface which is a member of this
               VSAN."
        ::= { vsanMembershipSummaryEntry 1 }

vsanMembershipSummaryIntfType OBJECT-TYPE
        SYNTAX      INTEGER {
                        unknown(1),
                        static(2),
                        dynamic(3)
                      }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
               "Indicate how this interface (represented by
               vsanMembershipSummaryInterface) was assigned to
               this VSAN."
        ::= { vsanMembershipSummaryEntry 2 }

-- Global Fibre Channel Timers, which are common for all VSANs
--

fcTimerRatov OBJECT-TYPE
        SYNTAX      CiscoMilliSeconds(5000..100000)
        UNITS       "msec"
        MAX-ACCESS  read-write
        STATUS      current 
        DESCRIPTION
               "The Resource_Allocation_Timeout Value used for FxPorts 
               as the timeout value for determining when to reuse an 
               NxPort resource such as a Recovery_Qualifier.  It 
               represents E_D_TOV (fcTimerEdtov) plus twice the
               maximum time that a frame may be delayed within the 
               Fabric and still be delivered.

               Note that all switches in a fabric should be configured
               with the same value of this timeout." 
        REFERENCE
               "Section 29.2.1.3 R_A_TOV in FC-PH (Fibre Channel - 
               Physical and Signaling Interface) Rev 4.3."
        DEFVAL     { 10000 }
        ::= { vsanFcConfiguration 1 }

fcTimerEdtov OBJECT-TYPE
        SYNTAX      CiscoMilliSeconds(1000..100000)
        UNITS       "msec"
        MAX-ACCESS  read-write
        STATUS      current 
        DESCRIPTION
               "The Error_Detect_Timeout Value used for FxPorts as
               the timeout value for detecting an error condition. 
               Note that all switches in a fabric should be configured
               with the same value of this timeout.

               Note that value of this object must be less than value
               of fcTimerDstov." 
        REFERENCE
               "Section 29.2.1.2 E_D_TOV in FC-PH (Fibre Channel - 
               Physical and Signaling Interface) Rev 4.3."    
        DEFVAL      { 2000 }
        ::= { vsanFcConfiguration 2 }

fcTimerFstov OBJECT-TYPE
        SYNTAX      CiscoMilliSeconds
        UNITS       "msec"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
               "The Fabric_Stability_Timeout Value used to ensure that
               Fabric stability has been achieved during Fabric 
               Configuration." 
        REFERENCE
               "Section 3.1.40 F_S_TOV in FC-SW2 (Fibre Channel - 
               Switch Fabric) Rev 5.4."
        ::= { vsanFcConfiguration 3 }

fcTimerDstov OBJECT-TYPE
        SYNTAX      CiscoMilliSeconds(5000..100000)
        UNITS       "msec"
        MAX-ACCESS  read-write
        STATUS      current 
        DESCRIPTION
               "The Distributed_Services_Timeout Value which indicates
               how long a distributed services requester will 
               wait for a response." 
        REFERENCE
               "Section 3.1.25 in FC-SW2 (Fibre Channel - 
               Switch Fabric) Rev 5.4."
        DEFVAL  { 5000 }
        ::= { vsanFcConfiguration 4 }

fcNetworkDropLatency OBJECT-TYPE
        SYNTAX      CiscoMilliSeconds (500..60000)
        UNITS       "msec"
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
               "Network latency of this switch. This is the time 
               interval after which the frames are dropped if they are
               not delivered in the order they were transmitted.
               Note that fcNetworkLatency is always greater than 
               fcSwitchLatency."
        DEFVAL      { 2000 }
        ::= { vsanFcConfiguration 5 }

fcSwitchDropLatency OBJECT-TYPE
        SYNTAX      CiscoMilliSeconds (0..60000)
        UNITS       "msec"
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
               "The switch latency of this switch.
               This is the time interval after which a switch drops the
               undelivered frames on a link which went down after 
               delivering some frames to the next hop. This way the 
               undelivered frames can be transmitted on a new link if 
               there is one available."
        DEFVAL      { 500 }
        ::= { vsanFcConfiguration 6 }

fcInorderDelivery  OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
                "The InorderDelivery guarantee flag of device.
                If the value of the object is 'true', then the 
                in-order delivery is guaranteed. If 'false', it is not
                guaranteed."
        DEFVAL { false }
        ::= { vsanFcConfiguration 7 }

-- VSAN Fibre Channel Timers
--

vsanFcTimerTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF VsanFcTimerEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "This table allows the different FC timer values 
                to be configured per VSAN basis.
                To set a particular type of 'FC Timeout Value',
                the VSAN should be in 'suspended' administrative 
                state." 
        ::= { vsanFcConfiguration 8 }

vsanFcTimerEntry OBJECT-TYPE
        SYNTAX     VsanFcTimerEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "This object contains information about the 
                FC timer values (dstov / edtov / ratov / fstov)  
                configured for a VSAN.
                Whenever a global FC timer value (fcTimerRatov /
                fcTimerEdtov / fcTimerDstov / fcTimerFstov) is 
                configured then the corresponding FC timer value for 
                all the VSANs will be replaced with the global value."
        AUGMENTS { vsanEntry } 
        ::= { vsanFcTimerTable 1 }

VsanFcTimerEntry ::= SEQUENCE {
        vsanFcTimerForceFlag  BITS,
        vsanFcTimerRatov      CiscoMilliSeconds,
        vsanFcTimerEdtov      CiscoMilliSeconds,
        vsanFcTimerDstov      CiscoMilliSeconds,
        vsanFcTimerFstov      CiscoMilliSeconds
}


vsanFcTimerForceFlag  OBJECT-TYPE
        SYNTAX  BITS {
                       ratov (0),
                       edtov (1),
                       dstov (2) 
                } 
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                "This object contains one bit for each of 
                the FC timer value objects in this same table. 
                The value of each bit governs the agent's 
                behavior when the corresponding FC timer-value 
                object is modified for a VSAN when that VSAN's 
                administrative state is 'active'.  Specifically, if a 
                VSAN's administrative state is 'active', then:

                - an attempt to change a VSAN's value of 
                  vsanFcTimerRatov, vsanFcTimerEdtov or 
                  vsanFcTimerDstov will fail if the corresponding 
                  bit position of this object has the value 0.

                - if the corresponding bit position of this object 
                  has the value 1, then an attempt to change a 
                  VSAN's value of vsanFcTimerRatov, vsanFcTimerEdtov 
                  and/or vsanFcTimerDstov will cause the VSAN to be 
                  temporarily suspended while the timer value is 
                  changed, and then re-activated again.

                The default value of this object will have all 
                the bits reset." 
        ::= { vsanFcTimerEntry 1 }

vsanFcTimerRatov OBJECT-TYPE
        SYNTAX      CiscoMilliSeconds(5000..100000)
        UNITS       "msec"
        MAX-ACCESS  read-create
        STATUS      current 
        DESCRIPTION
                "The Resource_Allocation_Timeout Value used for
                FxPorts as the timeout value for determining 
                when to reuse an NxPort resource such as a 
                Recovery_Qualifier. It represents E_D_TOV 
                (vsanFcTimerEdtov) plus twice the maximum time 
                that a frame may be delayed within the fabric 
                and still be delivered.
                Note that all switches in a VSAN should be 
                configured with the same value of this timeout. 
               
                If the corresponding VSAN administrative state is 
                'active', then the 'SET' operation on this object 
                results in error. However to force the value of 
                'Resource Allocation Timeout Value', when the 
                VSAN administrative state is 'active', the corresponding
                instance of 'vsanFcTimerForceFlag' bit position 0 
                should be set." 
        REFERENCE
                "Section 29.2.1.3 R_A_TOV in FC-PH (Fibre Channel - 
                Physical and Signaling Interface) Rev 4.3."
        DEFVAL     { 10000 }
        ::= { vsanFcTimerEntry 2 }

vsanFcTimerEdtov OBJECT-TYPE
        SYNTAX      CiscoMilliSeconds(1000..100000)
        UNITS       "msec"
        MAX-ACCESS  read-create
        STATUS      current 
        DESCRIPTION
                "The Error_Detect_Timeout Value used for FxPorts 
                as the timeout value for detecting an error 
                condition. 
                Note that all switches in a VSAN should be 
                configured with the same value of this timeout.
                Note that value of this object must be less than 
                value of vsanFcTimerDstov. 
             
                If the corresponding VSAN administrative state is 
                'active', then the 'SET' operation on this object 
                results in error. However to force the value of 
                'Error Detect Timeout Value', when the VSAN 
                administrative state is 'active', the corresponding 
                instance of 'vsanFcTimerForceFlag' bit position 1 should
                be set." 
        REFERENCE
                "Section 29.2.1.2 E_D_TOV in FC-PH (Fibre Channel - 
                Physical and Signaling Interface) Rev 4.3."    
        DEFVAL      { 2000 }
        ::= { vsanFcTimerEntry 3 }

vsanFcTimerDstov OBJECT-TYPE
        SYNTAX      CiscoMilliSeconds(5000..100000)
        UNITS       "msec"
        MAX-ACCESS  read-create
        STATUS      current 
        DESCRIPTION
                "The Distributed_Services_Timeout Value which 
                indicates how long a distributed services 
                requester will wait for a response. 
            
                If the corresponding VSAN administrative state is 
                'active', then the 'SET' operation on this object 
                results in error. However to force the value of 
                'Distributed Services Timeout Value', when the VSAN 
                administrative state is 'active', the corresponding 
                instance of 'vsanFcTimerForceFlag' bit position 2 
                should be set." 
        REFERENCE
                "Section 3.1.25 in FC-SW2 (Fibre Channel - 
                Switch Fabric) Rev 5.4."
        DEFVAL      { 5000 }
        ::= { vsanFcTimerEntry 4 }

vsanFcTimerFstov OBJECT-TYPE
        SYNTAX      CiscoMilliSeconds
        UNITS       "msec"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
                "The Fabric_Stability_Timeout Value used to ensure 
                that Fabric stability has been achieved during Fabric 
                Configuration. The value of this object is common 
                across all VSANs." 
        REFERENCE
                "Section 3.1.40 F_S_TOV in FC-SW2 (Fibre Channel - 
                Switch Fabric) Rev 5.4."
        ::= { vsanFcTimerEntry 5 }

-- objects that are sent with notifications

vsanFcFeElementName OBJECT-TYPE
        SYNTAX      FcNameId
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
              "This object is part of vsanPortMembershipChange notification.
                It is the Switch World-Wide Name (WWN) of the switch which is
                generating this notification."
        ::= { vsanStats 1 }

-- Notifications

vsanStatusChange NOTIFICATION-TYPE
        OBJECTS     { notifyVsanIndex, vsanAdminState, vsanOperState }
        STATUS      current
        DESCRIPTION
                "A state change notification is generated whenever
                vsanOperState is changed. The index and both states of 
                the VSAN after the change, are included as variables 
                in the notification."
    ::= { vsanNotifications 1 }

vsanPortMembershipChange NOTIFICATION-TYPE
        OBJECTS     { vsanFcFeElementName, ifIndex, notifyVsanIndex}
        STATUS      current
        DESCRIPTION
                "A membership change notification is generated whenever
                port-vsan membership of a port is changed. The switch 
                wwn, interface index and new port-vsan after the change,
                are included as variables in the notification. Change in
                vsanIfEntry object of vsanIfTable triggers this 
                notification."
    ::= { vsanNotifications 2 }

-- Conformance

vsanMIBCompliances OBJECT IDENTIFIER ::= { vsanMIBConformance 1 }
vsanMIBGroups     OBJECT IDENTIFIER ::= { vsanMIBConformance 2 }

vsanMIBCompliance MODULE-COMPLIANCE
        STATUS   deprecated  -- superceded by vsanMIBCompliance1
        DESCRIPTION
                "The compliance statement for entities which
                 implement the VSANs."
        MODULE MANDATORY-GROUPS { vsanGroup, 
                                  vsanMembershipGroup,
                                  vsanStaticMembershipGroup,
                                  vsanNotificationGroup,
                                  vsanFcTimerGroup,
                                  vsanFcLatencyGroup }

        GROUP  vsanDynamicMembershipGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs."

        GROUP   vsanWWNListGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs 
                based on WWNs."
        
        OBJECT vsanMediaType 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."

        OBJECT vsanMtu 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."
                                           
        OBJECT vsanRowStatus             
        SYNTAX     INTEGER {             
                     active(1),
                     createAndGo(4),
                     destroy(6) }
        MIN-ACCESS read-create
        DESCRIPTION 
                "Only three values 'createAndGo', 'destroy' and 
                'active' out of the six enumerated values need to be
                supported."
                                           
        OBJECT vsanIfDenyList             
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only access need to be supported if system 
                does not support dynamic membership of VSANs."

        ::= { vsanMIBCompliances 1 }

vsanMIBCompliance1 MODULE-COMPLIANCE
        STATUS   deprecated  -- superceded by vsanMIBCompliance2
        DESCRIPTION
                "The compliance statement for entities which
                 implement the VSANs."
        MODULE MANDATORY-GROUPS { vsanGroup, 
                                  vsanMembershipGroup,
                                  vsanStaticMembershipGroup,
                                  vsanNotificationGroup,
                                  vsanFcTimerGroup,
                                  vsanFcLatencyGroup,
                                  vsanVsanMembershipSummaryGroup }

        GROUP  vsanDynamicMembershipGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs."

        GROUP   vsanWWNListGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs 
                based on WWNs."
        
        OBJECT vsanMediaType 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."

        OBJECT vsanMtu 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."
                                           
        OBJECT vsanRowStatus             
        SYNTAX     INTEGER {             
                     active(1),
                     createAndGo(4),
                     destroy(6) }
        MIN-ACCESS read-create
        DESCRIPTION 
                "Only three values 'createAndGo', 'destroy' and 
                'active' out of the six enumerated values need to be
                supported."
                                           
        OBJECT vsanIfDenyList             
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only access need to be supported if system 
                does not support dynamic membership of VSANs."

        ::= { vsanMIBCompliances 2 }

vsanMIBCompliance2 MODULE-COMPLIANCE
        STATUS  deprecated 
        DESCRIPTION
                "The compliance statement for entities which
                 implement the VSANs."
        MODULE MANDATORY-GROUPS { vsanGroupRev1, 
                                  vsanMembershipGroup,
                                  vsanStaticMembershipGroup,
                                  vsanNotificationGroup,
                                  vsanFcTimerGroup,
                                  vsanFcLatencyGroup,
                                  vsanVsanMembershipSummaryGroup }

        GROUP  vsanDynamicMembershipGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs."

        GROUP   vsanWWNListGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs 
                based on WWNs."
        
        OBJECT vsanMediaType 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."

        OBJECT vsanMtu 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."
                                           
        OBJECT vsanRowStatus             
        SYNTAX     INTEGER {             
                     active(1),
                     createAndGo(4),
                     destroy(6) }
        MIN-ACCESS read-create
        DESCRIPTION 
                "Only three values 'createAndGo', 'destroy' and 
                'active' out of the six enumerated values need to be
                supported."
                                           
        OBJECT vsanIfDenyList             
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only access need to be supported if system 
                does not support dynamic membership of VSANs."

        ::= { vsanMIBCompliances 3 }

vsanMIBCompliance3 MODULE-COMPLIANCE
        STATUS   deprecated -- superceded by vsanMIBCompliance4
        DESCRIPTION
                "The compliance statement for entities which
                 implement the VSANs."
        MODULE MANDATORY-GROUPS { vsanGroupRev1, 
                                  vsanMembershipGroup,
                                  vsanStaticMembershipGroup,
                                  vsanNotificationGroup,
                                  vsanFcTimerGroupRev1,
                                  vsanFcLatencyGroup,
                                  vsanVsanMembershipSummaryGroup }

        GROUP  vsanDynamicMembershipGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs."

        GROUP   vsanWWNListGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs 
                based on WWNs."
        
        OBJECT vsanMediaType 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."

        OBJECT vsanMtu 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."
                                           
        OBJECT vsanRowStatus             
        SYNTAX     INTEGER {             
                     active(1),
                     createAndGo(4),
                     destroy(6) }
        MIN-ACCESS read-create
        DESCRIPTION 
                "Only three values 'createAndGo', 'destroy' and 
                'active' out of the six enumerated values need to be
                supported."
                                           
        OBJECT vsanIfDenyList             
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only access need to be supported if system 
                does not support dynamic membership of VSANs."

        OBJECT vsanInterOperValue
        SYNTAX     Integer32 (0..3)
        DESCRIPTION 
                "Only values from 0 to 3 need to be supported." 
        ::= { vsanMIBCompliances 4 }

vsanMIBCompliance4 MODULE-COMPLIANCE
        STATUS   deprecated -- superceded by vsanMIBCompliance5
        DESCRIPTION
                "The compliance statement for entities which
                 implement the VSANs."
        MODULE MANDATORY-GROUPS { vsanGroupRev2, 
                                  vsanMembershipGroup,
                                  vsanStaticMembershipGroup,
                                  vsanNotificationGroup,
                                  vsanFcTimerGroupRev1,
                                  vsanFcLatencyGroup,
                                  vsanVsanMembershipSummaryGroup }

        GROUP  vsanDynamicMembershipGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs."

        GROUP   vsanWWNListGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs 
                based on WWNs."
        
        OBJECT vsanMediaType 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."

        OBJECT vsanMtu 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."
                                           
        OBJECT vsanRowStatus             
        SYNTAX     INTEGER {             
                     active(1),
                     createAndGo(4),
                     destroy(6) }
        MIN-ACCESS read-create
        DESCRIPTION 
                "Only three values 'createAndGo', 'destroy' and 
                'active' out of the six enumerated values need to be
                supported."
                                           
        OBJECT vsanIfDenyList             
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only access need to be supported if system 
                does not support dynamic membership of VSANs."

        OBJECT vsanInterOperValue
        SYNTAX     Integer32 (0..3)
        DESCRIPTION 
                "Only values from 0 to 3 need to be supported." 
        ::= { vsanMIBCompliances 5 }

vsanMIBCompliance5 MODULE-COMPLIANCE
        STATUS   deprecated -- superceded by vsanMIBCompliance6
        DESCRIPTION
                "The compliance statement for entities which
                 implement the VSANs."
        MODULE MANDATORY-GROUPS { vsanGroupRev2, 
                                  vsanMembershipGroup,
                                  vsanStaticMembershipGroup,
                                  vsanNotificationGroup,
                                  vsanFcTimerGroupRev1,
                                  vsanFcLatencyGroup,
                                  vsanVsanMembershipSummaryGroup,
                                  vsanMembershipSummaryGroupRev1 }

        GROUP  vsanDynamicMembershipGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs."

        GROUP   vsanWWNListGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs 
                based on WWNs."
        
        OBJECT vsanMediaType 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."

        OBJECT vsanMtu 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."
                                           
        OBJECT vsanRowStatus             
        SYNTAX     INTEGER {             
                     active(1),
                     createAndGo(4),
                     destroy(6) }
        MIN-ACCESS read-create
        DESCRIPTION 
                "Only three values 'createAndGo', 'destroy' and 
                'active' out of the six enumerated values need to be
                supported."
                                           
        OBJECT vsanIfDenyList             
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only access need to be supported if system 
                does not support dynamic membership of VSANs."

        OBJECT vsanInterOperValue
        SYNTAX     Integer32 (0..3)
        DESCRIPTION 
                "Only values from 0 to 3 need to be supported." 
        ::= { vsanMIBCompliances 6 }

vsanMIBCompliance6 MODULE-COMPLIANCE
        STATUS   deprecated -- superceded by vsanMIBCompliance7
        DESCRIPTION
                "The compliance statement for entities which
                 implement the VSANs."
        MODULE MANDATORY-GROUPS { vsanGroupRev2, 
                                  vsanMembershipGroup,
                                  vsanStaticMembershipGroup,
                                  vsanNotificationGroupRev1,
                                  vsanFcTimerGroupRev1,
                                  vsanFcLatencyGroup,
                                  vsanVsanMembershipSummaryGroup,
                                  vsanMembershipSummaryGroupRev1 }

        GROUP  vsanDynamicMembershipGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs."

        GROUP   vsanWWNListGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs 
                based on WWNs."
        
        OBJECT vsanMediaType 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."

        OBJECT vsanMtu 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."
                                           
        OBJECT vsanRowStatus             
        SYNTAX     INTEGER {             
                     active(1),
                     createAndGo(4),
                     destroy(6) }
        MIN-ACCESS read-create
        DESCRIPTION 
                "Only three values 'createAndGo', 'destroy' and 
                'active' out of the six enumerated values need to be
                supported."
                                           
        OBJECT vsanIfDenyList             
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only access need to be supported if system 
                does not support dynamic membership of VSANs."

        OBJECT vsanInterOperValue
        SYNTAX     Integer32 (0..3)
        DESCRIPTION 
                "Only values from 0 to 3 need to be supported." 
        ::= { vsanMIBCompliances 7 }

vsanMIBCompliance7 MODULE-COMPLIANCE
        STATUS   current
        DESCRIPTION
                "The compliance statement for entities which
                 implement the VSANs."
        MODULE MANDATORY-GROUPS { vsanGroupRev3, 
                                  vsanMembershipGroup,
                                  vsanStaticMembershipGroup,
                                  vsanNotificationGroupRev1,
                                  vsanFcTimerGroupRev1,
                                  vsanFcLatencyGroup,
                                  vsanVsanMembershipSummaryGroup,
                                  vsanMembershipSummaryGroupRev1 }

        GROUP  vsanDynamicMembershipGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs."

        GROUP   vsanWWNListGroup
        DESCRIPTION
                "Implementation of this group is mandatory for all
                systems that support dynamic membership of VSANs 
                based on WWNs."
        
        OBJECT vsanMediaType 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."

        OBJECT vsanMtu 
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only need to be supported."
                                           
        OBJECT vsanRowStatus             
        SYNTAX     INTEGER {             
                     active(1),
                     createAndGo(4),
                     destroy(6) }
        MIN-ACCESS read-create
        DESCRIPTION 
                "Only three values 'createAndGo', 'destroy' and 
                'active' out of the six enumerated values need to be
                supported."
                                           
        OBJECT vsanIfDenyList             
        MIN-ACCESS read-only
        DESCRIPTION 
                "Only read-only access need to be supported if system 
                does not support dynamic membership of VSANs."

        OBJECT vsanInterOperValue
        SYNTAX     Integer32 (0..3)
        DESCRIPTION 
                "Only values from 0 to 3 need to be supported." 
        ::= { vsanMIBCompliances 8 }

-- Units of Conformance

vsanGroup OBJECT-GROUP
        OBJECTS { vsanNumber, vsanLastChange, vsanName, vsanMediaType, 
                  vsanMtu, vsanAdminState,  vsanLoadBalancingType, 
                  vsanInterOperMode, vsanOperState, vsanRowStatus, 
                  notifyVsanIndex, fcInorderDelivery }
        STATUS   deprecated -- superceded by vsanGroupRev1
        DESCRIPTION
                "A collection of objects for configuring and
                displaying information on VSANs."
        ::= { vsanMIBGroups 1 }

vsanMembershipGroup   OBJECT-GROUP
        OBJECTS  { vsanDenyUnknownWwn } 
        STATUS   current
        DESCRIPTION
                "A collection of objects for controlling VSAN 
                membership."
        ::= { vsanMIBGroups 3 }

vsanStaticMembershipGroup   OBJECT-GROUP
        OBJECTS  { vsanIfNumber, vsanIfVsan , vsanIfDenyList } 
        STATUS   current
        DESCRIPTION
                "A collection of objects for displaying and
                  configuring VSAN static membership."
        ::= { vsanMIBGroups 4 }

vsanWWNListGroup   OBJECT-GROUP
        OBJECTS  { vsanWwnListNumber, vsanWwnListWwn,
                        vsanWwnListRowStatus }
        STATUS   current
        DESCRIPTION
                "A collection of objects for creating WWN lists and
                adding Port WWNs into Port WWN list."
        ::= { vsanMIBGroups 5 }

vsanDynamicMembershipGroup   OBJECT-GROUP
        OBJECTS  { vsanDynamicListNumber, vsanDynamicVsan, 
                   vsanDynamicRowStatus }
        STATUS   current
        DESCRIPTION
                "A collection of objects for dynamic VSAN 
                configuration."
        ::= { vsanMIBGroups 6 }

vsanNotificationGroup   NOTIFICATION-GROUP
        NOTIFICATIONS  { vsanStatusChange }
        STATUS   deprecated -- superceded by vsanNotificationGroupRev1
        DESCRIPTION
                "A collection of objects for status change monitoring 
                and notifications."
        ::= { vsanMIBGroups 7 }

vsanFcTimerGroup   OBJECT-GROUP
        OBJECTS  { fcTimerRatov, fcTimerEdtov, fcTimerFstov,  
                   fcTimerDstov }
        STATUS  deprecated 
        DESCRIPTION
                "A collection of objects for configuring and 
                monitoring Fibre Channel timers."
        ::= { vsanMIBGroups 8 }

vsanFcLatencyGroup   OBJECT-GROUP
        OBJECTS  { fcNetworkDropLatency, fcSwitchDropLatency }
        STATUS   current
        DESCRIPTION
                "A collection of objects for configuring and 
                monitoring Fibre Channel latencies."
        ::= { vsanMIBGroups 9 }

vsanVsanMembershipSummaryGroup   OBJECT-GROUP
        OBJECTS  { vsanMembershipSummaryInterface }
        STATUS   current
        DESCRIPTION
                "A collection of objects for VSAN membership summary."
        ::= { vsanMIBGroups 10 }

vsanGroupRev1 OBJECT-GROUP
        OBJECTS { vsanNumber, vsanLastChange, vsanName, vsanMediaType, 
                  vsanMtu, vsanAdminState,  vsanLoadBalancingType, 
                  vsanOperState, vsanRowStatus, vsanInterOperValue,
                  notifyVsanIndex, fcInorderDelivery }
        STATUS   deprecated -- superceded by vsanGroupRev2
        DESCRIPTION
                "A collection of objects for configuring and
                displaying information on VSANs."
        ::= { vsanMIBGroups 11 }

vsanFcTimerGroupRev1   OBJECT-GROUP
        OBJECTS { fcTimerRatov,
                  fcTimerEdtov, 
                  fcTimerDstov, 
                  fcTimerFstov, 
                  vsanFcTimerForceFlag, 
                  vsanFcTimerRatov,
                  vsanFcTimerEdtov,
                  vsanFcTimerDstov,
                  vsanFcTimerFstov }
        STATUS  current 
        DESCRIPTION
                "A collection of objects for configuring and 
                monitoring global FC timers and  
                per VSAN based FC timers."
        ::= { vsanMIBGroups 12 }

vsanGroupRev2 OBJECT-GROUP
        OBJECTS { vsanNumber, vsanLastChange, vsanName, vsanMediaType, 
                  vsanMtu, vsanAdminState,  vsanLoadBalancingType, 
                  vsanOperState, vsanRowStatus, vsanInterOperValue,
                  notifyVsanIndex, fcInorderDelivery, 
                  vsanInorderDelivery, vsanNetworkDropLatency }
        STATUS   deprecated -- superceded by vsanGroupRev3
        DESCRIPTION
                "A collection of objects for configuring and
                displaying information on VSANs."
        ::= { vsanMIBGroups 13 }

vsanMembershipSummaryGroupRev1   OBJECT-GROUP
        OBJECTS  { vsanMembershipSummaryIntfType }
        STATUS   current
        DESCRIPTION
                "A collection of objects for VSAN membership
                interface type."
        ::= { vsanMIBGroups 14 }

vsanNotificationGroupRev1   NOTIFICATION-GROUP
        NOTIFICATIONS  { vsanStatusChange, vsanPortMembershipChange }
        STATUS   current
        DESCRIPTION
           "A collection of notifications for VSAN management." 
        ::= { vsanMIBGroups 15 }

vsanGroupRev3 OBJECT-GROUP
        OBJECTS { vsanNumber, vsanLastChange, vsanName, vsanMediaType, 
                  vsanMtu, vsanAdminState,  vsanLoadBalancingType, 
                  vsanOperState, vsanRowStatus, vsanInterOperValue,
                  notifyVsanIndex, fcInorderDelivery, 
                  vsanInorderDelivery, vsanNetworkDropLatency,
                  vsanFcFeElementName}
        STATUS   current
        DESCRIPTION
                "A collection of objects for configuring and
                displaying information on VSANs."
        ::= { vsanMIBGroups 16 }

END
