-- *****************************************************************
-- ciscoVSIController MIB
--
-- Virtual Switch Interface(VSI) controller MIB
-- April 1999 Subra.Hegde
--
-- Copyright (c) 1999 by cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************

CISCO-VSI-CONTROLLER-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Integer32     	 FROM SNMPv2-SMI
    RowStatus,
    TEXTUAL-CONVENTION,
    DisplayString     	 FROM SNMPv2-TC
    MODULE-COMPLIANCE,
    OBJECT-GROUP 	 FROM SNMPv2-CONF
    ciscoMgmt       	 FROM CISCO-SMI;


ciscoVSIControllerMIB MODULE-IDENTITY
LAST-UPDATED   "9906080000Z"
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-wanatm@cisco.com"

DESCRIPTION
    "This MIB module is used for configuring ATM Capable Switch 
     to be aware of VSI Controller information.

     Terminolgies used:

     VSI       - Virtual Switch Interface, a hardware-independent switch 
                 control protocol. This allows a Switch(node) to be 
		 controlled by a multiple controllers such as PNNI,LSC.
		 These control planes can be internal or external to the
	         switch.The VSI interface defines the messages and associated
	         functions which allow communication between the controller 
		 and the switch.This interface is expected to support all 
		 types of connections (voice,data,frame relay,ATM) for PVCs,
	         SPVCs and SVCs.

     VSI Master - software component which requests connections and receives
                  switch generic information. This controls one or more VSI 
                  Slaves. This may run on the switch or a dedicated controller
		  platform. This is the master module.It performs the interface
	 	  to the higher layer networking software and handles all VSI
		  related functions.
            
     VSI Slave - software component which converts generic connection
                 requests into hardware specific requests and hardware 
		 specific information into generic information.
		 This runs on the switch.a A centralized slave has a single
		 point of control for making connections and controlling 
		 interfaces, while a distributed slave allows for multiple
		 slaves to coexist on the same switch.

     Controller - Software ( and possibly hardware) which manages topology
                  and network resources and performs VSI Master fucntion. 
		  This performs source routing for ent-to-end SVCs, including
		  general call acceptance GCAC,setup calls with other 
		  controllers.
                  PNNI and MPLS are examples for the Controller.

     Controller Shelf - A controller shelf is a switch containing atleast
		   one VSI Controller which is controlling a different 
		   switch.It will also, typically, contain 'local' controllers
		   for itself."
   ::= {ciscoMgmt 141 }

CvcControllerShelfLocation ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "The location of the Controller Shelf. 

	 internal(1)  - controller resides on the same shelf
	                as the switch.
	 external(2)  - controller resides on the external 
		        platform. The controller shelf is
		        connected to the switch by an ATM link."
        SYNTAX   INTEGER{
           internal(1),
           external(2) 
           }

CvcControllerType ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "The type of the controller which is a VSI Master.
	 The Possible values are :
	     
	 par(1) -  Portable Auto Route(PAR). This is a VSI Master controller
	           implementing Cisco Proprietary protocol for network
	           routing and topology in a Network containing only 
		   Cisco Switches.

	 pnni(2) - Private Network-to-Network Interface (PNNI) controller.
		   The PNNI protocol is used between private ATM Switches
		   and between groups of ATM switches. This protocol is 
		   defined for distributing topology information between
		   switches and clusters of switches.

	 lsc(3)  - Label Switch Controller(TSC).The LSC Implements MPLS
	           (Multi Protocol Label Switching) protocol. The LSC is 
		   a router which is capable of controlling the operation
		   of a separate ATM switch so that the two of them 
                   together function as a single ATM-LSR(ATM Label Switch
                   Router).
		   The LSC controls the operation of the ATM Switch
		   using a 'Switch Control Protocol', which allows the
		   LSC to setup and remove cross-connects on the ATM
		   switch, to discover the configuration and capabilities
		   of the controlled switch, and to gather statistics from
		   the controlled switch."
    SYNTAX   INTEGER {
        par(1),
        pnni(2),
        lsc(3)  
    }

cvcMIBObjects       OBJECT IDENTIFIER ::= {ciscoVSIControllerMIB 1}
cvcConfController   OBJECT IDENTIFIER ::= { cvcMIBObjects 1}

-- VSI Controller Configuration table

cvcConfTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF CvcConfEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
        "This table contains the entries for VSI Controllers.
         This table is used for informing the VSI Slaves about
         the existence of VSI Controllers and how the VSI slaves
	 can reach the controller. The information in these entries
	 are advertised to all the VSI Slaves using a system
	 dependent implementation when an entry is created/activated."
   ::= { cvcConfController 1 }
 
cvcConfEntry  OBJECT-TYPE
    SYNTAX      CvcConfEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
        "An entry for a VSI Controller. 
         The entries in this table are created by setting the 
         cvcConfRowStatus object to 'createAndGo(4)'.
	 The entries in this table are deleted by setting the
	 cvcConfRowStatus object to 'destroy(6)'. The entries
	 are can be created/modified/deleted through the Command
	 Line Interface(CLI) also."
    INDEX   { cvcConfControllerID }
    ::= { cvcConfTable 1 }

CvcConfEntry ::=
    SEQUENCE {
	cvcConfControllerID           		Integer32,
	cvcConfControllerType	  	        CvcControllerType,
	cvcConfControllerShelfLocation	        CvcControllerShelfLocation,
        cvcConfControllerLocation	        Integer32,
	cvcConfControllerName			DisplayString,
        cvcConfVpi	       			Integer32,
        cvcConfVci	       			Integer32,
        cvcConfRowStatus    	  	        RowStatus
    }

cvcConfControllerID OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647) 
    MAX-ACCESS  not-accessible 
    STATUS      current
    DESCRIPTION 
        "This is the unique value for VSI Controller(VSI Master).
         The VSI Slave uses this value in the message to identify 
         the VSI Master controller."
    ::= { cvcConfEntry 1}

cvcConfControllerType OBJECT-TYPE
    SYNTAX      CvcControllerType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION 
        "This object identifies the controller type.
	 This object may not be modified if the associated
	 cvcConfRowStatus is equal to 'active(1)'."
    ::= { cvcConfEntry 2}

cvcConfControllerShelfLocation OBJECT-TYPE
    SYNTAX      CvcControllerShelfLocation
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION 
        "This identifies the location of the controller shelf.
         This Object can be set only during row creation."
    ::= { cvcConfEntry 3}

cvcConfControllerLocation OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION 
        "This identifies the location of the controller.
         This object might contain the logical slot number
         of the Module where the controller is running
         on the same shelf as the switch.
	 This object might contain the value of the interface 
         on the module where the controller is running on an
         external shelf connected to the switch.
	 This object may not be modified if the associated
	 cvcConfRowStatus is equal to 'active(1)'."
    ::= { cvcConfEntry 4}

cvcConfControllerName OBJECT-TYPE
    SYNTAX  DisplayString
    MAX-ACCESS  read-create
    STATUS  current
    DESCRIPTION 
       "This is the  name choosen by the user for the VSI Controller.
        This object contains Octet string of length zero, if the user
        does not set the value for this object.
	This object may not be modified if the associated
	cvcConfRowStatus is equal to 'active(1)'."
    ::= { cvcConfEntry 5 }

cvcConfVpi OBJECT-TYPE
    SYNTAX  Integer32 (0..4095)
    MAX-ACCESS  read-create
    STATUS  current
    DESCRIPTION 
       "This is the Virtual Path Identifier(VPI) used for connecting to
        the controller which is external to the switch. This object has
        significance only if cvcConfControllerShelfLocation is 'external(2)'.
	This object may not be modified if the associated
	cvcConfRowStatus is equal to 'active(1)'."
    ::= { cvcConfEntry 6 }

cvcConfVci OBJECT-TYPE
    SYNTAX  Integer32 (32..65535)
    MAX-ACCESS  read-create
    STATUS  current
    DESCRIPTION 
       "This is the start value of Virtual Channel Identifier(VCI) used 
        for connecting to the controller which is external to the switch.
        This object has significance only if cvcConfControllerShelfLocation 
        is 'external(2)'.
	This object may not be modified if the associated
	cvcConfRowStatus is equal to 'active(1)'."
    ::= { cvcConfEntry 7 }

cvcConfRowStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS  read-create
    STATUS  current
    DESCRIPTION
       "This object is used for adding,deleting and modifying the
        controller configuration. The row can be created by 
        setting this object to 'createAndGo(4)'.
	The row can be deleted by setting this object to 'destroy(6)'.
	The objects in the row can not be modified when this object 
        contains value 'active(1)'."
    ::= { cvcConfEntry 8 }

-- conformance information
 
cvcMIBConformance OBJECT IDENTIFIER ::= {ciscoVSIControllerMIB 3}

cvcMIBCompliances OBJECT IDENTIFIER
     ::= {cvcMIBConformance 1}
cvcMIBGroups  OBJECT IDENTIFIER
     ::= {cvcMIBConformance 2}

cvcMIBCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
       "The Compliance statement for cisco VSI Controller group."
    MODULE -- this module
    MANDATORY-GROUPS { cvcConfGroup }
	
    GROUP cvcConfGroupExternal
    DESCRIPTION 
        "This group is required only for controllers running
         on a shelf external to the switch.
        "
    ::= {cvcMIBCompliances 1}

-- units of conformance
cvcConfGroup OBJECT-GROUP
        OBJECTS {
	    cvcConfControllerType,
            cvcConfControllerShelfLocation,
            cvcConfControllerLocation,
            cvcConfControllerName,
            cvcConfRowStatus
        }
       STATUS current
       DESCRIPTION
          "The objects related to configuring VSI controllers
           running on the same shelf as the switch.
          "
       ::= { cvcMIBGroups 1}

cvcConfGroupExternal OBJECT-GROUP
        OBJECTS {
            cvcConfVpi,
            cvcConfVci
        }
       STATUS current
       DESCRIPTION
          "The objects related to configuring VSI controllers
           running on the shelf external to the switch. "
       ::= { cvcMIBGroups 2}
END
