-- *****************************************************************
-- FS-VSD-MIB.mib:  FS VSD MIB file
--
-- April 2014, YuShouhua
--
-- Copyright (c) 2014 by FS.COM Inc..
-- All rights reserved.
-- 
-- *****************************************************************
--

FS-MIB-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY,
        OBJECT-TYPE,
        NOTIFICATION-TYPE,
        Integer32
                FROM SNMPv2-SMI
        DisplayString,
        MacAddress
                FROM SNMPv2-TC
        MODULE-COMPLIANCE,
        OBJECT-GROUP,
        NOTIFICATION-GROUP
                FROM SNMPv2-CONF
        fsMgmt
                FROM FS-SMI;

fsVSDMIB MODULE-IDENTITY
    LAST-UPDATED "201404020000Z"
    ORGANIZATION "FS.COM Inc.."
    CONTACT-INFO
        " 
            Tel: 400-865-2852 

            E-mail: https://www.fs.com/live_chat_service_mail.html"
    DESCRIPTION
        "This module defines fs VSD mibs."
    REVISION      "201404020000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { fsMgmt 129}

fsVSDMIBObjects OBJECT IDENTIFIER ::= { fsVSDMIB 1 }


--
-- VSD information
--

fsVSDSupport OBJECT-TYPE
          SYNTAX Integer32
          MAX-ACCESS read-only
          STATUS current
          DESCRIPTION
              "This node describes whether to support VSD in this device. 0 for not support, 1 for support."
          ::= { fsVSDMIBObjects 1 }
  
fsVSDCurrentID OBJECT-TYPE
          SYNTAX Integer32
          MAX-ACCESS read-only
          STATUS current
          DESCRIPTION
              "The current VSD ID."
          ::= { fsVSDMIBObjects 2 }
          
fsVSDMaxNumber OBJECT-TYPE
          SYNTAX Integer32
          MAX-ACCESS read-only
          STATUS current
          DESCRIPTION
              "Max number of VSDs of the system permitting, including VSD 0.Only valid in VSD 0."
          ::= { fsVSDMIBObjects 3 }
          
fsVSDCurrentNumber OBJECT-TYPE
          SYNTAX Integer32
          MAX-ACCESS read-only
          STATUS current
          DESCRIPTION
              "The number of VSDs of this device at this time, including VSD 0. Only valid in VSD 0."
          ::= { fsVSDMIBObjects 4 }   
          
fsVSDMasterMac OBJECT-TYPE
          SYNTAX MacAddress
          MAX-ACCESS read-only
          STATUS current
          DESCRIPTION
              "The MAC address of this device."
          ::= { fsVSDMIBObjects 5 }
          
fsVSDCurrentMac OBJECT-TYPE
          SYNTAX MacAddress
          MAX-ACCESS read-only
          STATUS current
          DESCRIPTION
              "The MAC address of this VSD."
          ::= { fsVSDMIBObjects 6 }
        
fsVSDVituralSerial OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..32))
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The virtual serial number of this VSD."
        ::= { fsVSDMIBObjects 7 }

fsVSDMasterSerial OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..32))
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The serial number of this device."
        ::= { fsVSDMIBObjects 8 }

fsVSDInfoTable OBJECT-TYPE
        SYNTAX SEQUENCE OF FSVSDInfoEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "List of VSDs."
        ::= { fsVSDMIBObjects 9 }
        
fsVSDInfoEntry OBJECT-TYPE
        SYNTAX FSVSDInfoEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Entry of a VSD information. Only valid in VSD 0."
        INDEX { fsVSDInfoIndex }
        ::= { fsVSDInfoTable 1 }
    
FSVSDInfoEntry ::=
        SEQUENCE {
           fsVSDInfoIndex Integer32,
           fsVSDValid Integer32,
           fsVSDName DisplayString,
           fsVSDMacAddress MacAddress,
           fsVSDSerialNumber DisplayString,
           fsVSDUniqueNumber DisplayString 
        }
        
fsVSDInfoIndex OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "An unique value of each VSD in VSDInfoTable, equal to the value of VSD_ID + 1 . Its value ranges between
             1 and the value of the object fsVSDMaxNumber."
        ::= { fsVSDInfoEntry 1 }
              
fsVSDValid OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "Is this VSD valid. 0-for not valid,1-for valid"
        ::= { fsVSDInfoEntry 2 }

fsVSDName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..32))
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "Name of the vsd."
        ::= { fsVSDInfoEntry 3 }
        
fsVSDMacAddress OBJECT-TYPE
          SYNTAX  MacAddress
          MAX-ACCESS read-only
          STATUS current
          DESCRIPTION
              "The MAC address of VSD"
          ::= { fsVSDInfoEntry 4 }

fsVSDSerialNumber OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..32))
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "Serial number of the device which this VSD belongs."
        ::= { fsVSDInfoEntry 5 }

fsVSDUniqueNumber OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..32))
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "A unique number of this VSD."
        ::= { fsVSDInfoEntry 6 }

fsVSDPortInfoTable OBJECT-TYPE
        SYNTAX SEQUENCE OF FSVSDPortInfoEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "a list of port Entries."
        ::= { fsVSDMIBObjects 10 }
    
fsVSDPortInfoEntry OBJECT-TYPE
        SYNTAX FSVSDPortInfoEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Entry containing VSD information about one port."
        INDEX { fsVSDPortDevice,  fsVSDPortSlot, fsVSDPortSubslot, fsVSDPortPortIdx}
        ::= { fsVSDPortInfoTable 1 }

FSVSDPortInfoEntry ::= 
        SEQUENCE {
             fsVSDPortDevice Integer32,
             fsVSDPortSlot Integer32,
             fsVSDPortSubslot Integer32,
             fsVSDPortPortIdx Integer32,
             fsVSDPortIfIndex Integer32,
             fsVSDPortVSDIndex Integer32
        }
    
fsVSDPortDevice OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The device id of this port."
        ::= { fsVSDPortInfoEntry 1 }

fsVSDPortSlot OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The slot id of this port."
        ::= { fsVSDPortInfoEntry 2 }

fsVSDPortSubslot OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The sub slot id of this port. In switch, it always be 0."
        ::= { fsVSDPortInfoEntry 3 }

fsVSDPortPortIdx OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The port index of this port in this card."
        ::= { fsVSDPortInfoEntry 4 }

fsVSDPortIfIndex OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The If index of this port in VSD."
        ::= { fsVSDPortInfoEntry 5 }
    
fsVSDPortVSDIndex OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The index of VSD which this port belongs."
        ::= { fsVSDPortInfoEntry 6 }
    
fsVSDMIBTraps OBJECT IDENTIFIER ::= { fsVSDMIB 2 }      

fsVSDChgDesc OBJECT-TYPE
        SYNTAX DisplayString
        MAX-ACCESS accessible-for-notify
        STATUS current
        DESCRIPTION
          "The description of VSD changes, such as creating a new VSD, removing a VSD, etc."
        ::= { fsVSDMIBTraps 1 }       
        
fsVSDStatusChange NOTIFICATION-TYPE
        OBJECTS   {fsVSDChgDesc}
        STATUS     current
        DESCRIPTION
                "While status of the VSD changed, this trap will be sent. Only valid in VSD 0."
        ::= { fsVSDMIBTraps 2 }           

fsVSDPortChgDesc OBJECT-TYPE
        SYNTAX DisplayString
        MAX-ACCESS accessible-for-notify
        STATUS current
        DESCRIPTION
          "The description of VSD port changes, such as alloc ports to VSD, etc."
        ::= { fsVSDMIBTraps 3 }       
        
fsVSDPortStatusChange NOTIFICATION-TYPE
        OBJECTS   {fsVSDPortChgDesc}
        STATUS     current
        DESCRIPTION
                "While port status of the VSD changed, this trap will be sent. Only valid in VSD 0."
        ::= { fsVSDMIBTraps 4 }        

-- conformance information

fsVSDMIBConformance OBJECT IDENTIFIER ::= { fsVSDMIB 3 }
fsVSDMIBCompliances OBJECT IDENTIFIER ::= { fsVSDMIBConformance 1 }
fsVSDMIBGroups      OBJECT IDENTIFIER ::= { fsVSDMIBConformance 2 }


-- compliance statements

fsVSDMIBCompliance MODULE-COMPLIANCE
        STATUS  current
        DESCRIPTION
                "The compliance statement for entities which implement
                the FS VSD MIB"
        MODULE  -- this module
                 
                GROUP      fsVSDInfoMIBGroup
                 DESCRIPTION
                     "VSD general information."  

                GROUP      fsVSDDetailInfoMIBGroup
                 DESCRIPTION
                     "Information of each VSD"  
                 
                GROUP      fsVSDPortInfoMIBGroup
                 DESCRIPTION
                     "VSD port infomation" 
                 
                GROUP      fsVSDChgDescGroup
                 DESCRIPTION
                     "Objects for VSD change notification."  
                                      
                GROUP       fsVSDMIBNotificationGroup
                DESCRIPTION
                     "VSD change notification."  
                     
        ::= { fsVSDMIBCompliances 1 }        
                    
-- units of conformance

fsVSDInfoMIBGroup OBJECT-GROUP
        OBJECTS {
          fsVSDSupport,
          fsVSDCurrentID,
          fsVSDMaxNumber, 
          fsVSDCurrentNumber,
          fsVSDMasterMac,
          fsVSDCurrentMac,
          fsVSDVituralSerial,
          fsVSDMasterSerial
        }
        STATUS  current
        DESCRIPTION
                "A collection of objects providing VSD information to a FS agent."
        ::= { fsVSDMIBGroups 1 } 

fsVSDDetailInfoMIBGroup OBJECT-GROUP
        OBJECTS {
           fsVSDInfoIndex,
           fsVSDValid,
           fsVSDName,
           fsVSDMacAddress,
           fsVSDSerialNumber,
           fsVSDUniqueNumber
        }
        STATUS  current
        DESCRIPTION
                "A collection of objects providing optional VSD information."
        ::= { fsVSDMIBGroups 2 } 
        
fsVSDPortInfoMIBGroup OBJECT-GROUP
        OBJECTS {
             fsVSDPortDevice,
             fsVSDPortSlot,
             fsVSDPortSubslot,
             fsVSDPortPortIdx,
             fsVSDPortIfIndex,
             fsVSDPortVSDIndex
        }
        STATUS  current
        DESCRIPTION
                "A collection of objects providing port information of VSDs."
        ::= { fsVSDMIBGroups 3 }                
                               
fsVSDChgDescGroup OBJECT-GROUP
        OBJECTS {
             fsVSDChgDesc,
             fsVSDPortChgDesc
        }
        STATUS  current
        DESCRIPTION
                "Objects that providing a literal description of VSD's change."
        ::= { fsVSDMIBGroups 4 }             
        
fsVSDMIBNotificationGroup NOTIFICATION-GROUP
        NOTIFICATIONS {
            fsVSDStatusChange,
            fsVSDPortStatusChange
        }
        STATUS        current
        DESCRIPTION
                "The collection of notifications which used to inform VSD general status information"
        ::= { fsVSDMIBGroups 5}          

-- definitions in RFC 1213 made

        
END
      
