-- Copyright (C) 2008-2014 Super Micro Computer Inc. All Rights Reserved

-- $Id: fsvcm.mib,v 1.14 2012/09/07 09:52:06 siva Exp $

-- VCM Proprietary MIB Definition

   VCM-MIB DEFINITIONS ::= BEGIN
      
   IMPORTS
      MODULE-IDENTITY, OBJECT-TYPE,
      enterprises,
      Integer32                                   FROM SNMPv2-SMI
      RowStatus, MacAddress, DisplayString  FROM SNMPv2-TC
      InterfaceIndexOrZero, 
      InterfaceIndex                   FROM IF-MIB; 

      fsVcmMib MODULE-IDENTITY
         LAST-UPDATED "201209050000Z"
         ORGANIZATION "Super Micro Computer Inc."
         CONTACT-INFO "support@Supermicro.com"
	 DESCRIPTION
            "The MIB module for the virtual context manager."
	 REVISION "201209050000Z"
         DESCRIPTION
            "The MIB module for the virtual context manager."
      ::=  { enterprises supermicro-computer-inc(10876) super-switch(101) basic(1) 93 } 

fsVcmConfig    OBJECT IDENTIFIER   ::= { fsVcmMib 1 } 

fsVcmTraps    OBJECT IDENTIFIER   ::= { fsVcmMib 2 } 
-- fsVcmConfig  group 

      fsVcmTraceOption OBJECT-TYPE 
           SYNTAX      Integer32 
           MAX-ACCESS  read-write 
           STATUS      current 
           DESCRIPTION 
               "This object is used to enable Trace Statements in  
                Virtual Context Manager Module. 
 
                A FOUR BYTE integer is used for enabling the level of 
		tracing. Each BIT in the four byte integer, represents a 
		particular level of Trace.  
                  
                The maping between the bit positions & the level of trace is 
		as follows:  
                        0 - Init and Shutdown Traces 
                        1 - Management Traces 
                        2 - Data Path Traces 
                        3 - Control Plane Traces 
                        4 - Packet Dump Traces 
                        5 - Traces related to All Resources except Buffers 
                        6 - All Failure Traces 
                        7 - Buffer Traces 
 
                The remaining bits are unused. Combination of levels are  
                also allowed. 
 
                For example if the bits 0 and 1 are set, then the Trace 
                statements related to Init-Shutdown and management  
                will be printed. 
 
              The user has to enter the corresponding INTEGER VALUE for the 
                bits set. For example if bits 0 and 1 are set then user has 
		to give the value 3." 
        DEFVAL  { 0 } 
        ::= { fsVcmConfig 1 } 

-- ---------------------------------------------------------------------------- 
-- Future VCM Config Table 
-- ---------------------------------------------------------------------------- 
 
fsVcmConfigTable OBJECT-TYPE 
   SYNTAX      SEQUENCE OF FsVcmConfigEntry
   MAX-ACCESS  not-accessible 
   STATUS      current 
   DESCRIPTION 
      "Table containing the virtual context information in the system."
   ::= { fsVcmConfig 2 } 
 
fsVcmConfigEntry OBJECT-TYPE 
   SYNTAX      FsVcmConfigEntry
   MAX-ACCESS  not-accessible 
   STATUS      current 
   DESCRIPTION 
      "Entry about a particular virtual context."
   INDEX { fsVCId } 
   ::= { fsVcmConfigTable 1 } 
    
FsVcmConfigEntry ::= 
   SEQUENCE { 
      fsVCId                Integer32, 
      fsVCNextFreeHlPortId  InterfaceIndexOrZero,
      fsVCMacAddress        MacAddress,
      fsVcAlias             DisplayString,
      fsVcCxtType           INTEGER,
      fsVCStatus            RowStatus,
      fsVRMacAddress        MacAddress
   } 
 
fsVCId  OBJECT-TYPE 
   SYNTAX      Integer32 (0..65535)
   MAX-ACCESS  not-accessible 
   STATUS      current 
   DESCRIPTION 
      "The Virtual context identifier of a particular virtual context." 
   ::= { fsVcmConfigEntry 1 } 

fsVCNextFreeHlPortId  OBJECT-TYPE 
   SYNTAX      InterfaceIndexOrZero
   MAX-ACCESS  read-only 
   STATUS      current 
   DESCRIPTION 
      "The next free HLPortIndex for this virtual context. This free 
      HLPortIndex will be assigned to the next IfIndex that is mapped to 
      this virtual context. In case of Single instance this object will 
      always return 1." 
   ::= { fsVcmConfigEntry 2 }

fsVCMacAddress  OBJECT-TYPE
   SYNTAX      MacAddress
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION
      "The MAC address used by this virtual-context which can be 
      referred to in a unique fashion within a bridge." 
   ::= { fsVcmConfigEntry 3 } 

fsVcAlias  OBJECT-TYPE
   SYNTAX      DisplayString (SIZE (0..32)) 
   MAX-ACCESS  read-write
   STATUS      current
   DESCRIPTION
      "The Alias name for the Virtual-Context. By default alias name will be
       'switchcontextId'. Eg: 'switch1' for virtual context 1." 
   ::= { fsVcmConfigEntry 4 } 

fsVcCxtType  OBJECT-TYPE 
   SYNTAX      INTEGER  {
                  l2Context   (1),
                  l3Context   (2),
                  both        (3)
   }
   MAX-ACCESS  read-write 
   STATUS      current 
   DESCRIPTION 
      "This objects specifies if this entry is an l2 context or l3 context
      or both. If l2context, only l2 protocols will be aware of this context.
      If l3context, only l3 protocols will be aware of this context.
      If both, both l2 and l3 protocols will be aware of this context." 
      DEFVAL     { l2Context }
   ::= { fsVcmConfigEntry 5 } 

fsVCStatus  OBJECT-TYPE 
   SYNTAX      RowStatus
   MAX-ACCESS  read-create 
   STATUS      current 
   DESCRIPTION 
      "Row status of the entry. Virtual context will be created when the 
      row is made 'active'." 
   ::= { fsVcmConfigEntry 6 } 

fsVRMacAddress  OBJECT-TYPE
   SYNTAX      MacAddress
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION
      "The MAC address used by the virtual router when the
      context entry type (fsVcCxtType) is l3context or both.
      When the context entry type is l2context, the MAC address 
      value is zero.
      The MAC address of the virtual routers can be common or unique
      among the different virtual routers created."
   ::= { fsVcmConfigEntry 7 } 

-- ---------------------------------------------------------------------------- 
-- Future VCM Interface Mapping Table 
-- ---------------------------------------------------------------------------- 
 
fsVcmIfMappingTable OBJECT-TYPE 
   SYNTAX      SEQUENCE OF FsVcmIfMappingEntry
   MAX-ACCESS  not-accessible 
   STATUS      current 
   DESCRIPTION 
      "Table containing the mapping of interfaces to the virtual
      context in the system."
   ::= { fsVcmConfig 3 } 
 
fsVcmIfMappingEntry OBJECT-TYPE 
   SYNTAX      FsVcmIfMappingEntry
   MAX-ACCESS  not-accessible 
   STATUS      current 
   DESCRIPTION 
      "Entry about the association of a particular interface to VS"
   INDEX { fsVcmIfIndex } 
   ::= { fsVcmIfMappingTable 1 } 
    
FsVcmIfMappingEntry ::= 
   SEQUENCE { 
      fsVcmIfIndex     InterfaceIndex, 
      fsVcId           Integer32, 
      fsVcHlPortId     InterfaceIndexOrZero,
      fsVcL2ContextId  Integer32,
      fsVcIfRowStatus  RowStatus
   } 
 
fsVcmIfIndex  OBJECT-TYPE 
   SYNTAX      InterfaceIndex
   MAX-ACCESS  not-accessible 
   STATUS      current 
   DESCRIPTION 
      "The interface index which has to be mapped." 
   ::= { fsVcmIfMappingEntry 1 } 

fsVcId  OBJECT-TYPE 
   SYNTAX      Integer32 (-1|0..65535)
   MAX-ACCESS  read-write
   STATUS      current 
   DESCRIPTION 
      "The Virtual context to which this interface is mapped. Upon creation
       of the row, this object has a default value of -1 indicating that the
       interface is not yet mapped to any valid virtual context."
   ::= { fsVcmIfMappingEntry 2 } 

fsVcHlPortId   OBJECT-TYPE 
   SYNTAX      InterfaceIndexOrZero
   MAX-ACCESS  read-only 
   STATUS      current 
   DESCRIPTION 
      "The port index generated internally for this interface. This number 
       is unique for each port mapped to the same virtual context."
   ::= { fsVcmIfMappingEntry 3 } 

fsVcL2ContextId  OBJECT-TYPE 
   SYNTAX      Integer32 (0..255)
   MAX-ACCESS  read-write
   STATUS      current 
   DESCRIPTION 
      "The L2 Virtual context to which IVR interface gets internally mapped.
       This objects is used only for IVR interface to identify l2 context to 
       which the l2 vlan belongs."
   ::= { fsVcmIfMappingEntry 4 } 

fsVcIfRowStatus OBJECT-TYPE
   SYNTAX      RowStatus
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION
      "Row status of the corresponding entry.
       A row cannot be made ACTIVE unless the interface is mapped to a valid
       virtual context. 
       The modification of fsVcId for an existing row, by setting the
       RowStatus as NOT_IN_SERVICE, is not permitted. To change
       the virtual context to which a port is mapped, delete the existing
       entry and then re-create."
   ::= { fsVcmIfMappingEntry 5 }

-- ---------------------------------------------------------------------------- 
-- Future VCM L2Context-vlan id to interface mapping table
-- ---------------------------------------------------------------------------- 
 
fsVcmL2CxtAndVlanToIPIfaceMapTable OBJECT-TYPE 
   SYNTAX      SEQUENCE OF FsVcmL2CxtAndVlanToIPIfaceMapEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION
      "Table dislays the IP interfaces and its associated l2 vlan and 
      l2 context in the system."
   ::= { fsVcmConfig 4 }
 
fsVcmL2CxtAndVlanToIPIfaceMapEntry OBJECT-TYPE 
   SYNTAX      FsVcmL2CxtAndVlanToIPIfaceMapEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION
      "Entry about the association of a particular interface to l2context
      and its vlan identifier,"
   INDEX { fsVcmL2VcId, fsVcmVlanId } 
   ::= { fsVcmL2CxtAndVlanToIPIfaceMapTable 1 } 
    
FsVcmL2CxtAndVlanToIPIfaceMapEntry ::= 
   SEQUENCE {
      fsVcmL2VcId         Integer32,
      fsVcmVlanId         Integer32,
      fsVcmL2VcName       DisplayString,
      fsVcmIPIfIndex      InterfaceIndex 
   }
 
fsVcmL2VcId  OBJECT-TYPE 
   SYNTAX      Integer32 (0..255)
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION
      "The L2 context identifier to which the IP interface is accociated."
   ::= { fsVcmL2CxtAndVlanToIPIfaceMapEntry 1 } 

fsVcmVlanId  OBJECT-TYPE 
   SYNTAX      Integer32 (1..4094)
   MAX-ACCESS  not-accessible 
   STATUS      current
   DESCRIPTION
      "The L2 vlan identifier to which the IP interface is mapped." 
   ::= { fsVcmL2CxtAndVlanToIPIfaceMapEntry 2 } 

fsVcmL2VcName  OBJECT-TYPE
   SYNTAX      DisplayString (SIZE (0..32)) 
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION
      "The Alias name of the l2 context." 
   ::= { fsVcmL2CxtAndVlanToIPIfaceMapEntry 3 } 

fsVcmIPIfIndex  OBJECT-TYPE
   SYNTAX      InterfaceIndex
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION
      "The interface index which is mapped to the l2 context and the vlan."
   ::= { fsVcmL2CxtAndVlanToIPIfaceMapEntry 4 }

-- ----------------------------------------------------------------------------
--  Virtual Context configuration extension Table
-- ----------------------------------------------------------------------------
 
fsVcConfigExtTable OBJECT-TYPE
   SYNTAX      SEQUENCE OF FsVcConfigExtEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION
      "Table containing the additional management parameters for each
       Virtual Context in the system."
   ::= {fsVcmConfig 5}
                            
fsVcConfigExtEntry OBJECT-TYPE
   SYNTAX      FsVcConfigExtEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION
      "Entry about the owner per Virtual Context information."
   AUGMENTS { fsVcmConfigEntry }
   ::= { fsVcConfigExtTable 1 }
                        
FsVcConfigExtEntry ::=
   SEQUENCE {
      fsVcOwner             DisplayString
   }

fsVcOwner OBJECT-TYPE
   SYNTAX      DisplayString (SIZE (0..16))
   MAX-ACCESS  read-write
   STATUS      current
   DESCRIPTION
      "Owner of each Virtual Context in the system."
   ::= { fsVcConfigExtEntry 1 }

------------------------------------------------------------------------------
-- VCM  free context identifier Table
---------------------------------------------------------------------------i
fsVcmFreeVcIdTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF FsVcmFreeVcIdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
       "Table containing the  free Virtual Context identifier in the system."
    ::= {fsVcmConfig 6}

fsVcmFreeVcIdEntry OBJECT-TYPE
    SYNTAX      FsVcmFreeVcIdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
       "Entry about the free Virtual context identifier."
    INDEX { fsVcmFreeVcId }
    ::= { fsVcmFreeVcIdTable 1 }
    
FsVcmFreeVcIdEntry ::=
    SEQUENCE {
       fsVcmFreeVcId   Integer32
    }

fsVcmFreeVcId OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "The  free Virtual Context identifier in the system."
    ::= { fsVcmFreeVcIdEntry 1 }
-- VCM Trap & Notifications

fsVcmContextCreatedTrap NOTIFICATION-TYPE
        OBJECTS {
            fsVCId 
                }
        STATUS             current
        DESCRIPTION
         "Generated when new virtual context is created"
   ::= { fsVcmTraps 1 }

fsVcmContextDeletedTrap NOTIFICATION-TYPE
        OBJECTS {
            fsVCId 
                }
        STATUS             current
        DESCRIPTION
         "Generated when virtual context is deleted"
   ::= { fsVcmTraps 2 }

---------------------------------------------------------------------------
-- VCM  Application context mapping
---------------------------------------------------------------------------
fsVcmAppContextConfig   OBJECT IDENTIFIER   ::= { fsVcmMib 3 }

    fsVcmFirmwareUpgradeCxt OBJECT-TYPE 
        SYNTAX      Integer32
         MAX-ACCESS  read-write
         STATUS      current
         DESCRIPTION
              "This object is used to configure the routing context ID for firmware upgrade.

               Context ID 0 is for default context.
               Context ID 1 is for mgmt context.

               A virtual context defines a VRF table (Virtual Routing and Forwarding)
               which is referred when an IP packet is received or transmitted by specified
               interfaces. The switch creates 2 routing contexts by default, one is 'default'
               to serve front port IP traffics and the other is 'mgmt' to solely serve the
               OOB IP traffics.

               Virtual Context 'default'consists of a 'default' VRF table and the switch front ports.
               Virtual Context 'mgmt' consists of a 'mgmt' VRF table and the switch OOB port.

               The virtual context is transparent to most switch applications such as Telnet, HTTP, DHCP...
               However, some applications have to specify the active routing context under different user
               scenarios such as ping, tracerout, tftp (including the copy commands, firmware upgrade,
               logging server (for syslog), snmp agent, SNTP client, TACACS client and RADIUS client.
               "
         DEFVAL  { 1 }
        ::= { fsVcmAppContextConfig 1 }

    fsVcmFileCopyCxt OBJECT-TYPE
        SYNTAX      Integer32
         MAX-ACCESS  read-write
         STATUS      current
         DESCRIPTION
              "This object is used to configure the routing context ID for file copy operation.

               Context ID 0 is for default context.
               Context ID 1 is for mgmt context.
               "
         DEFVAL  { 1 }
        ::= { fsVcmAppContextConfig 2 }

    fsVcmCoredumpPutCxt OBJECT-TYPE
        SYNTAX      Integer32
         MAX-ACCESS  read-write
         STATUS      current
         DESCRIPTION
              "This object is used to configure the routing context ID for uploading coredump file.

               Context ID 0 is for default context.
               Context ID 1 is for mgmt context.
               "
         DEFVAL  { 1 }
        ::= { fsVcmAppContextConfig 3 }

    fsVcmSyslogClientCxt OBJECT-TYPE
        SYNTAX      Integer32
         MAX-ACCESS  read-write
         STATUS      current
         DESCRIPTION
              "This object is used to configure the routing context ID for SYSLOG client.

               Context ID 0 is for default context.
               Context ID 1 is for mgmt context.
               "
         DEFVAL  { 1 }
        ::= { fsVcmAppContextConfig 4 }

    fsVcmSnmpTrapClientCxt OBJECT-TYPE
        SYNTAX      Integer32
         MAX-ACCESS  read-write
         STATUS      current
         DESCRIPTION
              "This object is used to configure the routing context ID for sending SNMP Trap.

               Context ID 0 is for default context.
               Context ID 1 is for mgmt context.
               "
         DEFVAL  { 1 }
        ::= { fsVcmAppContextConfig 5}

    fsVcmSntpClientCxt OBJECT-TYPE
        SYNTAX      Integer32
         MAX-ACCESS  read-write
         STATUS      current
         DESCRIPTION
              "This object is used to configure the routing context ID for SNTP client.

               Context ID 0 is for default context.
               Context ID 1 is for mgmt context.
               "
         DEFVAL  { 1 }
        ::= { fsVcmAppContextConfig 6}

    fsVcmSnmpAgentxCxt OBJECT-TYPE
        SYNTAX      Integer32
         MAX-ACCESS  read-write
         STATUS      current
         DESCRIPTION
              "This object is used to configure the routing context ID for SNMP Agentx.

               Context ID 0 is for default context.
               Context ID 1 is for mgmt context.
               "
         DEFVAL  { 1 }
        ::= { fsVcmAppContextConfig 7}

    fsVcmTacacsClientCxt OBJECT-TYPE
        SYNTAX      Integer32
         MAX-ACCESS  read-write
         STATUS      current
         DESCRIPTION
              "This object is used to configure the routing context ID for TACACS client.

               Context ID 0 is for default context.
               Context ID 1 is for mgmt context.
               "
         DEFVAL  { 1 }
        ::= { fsVcmAppContextConfig 8}

    fsVcmRadiusClientCxt OBJECT-TYPE
        SYNTAX      Integer32
         MAX-ACCESS  read-write
         STATUS      current
         DESCRIPTION
              "This object is used to configure the routing context ID for RADIUS client.

               Context ID 0 is for default context.
               Context ID 1 is for mgmt context.
               "
         DEFVAL  { 1 }
        ::= { fsVcmAppContextConfig 9}
END
