-- *****************************************************************
-- CISCO-PACKET-CAPTURE-MIB
--   
-- February 2006, Binh P Le
--   
-- Copyright (c) 2006-2008 by cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************

CISCO-PACKET-CAPTURE-MIB DEFINITIONS ::= BEGIN

IMPORTS
    OBJECT-TYPE,
    MODULE-IDENTITY,
    Integer32,
    Unsigned32
        FROM SNMPv2-SMI
    OBJECT-GROUP,
    MODULE-COMPLIANCE
        FROM SNMPv2-CONF
    DateAndTime,
    RowStatus,
    MacAddress,
    TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    InetAddress,
    InetAddressType,
    InetAddressPrefixLength
        FROM INET-ADDRESS-MIB
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB
    ifIndex
        FROM IF-MIB
    VlanIndex
        FROM CISCO-VTP-MIB
    ciscoMgmt
        FROM CISCO-SMI;


ciscoPacketCaptureMIB MODULE-IDENTITY
    LAST-UPDATED    "200807070000Z"
    ORGANIZATION    "Cisco System, 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
        "The MIB module for the management of packet capture
        feature."

    REVISION        "200807070000Z"
    DESCRIPTION
        "Added cpcPacketLengthFilterConfigGroup,
         cpcEthertypeFilterConfigGroup,
         cpcVlanFilterConfigGroup,
         cpcAccessGroupFilterConfigGroup,
         cpcBufferConfigGroup,
         cpcScheduleConfigGroup,
         cpcSessionStatsGroup,
         cpcMaxMacFilterConfigGroup,
         cpcMaxIpFilterConfigGroup,
         cpcSessionDescrGroup,
         cpcSessionPacketRateLimitGroup."
    REVISION        "200701030000Z"
    DESCRIPTION
        "Initial version of this MIB module."
          ::= { ciscoMgmt 602 }


cpcMIBNotification  OBJECT IDENTIFIER
    ::= { ciscoPacketCaptureMIB 0 }

cpcMIBObjects  OBJECT IDENTIFIER
    ::= { ciscoPacketCaptureMIB 1 }

cpcMIBConformance  OBJECT IDENTIFIER
    ::= { ciscoPacketCaptureMIB 2 }

-- TEXTUAL CONVENTION

CiscoPacketCaptureFilterCriteria ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "Filter criteria to specify if packets will be captured
        based on source or destination addresses.

        source: packets will be captured based on source
                address.

        dest  : packets will be captured based on destination
                address."
    SYNTAX          INTEGER  {
                        source(1),
                        dest(2)
                    }
cpcGenericConfig  OBJECT IDENTIFIER
    ::= { cpcMIBObjects 1 }

cpcFilterConfig  OBJECT IDENTIFIER
    ::= { cpcMIBObjects 2 }

cpcBufferConfig OBJECT IDENTIFIER
    ::= { cpcMIBObjects 3 }

cpcScheduleConfig OBJECT IDENTIFIER
    ::= { cpcMIBObjects 4 }

cpcSessionStats OBJECT IDENTIFIER
    ::= { cpcMIBObjects 5 }

--   
-- To start a packet capture session
-- ---------------------------------
-- Users should first configure proper entrie(s) in
-- cpcSessionConfigTable and then cpcCaptureSourceIfTable.
-- Filter tables (cpcMacFilterTable, cpcIpFilterTable,
-- cpcPacketLengthFilterTable, cpcEthertypeFilterTable,
-- cpcVlanFilterTable, and cpcAccessGroupFilterTable) need to
-- be configured if any packet filtering is necessary.
-- Once the above configuration is completed, users can
-- start the capture session through cpcSessionAction object
-- in cpcSessionConfigTable.
--   

--   
-- cpcGenericConfig
--
cpcMaxSessionAllowed OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The maximum number of packet capture sessions
        allowed in cpcSessionConfigTable. A value of zero
        indicates no limitation on the number of
        configurable sessions." 
    ::= { cpcGenericConfig 1 }

cpcSessionConfigTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CpcSessionConfigEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table of configuration to be used in the packet
        capture sessions. This entry may be modified if value
        of corresponding instance of cpcSessionConfigStatus
        is 'active'."
    ::= { cpcGenericConfig 2 }

cpcSessionConfigEntry OBJECT-TYPE
    SYNTAX          CpcSessionConfigEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry containing management information of a packet
        capture session."
    INDEX           { cpcSessionId } 
    ::= { cpcSessionConfigTable 1 }

CpcSessionConfigEntry ::= SEQUENCE {
        cpcSessionId               Unsigned32,
        cpcSessionOperStatus       INTEGER,
        cpcSessionDestFileName     SnmpAdminString,
        cpcSessionPacketLength     Unsigned32,
        cpcSessionPacketLimits     Unsigned32,
        cpcSessionAction           INTEGER ,
        cpcSessionConfigStatus     RowStatus,
        cpcSessionPacketRateLimit  Unsigned32,
        cpcSessionDescr            SnmpAdminString
}

cpcSessionId OBJECT-TYPE
    SYNTAX          Unsigned32 (1..4294967295)
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION     "An unique number which represents a session." 
    ::= { cpcSessionConfigEntry 1 }

cpcSessionOperStatus OBJECT-TYPE
    SYNTAX          INTEGER {
                        other(1),
                        inProgress(2),
                        completed(3),
                        stopped(4),
                        storageFull(5),
                        bufferFull(6)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Operational status of a packet capture session.

        other      : none of the following.
        inProgress : packet capture session is in progress.
        completed  : number of captured frames has reached
                     the value of corresponding instance of
                     cpcSessionPacketLimits.
        stopped    : packet capture session was administratively
                     stopped.
        storageFull: storage device is full.
        bufferFull : storage buffer is full." 
    ::= { cpcSessionConfigEntry 2 }

cpcSessionDestFileName OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The destination file name used to store the captured frames.
        Value of this object must be specified in the format
        of <device>:<filename> for local location, or
        <protocol>://<server>/<filename> for network location.

        This object may not be modified if value of the corresponding
        instance of cpcSessionOperStatus is 'inProgress' or the value
        of cpcBufferOperStatus of an instance entry with same
        cpcSessionId in cpcBufferConfigEntry is 'exporting'."
    ::= { cpcSessionConfigEntry 3 }

cpcSessionPacketLength OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS           "octets"
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The length of packet to be captured by this session. If the
        length of an actual packet is greater than the value of this
        object, the session will only capture the first number of
        bytes specified by this object. A value zero for this object
        indicates that the entire packet will be captured.

        This object may not be modified if value of the corresponding
        instance of cpcSessionOperStatus is 'inProgress'."
    DEFVAL          { 0 } 
    ::= { cpcSessionConfigEntry 4 }

cpcSessionPacketLimits OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS           "packets"
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The number of packets to be captured by this
        session. A value of zero for this object
        indicates that there is no limitation. When
        the value of this object is zero, the session
        remains 'inProgress' until it is administratively
        stopped or the storage is full.

        This object may not be modified if value of the
        corresponding instance of cpcSessionOperStatus is
        'inProgress'."
    DEFVAL          { 0 } 
    ::= { cpcSessionConfigEntry 5 }

cpcSessionAction OBJECT-TYPE
    SYNTAX          INTEGER  {
                        start(1),
                        stop(2)
                    }
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The action control for this capture session.
        Setting this object to 'start' causes the capture 
        session to be started if it is not running. 
        Setting this object to 'stop' terminates the 
        capturing session if it is running. 

        The value of this object will be changed to 'stop' 
        when value of the corresponding instance of 
        cpcSessionOperStatus leaves from 'inProgress' to 
        other status. 

        This object may only be set when the corresponding 
        instance value of cpcSessionConfigStatus is 'active'."
    DEFVAL          { stop } 
    ::= { cpcSessionConfigEntry 6 }

cpcSessionConfigStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION     "The status of this conceptual row." 
    ::= { cpcSessionConfigEntry 7 }
 
cpcSessionPacketRateLimit OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS           "packets per second"
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "Rate limit for this session. Only packets within the
        rate may be captured. A value of zero for this object
        indicates that there is no rate limitation.

        This object may not be modified if value of the
        corresponding instance of cpcSessionOperStatus is
        'inProgress'."
    DEFVAL          { 10000 }
    ::= { cpcSessionConfigEntry 8 }
  
cpcSessionDescr OBJECT-TYPE
    SYNTAX        SnmpAdminString
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "Provides description of this session."
    DEFVAL        { "" }
    ::= { cpcSessionConfigEntry 9 }

cpcSessionMaxSources OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The maximum number of entries allowed in
        cpcCaptureSourceIfTable for a packet capture session.
        A value of zero indicates no limitation on the
        number of configurable sources." 
    ::= { cpcGenericConfig 3 }

cpcCaptureSourceIfTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CpcCaptureSourceIfEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table of interface information to be used in
        the packet capture session."
    ::= { cpcGenericConfig 4 }

cpcCaptureSourceIfEntry OBJECT-TYPE
    SYNTAX          CpcCaptureSourceIfEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry containing interface related management
        information for a packet capture session. 

        The entry is created and deleted by using 
        cpcCaptureSourceIfStatus object. 

        The entry may not be modified, added or deleted when
        the corresponding value of cpcSessionOperStatus is
        'inProgress'."
    INDEX           {
                        cpcSessionId,
                        ifIndex
                    } 
    ::= { cpcCaptureSourceIfTable 1 }

CpcCaptureSourceIfEntry ::= SEQUENCE {
        cpcCaptureSourceIfDirection INTEGER ,
        cpcCaptureSourceIfStatus    RowStatus
}

cpcCaptureSourceIfDirection OBJECT-TYPE
    SYNTAX          INTEGER {
                        rx(1),
                        tx(2),
                        both(3)
                    }
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The direction of traffic to be captured.

        rx  : Only ingress traffic will be captured.

        tx  : Only egress traffic will be captured.

        both: Traffic from both directions will be
              captured.

        This object may be modified if value of the
        corresponding instance of cpcCaptureSourceIfStatus
        is 'active'."
    DEFVAL          { rx } 
    ::= { cpcCaptureSourceIfEntry 1 }

cpcCaptureSourceIfStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION     "The status of this conceptual row." 
    ::= { cpcCaptureSourceIfEntry 2 }
 


-- cpcFilterConfig group
cpcMaxFilterAllowed OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The maximum number of filters allowed in a packet
        capture session. Value of zero indicates that there
        is no limitation." 
    ::= { cpcFilterConfig 1 }

cpcMacFilterTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CpcMacFilterEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table of MAC filter information to be used in
        the packet capture session."
    ::= { cpcFilterConfig 2 }

cpcMacFilterEntry OBJECT-TYPE
    SYNTAX          CpcMacFilterEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry containing management information about
        a packet capture filter based on MAC address.
        The entry is created or deleted by using
        cpcMacFilterRowStatus object.

        The entry may not be modified, created or deleted
        when the corresponding value of cpcSessionOperStatus is
        'inProgress'."
    INDEX           {
                        cpcSessionId,
                        cpcMacFilterMacAddress,
                        cpcMacFilterCriteria
                    } 
    ::= { cpcMacFilterTable 1 }

CpcMacFilterEntry ::= SEQUENCE {
        cpcMacFilterMacAddress MacAddress,
        cpcMacFilterCriteria   CiscoPacketCaptureFilterCriteria,
        cpcMacFilterRowStatus  RowStatus
}

cpcMacFilterMacAddress OBJECT-TYPE
    SYNTAX          MacAddress
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The filtered MAC address. Incorporated with the
        corresponding instance value of crcMacFilterCriteria,
        packet capture will capture packets sending from or to
        the address specified by this object." 
    ::= { cpcMacFilterEntry 1 }

cpcMacFilterCriteria OBJECT-TYPE
    SYNTAX          CiscoPacketCaptureFilterCriteria
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION     "The filter criteria of the entry."
    ::= { cpcMacFilterEntry 2 }

cpcMacFilterRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION 
        "The status of this conceptual row."
    ::= { cpcMacFilterEntry 3 }
 
cpcIpFilterTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CpcIpFilterEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table of IP filter information to be used in
        the packet capture session."
    ::= { cpcFilterConfig 3 }

cpcIpFilterEntry OBJECT-TYPE
    SYNTAX          CpcIpFilterEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry containing management information if IP based
        packet capture filter for the packet capture session. 

        The entry can be created or deleted by using 
        cpcIpFilterRowStatus object. 

        The entry may not be modified, created or deleted when
        value of the corresponding instance of cpcSessionOperStatus
        is 'inProgress'."
    INDEX           {
                        cpcSessionId,
                        cpcIpFilterAddressType,
                        cpcIpFilterAddress,
                        cpcIpFilterCriteria
                    } 
    ::= { cpcIpFilterTable 1 }

CpcIpFilterEntry ::= SEQUENCE {
        cpcIpFilterAddressType InetAddressType,
        cpcIpFilterAddress     InetAddress,
        cpcIpFilterCriteria    CiscoPacketCaptureFilterCriteria,
        cpcIpFilterMask        InetAddressPrefixLength,
        cpcIpFilterRowStatus   RowStatus
}

cpcIpFilterAddressType OBJECT-TYPE
    SYNTAX          InetAddressType
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The type of Internet address is configured in this
        packet capture filter." 
    ::= { cpcIpFilterEntry 1 }

cpcIpFilterAddress OBJECT-TYPE
    SYNTAX          InetAddress (SIZE  (1..64))
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The Internet address for the filter. The type of
        this address is determined by the value of the
        cpcIpFilterAddressType object. The cpcIpFilterAddress
        may not be empty due to the SIZE restriction.

        Incorporated with the corresponding instance value
        of cpcIpFilterCriteria, packet capture will capture
        packets sending to or from the address specified by
        this object." 
    ::= { cpcIpFilterEntry 2 }

cpcIpFilterCriteria OBJECT-TYPE
    SYNTAX          CiscoPacketCaptureFilterCriteria
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION     "The filter criteria of the entry."
    ::= { cpcIpFilterEntry 3 }

cpcIpFilterMask OBJECT-TYPE
    SYNTAX          InetAddressPrefixLength
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The prefix length value associated with the corresponding
        cpcIpFilterAddress. The value of zero indicates that no IP 
        mask is associated with the corresponding cpcIpFilterAddress. 

        This object may be modified while value of the corresponding
        instance of cpcIpFilterRowStatus is 'active'." 
    ::= { cpcIpFilterEntry 4 }

cpcIpFilterRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION     "The status of this conceptual row." 
    ::= { cpcIpFilterEntry 5 }

cpcMaxMacFilterAllowed OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The maximum number of filters allowed in cpcMacFilterTable
        for each packet capture session. Once the number of entries
        in cpcMacFilterTable reaches the value of this object, if
        users need to create a new entry in cpcMacFilteTable, an
        existing entry must be removed first.  Value of zero
        indicates that there is no limitation."
    ::= { cpcFilterConfig 4 }

cpcMaxIpFilterAllowed OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The maximum number of IP filter allowed in cpcIpFilterTable
        for each packet capture session. Once the number of entries
        in cpcIpFilterTable reaches the value of this object, if
        users need to create a new entry in cpcIpFilterTable, an
        existing entry must be removed first. Value of zero
        indicates that there is no limitation."
    ::= { cpcFilterConfig 5 }
    
cpcPacketLengthFilterTable OBJECT-TYPE
    SYNTAX           SEQUENCE OF CpcPacketLengthFilterEntry
    MAX-ACCESS       not-accessible
    STATUS           current
    DESCRIPTION
        "A table of packet length filter configuration
        to be used in the packet capture sessions."
    ::= { cpcFilterConfig 6 }

cpcPacketLengthFilterEntry OBJECT-TYPE
    SYNTAX           CpcPacketLengthFilterEntry
    MAX-ACCESS       not-accessible
    STATUS           current
    DESCRIPTION
        "An entry contains management information about a packet
        capture filter based on packet length. A row is created
        for each entry in cpcSessionConfigTable.

        This entry may not be modified if value of the corresponding
        instance of cpcSessionOperStatus is 'inProgress'."
    INDEX { cpcSessionId }
    ::= { cpcPacketLengthFilterTable 1 }

CpcPacketLengthFilterEntry ::= SEQUENCE {
    cpcPacketLengthFilterMin  Unsigned32,
    cpcPacketLengthFilterMax  Unsigned32
} 

cpcPacketLengthFilterMin OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS           "bytes"
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the minimum length of the packet to be
         captured. Packets having length smaller than this value will
         not be captured.  A zero value means there is no minimum
         length limit. The value of cpcPacketLengthFilterMax object
         should not be less than that of cpcPacketLengthFilterMin
         object in the same row when both values are non zero."
    ::= { cpcPacketLengthFilterEntry 1 }

cpcPacketLengthFilterMax OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS           "bytes"
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the maximum length of the packet to be
         captured. Packets having length bigger than this value will
         not be captured.  A zero value means there is no maximum
         length limit. The value of cpcPacketLengthFilterMax object
         should not be less than that of cpcPacketLengthFilterMin
         object in the same row when both values are non zero."
    ::= { cpcPacketLengthFilterEntry 2 }

cpcMaxEthertypeFilterAllowed OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The maximum number of filters allowed in
        cpcEthertypeFilterTable for each packet capture session.
        Value of zero indicates that there is no limitation."
    ::= { cpcFilterConfig 7 }

cpcEthertypeFilterTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CpcEthertypeFilterEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table lists Ethertype filter configuration
        to be used in the packet capture sessions."
    ::= { cpcFilterConfig 8 }

cpcEthertypeFilterEntry OBJECT-TYPE
    SYNTAX          CpcEthertypeFilterEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry contains management information about
        a packet capture filter based on Ethertype.

        This entry may not be modified if value of the 
        corresponding instance of cpcSessionOperStatus is 
        'inProgress'."
    INDEX           {
                       cpcSessionId,
                       cpcEthertypeFilterValue
                    }
    ::= { cpcEthertypeFilterTable 1 }

CpcEthertypeFilterEntry ::= SEQUENCE {
        cpcEthertypeFilterValue  Integer32,
        cpcEthertypeFilterStatus RowStatus  
}

cpcEthertypeFilterValue OBJECT-TYPE
    SYNTAX          Integer32 (0..65535)
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The ethertype value to indicate which packet to
        be captured." 
    ::= { cpcEthertypeFilterEntry 1 }

cpcEthertypeFilterStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the status of this conceptual row and
        is used to manage creation, and deletion of entries in this
        table. Whenever the current number of rows is equal to the
        value of cpcMaxEthertypeFilterAllowed, setting RowStatus of a 
        new row to 'createAndGo' or 'createAndWait' should fail with
        an 'inconsistentValue' error. That is, to create another row,
        an existing row must be deleted via either setting its
        RowStatus object to 'destroy' or alternatively via the CLI."

    ::= { cpcEthertypeFilterEntry 2 }

cpcMaxVlanFilterAllowed OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The maximum number of filters allowed in
        cpcVlanFilterTable for each packet capture session.
        Value of zero indicates that there is no limitation."
    ::= { cpcFilterConfig 9 }

cpcVlanFilterTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CpcVlanFilterEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table of VLAN filter information to be used
         in packet capture sessions."
    ::= { cpcFilterConfig 10 }

cpcVlanFilterEntry OBJECT-TYPE
    SYNTAX           CpcVlanFilterEntry
    MAX-ACCESS       not-accessible
    STATUS           current
    DESCRIPTION
        "An entry contains management information about
         a packet capture filter based on VLAN. The entry
         is created or deleted using cpcVlanFilterRowStatus
         object.

        This entry may not be modified if value of the 
        corresponding instance of cpcSessionOperStatus is 
        'inProgress'."
    INDEX            {
                       cpcSessionId,
                       cpcVlanFilterVlanIndex
                     } 
    ::= { cpcVlanFilterTable 1 }

CpcVlanFilterEntry ::= SEQUENCE {
        cpcVlanFilterVlanIndex VlanIndex,
        cpcVlanFilterRowStatus RowStatus
}

cpcVlanFilterVlanIndex OBJECT-TYPE
    SYNTAX            VlanIndex
    MAX-ACCESS        not-accessible
    STATUS            current
    DESCRIPTION
        "The VLAN index value of this filter."
    ::= { cpcVlanFilterEntry 1 }

cpcVlanFilterRowStatus OBJECT-TYPE
    SYNTAX            RowStatus
    MAX-ACCESS        read-create
    STATUS            current
    DESCRIPTION
        "This object specifies the status of this conceptual row and
        is used to manage creation, and deletion of entries in this
        table.  Whenever the current number of rows is equal to the
        value of cpcMaxVlanFilterAllowed, setting RowStatus of a
        new row to 'createAndGo' or 'createAndWait' should fail with
        an 'inconsistentValue' error. That is, to create another row,
        an existing row must be deleted via either setting its
        RowStatus object to 'destroy' or alternatively via the CLI."

    ::= { cpcVlanFilterEntry 2 }

cpcMaxAccessGroupFilterAllowed OBJECT-TYPE
    SYNTAX            Unsigned32
    MAX-ACCESS        read-only
    STATUS            current
    DESCRIPTION
        "The maximum number of filters allowed in
        cpcAccessGroupFilterTable for each packet capture
        session. Value of zero indicates that there is no
        limitation."
    ::= { cpcFilterConfig 11 }

cpcAccessGroupFilterTable OBJECT-TYPE
    SYNTAX            SEQUENCE OF CpcAccessGroupFilterEntry
    MAX-ACCESS        not-accessible
    STATUS            current
    DESCRIPTION
        "A table of Access-Group filter information to be
         used in packet capture sessions."
    ::= { cpcFilterConfig 12 }

cpcAccessGroupFilterEntry OBJECT-TYPE
    SYNTAX            CpcAccessGroupFilterEntry
    MAX-ACCESS        not-accessible
    STATUS            current
    DESCRIPTION
        "An entry contains management information about
         a packet capture filter based on Access-Group number
         or name. The entry is created or deleted using 
         cpcAccessGroupFilterStatus object. 

        This entry may not be modified if value of the corresponding
        instance of cpcSessionOperStatus is 'inProgress'."
    INDEX             {
                        cpcSessionId,
                        cpcAccessGroupFilterType,
                        IMPLIED cpcAccessGroupFilterName
                      }
    ::= { cpcAccessGroupFilterTable 1 }

CpcAccessGroupFilterEntry ::= SEQUENCE {
    cpcAccessGroupFilterType   INTEGER,
    cpcAccessGroupFilterName   SnmpAdminString,
    cpcAccessGroupFilterStatus RowStatus 
}

cpcAccessGroupFilterType OBJECT-TYPE
    SYNTAX             INTEGER {
                         hardware(1),
                         software(2)
                       }
    MAX-ACCESS         not-accessible
    STATUS             current
    DESCRIPTION
        "The way the ACL denoted by cpcAccessGroupFilterName
        is applied to the packets.
           hardware:  hardware based
           software:  software based."
    ::= { cpcAccessGroupFilterEntry 1 }

cpcAccessGroupFilterName OBJECT-TYPE
    SYNTAX             SnmpAdminString (SIZE(1..99))
    MAX-ACCESS         not-accessible
    STATUS             current
    DESCRIPTION
        "The ACL name or ACL number used in this package capture filter."
    ::= { cpcAccessGroupFilterEntry 2 }

cpcAccessGroupFilterStatus OBJECT-TYPE
    SYNTAX             RowStatus
    MAX-ACCESS         read-create
    STATUS             current
    DESCRIPTION
        "This object specifies the status of this conceptual row and
        is used to manage creation, and deletion of entries in this
        table. Whenever the current number of rows is equal to the
        value of cpcMaxAccessGroupFilterAllowed, setting RowStatus of
        a new row to 'createAndGo' or 'createAndWait' should fail
        with an 'inconsistentValue' error. That is, to create another
        row, an existing row must be deleted via either setting its
        RowStatus object to 'destroy' or alternatively via the CLI."

    ::= { cpcAccessGroupFilterEntry 3 }

-- cpcBufferConfig

cpcBufferConfigTable OBJECT-TYPE
    SYNTAX           SEQUENCE OF CpcBufferConfigEntry
    MAX-ACCESS       not-accessible
    STATUS           current
    DESCRIPTION
        "A table of buffer configuration and controls for
        packet capture sessions." 
    ::= { cpcBufferConfig 1 }

cpcBufferConfigEntry OBJECT-TYPE
    SYNTAX           CpcBufferConfigEntry
    MAX-ACCESS       not-accessible
    STATUS           current
    DESCRIPTION
        "An entry contains management information for a packet capture
         session's buffer. An entry is created corresponding to each entry
         in cpcSessionConfigTable.

        This entry may not be modified if value of the corresponding
        instance of cpcSessionOperStatus is 'inProgress'."
    INDEX           { cpcSessionId }
    ::= { cpcBufferConfigTable 1 }

CpcBufferConfigEntry ::= SEQUENCE {
        cpcBufferType       INTEGER,
        cpcBufferSize       Unsigned32,
        cpcBufferAction     INTEGER,
        cpcBufferOperStatus INTEGER 
}

cpcBufferType OBJECT-TYPE
    SYNTAX            INTEGER {
                         linear(1),
                         circular(2)
                      }
    MAX-ACCESS        read-write
    STATUS            current
    DESCRIPTION
        "Type of the buffer for a packet capture session.

         linear  : captured packets will be kept in the buffer one after the
                   other. If there is no available space in the buffer, packet
                   capture session will stop and value of the corresponding
                   instance of cpcSessionOperStatus is set to 'bufferFull'.

         circular: If there is no space to store a captured packet completely,
                   the oldest packet in the buffer will be overwritten."
    ::= { cpcBufferConfigEntry 1 }

cpcBufferSize OBJECT-TYPE
    SYNTAX              Unsigned32
    UNITS               "Kilo-bytes"
    MAX-ACCESS          read-write
    STATUS              current
    DESCRIPTION
        "Size of the buffer for a packet capture session. A value zero for 
         this object indicates that there is no limitation."
    ::= { cpcBufferConfigEntry 2 }

cpcBufferAction OBJECT-TYPE
    SYNTAX             INTEGER  {
                           noAction(1),
                           clear(2),
                           export(3)
                       }
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The action control for this packet capture session buffer.
         noAction:  no action (do nothing).
         clear:     clear this capture buffer.
         export:    exporting the buffer contents to the storage
                    specified by cpcSessionDestFileName of
                    cpcSessionConfigEntry with the same cpcSessionId value.

        When the value is set to 'noAction', no operation is performed.
        When read, the value 'noAction' is always returned."
    ::= { cpcBufferConfigEntry 3 }

cpcBufferOperStatus OBJECT-TYPE
    SYNTAX             INTEGER {
                           other(1),
                           exporting(2)
                       }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Operational status of a packet capture buffer.

        other      : none of the following.
        exporting  : buffer is being exported to the storage 
                     denoted by cpcSessionDestFileName from 
                     cpcSessionConfigEntry indexed by the
                     same cpcSessionId."
    ::= { cpcBufferConfigEntry 4 }
 
-- cpcScheduleConfig
cpcScheduleConfigTable OBJECT-TYPE
   SYNTAX                 SEQUENCE OF CpcScheduleConfigEntry
   MAX-ACCESS             not-accessible
   STATUS                 current
   DESCRIPTION
       "A table of schedule configuration and information for packet
       capture sessions."
   ::= { cpcScheduleConfig 1 }

cpcScheduleConfigEntry OBJECT-TYPE
   SYNTAX                 CpcScheduleConfigEntry
   MAX-ACCESS             not-accessible
   STATUS                 current
   DESCRIPTION
       "An entry containing schedule configuration and information
        for a packet capture session. An entry is created corresponding
        to each entry in cpcSessionConfigTable if scheduled operation
        is required for a packet capture session.

        This entry may not be modified if value of the corresponding
        instance of cpcSessionOperStatus is 'inProgress'."
   INDEX { cpcSessionId }
   ::= { cpcScheduleConfigTable 1 }

CpcScheduleConfigEntry ::= SEQUENCE {
        cpcScheduleStartTime     DateAndTime,
        cpcScheduleCapturePeriod Unsigned32
   }
  
cpcScheduleStartTime OBJECT-TYPE
    SYNTAX                 DateAndTime
    MAX-ACCESS             read-write
    STATUS                 current
    DESCRIPTION
        "The date and time this packet capture session will be
        started. A value of all zero with length of eight indicates
        either the scheduled time has expired or none is scheduled."
    ::= { cpcScheduleConfigEntry 1 }

cpcScheduleCapturePeriod OBJECT-TYPE
    SYNTAX                 Unsigned32
    UNITS                  "seconds"
    MAX-ACCESS             read-write
    STATUS                 current
    DESCRIPTION
        "The length of time, in seconds, that this packet capture
         session will be running. Value of zero indicates that there
         is no restriction on the capture period."
    ::= { cpcScheduleConfigEntry 2 }


-- cpcSessionStats
cpcSessionStatsTable OBJECT-TYPE
    SYNTAX                 SEQUENCE OF CpcSessionStatsEntry
    MAX-ACCESS             not-accessible
    STATUS                 current
    DESCRIPTION
        "A table of statistic information for packet capture
        sessions."
    ::= { cpcSessionStats 1 }

cpcSessionStatsEntry OBJECT-TYPE
   SYNTAX                  CpcSessionStatsEntry
   MAX-ACCESS              not-accessible
   STATUS                  current
   DESCRIPTION
       "An entry contains statistic information of a 
        packet capture session."
   INDEX { cpcSessionId }
   ::= { cpcSessionStatsTable 1 }
 
CpcSessionStatsEntry ::= SEQUENCE {
       cpcSessionPacketsReceived Unsigned32,
       cpcSessionPacketsCaptured Unsigned32,
       cpcSessionPacketsDropped  Unsigned32
   }

cpcSessionPacketsReceived OBJECT-TYPE
   SYNTAX                  Unsigned32
   MAX-ACCESS              read-only
   STATUS                  current
   DESCRIPTION
       "Indicates the number of packets received in this
        sessions."
   ::= { cpcSessionStatsEntry 1 }

cpcSessionPacketsCaptured OBJECT-TYPE
   SYNTAX                   Unsigned32
   MAX-ACCESS               read-only
   STATUS                   current
   DESCRIPTION
       "Indicates the number of packets captured in this 
        session."
   ::= { cpcSessionStatsEntry 2 }

cpcSessionPacketsDropped OBJECT-TYPE
   SYNTAX                   Unsigned32
   MAX-ACCESS               read-only
   STATUS                   current
   DESCRIPTION
       "Indicates the number of packets dropped in this
        session."
   ::= { cpcSessionStatsEntry 3 }

        
-- Conformance
cpcMIBCompliances  OBJECT IDENTIFIER
    ::= { cpcMIBConformance 1 }

cpcMIBGroups  OBJECT IDENTIFIER
    ::= { cpcMIBConformance 2 }


cpcCompliance MODULE-COMPLIANCE
    STATUS          deprecated -- superceded by cpcComplianceRev1
    DESCRIPTION
        "The compliance statement for devices that implement
        CISCO-PACKET-CAPTURE-MIB."
    MODULE          -- this module
    MANDATORY-GROUPS { cpcGenericConfigGroup }

    GROUP           cpcFilterConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which support filter configuration for packet
        capture feature."

    GROUP           cpcMacFilterConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which support MAC address filter configuration for
        packet capture feature."

    GROUP           cpcIpFilterConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which support IP address filter configuration for
        packet capture feature."

    GROUP           cpcDestFileNameConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
         which support destination file configuration for
         packet capture feature."

    OBJECT          cpcSessionConfigStatus
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required if the managed device
        has the session entry created by default."

    OBJECT          cpcCaptureSourceIfStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    DESCRIPTION     "Support of 'createAndWait' are not required."

    OBJECT          cpcMacFilterRowStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    DESCRIPTION     "Support of 'createAndWait' are not required."

    OBJECT          cpcIpFilterRowStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    DESCRIPTION     "Support of 'createAndWait' are not required."
    ::= { cpcMIBCompliances 1 }

cpcComplianceRev1 MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
        "The compliance statement for devices that implement
        CISCO-PACKET-CAPTURE-MIB."
    MODULE          -- this module
    MANDATORY-GROUPS { cpcGenericConfigGroup }

    GROUP           cpcFilterConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which support filter configuration for packet
        capture feature."

    GROUP           cpcMacFilterConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which support MAC address filter configuration for
        packet capture feature."

    GROUP           cpcIpFilterConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which support IP address filter configuration for
        packet capture feature."

    GROUP           cpcDestFileNameConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which support destination file configuration for
        packet capture feature."

    GROUP           cpcPacketLengthFilterConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which supports packet length filter configuration for
        packet capture feature."

    GROUP           cpcEthertypeFilterConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which supports Ethertype filter configuration for
        packet capture feature."

    GROUP           cpcVlanFilterConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which supports VLAN filter configuration for
        packet capture feature."

    GROUP           cpcAccessGroupFilterConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which supports Acccess Control List filter configuration
        for packet capture feature."

    GROUP           cpcBufferConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which supports buffer configuration for packet capture
        feature."

    GROUP           cpcScheduleConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which supports scheduler configuration for packet
        capture feature."

    GROUP           cpcSessionStatsGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which provides statistic information for packet capture
        feature."

    GROUP           cpcMaxMacFilterConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which provides information for maximum MAC filter allowed
        in a packet capture session."

    GROUP           cpcMaxIpFilterConfigGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which provides information for maximum IP filter allowed
        in a packet capture session."

    GROUP           cpcSessionPacketRateLimitGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which supports rate limit  configuration for packet
        capture feature."

    GROUP           cpcSessionDescrGroup
    DESCRIPTION
        "This group is mandatory in devices running software
        which supports description  configuration for packet
        capture feature."

    OBJECT          cpcSessionConfigStatus
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required if the managed device
        has the session entry created by default."

    OBJECT          cpcCaptureSourceIfStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    DESCRIPTION     "Support of 'createAndWait' are not required."

    OBJECT          cpcMacFilterRowStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    DESCRIPTION     "Support of 'createAndWait' are not required."

    OBJECT          cpcIpFilterRowStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    DESCRIPTION     "Support of 'createAndWait' are not required."

    ::= { cpcMIBCompliances 2 }

-- Units of Conformance
cpcGenericConfigGroup OBJECT-GROUP
    OBJECTS         {
                        cpcMaxSessionAllowed,
                        cpcSessionOperStatus,
                        cpcSessionMaxSources,
                        cpcSessionPacketLength,
                        cpcSessionPacketLimits,
                        cpcSessionAction,
                        cpcSessionConfigStatus,
                        cpcCaptureSourceIfDirection,
                        cpcCaptureSourceIfStatus
                    }
    STATUS          current
    DESCRIPTION
        "A collection of object(s) that provides the generic
        configuration for packet capture feature."
    ::= { cpcMIBGroups 1 }

cpcFilterConfigGroup OBJECT-GROUP
    OBJECTS         { cpcMaxFilterAllowed }
    STATUS          current
    DESCRIPTION
        "A collection of object(s) that provides general
        filter configuration for packet capture feature."
    ::= { cpcMIBGroups 2 }

cpcMacFilterConfigGroup OBJECT-GROUP
    OBJECTS         { cpcMacFilterRowStatus }
    STATUS          current
    DESCRIPTION
        "A collection of object(s) that provides the MAC
        address filter configuration for packet capture
        feature."
    ::= { cpcMIBGroups 3 }

cpcIpFilterConfigGroup OBJECT-GROUP
    OBJECTS         {
                        cpcIpFilterMask,
                        cpcIpFilterRowStatus
                    }
    STATUS          current
    DESCRIPTION
        "A collection of object(s) that provides the IP
        address filter configuration for packet capture
        feature."
    ::= { cpcMIBGroups 4 }

cpcDestFileNameConfigGroup OBJECT-GROUP
    OBJECTS         { cpcSessionDestFileName }
    STATUS          current
    DESCRIPTION
        "A collection of object(s) that provides configuration
        for destination file for packet capture feature."
    ::= { cpcMIBGroups 5 }

cpcPacketLengthFilterConfigGroup OBJECT-GROUP
    OBJECTS          {
                         cpcPacketLengthFilterMin,
                         cpcPacketLengthFilterMax
                     }
    STATUS           current
    DESCRIPTION
        "A collection of object(s) that provides packet
        length filter configuration for packet capture
        feature."
    ::= { cpcMIBGroups 6 }

cpcEthertypeFilterConfigGroup OBJECT-GROUP
    OBJECTS          {
                        cpcMaxEthertypeFilterAllowed,
                        cpcEthertypeFilterStatus
                     }
    STATUS           current
    DESCRIPTION
        "A collection of object(s) that provides Ethertype
        filter configuration for packet capture feature."
    ::= { cpcMIBGroups 7 }

cpcVlanFilterConfigGroup OBJECT-GROUP
    OBJECTS          {
                        cpcMaxVlanFilterAllowed,
                        cpcVlanFilterRowStatus
                     }
    STATUS           current
    DESCRIPTION
        "A collection of object(s) that provides VLAN
         filter configuration for packet capture feature."
    ::= { cpcMIBGroups 8 }

cpcAccessGroupFilterConfigGroup OBJECT-GROUP
    OBJECTS          {
                         cpcMaxAccessGroupFilterAllowed,
                         cpcAccessGroupFilterStatus
                     }
    STATUS           current
    DESCRIPTION
        "A collection of object(s) that provides Access
        Group filter configuration for packet capture
        feature."
    ::= { cpcMIBGroups 9 }

cpcBufferConfigGroup OBJECT-GROUP
    OBJECTS          {
                         cpcBufferType,
                         cpcBufferSize,
                         cpcBufferAction,
                         cpcBufferOperStatus
                     }
    STATUS           current
    DESCRIPTION
        "A collection of object(s) that provides buffer
         configuration for packet capture feature."
    ::= { cpcMIBGroups 10 }

cpcScheduleConfigGroup OBJECT-GROUP
    OBJECTS           {
                          cpcScheduleStartTime,
                          cpcScheduleCapturePeriod
                      }
    STATUS            current
    DESCRIPTION
        "A collection of object(s) that provides schedule
         configuration for packet capture feature."
    ::= { cpcMIBGroups 11 }

cpcSessionStatsGroup OBJECT-GROUP
    OBJECTS            {
                           cpcSessionPacketsReceived,
                           cpcSessionPacketsCaptured,
                           cpcSessionPacketsDropped
                       }
    STATUS             current
    DESCRIPTION
        "A collection of object(s) that provides statistic
         information for packet capture feature."
    ::= { cpcMIBGroups 12 }

cpcMaxMacFilterConfigGroup OBJECT-GROUP
    OBJECTS         { cpcMaxMacFilterAllowed }
    STATUS          current
    DESCRIPTION
        "A collection of object(s) that provides information on
        the maximum MAC address filter allowed for each packet
        capture session."
    ::= { cpcMIBGroups 13 }

cpcMaxIpFilterConfigGroup OBJECT-GROUP
    OBJECTS         { cpcMaxIpFilterAllowed }
    STATUS          current
    DESCRIPTION
        "A collection of object(s) that provides information on
        the maximum IP address filter allowed for each packet
        capture session."
    ::= { cpcMIBGroups 14 }

cpcSessionPacketRateLimitGroup OBJECT-GROUP
    OBJECTS          { cpcSessionPacketRateLimit }
    STATUS           current
    DESCRIPTION
        "A collection of object(s) that provides rate limit
        configuration for packet capture feature."
    ::= { cpcMIBGroups 15 }

cpcSessionDescrGroup OBJECT-GROUP
    OBJECTS          { cpcSessionDescr }
    STATUS           current
    DESCRIPTION
        "A collection of object(s) that provides session 
        description configuration for packet capture feature."
    ::= { cpcMIBGroups 16 }

END
