-- 
-- LEGAL NOTICE:
-- This source code:
-- 
-- a) is a proprietary trade secret of Endace Technology Limited or any of
-- its related or affiliated companies, a New Zealand company, and its
-- suppliers and licensors ('Endace'). You must keep it strictly
-- confidential, and you must not copy, modify, disclose or distribute any
-- part of it to anyone else, without the prior written
-- authorisation of Endace Limited;
-- 
-- b) may also be part of inventions that are protected by patents and
-- patent applications; and
-- 
-- c) is copyright (C) to Endace, 2009 to 2021. All rights reserved.
--

ENDACE-STREAM-MIB DEFINITIONS ::= BEGIN

IMPORTS
    endace
        FROM ENDACE-MIB
    ModuleIndex
        FROM ENDACE-MODULE-MIB
    MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP
        FROM SNMPv2-CONF
    Counter32, Counter64, Gauge32, Integer32, MODULE-IDENTITY,
    NOTIFICATION-TYPE, OBJECT-TYPE, Unsigned32
        FROM SNMPv2-SMI
    DisplayString, TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    ;

-- 1.3.6.1.4.1.18418.10

streamMIB MODULE-IDENTITY
    LAST-UPDATED  "202107210349Z" -- July 21, 2021
    ORGANIZATION
        "Endace"
    CONTACT-INFO
        "Postal: Endace Technology
         6th floor
         KPMG Centre
         85 Alexandra Street
         Hamilton 3204
         New Zealand

         Email: support@endace.com"
    DESCRIPTION
        "Support for managing DAG Stream interfaces."
    REVISION      "201908220147Z" -- August 22, 2019
    DESCRIPTION
        "Deprecated 'streamInMemBytes', can not hold 8GB of stream
         buffer."
    REVISION      "201711012351Z" -- November 01, 2017
    DESCRIPTION
        "Declared several OIDs as obsolete: streamInAdminStatus,
         streamInSnapLen, streamInPackets, streamInOctets,
         streamInHCPackets, streamInHCOctets, streamInHCDropPackets."
    REVISION      "201310081934Z" -- October 08, 2013
    DESCRIPTION
        "Corrected OID for streamInDropThreshold."
    REVISION      "200905212346Z" -- May 21, 2009
    DESCRIPTION
        "Initial version."
    ::= { endace 10 }

StreamIndex ::= TEXTUAL-CONVENTION
    DISPLAY-HINT  "d"
    STATUS        current
    DESCRIPTION
        "A unique value, greater than or equal to zero for each stream
         in the manages system. It is recommended that values are
         assigned contiguously starting from 0."
    SYNTAX        Integer32

-- Notification Types
-- 
-- the following highly unusual OID is as it is for compatibility with RFC
-- 1315, the SNMP V1 specification.
-- 
-- 1.3.6.1.4.1.18418.10.0

streamEvents OBJECT IDENTIFIER ::= { streamMIB 0 }

-- 1.3.6.1.4.1.18418.10.0.1

streamInDropFault NOTIFICATION-TYPE
    OBJECTS
        { streamInNum, streamInName }
    STATUS        current
    DESCRIPTION
        "A streamInDropFault notification signifies that the SNMP
         entity, acting in an agent role, has detected  that the
         streamInDropPackets or streamInHCDropPackets has exceeded the
         streamInDropThreshold value for an interval of  one second.
         Will contain information pertaining to identity of the dropping
         stream."
    ::= { streamEvents 1 }

-- 1.3.6.1.4.1.18418.10.0.2

streamInDropNormal NOTIFICATION-TYPE
    OBJECTS
        { streamInNum, streamInName }
    STATUS        current
    DESCRIPTION
        "A streamInDropNormal notification signifies that the SNMP
         entity, acting in an agent role, has detected that the
         streamInDropPackets or streamInHCDropPackets value is less than
         the streamDropThreshold value for an interval of one second
         after it was in streamInDropFault condition. Will contain
         information pertaining to the identity of the dropping
         stream."
    ::= { streamEvents 2 }

-- Scalars and Tables
-- 
-- 1.3.6.1.4.1.18418.10.1

streamObjects OBJECT IDENTIFIER ::= { streamMIB 1 }

streamDropTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF StreamDropEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "DAG module-level stream configuration details."
    ::= { streamObjects 1 }

streamDropEntry OBJECT-TYPE
    SYNTAX        StreamDropEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A single entry with stream attributes at the level of the DAG
         module."
    INDEX
        { streamDropModIndex }
    ::= { streamDropTable 1 }

StreamDropEntry ::= SEQUENCE
{
    streamDropModIndex    Unsigned32,
    streamDropModule      ModuleIndex,
    streamDropEnabled     INTEGER,
    streamInDropThreshold Gauge32
}


streamDropModIndex OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An integer value identifying a unique DAG Module on a system.
         It is unique for all modules on the  system."
    ::= { streamDropEntry 1 }

streamDropModule OBJECT-TYPE
    SYNTAX        ModuleIndex (0..2147483647)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "An integer value identifying a unique DAG Module on a system.
         It is unique for all modules on the  system. This value is the
         same as the moduleIndex number assigned to the module."
    ::= { streamDropEntry 2 }

streamDropEnabled OBJECT-TYPE
    SYNTAX        INTEGER {
        enabled(1),
        disabled(2)
    }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Indicates whether dropping of packets occurs at the stream or
         port level. If enabled (1) then dropping occurs at the
         individual stream that has filled up, otherwise (2) dropping
         will be occurring on a per port basis."
    ::= { streamDropEntry 3 }

streamInDropThreshold OBJECT-TYPE
    SYNTAX        Gauge32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The number of dropped packets per second before which a
         streamInDropFault will be raised. By default, this object will
         have a value of 1000. If set to 0 it will disable the
         generation of streamInDropFault notifications."
    ::= { streamDropEntry 4 }

streamInTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF StreamInEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "This table contains information about all In Stream
         attributes."
    ::= { streamObjects 2 }

streamInEntry OBJECT-TYPE
    SYNTAX        StreamInEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry in streamInTable. This entry contains  attribute
         details for a particular In Stream."
    INDEX
        { streamInIndex }
    ::= { streamInTable 1 }

StreamInEntry ::= SEQUENCE
{
    streamInIndex         StreamIndex,
    streamInNum           StreamIndex,
    streamInName          DisplayString,
    streamInModule        ModuleIndex,
    streamInLabel         DisplayString,
    streamInAdminStatus   INTEGER,
    streamInOperStatus    INTEGER,
    streamInMem           Unsigned32,
    streamInMemBytes      Unsigned32,
    streamInSnapLen       Unsigned32,
    streamInPackets       Counter32,
    streamInOctets        Counter32,
    streamInHCPackets     Counter64,
    streamInHCOctets      Counter64,
    streamInDropPackets   Counter32,
    streamInHCDropPackets Counter64
}


streamInIndex OBJECT-TYPE
    SYNTAX        StreamIndex (0..2147483647)
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An integer value identifying a unique stream on a system. It
         is unique for all streams in the system."
    ::= { streamInEntry 1 }

streamInNum OBJECT-TYPE
    SYNTAX        StreamIndex (0..2147483647)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "An integer value identifying a unique stream on a system. It
         is unique for all streams in the system. This value is the same
         as that of streamInIndex."
    ::= { streamInEntry 2 }

streamInName OBJECT-TYPE
    SYNTAX        DisplayString (SIZE(1..32))
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "A unique string identifying a stream on a system. It is unique
         for all streams on the system."
    ::= { streamInEntry 3 }

streamInModule OBJECT-TYPE
    SYNTAX        ModuleIndex
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "An integer value identifying the unique module on the system
         to which this stream belongs. This value is the same as the
         moduleIndex number assigned to the module."
    ::= { streamInEntry 4 }

streamInLabel OBJECT-TYPE
    SYNTAX        DisplayString (SIZE(1..32))
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "A string value that identifies the stream number  relative to
         a specific module. It is only unique within a specific module
         and cannot be used to index the stream table."
    ::= { streamInEntry 5 }

streamInAdminStatus OBJECT-TYPE
    SYNTAX        INTEGER {
        up(1),
        down(2),
        unknown(3)
    }
    MAX-ACCESS    read-only
    STATUS        obsolete
    DESCRIPTION
        "The desired operational stat of the stream. By default, all
         streams are initialized to an admin status of up (1), meaning
         they will receive packets. Subsequently the value of
         streamInAdminStatus can be changed to down (2). If the
         operational state is unknown then it will have a value of
         unknown(3). There may be a momentary disconnect between the
         desired state of the stream and its current operational state,
         as the stream may take some time to move between states."
    ::= { streamInEntry 6 }

streamInOperStatus OBJECT-TYPE
    SYNTAX        INTEGER {
        up(1),
        down(2),
        unknown(3)
    }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The current operational status of the stream. If the stream
         can receive packets then it will be set to up (1), otherwise it
         will be set to down (2). By default, a stream will have a value
         of up (1). If the operational state is unknown, it will have a
         value of unknown (3)."
    ::= { streamInEntry 7 }

streamInMem OBJECT-TYPE
    SYNTAX        Unsigned32 (0..4294967295)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The memory allocated to the receive stream in mebibytes."
    ::= { streamInEntry 8 }

streamInMemBytes OBJECT-TYPE
    SYNTAX        Unsigned32 (0..4294967295)
    MAX-ACCESS    read-only
    STATUS        deprecated
    DESCRIPTION
        "The memory allocated to the receive stream in bytes.

         This OID is deprecated. It is accurate for EndaceProbes with
         stream buffer up to 4GB. Use OID streamInMem instead, which
         gives the stream buffer size in MiBytes."
    ::= { streamInEntry 9 }

streamInSnapLen OBJECT-TYPE
    SYNTAX        Unsigned32 (0..4294967295)
    MAX-ACCESS    read-only
    STATUS        obsolete
    DESCRIPTION
        "Packets that are greater in length than the snaplen are
         snapped to the size of streamInSnapLen. Otherwise the behavior
         of snap length is determined by the value in moduleSnapLen."
    ::= { streamInEntry 10 }

streamInPackets OBJECT-TYPE
    SYNTAX        Counter32
    MAX-ACCESS    read-only
    STATUS        obsolete
    DESCRIPTION
        "Count of the In packets received on the stream. This value
         will be reinitialized by the management system."
    ::= { streamInEntry 11 }

streamInOctets OBJECT-TYPE
    SYNTAX        Counter32
    MAX-ACCESS    read-only
    STATUS        obsolete
    DESCRIPTION
        "Count of the In octets that have been received on the stream
         including framing characters. This value will be reinitialized
         by the management system."
    ::= { streamInEntry 12 }

streamInHCPackets OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        obsolete
    DESCRIPTION
        "The total number of packets received on the stream. This
         object is the 64bit version of streamInPackets. This value will
         be reinitialized by the management system."
    ::= { streamInEntry 13 }

streamInHCOctets OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        obsolete
    DESCRIPTION
        "The total number of octets received on the stream including
         framing characters. This object is a 64bit version of
         streamInOctets. This value will be reinitialized by the
         management system."
    ::= { streamInEntry 14 }

streamInDropPackets OBJECT-TYPE
    SYNTAX        Counter32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Count of the In packets that have been dropped by the stream.
         This value will be reinitialized by the management system, and
         at other times as indicated by the value of
         ifCounterDiscontinuityTime."
    ::= { streamInEntry 15 }

streamInHCDropPackets OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Count of the In packets that have been dropped by the stream.
         This object is the 64bit version of streamInDropPackets. This
         value will be reinitialized by the management system, and at
         other times as indicated by the value of
         ifCounterDiscontinuityTime."
    ::= { streamInEntry 16 }

streamOutTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF StreamOutEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "This table contains information about all Out Stream
         attributes."
    ::= { streamObjects 3 }

streamOutEntry OBJECT-TYPE
    SYNTAX        StreamOutEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry in streamOutTable. This entry contains  attribute
         details for a particular Out Stream."
    INDEX
        { streamOutIndex }
    ::= { streamOutTable 1 }

StreamOutEntry ::= SEQUENCE
{
    streamOutIndex       StreamIndex,
    streamOutNum         StreamIndex,
    streamOutName        DisplayString,
    streamOutModule      ModuleIndex,
    streamOutLabel       DisplayString,
    streamOutAdminStatus INTEGER,
    streamOutOperStatus  INTEGER,
    streamOutMem         Unsigned32,
    streamOutMemBytes    Unsigned32,
    streamOutSnapLen     Unsigned32,
    streamOutPackets     Counter32,
    streamOutOctets      Counter32,
    streamOutHCPackets   Counter64,
    streamOutHCOctets    Counter64
}


streamOutIndex OBJECT-TYPE
    SYNTAX        StreamIndex (0..2147483647)
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An integer value identifying a unique stream on a system. It
         is unique for all streams in the system."
    ::= { streamOutEntry 1 }

streamOutNum OBJECT-TYPE
    SYNTAX        StreamIndex (0..2147483647)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "An integer value identifying a unique stream on a system. It
         is unique for all streams in the system. This value is the same
         as streamOutIndex."
    ::= { streamOutEntry 2 }

streamOutName OBJECT-TYPE
    SYNTAX        DisplayString (SIZE(1..32))
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "A unique string identifying a stream on a system. It is unique
         for all streams on the system."
    ::= { streamOutEntry 3 }

streamOutModule OBJECT-TYPE
    SYNTAX        ModuleIndex
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "An integer value identifying the unique module on the system
         to which this stream belongs. This value is the same as the
         moduleIndex number assigned to the module."
    ::= { streamOutEntry 4 }

streamOutLabel OBJECT-TYPE
    SYNTAX        DisplayString (SIZE(1..32))
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "A string value that identifies the stream number  relative to
         a specific module. It is only unique within a specific module
         and cannot be used to index the stream table."
    ::= { streamOutEntry 5 }

streamOutAdminStatus OBJECT-TYPE
    SYNTAX        INTEGER {
        up(1),
        down(2),
        unknown(3)
    }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The desired operational stat of the stream. By default, all
         streams are initialized to an admin status of up (1), meaning
         they will receive packets. Subsequently the value of
         streamInAdminStatus can be changed to down (2). If the
         operational state is unknown then it will have a value of
         unknown(3). There may be a momentary disconnect between the
         desired state of the stream and its current operational state,
         as the stream may take some time to move between states."
    ::= { streamOutEntry 6 }

streamOutOperStatus OBJECT-TYPE
    SYNTAX        INTEGER {
        up(1),
        down(2),
        unknown(3)
    }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The current operational status of the stream. If the stream
         can receive packets then it will be set to up (1), otherwise it
         will be set to down (2). By default, a stream will have a value
         of up (1). If the operational state is unknown, it will have a
         value of unknown (3)."
    ::= { streamOutEntry 7 }

streamOutMem OBJECT-TYPE
    SYNTAX        Unsigned32 (0..4294967295)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The memory allocated to the receive stream in mebibytes."
    ::= { streamOutEntry 8 }

streamOutMemBytes OBJECT-TYPE
    SYNTAX        Unsigned32 (0..4294967295)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The memory allocated to the receive stream in bytes."
    ::= { streamOutEntry 9 }

streamOutSnapLen OBJECT-TYPE
    SYNTAX        Unsigned32 (0..4294967295)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Packets that are greater in length than the snaplen are
         snapped to the size of streamOutSnapLen. Otherwise the behavior
         of snap length is determined by the value in moduleSnapLen."
    ::= { streamOutEntry 10 }

streamOutPackets OBJECT-TYPE
    SYNTAX        Counter32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Count of the In packets transmitted on the stream. This value
         will be reinitialized by the management system."
    ::= { streamOutEntry 11 }

streamOutOctets OBJECT-TYPE
    SYNTAX        Counter32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Count of the In octets that have been transmitted on the
         stream including framing characters. This value will be
         reinitialized by the management system."
    ::= { streamOutEntry 12 }

streamOutHCPackets OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The total number of packets transmitted on the stream. This
         object is the 64bit version of streamOutPackets. This value
         will be reinitialized by the management system."
    ::= { streamOutEntry 13 }

streamOutHCOctets OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The total number of octets transmitted by the stream including
         framing characters. This object is a 64bit version of
         streamOutOctets. This value will be reinitialized by the
         management system."
    ::= { streamOutEntry 14 }

-- Conformance
-- 
-- 1.3.6.1.4.1.18418.10.2

streamConf OBJECT IDENTIFIER ::= { streamMIB 2 }

-- Groups
-- 
-- 1.3.6.1.4.1.18418.10.2.1

streamGroups OBJECT IDENTIFIER ::= { streamConf 1 }

-- 1.3.6.1.4.1.18418.10.2.1.1

streamModuleAttributes OBJECT-GROUP
    OBJECTS
        { streamDropModule, streamDropEnabled, streamInDropThreshold }
    STATUS        current
    DESCRIPTION
        "Group containing stream configuration details for DAG
         module-level attributes."
    ::= { streamGroups 1 }

-- 1.3.6.1.4.1.18418.10.2.1.2

streamInDetail OBJECT-GROUP
    OBJECTS
        { streamInNum, streamInName, streamInModule, streamInLabel }
    STATUS        current
    DESCRIPTION
        "In stream identification attributes. This group contains
         everything needed to identify a unique string and its' DAG
         Module."
    ::= { streamGroups 2 }

-- 1.3.6.1.4.1.18418.10.2.1.3

streamInAttributes OBJECT-GROUP
    OBJECTS
        { streamInAdminStatus, streamInOperStatus, streamInMem,
        streamInMemBytes, streamInSnapLen }
    STATUS        current
    DESCRIPTION
        "This group contains all In stream attributes."
    ::= { streamGroups 3 }

-- 1.3.6.1.4.1.18418.10.2.1.4

streamInCounters OBJECT-GROUP
    OBJECTS
        { streamInPackets, streamInOctets, streamInHCPackets,
        streamInHCOctets, streamInDropPackets, streamInHCDropPackets }
    STATUS        current
    DESCRIPTION
        "This group contains all In stream packet counters, both 32bit
         and 64bit. Note that the 64bit counters are only supported on
         high-speed cards."
    ::= { streamGroups 4 }

-- 1.3.6.1.4.1.18418.10.2.1.5

streamOutDetails OBJECT-GROUP
    OBJECTS
        { streamOutNum, streamOutLabel, streamOutModule, streamOutName
        }
    STATUS        current
    DESCRIPTION
        "Out stream identification attributes. This group contains
         everything needed to identify a unique string and its' DAG
         Module."
    ::= { streamGroups 5 }

-- 1.3.6.1.4.1.18418.10.2.1.6

streamOutAttributes OBJECT-GROUP
    OBJECTS
        { streamOutAdminStatus, streamOutOperStatus, streamOutMem,
        streamOutMemBytes, streamOutSnapLen }
    STATUS        current
    DESCRIPTION
        "This group contains all Out stream attributes."
    ::= { streamGroups 6 }

-- 1.3.6.1.4.1.18418.10.2.1.7

streamOutCounters OBJECT-GROUP
    OBJECTS
        { streamOutPackets, streamOutOctets, streamOutHCPackets,
        streamOutHCOctets }
    STATUS        current
    DESCRIPTION
        "This group contains all Out stream packet counters, both 32bit
         and 64bit. Note that the 64bit counters are only supported on
         high-speed cards."
    ::= { streamGroups 7 }

-- 1.3.6.1.4.1.18418.10.2.1.8

streamInEvents NOTIFICATION-GROUP
    NOTIFICATIONS
        { streamInDropFault, streamInDropNormal }
    STATUS        current
    DESCRIPTION
        "This group contains notifications about In streams."
    ::= { streamGroups 8 }

-- Compliance
-- 
-- 1.3.6.1.4.1.18418.10.2.2

streamCompls OBJECT IDENTIFIER ::= { streamConf 2 }

-- Empty MODULE field indicates compliance to the containing MIB module
-- 
-- 1.3.6.1.4.1.18418.10.2.2.1

streamCompliance MODULE-COMPLIANCE
    STATUS         current
    DESCRIPTION
        "Compliance statement for ENDACE-STREAM entities which
         implement the ENDACE-STREAM MIB."

    MODULE         ENDACE-STREAM-MIB
        MANDATORY-GROUPS
            { streamModuleAttributes, streamInDetail, streamOutDetails,
            streamInEvents }
    ::= { streamCompls 1 }

END
