-- *****************************************************************
-- CISCO-SWITCH-NETFLOW-MIB.my
--   
-- December 2009, Jayakumar Kadirvelu
--   
-- Copyright (c) 2009, 2010 by Cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************

CISCO-SWITCH-NETFLOW-MIB DEFINITIONS ::= BEGIN

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


ciscoSwitchNetflowMIB MODULE-IDENTITY
    LAST-UPDATED    "201005260000Z"
    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-lan-switch-snmp@cisco.com"
    DESCRIPTION
        "This MIB module defines management objects for the
        Netflow features on Cisco Layer 2 and Layer 3 devices."
    REVISION        "201005260000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { ciscoMgmt 737 }


ciscoSwitchNetflowMIBNotifs  OBJECT IDENTIFIER
    ::= { ciscoSwitchNetflowMIB 0 }

ciscoSwitchNetflowMIBObjects  OBJECT IDENTIFIER
    ::= { ciscoSwitchNetflowMIB 1 }

ciscoSwitchNetflowMIBConform  OBJECT IDENTIFIER
    ::= { ciscoSwitchNetflowMIB 2 }

-- Overview of MIB Objects:
--   
-- 1. csnAccounting              : A group of objects providing
-- Netflow accounting information and
-- configuration

csnAccounting  OBJECT IDENTIFIER
    ::= { ciscoSwitchNetflowMIBObjects 1 }

-- Overview of csnAccounting MIB Objects:
--   
-- 1. csnAccGlobal              : A group of objects providing global
-- Netflow information and
-- configuration
--   
-- 2. csnAccNotifControl        : A group of objects providing
-- Notification Control.
--   
-- 3. cshAccUsageThresh         : A group of objects providing
-- Netflow table usage threshold
-- information and configuration
--   
-- 4. csnAccUtilization         : A group of objects providing
-- Netflow utilization information and
-- configuration.
--   
-- 5. csnAccNetflowTableSize    : A group of objects providing
-- Netflow table size information.
--   
-- 6. csnAccSampler             : A group of objects providing
-- Netflow samplers information.

csnAccGlobal  OBJECT IDENTIFIER
    ::= { csnAccounting 1 }

csnAccNotifControl  OBJECT IDENTIFIER
    ::= { csnAccounting 2 }

cshAccUsageThresh  OBJECT IDENTIFIER
    ::= { csnAccounting 3 }

csnAccUtilization  OBJECT IDENTIFIER
    ::= { csnAccounting 4 }

csnAccNetflowTableSize  OBJECT IDENTIFIER
    ::= { csnAccounting 5 }

csnAccSampler  OBJECT IDENTIFIER
    ::= { csnAccounting 6 }


-- Textual Conventions

CsnNetflowDirectionTypes ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "Defines the various Netflow direction types.
        'none'             - no Netflow direction is supported.

        'ingress'          - Netflow direction is ingress.

        'egress'           - Netflow direction is egress.

        'ingressAndEgress' - Netflow direction is both
                             ingress and egress."
    SYNTAX          INTEGER  {
                        none(1),
                        ingress(2),
                        egress(3),
                        ingressAndEgress(4)
                    }

-- Global information/configuration

csnNetflowDirectionType OBJECT-TYPE
    SYNTAX          CsnNetflowDirectionTypes
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the direction type of Netflow
        enabled on this system." 
    ::= { csnAccGlobal 1 }

-- Notification Control

csnUsageThreshExceedNotifEnable OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies whether the system produces the
        csnUsageThreshExceededNotif.

        A 'false' value will prevent csnUsageThreshExceededNotif
        notifications from being generated by this system." 
    ::= { csnAccNotifControl 1 }
-- Usage Threshold Table

csnUsageThreshTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsnUsageThreshEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table containing Netflow table usage monitoring
        configuration information."
    ::= { cshAccUsageThresh 1 }

csnUsageThreshEntry OBJECT-TYPE
    SYNTAX          CsnUsageThreshEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual row of csnUsageThreshTable, containing
        the Netflow table usage monitoring configuration 
        information."
    INDEX           { csnUsageDirection } 
    ::= { csnUsageThreshTable 1 }

CsnUsageThreshEntry ::= SEQUENCE {
        csnUsageDirection CsnNetflowDirectionTypes,
        csnUsageThreshold Percent,
        csnUsageInterval  Unsigned32
}

csnUsageDirection OBJECT-TYPE
    SYNTAX          CsnNetflowDirectionTypes
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object specifies the direction of Netflow
        on the system." 
    ::= { csnUsageThreshEntry 1 }

csnUsageThreshold OBJECT-TYPE
    SYNTAX          Percent
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the Netflow table usage threshold
        in percentage value.

        When the value of this object is set to zero, Netflow table
        usage monitoring is disabled.

        When the value of this object is set to greater than zero, 
        Netflow table usage monitoring is enabled." 
    ::= { csnUsageThreshEntry 2 }

csnUsageInterval OBJECT-TYPE
    SYNTAX          Unsigned32 (1..4294967295)
    UNITS           "seconds"
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the interval in seconds over
        which the Netflow table usage (the value of csnUtilization) 
        will be compared against the threshold specified by 
        csnUsageThreshold." 
    ::= { csnUsageThreshEntry 3 }
 

-- Utilization Table

csnUtilizationTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsnUtilizationEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table containing Netflow table utilization information
        of each switching engine and a Newflow direction type."
    ::= { csnAccUtilization 1 }

csnUtilizationEntry OBJECT-TYPE
    SYNTAX          CsnUtilizationEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual row of csnUtilizationTable, containing
        the Netflow table utilization information for a particular
        switching engine and a particular Netflow type."
    INDEX           {
                        entPhysicalIndex,
                        csnUsageDirection
                    } 
    ::= { csnUtilizationTable 1 }

CsnUtilizationEntry ::= SEQUENCE {
        csnUtilization Percent
}

csnUtilization OBJECT-TYPE
    SYNTAX          Percent
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the percentage of Netflow table
        utilization." 
    ::= { csnUtilizationEntry 1 }
 

-- Netflow Table size

csnNetflowTableSizeTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsnNetflowTableSizeEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table containing Netflow table size information
        of each Netflow type supported in the system."
    ::= { csnAccNetflowTableSize 1 }

csnNetflowTableSizeEntry OBJECT-TYPE
    SYNTAX          CsnNetflowTableSizeEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual row of csnNetflowTableSizeTable, containing
        the Netflow table size information for a particular
        Netflow type."
    INDEX           { csnUsageDirection } 
    ::= { csnNetflowTableSizeTable 1 }

CsnNetflowTableSizeEntry ::= SEQUENCE {
        csnNetflowTableTotalEntries Unsigned32
}

csnNetflowTableTotalEntries OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the total number of entries
        in the Netflow table for a particular Netflow 
        direction type." 
    ::= { csnNetflowTableSizeEntry 1 }
 


-- Netflow Sampler Allocation

csnSamplerTotal OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the total number of Netflow
        samplers in the device." 
    ::= { csnAccSampler 1 }

csnSamplerAvailable OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of Netflow samplers
        available in the system." 
    ::= { csnAccSampler 2 }

-- Notifications

csnUsageThreshExceededNotif NOTIFICATION-TYPE
    OBJECTS         {
                        entPhysicalDescr,
                        csnUtilization,
                        csnUsageThreshold,
                        csnUsageInterval
                    }
    STATUS          current
    DESCRIPTION
        "A csnUsageThreshExceededNotif is sent if the Netflow
        table usage has exceeded the configured threshold
        specified by csnUsageThreshold."
   ::= { ciscoSwitchNetflowMIBNotifs 1 }
-- Conformance

csnMIBCompliances  OBJECT IDENTIFIER
    ::= { ciscoSwitchNetflowMIBConform 1 }

csnMIBGroups  OBJECT IDENTIFIER
    ::= { ciscoSwitchNetflowMIBConform 2 }


csnMIBCompliance MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
        "The compliance statement for
        CISCO-SWITCH-NETFLOW-MIB."
    MODULE          -- this module
    MANDATORY-GROUPS { csnGlobalGroup }

    GROUP           csnUsageThreshNotifControlGroup
    DESCRIPTION
        "This group is mandatory for devices which can provide
        Netflow table usage threshold notifications."

    GROUP           csnUsageThreshGroup
    DESCRIPTION
        "This group is mandatory for devices which can provide
        Netflow table usage threshold information."

    GROUP           csnUtilizationGroup
    DESCRIPTION
        "This group is mandatory for devices which can provide
        Netflow utilization information."

    GROUP           csnUsageThreshNotifGroup
    DESCRIPTION
        "This group is mandatory for devices which can provide
        Netflow table usage threshold notifications."

    GROUP           csnNetflowTableSizeGroup
    DESCRIPTION
        "This group is mandatory for devices which can provide
        Netflow table size information."

    GROUP           csnSamplerGroup
    DESCRIPTION
        "This group is mandatory for devices which can provide
        Netflow sampler information."

    OBJECT          csnNetflowDirectionType
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csnUsageThreshExceedNotifEnable
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csnUsageThreshold
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csnUsageInterval
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."
    ::= { csnMIBCompliances 1 }

-- Units of Conformance

csnGlobalGroup OBJECT-GROUP
    OBJECTS         { csnNetflowDirectionType }
    STATUS          current
    DESCRIPTION
        "A collection of objects providing global Netflow
        type configuration."
    ::= { csnMIBGroups 1 }

csnUsageThreshNotifControlGroup OBJECT-GROUP
    OBJECTS         { csnUsageThreshExceedNotifEnable }
    STATUS          current
    DESCRIPTION
        "A collection of objects providing enabling/disabling
        of the Netflow table usage threshold notifications."
    ::= { csnMIBGroups 2 }

csnUsageThreshGroup OBJECT-GROUP
    OBJECTS         {
                        csnUsageThreshold,
                        csnUsageInterval
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects providing Netflow table usage
        threshold information and configuration."
    ::= { csnMIBGroups 3 }

csnUtilizationGroup OBJECT-GROUP
    OBJECTS         { csnUtilization }
    STATUS          current
    DESCRIPTION
        "A collection of objects providing Netflow utilization
        information."
    ::= { csnMIBGroups 4 }

csnUsageThreshNotifGroup NOTIFICATION-GROUP
   NOTIFICATIONS    { csnUsageThreshExceededNotif }
    STATUS          current
    DESCRIPTION
        "A collection of notifications providing Netflow table
        usage threshold exceeded notification."
    ::= { csnMIBGroups 5 }

csnNetflowTableSizeGroup OBJECT-GROUP
    OBJECTS         { csnNetflowTableTotalEntries }
    STATUS          current
    DESCRIPTION
        "A collection of objects providing Netflow table size
        information."
    ::= { csnMIBGroups 6 }

csnSamplerGroup OBJECT-GROUP
    OBJECTS         {
                        csnSamplerTotal,
                        csnSamplerAvailable
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects providing Netflow sampler
        information."
    ::= { csnMIBGroups 7 }

END





