-- This MIB is designed to manage system properties for Endace appliances.
-- 
-- 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, 2007 to 2022. All rights reserved.

ENDACE-SYSTEM-MIB DEFINITIONS ::= BEGIN

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

shogunSystemMIB MODULE-IDENTITY
    LAST-UPDATED  "202205030008Z" -- May 03, 2022
    ORGANIZATION
        "Endace Technology"
    CONTACT-INFO
        "postal: Endace Technology
         6th floor
         KPMG Centre
         85 Alexandra Street
         Hamilton 3204
         New Zealand

         email:   support@endace.com"
    DESCRIPTION
        "General system objects that are common to all Endace
         products,

         covering CPU usage, process manager, mounted volumes and CMC.

         The availability of some objects is limited by configuration or
         existent hardware, such as CMC configuration or RAID array."
    REVISION      "202205030007Z" -- May 03, 2022
    DESCRIPTION
        "Added FIPS OIDs."
    REVISION      "202102182025Z" -- February 18, 2021
    DESCRIPTION
        "Added systemModel and systemSerial."
    REVISION      "201704280351Z" -- April 28, 2017
    DESCRIPTION
        "Added systemServiceLevel OIDs."
    REVISION      "201505290110Z" -- May 29, 2015
    DESCRIPTION
        "New notifications for diskIONormal, memUtilizationNormal and
         netUtilizationNormal."
    REVISION      "201406200210Z" -- June 20, 2014
    DESCRIPTION
        "Support for RAID encryption information."
    REVISION      "201311242103Z" -- November 24, 2013
    DESCRIPTION
        "Added notifications for cmcConnectionUp/Down"
    REVISION      "201307240640Z" -- July 24, 2013
    DESCRIPTION
        "Additional notifications for IPFIX/Netflow."
    REVISION      "201306300640Z" -- June 30, 2013
    DESCRIPTION
        "Additional cpuIndex for cpuUtilNormal trap."
    REVISION      "201301141928Z" -- January 14, 2013
    DESCRIPTION
        "New testTrap."
    REVISION      "201210050336Z" -- October 05, 2012
    DESCRIPTION
        "New table for data partition files, some octet strings are
         DisplayStrings now"
    REVISION      "201208282143Z" -- August 28, 2012
    DESCRIPTION
        "New MO raidDrvDefect."
    REVISION      "201207152213Z" -- July 15, 2012
    DESCRIPTION
        "New objects and notification for raid health status."
    REVISION      "201110240000Z" -- October 24, 2011
    DESCRIPTION
        "New objects and notifications for SSD and BBU"
    REVISION      "201109120000Z" -- September 12, 2011
    DESCRIPTION
        "New MO and trap for system disk RAID controller."
    REVISION      "201103010000Z" -- March 01, 2011
    DESCRIPTION
        "New enumeration type for 'raidStatusCode'"
    REVISION      "200709220000Z" -- September 22, 2007
    DESCRIPTION
        "Changed the type of applConnected and applOk to  TruthValue."
    REVISION      "200705230000Z" -- May 23, 2007
    DESCRIPTION
        "Added compliance components and conformance statements.

         Added CMC trap to indicate normal CMC behaviour where  there
         was an error condition."
    REVISION      "200704240000Z" -- April 24, 2007
    DESCRIPTION
        "Added a table for listing file system partitions. This table
         is required so that we can return a reference to the parition
         with the diskSpaceLow trap."
    REVISION      "200704170000Z" -- April 17, 2007
    DESCRIPTION
        "Added extra traps for system events such as CPU usage  and
         paging activity to update the user that an error condition that
         did exist, no longer exists.

         The diskSpaceLow trap now includes information to determine
         which volume the trap is referring to."
    REVISION      "200702190000Z" -- February 19, 2007
    DESCRIPTION
        "System Initial revision, Shogun 1.0"
    ::= { endace 1 }

-- Unsigned 64 bit integer
-- 
-- Unsigned64 ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION        "An
-- unsigned 64 bit integer. We use SYNTAX Counter64 for the enconding
-- rules."
-- SYNTAX Counter64
-- 
-- TEXTUAL-CONVENTIONs for this MIB module

RaidStatusCode ::= TEXTUAL-CONVENTION
    STATUS        current
    DESCRIPTION
        "Status code returned by the RAID controller"
    SYNTAX        INTEGER {
        ok(0),
        initializing(1),
        migrating(2),
        rebuilding(3),
        recovery(4),
        degradedInit(5),
        degradedRbld(6),
        partiallyDegraded(7),
        degraded(8),
        inoperable(9),
        unknown(10)
    }

variables OBJECT IDENTIFIER ::= { shogunSystemMIB 1 }

-- VARIABLES

systemAppliance OBJECT IDENTIFIER ::= { variables 1 }

systemVersion OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "System software version string"
    ::= { systemAppliance 1 }

cpu OBJECT IDENTIFIER ::= { systemAppliance 2 }

cpuLoad1 OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "One-minute CPU load in hundredths"
    ::= { cpu 1 }

cpuLoad5 OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Five-minute CPU load in hundredths"
    ::= { cpu 2 }

cpuLoad15 OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Fifteen-minute CPU load in hundredths"
    ::= { cpu 3 }

cpuUtil1 OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Percentage CPU utilization, aggregated across all CPUs,
         rolling average over the past minute"
    ::= { cpu 4 }

cpuTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CpuEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "List of CPUs"
    ::= { cpu 5 }

cpuEntry OBJECT-TYPE
    SYNTAX        CpuEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Entry for one CPU"
    INDEX
        { cpuIndex }
    ::= { cpuTable 1 }

CpuEntry ::= SEQUENCE
{
    cpuIndex    Unsigned32,
    idleTime    TimeTicks,
    systemTime  TimeTicks,
    userTime    TimeTicks,
    utilPct1Min Unsigned32
}


cpuIndex OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Index of CPU, starting from 0"
    ::= { cpuEntry 1 }

idleTime OBJECT-TYPE
    SYNTAX        TimeTicks
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Time in milliseconds CPU has spent idle"
    ::= { cpuEntry 2 }

systemTime OBJECT-TYPE
    SYNTAX        TimeTicks
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Time in milliseconds CPU has spent busy with system tasks"
    ::= { cpuEntry 3 }

userTime OBJECT-TYPE
    SYNTAX        TimeTicks
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Time in milliseconds CPU has spent busy with user tasks"
    ::= { cpuEntry 4 }

utilPct1Min OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Percentage CPU utilization over the past minute"
    ::= { cpuEntry 5 }

procmgr OBJECT IDENTIFIER ::= { systemAppliance 3 }

procTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF ProcEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "List of processes managed or monitored by Process Manager"
    ::= { procmgr 1 }

procEntry OBJECT-TYPE
    SYNTAX        ProcEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Entry for one process"
    INDEX
        { procIndex }
    ::= { procTable 1 }

ProcEntry ::= SEQUENCE
{
    procIndex       Unsigned32,
    procName        DisplayString,
    procStatus      DisplayString,
    procNumFailures Unsigned32
}


procIndex OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Synthetic numeric unique ID of process"
    ::= { procEntry 1 }

procName OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Unique name of process"
    ::= { procEntry 2 }

procStatus OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Current state of process"
    ::= { procEntry 3 }

procNumFailures OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Number of times process has crashed or exited unexpectedly"
    ::= { procEntry 4 }

mountmgr OBJECT IDENTIFIER ::= { systemAppliance 5 }

mountTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF MountEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "List of all mounted partitions"
    ::= { mountmgr 1 }

mountEntry OBJECT-TYPE
    SYNTAX        MountEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Entry for one mounted partition"
    INDEX
        { mountIndex }
    ::= { mountTable 1 }

MountEntry ::= SEQUENCE
{
    mountIndex             Unsigned32,
    mountBytesAvail        Counter64,
    mountBytesFree         Counter64,
    mountBytesPercentFree  Unsigned32,
    mountBytesTotal        Counter64,
    mountBytesUsed         Counter64,
    mountPoint             DisplayString,
    mountDeviceName        DisplayString,
    mountInodesFree        Counter64,
    mountInodesPercentFree Unsigned32,
    mountInodesTotal       Counter64,
    mountInodesUsed        Counter64
}


mountIndex OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "A unique value, greater then or equal to one, for  each mount
         in the managed system. It is recommended  that values are
         assigned contiguously starting from 1."
    ::= { mountEntry 1 }

mountBytesAvail OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The number of available bytes on the mount."
    ::= { mountEntry 2 }

mountBytesFree OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The number of bytes free on the mount."
    ::= { mountEntry 3 }

mountBytesPercentFree OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The number of bytes free as a percent of the total  amount for
         the mount."
    ::= { mountEntry 4 }

mountBytesTotal OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The total number of bytes on the mount."
    ::= { mountEntry 5 }

mountBytesUsed OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The number of bytes used on the mount."
    ::= { mountEntry 6 }

mountPoint OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The mount point for the device."
    ::= { mountEntry 7 }

mountDeviceName OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The device name of the mount."
    ::= { mountEntry 8 }

mountInodesFree OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The number of inodes free on the mount."
    ::= { mountEntry 9 }

mountInodesPercentFree OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The number of inodes free on the mount as a percentage of the
         total."
    ::= { mountEntry 10 }

mountInodesTotal OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The total number of inodes on the mount."
    ::= { mountEntry 11 }

mountInodesUsed OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The total number of inodes used on the mount."
    ::= { mountEntry 12 }

sessions OBJECT IDENTIFIER ::= { systemAppliance 6 }

sessionTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF SessionEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "List of active user-sessions"
    ::= { sessions 1 }

sessionEntry OBJECT-TYPE
    SYNTAX        SessionEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Entry for one active session"
    INDEX
        { sessionId }
    ::= { sessionTable 1 }

SessionEntry ::= SEQUENCE
{
    sessionId      Unsigned32,
    username       DisplayString,
    usernameLocal  DisplayString,
    remoteAddr     IpAddress,
    remoteHostname DisplayString,
    clientDescr    DisplayString
}


sessionId OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Session ID"
    ::= { sessionEntry 1 }

username OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    accessible-for-notify
    STATUS        current
    DESCRIPTION
        "Username"
    ::= { sessionEntry 2 }

usernameLocal OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    accessible-for-notify
    STATUS        current
    DESCRIPTION
        "Local username"
    ::= { sessionEntry 3 }

remoteAddr OBJECT-TYPE
    SYNTAX        IpAddress
    MAX-ACCESS    accessible-for-notify
    STATUS        current
    DESCRIPTION
        "Remote IP address"
    ::= { sessionEntry 4 }

remoteHostname OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    accessible-for-notify
    STATUS        current
    DESCRIPTION
        "Remote hostname"
    ::= { sessionEntry 5 }

clientDescr OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    accessible-for-notify
    STATUS        current
    DESCRIPTION
        "Client description"
    ::= { sessionEntry 6 }

raid OBJECT IDENTIFIER ::= { systemAppliance 7 }

raidDrvTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF RaidDrvEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Table for RAID drives."
    ::= { raid 1 }

raidDrvEntry OBJECT-TYPE
    SYNTAX        RaidDrvEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Row of RAID drive table."
    INDEX
        { raidDrvIndex }
    ::= { raidDrvTable 1 }

RaidDrvEntry ::= SEQUENCE
{
    raidDrvIndex        INTEGER,
    raidDrvId           INTEGER,
    raidDrvType         DisplayString,
    raidDrvSerialNo     DisplayString,
    raidDrvWearout      Integer32,
    raidDrvLbaWritten   Counter64,
    raidDrvRealloc      Integer32,
    raidDrvPending      Integer32,
    raidDrvUncorrErrors Integer32,
    raidDrvDefect       Integer32,
    raidDrvFdeCapable   DisplayString,
    raidDrvSecurity     DisplayString,
    raidDrvLocking      DisplayString
}


raidDrvIndex OBJECT-TYPE
    SYNTAX        INTEGER (1..64)
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Index for RAID drive table"
    ::= { raidDrvEntry 1 }

raidDrvId OBJECT-TYPE
    SYNTAX        INTEGER (0..63)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Numerical drive ID as used in the device name."
    ::= { raidDrvEntry 2 }

raidDrvType OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Type of drive (SATA, SAS, SSD, ect.)."
    ::= { raidDrvEntry 3 }

raidDrvSerialNo OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Serial number of drive."
    ::= { raidDrvEntry 4 }

raidDrvWearout OBJECT-TYPE
    SYNTAX        Integer32 (-1..100)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Wear out level of SSD device."
    ::= { raidDrvEntry 5 }

raidDrvLbaWritten OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Number of logical blocks written to device."
    ::= { raidDrvEntry 6 }

raidDrvRealloc OBJECT-TYPE
    SYNTAX        Integer32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Reallocated sectors."
    ::= { raidDrvEntry 7 }

raidDrvPending OBJECT-TYPE
    SYNTAX        Integer32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Count of currently pending sectors."
    ::= { raidDrvEntry 8 }

raidDrvUncorrErrors OBJECT-TYPE
    SYNTAX        Integer32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Count of uncorrectable errors."
    ::= { raidDrvEntry 9 }

raidDrvDefect OBJECT-TYPE
    SYNTAX        Integer32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Number of defect blocks."
    ::= { raidDrvEntry 10 }

raidDrvFdeCapable OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Shows, whether the drive supports Full Disc Encryption:
         Capable: drive support Full Disk Encryption. Not Capable: drive
         doesn't support Full Disk Encryption."
    ::= { raidDrvEntry 11 }

raidDrvSecurity OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Shows security status of RAID drive:
         Secured: drive is encrypted. Unsecured: drive is not
         encrypted."
    ::= { raidDrvEntry 12 }

raidDrvLocking OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Shows locking status of RAID drive:
         locked : keys don't match unlocked : keys match, disk is
         accessible."
    ::= { raidDrvEntry 13 }

raidBbuTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF RaidBbuEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Table for Battery Backup Units."
    ::= { raid 2 }

raidBbuEntry OBJECT-TYPE
    SYNTAX        RaidBbuEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Row of BBU table."
    INDEX
        { raidBbuIndex }
    ::= { raidBbuTable 1 }

RaidBbuEntry ::= SEQUENCE
{
    raidBbuIndex      INTEGER,
    raidBbuId         INTEGER,
    raidBbuStatus     INTEGER,
    raidBbuStatusInfo DisplayString
}


raidBbuIndex OBJECT-TYPE
    SYNTAX        INTEGER (1..4)
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Index for BBU table."
    ::= { raidBbuEntry 1 }

raidBbuId OBJECT-TYPE
    SYNTAX        INTEGER (0..3)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Numerical BBU ID."
    ::= { raidBbuEntry 2 }

raidBbuStatus OBJECT-TYPE
    SYNTAX        INTEGER {
        none(0),
        ok(1),
        warning(2),
        error(3)
    }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Enumerated status of Battery Backup Unit."
    ::= { raidBbuEntry 3 }

raidBbuStatusInfo OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "String with status message."
    ::= { raidBbuEntry 4 }

dataPart OBJECT-IDENTITY
    STATUS        current
    DESCRIPTION
        "List of rotation files and VM images."
    ::= { systemAppliance 8 }

dataPartTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF DataPartEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Table of files on /data partition to break down usage."
    ::= { dataPart 1 }

dataPartEntry OBJECT-TYPE
    SYNTAX        DataPartEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Row of table of files on /data partition to break down
         usage."
    INDEX
        { dataPartIndex }
    ::= { dataPartTable 1 }

DataPartEntry ::= SEQUENCE
{
    dataPartIndex           INTEGER,
    dataPartType            INTEGER,
    dataPartName            DisplayString,
    dataPartSize            Gauge32,
    dataPartSizeCap         Gauge32,
    dataPartMetadataSize    Gauge32,
    dataPartMetadataSizeCap Gauge32
}


dataPartIndex OBJECT-TYPE
    SYNTAX        INTEGER
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Index for files table on /data."
    ::= { dataPartEntry 1 }

dataPartType OBJECT-TYPE
    SYNTAX        INTEGER {
        -- Unknown file type
        unknown(0),
        -- RotationFile version 1
        rotationFileV1(1),
        -- RotationFile version 2
        rotationFileV2(2),
        -- Image file of virtual volume.
        virtualVolume(3)
    }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Type of file."
    ::= { dataPartEntry 2 }

dataPartName OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Filename."
    ::= { dataPartEntry 3 }

dataPartSize OBJECT-TYPE
    SYNTAX        Gauge32
    UNITS         "MB"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Size of data files in MB."
    ::= { dataPartEntry 4 }

dataPartSizeCap OBJECT-TYPE
    SYNTAX        Gauge32
    UNITS         "MB"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Maximum size of data files in MB."
    ::= { dataPartEntry 5 }

dataPartMetadataSize OBJECT-TYPE
    SYNTAX        Gauge32
    UNITS         "MB"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Size of disk area holding the meta data in MB."
    ::= { dataPartEntry 6 }

dataPartMetadataSizeCap OBJECT-TYPE
    SYNTAX        Gauge32
    UNITS         "MB"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Maximum size of disk area holding the meta data in MB."
    ::= { dataPartEntry 7 }

systemServiceLevel OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Shows the current service level of the system:

         nomal: regular operational state maintenance: system ios in
         maintenance mode and supports only a minimum of functionality.

         See User Guide for details."
    ::= { systemAppliance 9 }

systemSerial OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "System Serial Number."
    ::= { systemAppliance 10 }

systemModel OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "System Model."
    ::= { systemAppliance 11 }

cmc OBJECT IDENTIFIER ::= { variables 2 }

applTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF ApplEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "List of appliances managed by the CMC"
    ::= { cmc 1 }

applEntry OBJECT-TYPE
    SYNTAX        ApplEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Entry for one managed appliance"
    INDEX
        { applIndex }
    ::= { applTable 1 }

ApplEntry ::= SEQUENCE
{
    applIndex     Unsigned32,
    applName      OCTET STRING,
    applConnected TruthValue,
    applOK        TruthValue
}


applIndex OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Synthetic numeric unique ID of appliance"
    ::= { applEntry 1 }

applName OBJECT-TYPE
    SYNTAX        OCTET STRING (SIZE(0..512))
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Textual ID/name of appliance"
    ::= { applEntry 2 }

applConnected OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Is CMC connected to this appliance (2=no, 1=yes)"
    ::= { applEntry 3 }

applOK OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Did this appliance pass its most recent status check  (2=no,
         1=yes)"
    ::= { applEntry 4 }

raidStatusCode OBJECT-TYPE
    SYNTAX        RaidStatusCode
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Non-zero status code returned by the RAID controller when in
         error."
    ::= { variables 3 }

sysDiskRaidStatusCode OBJECT-TYPE
    SYNTAX        RaidStatusCode
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Non-zero status code returned by the system disk RAID
         controller when in error."
    ::= { variables 4 }

raidDiskStatusCode OBJECT-TYPE
    SYNTAX        INTEGER {
        ok(0),
        warning(1),
        error(2)
    }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Non-zero status code returned by the system when in error."
    ::= { variables 5 }

raidDiskSecurityMode OBJECT-TYPE
    SYNTAX        INTEGER {
        -- No RAID security
        noSecurity(0),
        -- RAID security enabled
        securityEnabled(1)
    }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "RAID security status Information."
    ::= { variables 6 }

fips OBJECT-IDENTITY
    STATUS        current
    DESCRIPTION
        "Information about FIPS"
    ::= { variables 7 }

fipsStatus OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "FIPS status:
         disabled: FIPS mode is disabled, enabled: FIPS mode is enabled
         and the power-on self-test passed, error: FIPS mode is enabled
         but the power-on self-test failed."
    ::= { fips 1 }

systemTraps OBJECT IDENTIFIER ::= { shogunSystemMIB 3 }

-- NOTIFICATIONS

notificationPrefix OBJECT IDENTIFIER ::= { systemTraps 0 }

procCrash NOTIFICATION-TYPE
    OBJECTS
        { procIndex, procName }
    STATUS        current
    DESCRIPTION
        "A procCrash trap signifies that a process managed by Process
         Manager has crashed and left a core file.  The variable sent
         with the notification indicates which process crashed."
    ::= { notificationPrefix 1 }

procExit NOTIFICATION-TYPE
    OBJECTS
        { procIndex, procName }
    STATUS        current
    DESCRIPTION
        "A procExit trap signifies that a process managed by Process
         Manager has exited unexpectedly, but not left a core file. The
         variable sent with the notification indicates  which process
         exited."
    ::= { notificationPrefix 2 }

procNormal NOTIFICATION-TYPE
    OBJECTS
        { procIndex, procName }
    STATUS        current
    DESCRIPTION
        "A procNormal trap signifies that a process managed by the
         process manager (PM) was restarted by the PM because it failed
         a liveness test or crashed unexpectedly and  has now been
         restarted. If the problem with the process is reoccurring then
         either a procCrash, procExit or  liveness test trap will be
         resent."
    ::= { notificationPrefix 3 }

cpuUtilHigh NOTIFICATION-TYPE
    OBJECTS
        { cpuIndex }
    STATUS        current
    DESCRIPTION
        "The average CPU utilization in the past minute has gone above
         the acceptable threshold."
    ::= { notificationPrefix 4 }

cpuUtilNormal NOTIFICATION-TYPE
    OBJECTS
        { cpuIndex }
    STATUS        current
    DESCRIPTION
        "The average CPU utilization in the past minute has gone below
         the acceptable threshold again."
    ::= { notificationPrefix 5 }

pagingActivityHigh NOTIFICATION-TYPE
    STATUS        obsolete
    DESCRIPTION
        "The system has been paging excessively (thrashing)"
    ::= { notificationPrefix 6 }

pagingActivityNormal NOTIFICATION-TYPE
    STATUS        obsolete
    DESCRIPTION
        "The system was previously paging excessively (thrashing)  but
         is now paging within acceptable limits."
    ::= { notificationPrefix 7 }

smartError NOTIFICATION-TYPE
    STATUS        current
    DESCRIPTION
        "SMART has sent an event about a possible disk error"
    ::= { notificationPrefix 8 }

unexpectedShutdown NOTIFICATION-TYPE
    STATUS        current
    DESCRIPTION
        "The system has shut down unexpectedly"
    ::= { notificationPrefix 9 }

diskSpaceLow NOTIFICATION-TYPE
    OBJECTS
        { mountPoint }
    STATUS        current
    DESCRIPTION
        "Disk space on the system is low"
    ::= { notificationPrefix 10 }

diskSpaceNormal NOTIFICATION-TYPE
    OBJECTS
        { mountPoint }
    STATUS        current
    DESCRIPTION
        "Disk space on the system was low but now has returned  to a
         normal operating level."
    ::= { notificationPrefix 11 }

procLivenessFailure NOTIFICATION-TYPE
    OBJECTS
        { procIndex, procName }
    STATUS        current
    DESCRIPTION
        "Process Manager has detected that a process has hung, and will
         now perform its restart action"
    ::= { notificationPrefix 12 }

cmcStatusFailure NOTIFICATION-TYPE
    OBJECTS
        { applName }
    STATUS        current
    DESCRIPTION
        "One or more status criteria on a CMC-managed appliance  have
         failed"
    ::= { notificationPrefix 13 }

cmcStatusNormal NOTIFICATION-TYPE
    OBJECTS
        { applName }
    STATUS        current
    DESCRIPTION
        "A CMC-managed appliance had passes its status check, where it
         previously failed."
    ::= { notificationPrefix 14 }

memUtilizationHigh NOTIFICATION-TYPE
    STATUS        current
    DESCRIPTION
        "Memory utilization on the system is high"
    ::= { notificationPrefix 15 }

netUtilizationHigh NOTIFICATION-TYPE
    STATUS        current
    DESCRIPTION
        "Network utilization on the system is high"
    ::= { notificationPrefix 16 }

diskIOHigh NOTIFICATION-TYPE
    STATUS        current
    DESCRIPTION
        "Disk I/O on the system is high"
    ::= { notificationPrefix 17 }

cmcVersionMismatch NOTIFICATION-TYPE
    OBJECTS
        { applName }
    STATUS        current
    DESCRIPTION
        "The system software version on a CMC managed appliance does
         not match the server version"
    ::= { notificationPrefix 18 }

raidStatusOk NOTIFICATION-TYPE
    STATUS        current
    DESCRIPTION
        "The RAID array is in its optimal state."
    ::= { notificationPrefix 19 }

raidStatusNotOk NOTIFICATION-TYPE
    OBJECTS
        { raidStatusCode }
    STATUS        current
    DESCRIPTION
        "The RAID array is in a suboptimal state."
    ::= { notificationPrefix 20 }

userLogin NOTIFICATION-TYPE
    OBJECTS
        { username, usernameLocal, remoteAddr, remoteHostname,
        clientDescr }
    STATUS        current
    DESCRIPTION
        "A user has logged into the system"
    ::= { notificationPrefix 21 }

userLogout NOTIFICATION-TYPE
    OBJECTS
        { username, usernameLocal, remoteAddr, remoteHostname,
        clientDescr }
    STATUS        current
    DESCRIPTION
        "A user has logged out of the system"
    ::= { notificationPrefix 22 }

sysDiskRaidStatusOk NOTIFICATION-TYPE
    STATUS        current
    DESCRIPTION
        "The system disk RAID array is in its optimal state."
    ::= { notificationPrefix 23 }

sysDiskRaidStatusNotOk NOTIFICATION-TYPE
    OBJECTS
        { sysDiskRaidStatusCode }
    STATUS        current
    DESCRIPTION
        "The system disk RAID array is in a suboptimal state."
    ::= { notificationPrefix 24 }

raidDiskStatusOk NOTIFICATION-TYPE
    STATUS        current
    DESCRIPTION
        "Overall disk health is OK."
    ::= { notificationPrefix 25 }

raidDiskStatusNotOk NOTIFICATION-TYPE
    OBJECTS
        { raidDiskStatusCode }
    STATUS        current
    DESCRIPTION
        "Overall disk health is not OK.
         (details in raidDiskStatusCode)"
    ::= { notificationPrefix 26 }

raidDrvWearWarning NOTIFICATION-TYPE
    OBJECTS
        { raidDrvId }
    STATUS        current
    DESCRIPTION
        "Wearout level of SSD exceeded warning level."
    ::= { notificationPrefix 27 }

raidDrvWearCritical NOTIFICATION-TYPE
    OBJECTS
        { raidDrvId }
    STATUS        current
    DESCRIPTION
        "Wearout level of SSD exceeded critical level."
    ::= { notificationPrefix 28 }

raidBbuOk NOTIFICATION-TYPE
    OBJECTS
        { raidBbuId }
    STATUS        current
    DESCRIPTION
        "Battery Backup Unit status is back to normal."
    ::= { notificationPrefix 29 }

raidBbuWarning NOTIFICATION-TYPE
    OBJECTS
        { raidBbuId }
    STATUS        current
    DESCRIPTION
        "Battery Backup Unit status went into warning state."
    ::= { notificationPrefix 30 }

raidBbuError NOTIFICATION-TYPE
    OBJECTS
        { raidBbuId }
    STATUS        current
    DESCRIPTION
        "Battery Backup Unit status went into alarm state."
    ::= { notificationPrefix 31 }

raidDiskWarning NOTIFICATION-TYPE
    OBJECTS
        { raidDrvId }
    STATUS        current
    DESCRIPTION
        "Disk health is in a warning state."
    ::= { notificationPrefix 32 }

raidDiskError NOTIFICATION-TYPE
    OBJECTS
        { raidDrvId }
    STATUS        current
    DESCRIPTION
        "Disk health is in an error state."
    ::= { notificationPrefix 33 }

cmcConnectionDown NOTIFICATION-TYPE
    OBJECTS
        { applName }
    STATUS        current
    DESCRIPTION
        "Connection to a CMC-managed appliance is down."
    ::= { notificationPrefix 34 }

cmcConnectionUp NOTIFICATION-TYPE
    OBJECTS
        { applName }
    STATUS        current
    DESCRIPTION
        "Connection to a CMC-managed appliance is up."
    ::= { notificationPrefix 35 }

ipfixEngineStart NOTIFICATION-TYPE
    STATUS        current
    DESCRIPTION
        "The IPFIX/Netflow generator engine was started."
    ::= { notificationPrefix 40 }

ipfixEngineStop NOTIFICATION-TYPE
    STATUS        current
    DESCRIPTION
        "The IPFIX/Netflow generator engine was stopped regularly. This
         usually happens during reconfigurations."
    ::= { notificationPrefix 41 }

diskIONormal NOTIFICATION-TYPE
    STATUS        current
    DESCRIPTION
        "Disk I/O on system is back to normal"
    ::= { notificationPrefix 42 }

memUtilizationNormal NOTIFICATION-TYPE
    STATUS        current
    DESCRIPTION
        "Memory utilization on the system is back to normal"
    ::= { notificationPrefix 43 }

netUtilizationNormal NOTIFICATION-TYPE
    STATUS        current
    DESCRIPTION
        "Network utilization on the system is back to normal"
    ::= { notificationPrefix 44 }

systemServiceLevelChanged NOTIFICATION-TYPE
    OBJECTS
        { systemServiceLevel }
    STATUS        current
    DESCRIPTION
        "This notification is triggered when the system service level
         changed."
    ::= { notificationPrefix 45 }

fipsStatusChanged NOTIFICATION-TYPE
    OBJECTS
        { fipsStatus }
    STATUS        current
    DESCRIPTION
        "Indicates a change of the FIPS status OID 'fipsStatus'."
    ::= { notificationPrefix 46 }

testTrap NOTIFICATION-TYPE
    STATUS        current
    DESCRIPTION
        "Test trap, can be triggered by CLI command 'snmp-server notify
         send-test'."
    ::= { notificationPrefix 100 }

-- units of conformance

systemConformance OBJECT IDENTIFIER ::= { shogunSystemMIB 4 }

systemGroups OBJECT IDENTIFIER ::= { systemConformance 1 }

systemInformationGroup OBJECT-GROUP
    OBJECTS
        { cpuIndex, cpuLoad1, cpuLoad5, cpuLoad15, cpuUtil1, idleTime,
        mountBytesAvail, mountBytesFree, mountBytesPercentFree,
        mountBytesTotal, mountBytesUsed, mountDeviceName, mountIndex,
        mountPoint, procIndex, procName, procNumFailures, procStatus,
        systemServiceLevel, systemTime, systemVersion, userTime,
        utilPct1Min, systemModel, systemSerial }
    STATUS        current
    DESCRIPTION
        "A collection of objects providing information applicable  to
         the overall system."
    ::= { systemGroups 1 }

cmcInformationGroup OBJECT-GROUP
    OBJECTS
        { applIndex, applName, applConnected, applOK }
    STATUS        current
    DESCRIPTION
        "A collection of objects providing information applicable to
         CMC enabled appliances."
    ::= { systemGroups 2 }

systemNotificationsGroup NOTIFICATION-GROUP
    NOTIFICATIONS
        { cpuUtilHigh, cpuUtilNormal, diskIOHigh, diskIONormal,
        diskSpaceLow, diskSpaceNormal, memUtilizationHigh,
        memUtilizationNormal, netUtilizationHigh, netUtilizationNormal,
        procCrash, procExit, procLivenessFailure, procNormal,
        raidDiskError, raidDiskStatusNotOk, raidDiskStatusOk,
        raidDiskWarning, raidStatusNotOk, raidStatusOk, smartError,
        testTrap, unexpectedShutdown, userLogin, userLogout,
        systemServiceLevelChanged }
    STATUS        current
    DESCRIPTION
        "A collection of objects providing notifications related to
         overall system health."
    ::= { systemGroups 3 }

cmcNotificationsGroup NOTIFICATION-GROUP
    NOTIFICATIONS
        { cmcConnectionDown, cmcConnectionUp, cmcStatusFailure,
        cmcStatusNormal, cmcVersionMismatch }
    STATUS        current
    DESCRIPTION
        "A collection of objects providing information related to CMC
         related notifications."
    ::= { systemGroups 4 }

systemInformationGroup2 OBJECT-GROUP
    OBJECTS
        { clientDescr, mountInodesFree, mountInodesPercentFree,
        mountInodesTotal, mountInodesUsed, remoteAddr, remoteHostname,
        sessionId, username, usernameLocal }
    STATUS        current
    DESCRIPTION
        "A collection of objects providing additional information
         applicable to overall system."
    ::= { systemGroups 5 }

systemDiskRaidInformationGroup OBJECT-GROUP
    OBJECTS
        { sysDiskRaidStatusCode }
    STATUS        current
    DESCRIPTION
        "Managed objects associated to the system disk RAID array.

         This group applies only to systems that use a RAID array as
         system disk."
    ::= { systemGroups 6 }

systemDiskRaidNotificationsGroup NOTIFICATION-GROUP
    NOTIFICATIONS
        { sysDiskRaidStatusNotOk, sysDiskRaidStatusOk }
    STATUS        current
    DESCRIPTION
        "Notifications associated to the system disk RAID array.

         This group applies only to systems that use a RAID array as
         system disk."
    ::= { systemGroups 7 }

ssdRaidInformationGroup OBJECT-GROUP
    OBJECTS
        { raidDiskSecurityMode, raidDiskStatusCode, raidDrvDefect,
        raidDrvFdeCapable, raidDrvId, raidDrvLbaWritten, raidDrvLocking,
        raidDrvPending, raidDrvRealloc, raidDrvSecurity,
        raidDrvSerialNo, raidDrvType, raidDrvUncorrErrors,
        raidDrvWearout, raidStatusCode }
    STATUS        current
    DESCRIPTION
        "This groups contains all objects being valid, when the sytem
         deploys an SSD RAID array."
    ::= { systemGroups 8 }

ssdRaidNotificationsGroup NOTIFICATION-GROUP
    NOTIFICATIONS
        { raidDrvWearCritical, raidDrvWearWarning }
    STATUS        current
    DESCRIPTION
        "This groups contains all notifications being used, when the
         sytem deploys an SSD RAID array."
    ::= { systemGroups 9 }

bbuInformationGroup OBJECT-GROUP
    OBJECTS
        { raidBbuId, raidBbuStatus, raidBbuStatusInfo }
    STATUS        current
    DESCRIPTION
        "This groups contains all objects being valid, when the sytem
         deploys Battery Backup Unit"
    ::= { systemGroups 10 }

bbuNotificationsGroup NOTIFICATION-GROUP
    NOTIFICATIONS
        { raidBbuError, raidBbuOk, raidBbuWarning }
    STATUS        current
    DESCRIPTION
        "This groups contains all notifications being used, when the
         sytem deploys a Battery Backup Unit."
    ::= { systemGroups 11 }

dataPartGroup OBJECT-GROUP
    OBJECTS
        { dataPartMetadataSize, dataPartMetadataSizeCap, dataPartName,
        dataPartSize, dataPartSizeCap, dataPartType }
    STATUS        current
    DESCRIPTION
        "All objects that describe files on the /data partition."
    ::= { systemGroups 12 }

ipfixNotifyGroup NOTIFICATION-GROUP
    NOTIFICATIONS
        { ipfixEngineStart, ipfixEngineStop }
    STATUS        current
    DESCRIPTION
        "These notification will only emerge from a IPFIX/Netflow
         generator appliance."
    ::= { systemGroups 13 }

obsoleteNotifications NOTIFICATION-GROUP
    NOTIFICATIONS
        { pagingActivityHigh, pagingActivityNormal }
    STATUS        obsolete
    DESCRIPTION
        "This group contains obsolete notifications, because even if
         unused according to SMIv2 practices all notifications have to
         be in at least one group."
    ::= { systemGroups 14 }

fipsInformationGroup OBJECT-GROUP
    OBJECTS
        { fipsStatus }
    STATUS        current
    DESCRIPTION
        "Conformance group for all FIPS related OIDs."
    ::= { systemGroups 15 }

fipsNotificationGroup NOTIFICATION-GROUP
    NOTIFICATIONS
        { fipsStatusChanged }
    STATUS        current
    DESCRIPTION
        "Group for all FIPS related notifications."
    ::= { systemGroups 16 }

systemCompliances OBJECT IDENTIFIER ::= { systemConformance 2 }

-- compliance statements

systemCompliance1 MODULE-COMPLIANCE
    STATUS         current
    DESCRIPTION
        "The compliance statement for managed Endace network
         entities."

    MODULE         ENDACE-SYSTEM-MIB
        MANDATORY-GROUPS
            { systemInformationGroup, systemNotificationsGroup }

        GROUP          bbuNotificationsGroup
        DESCRIPTION
            "This group is valid if the system deploys a Battery Backup
             Unit."

        GROUP          bbuInformationGroup
        DESCRIPTION
            "This group is valid if the system deploys a Battery Backup
             Unit."

        GROUP          ssdRaidNotificationsGroup
        DESCRIPTION
            "This group is valid if the system deploys a SSD RAID
             array."

        GROUP          ssdRaidInformationGroup
        DESCRIPTION
            "This group is valid if the system deploys a SSD RAID
             array."

        GROUP          systemDiskRaidNotificationsGroup
        DESCRIPTION
            "This module is mandatory for the those appliances that use
             an SSD RAID array as system disk."

        GROUP          cmcNotificationsGroup
        DESCRIPTION
            "This group is mandatory only for appliances that are CMC
             enabled."

        GROUP          cmcInformationGroup
        DESCRIPTION
            "This group is mandatory only for appliances that are CMC
             enabled."

        GROUP          systemDiskRaidInformationGroup
        DESCRIPTION
            "This module is mandatory for the those appliances that use
             an SSD RAID array as system disk."

        GROUP          systemInformationGroup2
        DESCRIPTION
            "This module is mandatory for the those appliances that
             support extra sytem information."

        GROUP          ipfixNotifyGroup
        DESCRIPTION
            "This group is only active on IPFIX/Netflow generator
             appliances."
    ::= { systemCompliances 1 }

END
