-- *******************************************************************
-- FS-VSU-MIB.mib: FS VSU MIB file
-- June 2011, linjincheng
--
-- Copyright (c) 2011 by FS.COM Inc..
-- All rights reserved.
-- *******************************************************************
--
FS-VSU-MIB DEFINITIONS ::= BEGIN

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

fsVsuMIB MODULE-IDENTITY
        LAST-UPDATED "201108290000Z"
        ORGANIZATION "$Company$"
        CONTACT-INFO
            " 
        Tel: $Telephone$

        E-mail: $E-mail$"
        DESCRIPTION
            "This module defines VSU management mibs."
        REVISION "201106210000Z"
        DESCRIPTION
            "Initial version of this MIB module."
    ::= { fsMgmt 102 }

--********************************************************************
--                                                                  **
--                         VSU objects root                         **
--                                                                  **
--********************************************************************
fsVsuMIBObjects OBJECT IDENTIFIER ::= { fsVsuMIB 1 }


--***************** the VSU Topology nodes ********************
fsVsuTopo OBJECT IDENTIFIER ::= { fsVsuMIBObjects 1 }

fsVsuTopoShape OBJECT-TYPE
        SYNTAX      INTEGER {
                        chain(1),
                        ring(2)
                    }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU system topology shape"
    ::= { fsVsuTopo 1 }

fsVsuTopoConn OBJECT-TYPE
        SYNTAX      DisplayString
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The switch topology connection layout of the VSU system"
    ::= { fsVsuTopo 2 }


--***************** the VSU device nodes *********************
fsVsuDeviceInfo OBJECT IDENTIFIER ::= { fsVsuMIBObjects 2 }

fsVsuDomainID OBJECT-TYPE
        SYNTAX      INTEGER
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU system domain ID"
    ::= { fsVsuDeviceInfo 1 }

fsVsuDeviceTable OBJECT-TYPE
        SYNTAX SEQUENCE OF  FSVsuDeviceEntry
        MAX-ACCESS          not-accessible 
        STATUS              current         
        DESCRIPTION     
            "The whole device information in VSU system"
    ::= { fsVsuDeviceInfo 2 }

fsVsuDeviceEntry OBJECT-TYPE
        SYNTAX      FSVsuDeviceEntry 
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "The device information entry"
        INDEX       { fsVsuDeviceID }
    ::= { fsVsuDeviceTable 1 }

FSVsuDeviceEntry ::=
        SEQUENCE {
            fsVsuDeviceID           INTEGER,   
            fsVsuDeviceMac          MacAddress,
            fsVsuDevicePri          INTEGER,
            fsVsuDeviceDescr        DisplayString,
            fsVsuDeviceStatus       INTEGER,
            fsVsuDeviceRole         INTEGER
        }

fsVsuDeviceID OBJECT-TYPE
        SYNTAX      INTEGER 
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU system member device identifier"
    ::= { fsVsuDeviceEntry 1 }

fsVsuDeviceMac OBJECT-TYPE
        SYNTAX      MacAddress 
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU system member device mac address"
    ::= { fsVsuDeviceEntry 2 }

fsVsuDevicePri OBJECT-TYPE
        SYNTAX      INTEGER 
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU system member device priority"
    ::= { fsVsuDeviceEntry 3 }

fsVsuDeviceDescr OBJECT-TYPE
        SYNTAX      DisplayString 
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU system member device description information"
    ::= { fsVsuDeviceEntry 4 }

fsVsuDeviceStatus OBJECT-TYPE
        SYNTAX      INTEGER {
                        ok(1),
                        recovery(2)
                    }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU system member device status information"
    ::= { fsVsuDeviceEntry 5 }

fsVsuDeviceRole OBJECT-TYPE
        SYNTAX      INTEGER {
                        active(1),
                        standby(2),
                        candidate(3)
                    }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU system member device role information"
    ::= { fsVsuDeviceEntry 6 }


--***************** the VSU VSL nodes *********************
fsVsuVsl OBJECT IDENTIFIER ::= { fsVsuMIBObjects 3 }

fsVsuVslPortTable OBJECT-TYPE 
        SYNTAX SEQUENCE OF  FSVsuVslPortEntry
        MAX-ACCESS          not-accessible 
        STATUS              current
        DESCRIPTION
            "The VSU VSL port members table"
    ::= { fsVsuVsl 1 }

fsVsuVslPortEntry OBJECT-TYPE
        SYNTAX      FSVsuVslPortEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "The VSU VSL port members entry"
        INDEX       { fsVsuVslPortIfIndex } 
    ::= { fsVsuVslPortTable 1 }

FSVsuVslPortEntry ::=
        SEQUENCE {
            fsVsuVslPortIfIndex     INTEGER,       
            fsVsuVslApIf            DisplayString,
            fsVsuVslPortState       INTEGER,
            fsVsuVslPortPeerIfIndex INTEGER
        }

fsVsuVslPortIfIndex OBJECT-TYPE    
        SYNTAX      INTEGER
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU VSL AP member port index"
    ::= { fsVsuVslPortEntry 1 }
    
fsVsuVslApIf OBJECT-TYPE    
        SYNTAX      DisplayString
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU VSL AP interface name"
    ::= { fsVsuVslPortEntry 2 }

fsVsuVslPortState OBJECT-TYPE
        SYNTAX      INTEGER {
                        down(1),        
                        up(2),
                        ok(3),
                        disable(4),
                        aged(5)
                    }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU VSL AP member port's state"
    ::= { fsVsuVslPortEntry 3 }

fsVsuVslPortPeerIfIndex OBJECT-TYPE
        SYNTAX      INTEGER
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU VSL member port's peer port index"
    ::= { fsVsuVslPortEntry 4 }
    
fsVsuVslTable OBJECT-TYPE 
        SYNTAX SEQUENCE OF  FSVsuVslEntry
        MAX-ACCESS          not-accessible 
        STATUS              current
        DESCRIPTION
            "The VSU VSL AP table"
    ::= { fsVsuVsl 2 }

fsVsuVslEntry OBJECT-TYPE
        SYNTAX      FSVsuVslEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "The VSU VSL AP entry"
        INDEX       { fsVsuVslApIndex } 
    ::= { fsVsuVslTable 1 }

FSVsuVslEntry ::=
        SEQUENCE {   
            fsVsuVslApIndex         INTEGER,
            fsVsuVslApUptime        DisplayString
        }
    
fsVsuVslApIndex OBJECT-TYPE    
        SYNTAX      INTEGER
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU VSL AP index, which is computed by: (switch_id - 1) * 2 + vsl_ap_id"
    ::= { fsVsuVslEntry 1 }

fsVsuVslApUptime OBJECT-TYPE    
        SYNTAX      DisplayString
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU VSL AP Up time"
    ::= { fsVsuVslEntry 2 }


--***************** the VSU DAD nodes *********************
fsVsuDad OBJECT IDENTIFIER ::= { fsVsuMIBObjects 4 }

fsVsuDadExIntfTable OBJECT-TYPE
        SYNTAX SEQUENCE OF  FSVsuDadExIntfEntry
        MAX-ACCESS          not-accessible
        STATUS              current
        DESCRIPTION
            "The VSU dual-active excluded interface table"
    ::= { fsVsuDad 1 }

fsVsuDadExIntfEntry OBJECT-TYPE
        SYNTAX      FSVsuDadExIntfEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "The VSU dual-active excluded interface entry"
        INDEX       { fsVsuDadExIfIndex }
    ::= { fsVsuDadExIntfTable 1 }

FSVsuDadExIntfEntry ::=
        SEQUENCE {
            fsVsuDadExIfIndex   INTEGER
        }

fsVsuDadExIfIndex OBJECT-TYPE
        SYNTAX      INTEGER
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU dual-active excluded interface index"
    ::= { fsVsuDadExIntfEntry 1 }
    
fsVsuDadAP OBJECT IDENTIFIER ::= { fsVsuDad 2 }

fsVsuDadAPEnable OBJECT-TYPE
        SYNTAX      INTEGER {
                        yes(1),
                        no(2)
                    }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Indicate weather DAD AP detection is enable"
    ::= { fsVsuDadAP 1}
    
fsVsuDadAPIfIndex OBJECT-TYPE
        SYNTAX      INTEGER
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU DAD AP interface index"
    ::= { fsVsuDadAP 2}
    
fsVsuDadAPIfStatus OBJECT-TYPE    
        SYNTAX      INTEGER {
                        down(1),
                        up(2)
                    }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU DAD AP interface status"
    ::= { fsVsuDadAP 3 }

fsVsuDadAPMemberIfTable  OBJECT-TYPE
        SYNTAX SEQUENCE OF  FSVsuDadAPMemberIfEntry
        MAX-ACCESS          not-accessible
        STATUS              current
        DESCRIPTION
            "The VSU DAD AP member interface table"
    ::= { fsVsuDadAP 4 }

fsVsuDadAPMemberIfEntry OBJECT-TYPE
        SYNTAX      FSVsuDadAPMemberIfEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "The VSU DAD AP member interface entry"
        INDEX {fsVsuDadAPMemberIfindex}
    ::= { fsVsuDadAPMemberIfTable 1 }

FSVsuDadAPMemberIfEntry ::=
        SEQUENCE {
            fsVsuDadAPMemberIfindex INTEGER,
            fsVsuDadAPMemberIfStatus INTEGER
        }

fsVsuDadAPMemberIfindex OBJECT-TYPE
        SYNTAX      INTEGER
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU DAD AP member interface index"
    ::= { fsVsuDadAPMemberIfEntry 1 }
    
fsVsuDadAPMemberIfStatus OBJECT-TYPE
        SYNTAX      INTEGER {
                        down(1),
                        up(2)
                    }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU DAD AP member interface status"
    ::= { fsVsuDadAPMemberIfEntry 2 }

fsVsuDadAPRelayIfTable OBJECT-TYPE
        SYNTAX SEQUENCE OF  FSVsuDadAPRelayIfEntry
        MAX-ACCESS          not-accessible
        STATUS              current
        DESCRIPTION
            "The VSU DAD AP relay interface table"
    ::= { fsVsuDadAP 5 }

fsVsuDadAPRelayIfEntry OBJECT-TYPE
        SYNTAX      FSVsuDadAPRelayIfEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "The VSU DAD AP relay interface entry"
        INDEX       { fsVsuDadAPRelayIfIndex }
    ::= { fsVsuDadAPRelayIfTable 1 }

FSVsuDadAPRelayIfEntry ::=
        SEQUENCE {
            fsVsuDadAPRelayIfIndex   INTEGER
        }

fsVsuDadAPRelayIfIndex OBJECT-TYPE
        SYNTAX      INTEGER
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU DAD AP relay interface index"
    ::= { fsVsuDadAPRelayIfEntry 1 }
    
fsVsuDadBFD OBJECT IDENTIFIER ::= { fsVsuDad 3 }

fsVsuDadBFDEnable OBJECT-TYPE
        SYNTAX      INTEGER {
                        yes(1),
                        no(2)
                    }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Indicate weather BFD detection is enable"
    ::= { fsVsuDadBFD 1 }

fsVsuDadBFDIfTable OBJECT-TYPE
        SYNTAX SEQUENCE OF  FSVsuDadBFDIfEntry
        MAX-ACCESS          not-accessible
        STATUS              current
        DESCRIPTION
            "The VSU BFD interface table"
    ::= { fsVsuDadBFD 2 }

fsVsuDadBFDIfEntry OBJECT-TYPE
        SYNTAX      FSVsuDadBFDIfEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "The VSU BFD interface entry"
        INDEX { 
            fsVsuDadBFDIfIndex1,
            fsVsuDadBFDIfIndex2
        }
    ::= { fsVsuDadBFDIfTable 1 }

FSVsuDadBFDIfEntry ::=
        SEQUENCE {
            fsVsuDadBFDIfIndex1   INTEGER,
            fsVsuDadBFDIfIndex2   INTEGER,
            fsVsuDadBFDIfStatus   INTEGER
        }

fsVsuDadBFDIfIndex1 OBJECT-TYPE    
        SYNTAX      INTEGER
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU BFD interface index"
    ::= { fsVsuDadBFDIfEntry 1 }
    
fsVsuDadBFDIfIndex2 OBJECT-TYPE    
        SYNTAX      INTEGER
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU BFD interface index"
    ::= { fsVsuDadBFDIfEntry 2 }
    
fsVsuDadBFDIfStatus OBJECT-TYPE    
        SYNTAX      INTEGER {
                        down(1),
                        up(2)
                    }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU BFD interface status"
    ::= { fsVsuDadBFDIfEntry 3 }
        
    
--***************** the VSU forward nodes *********************
fsVsuForward OBJECT IDENTIFIER ::= { fsVsuMIBObjects 5 }

fsVsuForwardApllf OBJECT-TYPE
        SYNTAX      INTEGER {
                        on(1),
                        off(2)
                    }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Indicate weather AP local forward first is on"
    ::= { fsVsuForward 1 }

fsVsuForwardEcmpllf OBJECT-TYPE
        SYNTAX      INTEGER {
                        on(1),
                        off(2)
                    }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Indicate weather ECMP local forward first is on"
    ::= { fsVsuForward 2 }


--******************* the VSU Version nodes *********************
fsVsuVersion OBJECT-TYPE
        SYNTAX      DisplayString
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The VSU system version"
    ::= { fsVsuMIBObjects 6 }


--********************************************************************
--                                                                  **
--                          traps nodes                             **
--                                                                  **
--********************************************************************
fsVsuMIBTraps OBJECT IDENTIFIER ::= { fsVsuMIB 2 }
fsVsuTrapsNtfObjects OBJECT IDENTIFIER ::= { fsVsuMIBTraps 1 } 

fsVsuDeviceState OBJECT-TYPE    
        SYNTAX      INTEGER {
                        plugin(1),
                        remove(2)
                    }
        MAX-ACCESS  accessible-for-notify
        STATUS      current
        DESCRIPTION
            "The description of device change state"
    ::= { fsVsuTrapsNtfObjects 1 }

fsVsuSlotID OBJECT-TYPE    
        SYNTAX      INTEGER 
        MAX-ACCESS  accessible-for-notify
        STATUS      current
        DESCRIPTION
            "The description of slot id"
    ::= { fsVsuTrapsNtfObjects 2 }

fsVsuDadResult OBJECT-TYPE
        SYNTAX      INTEGER {
                        good(1),
                        bad(2)
                    }
        MAX-ACCESS  accessible-for-notify
        STATUS      current
        DESCRIPTION
            "The description of dual-active detection results"
    ::= { fsVsuTrapsNtfObjects 3 }

fsVsuTrapsNotifications OBJECT IDENTIFIER ::= { fsVsuMIBTraps 2 }

fsVsuNotifyTopoChange NOTIFICATION-TYPE
        OBJECTS     {
                        fsVsuTopoShape
                    }
        STATUS      current
        DESCRIPTION
            "This notification is send by VSU master when topology shape change"
    ::= { fsVsuTrapsNotifications 1 }
    
fsVsuNotifyDeviceChange NOTIFICATION-TYPE
        OBJECTS     {
                        fsVsuDeviceID,
                        fsVsuDeviceState
                    }
        STATUS      current
        DESCRIPTION
            "This notification is send by VSU master when device plugin or remove"
    ::= { fsVsuTrapsNotifications 2 }

fsVsuNotifyDeviceRoleChange NOTIFICATION-TYPE
        OBJECTS     {
                        fsVsuDeviceID,
                        fsVsuSlotID,
                        fsVsuDeviceRole
                    }
        STATUS      current
        DESCRIPTION
            "This notification is send by VSU master when device role change"
    ::= { fsVsuTrapsNotifications 3 }

fsVsuNotifyDad NOTIFICATION-TYPE
        OBJECTS     {
                        fsVsuDadResult
                    }
        STATUS      current
        DESCRIPTION
            "This notification is send by VSU master when dual-active device detected"
    ::= { fsVsuTrapsNotifications 4 }
    
fsVsuNotifyDeviceJoin NOTIFICATION-TYPE
        OBJECTS     {
                        fsVsuDeviceID
                    }
        STATUS      current
        DESCRIPTION
            "This notification is send by VSU master when device plugin "
    ::= { fsVsuTrapsNotifications 5 }
    
fsVsuNotifyDeviceLeave NOTIFICATION-TYPE
        OBJECTS     {
                        fsVsuDeviceID
                    }
        STATUS      current
        DESCRIPTION
            "This notification is send by VSU master when device remove "
    ::= { fsVsuTrapsNotifications 6 }

--********************************************************************
--                                                                  **
--                conformance information                           **
--                                                                  **
--********************************************************************
fsVsuMIBConformance OBJECT IDENTIFIER ::= { fsVsuMIB 3}
fsVsuMIBCompliances OBJECT IDENTIFIER ::= { fsVsuMIBConformance 1}
fsVsuMIBGroups OBJECT IDENTIFIER ::= { fsVsuMIBConformance 2}

--***************** compliance information ********************
fsVsuMIBCompliance MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION
            "The compliance statement for entities which implement the FS VSU"
        MODULE 
            MANDATORY-GROUPS { fsVsuMIBObjectsGroup, fsVsuMIBTrapsGroup }  
    ::= { fsVsuMIBCompliances 1 }

--***************** units of conformance ********************
fsVsuMIBObjectsGroup OBJECT-GROUP
        OBJECTS {
            fsVsuTopoShape,
            fsVsuTopoConn,
            fsVsuDomainID,
            fsVsuDeviceID,
            fsVsuDeviceMac,
            fsVsuDevicePri,
            fsVsuDeviceDescr,
            fsVsuDeviceStatus,
            fsVsuDeviceRole,
            fsVsuVslPortIfIndex,
            fsVsuVslApIf,
            fsVsuVslPortState,
            fsVsuVslPortPeerIfIndex,
            fsVsuVslApUptime,
            fsVsuDadExIfIndex,
            fsVsuDadAPEnable,
            fsVsuDadAPIfIndex,
            fsVsuDadAPIfStatus,
            fsVsuDadAPMemberIfindex,
            fsVsuDadAPMemberIfStatus,
            fsVsuDadAPRelayIfIndex,
            fsVsuDadBFDEnable,
            fsVsuDadBFDIfIndex1,
            fsVsuDadBFDIfIndex2,
            fsVsuDadBFDIfStatus,
            fsVsuForwardApllf,
            fsVsuForwardEcmpllf,
            fsVsuVersion,
            fsVsuDeviceState,
            fsVsuSlotID,
            fsVsuDadResult
        }
        STATUS  current
        DESCRIPTION
            "A collection of objects providing VSU running status to a FS agent"
    ::= { fsVsuMIBGroups 1 }

fsVsuMIBTrapsGroup NOTIFICATION-GROUP
        NOTIFICATIONS {
            fsVsuNotifyTopoChange,
            fsVsuNotifyDeviceChange,
            fsVsuNotifyDeviceRoleChange,
            fsVsuNotifyDad,
			fsVsuNotifyDeviceJoin,
			fsVsuNotifyDeviceLeave
        }
        STATUS current
        DESCRIPTION 
            "A collection of traps providing VSU running status to a FS agent"
    ::= { fsVsuMIBGroups 2 }

END

