-- *****************************************************************
-- CISCO-PSA-MICROCODE-MIB.my
--
--
-- March 2002, Rishi K Mutnuru
--
-- Copyright (c) 2002 by Cisco Systems, Inc.
-- All rights reserved.
--
-- *****************************************************************
--
--

CISCO-PSA-MICROCODE-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY,
        OBJECT-TYPE,
        NOTIFICATION-TYPE
                FROM SNMPv2-SMI
        TEXTUAL-CONVENTION,
        TruthValue
                FROM SNMPv2-TC
        MODULE-COMPLIANCE,
        NOTIFICATION-GROUP,
        OBJECT-GROUP
                FROM SNMPv2-CONF
        entPhysicalIndex,
        entPhysicalDescr,
        entPhysicalName
                FROM ENTITY-MIB
        ciscoMgmt
                FROM CISCO-SMI;

ciscoPsaMicrocodeMIB MODULE-IDENTITY
        LAST-UPDATED    "200206180000Z"
        ORGANIZATION    "Cisco Systems, Inc."
        CONTACT-INFO
                "       Cisco Systems
                        Customer Service

                Postal: 170 W. Tasman Drive
                        San Jose, CA  95134-1706
                        USA

                   Tel: +1 800 553-NETS

                E-mail: gsr-netman@cisco.com"

        DESCRIPTION
                "Cisco PSA Microcode MIB - Overview

                The PSA is the Packet Switching ASIC used 
                in module like engine 2(E2) line cards in GSR
                for IP and MPLS packets forwarding. The PSA 
                performs IP and MPLS packet forwarding at 4 Mpps. 

                The list of features supported by the PSA 
                includes (but is not limited to):
                - Input and Output ACLs
                - Frame Relay Switching
                - PIRC
                - MPLS VPN
                - BGP policy accounting
                - IP packet coloring
                - Sampled Net flow
                - ATM over MPLS.
                - Source MAC Accounting.
                - Unicast RPF
        
                Note that all the features are not 
                supported simultaneously on a module. 
                Each microcode bundle/set can support 
                one or a limited number of the features 
                listed above. Each feature has a priority.  
                When a feature (ACL, Sampled NetFlow) is 
                enabled through the CLI, the higher 
                priority feature will take precedence 
                over the lower priority feature.  The 
                microcode for the lower priority is 
                removed and cleaned up.  The higher 
                priority microcode will be loaded.  
                Later, if the higher priority feature 
                is removed, the lower priority microcode 
                will be loaded again.

                This MIB contains information about the microcode 
                bundles on modules like  E2 Line Cards(LC) in GSR.
                Since microcode reload is a service interrupting 
                event, this MIB also defines a notification to
                inform management stations that such an event has
                taken place.
                "
    
        REVISION        "200206180000Z"
        DESCRIPTION
                "Initial version of this MIB module."
        ::= { ciscoMgmt 259 }

-- Top-level structure of the MIB

ciscoPsaMicrocodeMIBNotifs OBJECT  IDENTIFIER
                                   ::= { ciscoPsaMicrocodeMIB 0 }
ciscoPsaMicrocodeMIBObjects OBJECT IDENTIFIER 
                                   ::= { ciscoPsaMicrocodeMIB 1 }

ciscoPsaMicrocodeMIBConformance OBJECT IDENTIFIER
                                   ::= { ciscoPsaMicrocodeMIB 2 }

-- Subgroups:
cpmcModulePsa OBJECT IDENTIFIER ::= { ciscoPsaMicrocodeMIBObjects 1 }
cpmcBundle OBJECT IDENTIFIER    ::= { ciscoPsaMicrocodeMIBObjects 2 }  
cpmcNotif  OBJECT IDENTIFIER    ::= { ciscoPsaMicrocodeMIBObjects 3 } 

--  Textual Conventions

PsaMicrocodeBundleId ::= TEXTUAL-CONVENTION
        STATUS        current
        DESCRIPTION
                "The identity of a PSA microcode bundle.
                 The current microcode bundles are:
                 
                 unknown(1): Unknown Bundle. There will be
                             no entry associated with this
                             value in the cpmcBundleTable.

                 none(2): This value is used by 
                          cpmcModulePsaPrevBundleId object
                          till the first micrcode reload
                          occurs on the psa. There will be 
                          no entry associated with this 
                          value in the cpmcBundleTable.

                 vanillaPOS(3): POS Vanilla

                 vanillaGE(4):  GE Vanilla
                
                 vanillaInuit(5): Inuit Vanilla

                 vanillaTaz(6): TAZ Vanilla

                 pircPOS(7): POS Per Interface Rate Control
 
                 pircGE(8): GE Per Interface Rate Control

                 uRPFPOS(9): POS Unicast Reverse Path Forwarding

                 vrfSelectionPOS(10): POS VRF Selection
                             
                 bgppaPOS(11): POS BGP Policy Accounting

                 bgppaGE(12):  GE BGP Policy Accounting
   
                 ipColorPOS(13): POS IP Coloring
 
                 inputAcl128POS(14): POS 128 Line Input ACL
                
                 inputAcl128GE(15): GE 128 Line Input ACL
                                  
                 outputAcl128POS(16): POS 128 Line Output ACL
                 
                 outputAcl128GE(17): GE 128 Line Output ACL

                 inputAcl448POS(18): POS 448 Line Input ACL

                 inputAcl448GE(19): GE 448 Line Input ACL

                 outputAcl448POS(20): POS 448 Line Output ACL

                 outputAcl448GE(21): GE 448 Line Output ACL
 
                 serverCard(22): Server Card

                 eoMplsGE(23): GE Ethernet over MPLS

                 frtpPOS(24): POS Frame Relay Traffic Policing

                 outputAclATM(25): ATM Output ACL

                 inputAcl128Taz(26): TAZ 128 Line Input ACL

                 vrfSelectionGE(27): GE VRF Selection

                 uRPFGE(28): GE Unicast Reverse Path Forwarding

                 cscGE(29): GE Carrier Supporting Carriers

                 linkBundleSMPOS(30): POS Link Bundle Single Mode

                 linkBundleDMPOS(31): POS Link Bundle Double Mode

                 linkBundleSMGE(32): GE Link Bundle Single Mode

                 linkBundleDMGE(33): GE Link Bundle Double Mode
                 "   
             
        SYNTAX INTEGER {
                       unknown(1),
                       none(2),
                       vanillaPOS(3),
                       vanillaGE(4),
                       vanillaInuit(5),
                       vanillaTaz(6),
                       pircPOS(7),
                       pircGE(8),
                       uRPFPOS(9),
                       vrfSelectionPOS(10),
                       bgppaPOS(11),
                       bgppaGE(12),
                       ipColorPOS(13),
                       inputAcl128POS(14),
                       inputAcl128GE(15),
                       outputAcl128POS(16),
                       outputAcl128GE(17),
                       inputAcl448POS(18),
                       inputAcl448GE(19),
                       outputAcl448POS(20),
                       outputAcl448GE(21),
                       serverCard(22),
                       eoMplsGE(23),
                       frtpPOS(24),
                       outputAclATM(25),
                       inputAcl128Taz(26),
                       vrfSelectionGE(27),
                       uRPFGE(28),
                       cscGE(29),
                       linkBundleSMPOS(30),
                       linkBundleDMPOS(31),
                       linkBundleSMGE(32),
                       linkBundleDMGE(33)
                     }

PsaMicrocodeFeatures ::=  TEXTUAL-CONVENTION
        STATUS        current
        DESCRIPTION
                "The list of features supported on a PSA microcode
                bundle.
              
                The current list of features are:

                basicIpForwarding(0): Basic IP Forwarding

                basicMplsSwitching(1): Basic MPLS Switching

                frameRelaySwitching(2): Frame Relay Switching

                eAFrSwitching(3): Extended Addressing FR Switching

                frtp(4): Frame Relay Traffic Policing

                pirc(5): PIRC

                vrfSelection(6): VRF Selection

                uRPF(7): Unicast RPF
  
                inputAcl128(8): 128 Line Input ACLs

                outputAcl128(9): 128 Line Output ACLs

                inputAcl448(10): 448  Line Input ACLs

                outputAcl448(11): 448  Line Output ACLs.

                sampledNetflow(12): Sampled Netflow

                ipMarking(13): IP Marking
 
                bgppa(14): BGP Policy Accounting

                uti(15): Universal Transport Interface

                mplsVpn(16): MPLS VPN

                eoMpls(17): Ethernet over MPLS

                atmoMpls(18): ATM over MPLS

                csc(19): Carrier Supporting Carriers
                
                multicast(20): Multicast

                perPacketLoadBalancing(21): Per Packet Load Balancing

                sourceMacAccounting(22): Source MAC Accounting
    
                frSubVrf(23): FR per-subinterface VRF processing

                serverCard(24): Server Card

                mplsSNF(25): MPLS aware Sampled Netflow

                linkBundle(26): Link Bundle

                atomDisposition(27): AToM Disposition
                "
        SYNTAX  BITS {
                      basicIpForwarding(0),
                      basicMplsSwitching(1),
                      frameRelaySwitching(2),
                      eAFrSwitching(3),
                      frtp(4),
                      pirc(5),
                      vrfSelection(6),
                      uRPF(7),
                      inputAcl128(8),
                      outputAcl128(9),
                      inputAcl448(10),
                      outputAcl448(11),
                      sampledNetflow(12),
                      ipMarking(13),
                      bgppa(14),
                      uti(15),
                      mplsVpn(16),
                      eoMpls(17),
                      atmoMpls(18),
                      csc(19),
                      multicast(20),
                      perPacketLoadBalancing(21),
                      sourceMacAccounting(22),
                      frSubVrf(23),
                      serverCard(24),
                      mplsSNF(25),
                      linkBundle(26),
                      atomDisposition(27)
                   }


cpmcModulePsaTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CpmcModulePsaEntry
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
                "A table providing the microcode bundle information
                of those modules which contains PSA (Ex: engine 2
                line cards in GSR)."
        ::= { cpmcModulePsa 1 }

cpmcModulePsaEntry OBJECT-TYPE
        SYNTAX CpmcModulePsaEntry
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
                "Entries providing PSA microcode bundle information
                of those entities of type PhysicalClass module(9)
                and contain PSA."
        INDEX { entPhysicalIndex }
        ::= { cpmcModulePsaTable 1 }    

CpmcModulePsaEntry ::=
        SEQUENCE {
        cpmcModulePsaCurrBundleId        PsaMicrocodeBundleId,
        cpmcModulePsaPrevBundleId        PsaMicrocodeBundleId,
        cpmcModulePsaFeaturesEnabled     PsaMicrocodeFeatures,
        cpmcModulePsaFeaturesDisabled    PsaMicrocodeFeatures
        }

cpmcModulePsaCurrBundleId OBJECT-TYPE
        SYNTAX  PsaMicrocodeBundleId
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
                "The identity of the microcode bundle currently
                loaded on the PSA of the module identified by
                entPhysicalIndex."
        ::= { cpmcModulePsaEntry 1 }

cpmcModulePsaPrevBundleId OBJECT-TYPE
        SYNTAX  PsaMicrocodeBundleId
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
                "The identity of the microcode bundle previously
                loaded on the PSA of the module identified by 
                entPhysicalIndex. Till the first microcode reload
                is performed on the module, the value will be
                'none(2)'."
        ::= { cpmcModulePsaEntry 2 }

cpmcModulePsaFeaturesEnabled OBJECT-TYPE
        SYNTAX PsaMicrocodeFeatures 
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
                "The list of features newly enabled due to the 
                loading of the microcode bundle identified by
                cpmcModulePsaCurrBundleId. "
        ::= { cpmcModulePsaEntry 3 }

cpmcModulePsaFeaturesDisabled OBJECT-TYPE
        SYNTAX PsaMicrocodeFeatures 
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
                "The list of features disabled because of the
                unloading of microcode bundle identified by
                cpmcModulePsaPrevBundleId and loading of the
                microcode bundle identified by
                cpmcModulePsaCurrBundleId."
        ::= { cpmcModulePsaEntry 4 }

-- end of cpmcModulePsaTable

cpmcBundleTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CpmcBundleEntry
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
                "A table of PSA microcode bundle features."
        ::= { cpmcBundle 1 }

cpmcBundleEntry OBJECT-TYPE
        SYNTAX CpmcBundleEntry
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
                "Details the features of a microcode bundle."  
        INDEX { cpmcBundleId }
        ::= { cpmcBundleTable 1 }

CpmcBundleEntry ::=
        SEQUENCE {
        cpmcBundleId         PsaMicrocodeBundleId,
        cpmcBundleFeatures   PsaMicrocodeFeatures
        }

cpmcBundleId OBJECT-TYPE
        SYNTAX  PsaMicrocodeBundleId
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
                "The identity of the PSA microcode bundle. This
                object value can't be unknown(1) or none(2)."
        ::= { cpmcBundleEntry 1 }

cpmcBundleFeatures OBJECT-TYPE
        SYNTAX  PsaMicrocodeFeatures
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
                "The list of features supported by microcode bundle
                identified by cpmcBundleId."
        ::= { cpmcBundleEntry 2 }

-- End of Table

cpmcNotifEnables  OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
               "This variable indicates whether the system
                produces the ciscoPsaMicrocodeReload notification.
                A false value will prevent PSA microcode reload
                notifications from being generated by the system."
        DEFVAL { false }
        ::= { cpmcNotif 1 }

ciscoPsaMicrocodeReload NOTIFICATION-TYPE
        OBJECTS {
                  entPhysicalName,
                  entPhysicalDescr,
                  cpmcModulePsaCurrBundleId,
                  cpmcModulePsaPrevBundleId,
                  cpmcModulePsaFeaturesEnabled,
                  cpmcModulePsaFeaturesDisabled
                }
        STATUS  current
        DESCRIPTION
                "A ciscoPsaMicrocodeReload notification is generated 
                when a PSA microcode reload occurs.."
        ::= { ciscoPsaMicrocodeMIBNotifs 1 }
 

-- conformance information


ciscoPsaMicrocodeMIBCompliances OBJECT IDENTIFIER 
                            ::= { ciscoPsaMicrocodeMIBConformance 1 }
ciscoPsaMicrocodeMIBGroups      OBJECT IDENTIFIER 
                            ::= { ciscoPsaMicrocodeMIBConformance 2 }

-- Compliances statement

ciscoPsaMicrocodeMIBCompliance MODULE-COMPLIANCE
        STATUS  current
        DESCRIPTION
                "The compliance statement for entities which implement
                 the CISCO-PSA-MICROCODE-MIB."
        MODULE  -- this module
                MANDATORY-GROUPS {
                                  ciscoPsaMicrocodeParamsGroup,
                                  ciscoPsaMicrocodeNotifGroup
                                  }

        ::= { ciscoPsaMicrocodeMIBCompliances 1 }

-- units of compliances

ciscoPsaMicrocodeParamsGroup  OBJECT-GROUP
        OBJECTS {
                 cpmcModulePsaCurrBundleId,
                 cpmcModulePsaPrevBundleId,
                 cpmcModulePsaFeaturesEnabled,
                 cpmcModulePsaFeaturesDisabled,
                 cpmcBundleFeatures,
                 cpmcNotifEnables
                }
        STATUS  current
        DESCRIPTION
                "A collection of objects providing PSA microcode 
                monitoring."
        ::= { ciscoPsaMicrocodeMIBGroups 1 }

ciscoPsaMicrocodeNotifGroup  NOTIFICATION-GROUP
    NOTIFICATIONS {
                   ciscoPsaMicrocodeReload
                  }
        STATUS  current
        DESCRIPTION
                "A collection of notifications generated by 
                 the devices supporting this MIB."
        ::= { ciscoPsaMicrocodeMIBGroups 2 }

END
