    IPI-TCAM-UTILIZATION-MIB DEFINITIONS ::= BEGIN

    --  This module provides authoritative definitions for tcam utilization table
    --
    --  This module will be extended, as needed.
    --

    IMPORTS
        OBJECT-TYPE,
        Gauge32, Counter32, Unsigned32,
        TimeTicks, NOTIFICATION-TYPE
            FROM SNMPv2-SMI
        DateAndTime, DisplayString,
        MacAddress, RowStatus, TEXTUAL-CONVENTION
            FROM SNMPv2-TC
        MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
            FROM SNMPv2-CONF
        enterprises, OBJECT-IDENTITY
            FROM SNMPv2-SMI
        ipi FROM OCNOS-IPI-MODULE-MIB;

    ipiTCAMutilization MODULE-IDENTITY
        LAST-UPDATED "201603301200Z"   -- Mar 30, 2016 12:00:00 GMT
        ORGANIZATION
        "IPI."
        CONTACT-INFO
        "support@ipinfusion.com"

       DESCRIPTION
          "The Structure of NSM Management for TCAM Utilization Information for
            the IPI enterprise."
       ::= { ipi 108 }


    -- ### Groups ###

    TCAMUtilizationObjects             OBJECT IDENTIFIER ::={ ipiTCAMutilization 1 }
    TCAMUtilizationAlarmObjects        OBJECT IDENTIFIER ::={ ipiTCAMutilization 2 }

    -- ### Textual Convention

    CodeType ::= TEXTUAL-CONVENTION
        DISPLAY-HINT "x"
        STATUS      current
        DESCRIPTION
            "The code type value for a given unit,
            displayed in hexadecimal."
        SYNTAX  Unsigned32

    UnitType ::= TEXTUAL-CONVENTION
        DISPLAY-HINT "x"
        STATUS      current
        DESCRIPTION
            "The unit type value for a given unit,
            displayed in hexadecimal."
        SYNTAX  Unsigned32

    --- ### Ingress TCAM Utilization Table

    ingressTCAMUtilizationTable     OBJECT-TYPE
        SYNTAX                      SEQUENCE OF IngressTCAMUtilizationEntry
        MAX-ACCESS                  not-accessible
        STATUS                      current
        DESCRIPTION
                  "A Table displaying the free, used and total entries
                   of ingress groups."
        ::= { TCAMUtilizationObjects 1 }

    ingressTCAMUtilizationEntry     OBJECT-TYPE
        SYNTAX                      IngressTCAMUtilizationEntry
        MAX-ACCESS                  not-accessible
        STATUS                      current
        DESCRIPTION   "TCAM Utilization in Ingress direction."
        INDEX         { ingTCAMGroupName }
        ::= { ingressTCAMUtilizationTable 1 }

    IngressTCAMUtilizationEntry    ::=
        SEQUENCE {
      ingTCAMGroupName                   DisplayString,
      ingFreeTCAMEntries                 INTEGER,
      ingUsedTCAMPercent                 INTEGER,
      ingUsedTCAMEntries                 INTEGER,
      ingTotalTCAMEntries                INTEGER,
      ingDedicatedTCAMEntries            INTEGER,
      ingSharedTCAMEntries               INTEGER
  }

  ingTCAMGroupName  OBJECT-TYPE
      SYNTAX        DisplayString 
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
                "Ingress TCAM group name."
                ::= { ingressTCAMUtilizationEntry 1 }

  ingFreeTCAMEntries  OBJECT-TYPE
      SYNTAX          Integer
      MAX-ACCESS      read-only
      STATUS          current
      DESCRIPTION
                "Ingress Free TCAM entries."
                ::= { ingressTCAMUtilizationEntry 2 }

  ingUsedTCAMPercent  OBJECT-TYPE
      SYNTAX          Integer
      MAX-ACCESS      read-only
      STATUS          current
      DESCRIPTION
                "Ingress Used TCAM percentage."
                ::= { ingressTCAMUtilizationEntry 3 }

  ingUsedTCAMEntries  OBJECT-TYPE
      SYNTAX          Integer
      MAX-ACCESS      read-only
      STATUS          current
      DESCRIPTION
                "Ingress Used TCAM entries."
                ::= { ingressTCAMUtilizationEntry 4 }

  ingTotalTCAMEntries  OBJECT-TYPE
      SYNTAX           Integer
      MAX-ACCESS       read-only
      STATUS           current
      DESCRIPTION
                "Ingress Total TCAM entries."
                ::= { ingressTCAMUtilizationEntry 5 }

  ingDedicatedTCAMEntries  OBJECT-TYPE
      SYNTAX               Integer
      MAX-ACCESS           read-only
      STATUS               current
      DESCRIPTION
                "Ingress Dedicated TCAM entries."
                ::= { ingressTCAMUtilizationEntry 6 }

  ingSharedTCAMEntries  OBJECT-TYPE
      SYNTAX            Integer
      MAX-ACCESS        read-only
      STATUS            current
      DESCRIPTION
                "Ingress Shared TCAM entries."
                ::= { ingressTCAMUtilizationEntry 7 }


  egressTCAMUtilizationTable     OBJECT-TYPE
        SYNTAX                   SEQUENCE OF EgressTCAMUtilizationEntry
        MAX-ACCESS               not-accessible
        STATUS                   current
        DESCRIPTION
                  "A Table displaying the free, used and total entries
                   of egress TCAM groups."
        ::= { TCAMUtilizationObjects 2 }

  egressTCAMUtilizationEntry     OBJECT-TYPE
      SYNTAX                     EgressTCAMUtilizationEntry
      MAX-ACCESS                 not-accessible
      STATUS                     current
      DESCRIPTION   "TCAM Uitlization in Egress direction."
      INDEX     { egrTCAMGroupName }
        ::= { egressTCAMUtilizationTable 1 }


    EgressTCAMUtilizationEntry   ::=
        SEQUENCE {
      egrTCAMGroupName                   DisplayString,
      egrFreeTCAMEntries                 INTEGER,
      egrUsedTCAMPercent                 INTEGER,
      egrUsedTCAMEntries                 INTEGER,
      egrTotalTCAMEntries                INTEGER,
      egrDedicatedTCAMEntries            INTEGER,
      egrSharedTCAMEntries               INTEGER
  }

  egrTCAMGroupName  OBJECT-TYPE
      SYNTAX        DisplayString 
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
                "Egress TCAM group name."
                ::= { egressTCAMUtilizationEntry 1 }

  egrFreeTCAMEntries  OBJECT-TYPE
      SYNTAX          Integer
      MAX-ACCESS      read-only
      STATUS          current
      DESCRIPTION
                "Egress Free TCAM entries."
                ::= { egressTCAMUtilizationEntry 2 }

  egrUsedTCAMPercent    OBJECT-TYPE
      SYNTAX            Integer
      MAX-ACCESS        read-only
      STATUS            current
      DESCRIPTION
                "Egress Used TCAM percentage."
                ::= { egressTCAMUtilizationEntry 3 }

  egrUsedTCAMEntries    OBJECT-TYPE
      SYNTAX            Integer
      MAX-ACCESS        read-only
      STATUS            current
      DESCRIPTION
                "Egress Used TCAM entries."
                ::= { egressTCAMUtilizationEntry 4 }

  egrTotalTCAMEntries    OBJECT-TYPE
      SYNTAX             Integer
      MAX-ACCESS         read-only
      STATUS             current
      DESCRIPTION
                "Egress Total TCAM entries."
                ::= { egressTCAMUtilizationEntry 5 }

  egrDedicatedTCAMEntries   OBJECT-TYPE
      SYNTAX                Integer
      MAX-ACCESS            read-only
      STATUS                current
      DESCRIPTION
                "Egress Dedicated TCAM entries."
                ::= { egressTCAMUtilizationEntry 6 }

  egrSharedTCAMEntries    OBJECT-TYPE
      SYNTAX              Integer
      MAX-ACCESS          read-only
      STATUS              current
      DESCRIPTION
                "Total Shared TCAM information."
                ::= { egressTCAMUtilizationEntry 7 }

  tCAMWarningThresholdLevel        OBJECT-TYPE
      SYNTAX                       Integer
      MAX-ACCESS                   read-only
      STATUS                       current
      DESCRIPTION
                "TCAM Warning Threshold level in percentage."
      ::= { TCAMUtilizationObjects 3 }

  tCAMAlertThresholdLevel       OBJECT-TYPE
      SYNTAX                    Integer
      MAX-ACCESS                read-only
      STATUS                    current
      DESCRIPTION
                "TCAM Alert Threshold level in percentage."
      ::= { TCAMUtilizationObjects 4 }

  TCAMUtilizationAlarmNotifications  OBJECT IDENTIFIER ::= { TCAMUtilizationAlarmObjects 1 }

    ingTCAMWarningThresholdTrap   NOTIFICATION-TYPE
      OBJECTS                {ingTCAMGroupName,
                              ingUsedTCAMPercent,
                              ingUsedTCAMEntries}
      STATUS                 current
      DESCRIPTION
                "Trap to send information for Warning Threshold."
                ::= { TCAMUtilizationAlarmNotifications 1 }

    ingTCAMCriticalThresholdTrap   NOTIFICATION-TYPE
      OBJECTS                {ingTCAMGroupName,
                              ingUsedTCAMPercent,
                              ingUsedTCAMEntries}
      STATUS                 current
      DESCRIPTION
                "Trap to send information for Critical Threshold."
                ::= { TCAMUtilizationAlarmNotifications 2 }

    egrTCAMWarningThresholdTrap   NOTIFICATION-TYPE
      OBJECTS                {egrTCAMGroupName,
                              egrUsedTCAMPercent,
                              egrUsedTCAMEntries}
      STATUS                 current
      DESCRIPTION
                "Trap to send information for Warning Threshold."
                ::= { TCAMUtilizationAlarmNotifications 3 }

    egrTCAMCriticalThresholdTrap   NOTIFICATION-TYPE
      OBJECTS                {egrTCAMGroupName,
                              egrUsedTCAMPercent,
                              egrUsedTCAMEntries}
      STATUS                 current
      DESCRIPTION
                "Trap to send information for Critical Threshold."
                ::= { TCAMUtilizationAlarmNotifications 4 }


 END

