diff --git a/html/images/logos/smartoptics.svg b/html/images/logos/smartoptics.svg new file mode 100644 index 0000000000..58bb473b47 --- /dev/null +++ b/html/images/logos/smartoptics.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/html/images/os/smartoptics.png b/html/images/os/smartoptics.png new file mode 100644 index 0000000000..2397ea4e5c Binary files /dev/null and b/html/images/os/smartoptics.png differ diff --git a/includes/definitions/discovery/smartos.yaml b/includes/definitions/discovery/smartos.yaml new file mode 100644 index 0000000000..b09a58304f --- /dev/null +++ b/includes/definitions/discovery/smartos.yaml @@ -0,0 +1,39 @@ +mib: MSERIES-ENVMON-MIB:MSERIES-PORT-MIB +modules: + sensors: + state: + data: + - + oid: smartPortTable + num_oid: .1.3.6.1.4.1.30826.1.3.1.2.1.1.6. + value: smartPortStatus + descr: '{{ $smartPortAlias }} - {{ $smartPortName }}' + index: 'smartPortStatus.{{ $index }}' + state_name: smartPortStatus + states: + - { value: 1, generic: 0, graph: 1, descr: idle } + - { value: 2, generic: 2, graph: 1, descr: down } + - { value: 3, generic: 0, graph: 1, descr: up } + - { value: 4, generic: 1, graph: 1, descr: high } + - { value: 5, generic: 1, graph: 1, descr: low } + - { value: 6, generic: 1, graph: 1, descr: eyeSafety } + - { value: 7, generic: 3, graph: 1, descr: cd } + - { value: 8, generic: 3, graph: 1, descr: ncd } + temperature: + data: + - + oid: smartEnvMonTemperatureTable + value: smartEnvMonTemperatureValue + num_oid: .1.3.6.1.4.1.30826.1.4.1.1.1.3. + descr: smartEnvMonTemperatureDescr + power: + data: + - + oid: smartPortTable + value: smartPortPower + num_oid: .1.3.6.1.4.1.30826.1.3.1.2.1.1.5. + divisor: 10 + descr: '{{ $smartPortAlias }} - {{ $smartPortName }}' + low_limit: smartPortLowPowerAlarmThreshold + high_limit: smartPortHighPowerAlarmThreshold + skip_values: -400 \ No newline at end of file diff --git a/includes/definitions/smartos.yaml b/includes/definitions/smartos.yaml new file mode 100644 index 0000000000..4dd6c1aea0 --- /dev/null +++ b/includes/definitions/smartos.yaml @@ -0,0 +1,12 @@ +os: smartos +text: 'SmartOptics M-Series' +type: network +icon: smartoptics +group: smartoptics +over: + - { graph: device_bits, text: 'Device Traffic' } + - { graph: device_processor, text: 'CPU Usage' } + - { graph: device_mempool, text: 'Memory Usage' } +discovery: + - sysObjectId: + - .1.3.6.1.4.1.30826 diff --git a/includes/discovery/functions.inc.php b/includes/discovery/functions.inc.php index fdfd915470..aa9e691a8c 100644 --- a/includes/discovery/functions.inc.php +++ b/includes/discovery/functions.inc.php @@ -1109,10 +1109,10 @@ function discovery_process(&$valid, $device, $sensor_type, $pre_cache) $tmp_vars = $tmp_var[0]; foreach ($tmp_vars as $k => $tmp_var) { $tmp_var = preg_replace('/({{ | }}|\$)/', '', $tmp_var); - if ($snmp_data[$tmp_var]) { + if (isset($snmp_data[$tmp_var])) { $descr = str_replace("{{ \$$tmp_var }}", $snmp_data[$tmp_var], $descr); } - if ($cached_data[$index][$tmp_var]) { + if (isset($cached_data[$index][$tmp_var])) { $descr = str_replace("{{ \$$tmp_var }}", $cached_data[$index][$tmp_var], $descr); } } diff --git a/includes/polling/os/smartos.inc.php b/includes/polling/os/smartos.inc.php new file mode 100644 index 0000000000..3cd3620dfd --- /dev/null +++ b/includes/polling/os/smartos.inc.php @@ -0,0 +1,31 @@ +. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Neil Lathwood + * @author Neil Lathwood + */ + +//SmartOptics, M-Series M-1601-D1000C1 R2A, SmartOS v2.4.14 (Compiled on Thu Jun 2 14:21:33 CEST 2016) + +list(, $hardware, $version) = explode(',', $poll_device['sysDescr']); + +$hardware = str_replace('M-Series ', '', $hardware); +list(,,$version,) = explode(' ', $version); diff --git a/mibs/smartoptics/MSERIES-ALARM-MIB b/mibs/smartoptics/MSERIES-ALARM-MIB new file mode 100644 index 0000000000..9c21f3c6a3 --- /dev/null +++ b/mibs/smartoptics/MSERIES-ALARM-MIB @@ -0,0 +1,736 @@ + -- SmartOptics Enterprise Specific Alarm MIB. +-- +-- Copyright (c) 2011, SmartOptics +-- All rights reserved +-- + +MSERIES-ALARM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Unsigned32, Counter32, Integer32 + FROM SNMPv2-SMI + DisplayString, DateAndTime + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + AlarmPerceivedSeverity, AlarmNotificationType, AlarmProbableCause, UnitType, PortType + FROM MSERIES-TC + mseries + FROM MSERIES-MIB; + +smartAlarm MODULE-IDENTITY + LAST-UPDATED "201402121415Z" + ORGANIZATION "SmartOptics" + CONTACT-INFO "http://www.smartoptics.com" + DESCRIPTION + "This is the enterprise specific Alarm MIB for SmartOptics M-Series" + REVISION "201402121415Z" + DESCRIPTION + "Added alarmLogList and smartAlarmMIBConformance." + + REVISION "201310151341Z" + DESCRIPTION + "Added alarmHostName, alarmPortName and alarmPortType to AlarmEntry. + Added alarmHostName, alarmPortName and alarmPortType to + alarmNotificationCleared, alarmNotificationWarning, + alarmNotificationMinor, alarmNotificationMajor, + and alarmNotificationCritical. + + Also alarmPort reports different numbers against before + (changed from SmartOS v2.1). 1-10 means Line ports + and 11 and above means Client port. + + Descriptions are also updated." + REVISION "201112050000Z" + DESCRIPTION + "Initial revision. + + Added notifications." + ::= { mseries 1 } + + alarmGeneral OBJECT IDENTIFIER + ::= { smartAlarm 1} + + alarmActiveList OBJECT IDENTIFIER + ::= { smartAlarm 2} + + alarmLogList OBJECT IDENTIFIER + ::= { smartAlarm 3} + + alarmNotifications OBJECT IDENTIFIER + ::= { smartAlarm 4} + + smartAlarmMIBConformance OBJECT IDENTIFIER + ::= { smartAlarm 5} + + smartAlarmGroups OBJECT IDENTIFIER + ::= { smartAlarmMIBConformance 1} + + smartAlarmCompliances OBJECT IDENTIFIER + ::= { smartAlarmMIBConformance 2} + +-- +-- General alarm group +-- + +smartAlarmGeneralLastSeqNumber OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number of the last sent notification." + ::= { alarmGeneral 1 } + +smartAlarmGeneralHighestSeverity OBJECT-TYPE + SYNTAX AlarmPerceivedSeverity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current highest severity of the active alarms." + ::= { alarmGeneral 2 } + +smartAlarmGeneralNumberActiveList OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of active alarms in the alarmActiveList." + ::= { alarmGeneral 3 } + +smartAlarmGeneralNumberLogList OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of alarms in the alarmLogList." + ::= { alarmGeneral 4 } + +-- +-- Alarm active list group +-- + +alarmActiveTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The active alarm list." + ::= { alarmActiveList 1 } + +alarmEntry OBJECT-TYPE + SYNTAX AlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the active alarm list." + INDEX { alarmIndex } + ::= { alarmActiveTable 1 } + +AlarmEntry ::= + SEQUENCE { + alarmIndex Unsigned32, + alarmUnit UnitType, + alarmPort Integer32, + alarmText DisplayString, + alarmSeverity AlarmPerceivedSeverity, + alarmActivationTime DateAndTime, + alarmCeaseTime DateAndTime, + alarmSeqNumber Counter32, + alarmHostName DisplayString, + alarmPortName DisplayString, + alarmPortType PortType, + alarmType AlarmNotificationType, + alarmCause AlarmProbableCause, + alarmPortAlias DisplayString +} + +alarmIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An unique index assigned to each alarm." + ::= { alarmEntry 1 } + +alarmUnit OBJECT-TYPE + SYNTAX UnitType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The alarming unit associated with this alarm. + undefined(0), nmb(1), psu1(2), psu2(3), fan(4), system(5), + slaveNmb(6), slavePsu1(7), slavePsu2(8), slaveFan(9)." + ::= { alarmEntry 2 } + +alarmPort OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The alarming port associated with this alarm. + 1-10 is Line Ports. 11 and higher is Client ports. For non port alarms this value is 0." + ::= { alarmEntry 3 } + +alarmText OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The additional text for the alarm." + ::= { alarmEntry 4 } + +alarmSeverity OBJECT-TYPE + SYNTAX AlarmPerceivedSeverity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The severity of the alarm as defined in + ITU-T X.733." + ::= { alarmEntry 5 } + +alarmActivationTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the alarm was created." + ::= { alarmEntry 6 } + +alarmCeaseTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the alarm was ceased." + ::= { alarmEntry 7 } + +alarmSeqNumber OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last sequence number used when issuing + a notification for this alarm." + ::= { alarmEntry 8 } + +alarmHostName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The hostname." + ::= { alarmEntry 9 } + +alarmPortName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Port Name." + ::= { alarmEntry 10 } + +alarmPortType OBJECT-TYPE + SYNTAX PortType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Port Type. undefined(0), rx(1), tx(2), biDi(3)." + ::= { alarmEntry 11 } + +alarmType OBJECT-TYPE + SYNTAX AlarmNotificationType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of alarm as defined in ITU-T X.733 + undefined (0), + other (1), + communicationsAlarm (2), + qualityOfServiceAlarm (3), + processingErrorAlarm (4), + equipmentAlarm (5), + environmental (6), + integrityViolation (7), + operationalViolation (8), + physicalViolation(9), + securityServiceOrMechanismViloation (10), + timeDomainViolation (11)" + ::= { alarmEntry 12 } + +alarmCause OBJECT-TYPE + SYNTAX AlarmProbableCause + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The alarm probable cause as defined in ITU-T X.733. + undefined (0) + adapterError (1) -- Equipment + applicationSubsystemFailure (2) -- Processing + bandwidthReduced (3) -- Quality of service + callEstablishmentError (4) -- Communications + communicationsProtocolError (5) -- Communications + communicationsSubsystemFailure (6) -- Communications + configurationOrCustomizationError (7) -- Processing + congestion (8) -- Quality of service + corruptData (9) -- Processing + cpuCyclesLimitExceeded (10) -- Processing + dTEdCEInterfaceError (11) -- Communications + datasetOrModemError (12) -- Equipment + degradedSignal (13) -- Communications + enclosureDoorOpen (14) -- Environmental + equipmentMalfunction (15) -- Equipment + excessiveVibration (16) -- Environmental + fileError (17) -- Processing + fireDetected (18) -- Environmental + floodDetected (19) -- Environmental + framingError (20) -- Communications + heatingOrVentilationOrCoolingSystemProblem (21) -- Environmental + humidityUnacceptable (22) -- Environmental + inputDeviceError (23) -- Equipment + inputOutputDeviceError (24) -- Equipment + lANError (25) -- Communications + leakDetected (26) -- Environmental + localNodeTransmissionError (27) -- Communications + lossOfFrame (28) -- Communications + lossOfSignal (29) -- Communications + materialSupplyExhausted (30) -- Environmental + multiplexerProblem (31) -- Equipment + outOfMemory (32) -- Processing + outputDeviceError (33) -- Equipment + performanceDegraded (34) -- Quality of service + powerProblem (35) -- Equipment + pressureUnacceptable (36) -- Environmental + processorProblem (37) -- Equipment + pumpFailure (38) -- Environmental + queueSizeExceeded (39) -- Quality of service + receiveFailure (40) -- Equipment + receiverFailure (41) -- Equipment + remoteNodeTransmissionError (42) -- Communications + resourceAtOrNearingCapacity (43) -- Quality of service + responseTimeExcessive (44) -- Quality of service + retransmissionRateExcessive (45) -- Quality of service + softwareProgramError (46) -- Processing + softwareError (47) -- Processing + softwareProgramAbnormallyTerminated (48) -- Processing + storageCapacityProblem (49) -- Processing + temperatureUnacceptable (50) -- Environmental + thresholdCrossed (51) -- Quality of service + timingProblem (52) -- Equipment + toxicLeakDetected (53) -- Environmental + transmitFailure (54) -- Equipment + transmitterFailure (55) -- Equipment + underlyingResourceUnavailable (56) -- Processing + versionMismatch (57) -- Processing" + ::= { alarmEntry 13 } + +alarmPortAlias OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Port Alias." + ::= { alarmEntry 14 } + +-- +-- Alarm active list group +-- + +alarmLogTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The active alarm list." + ::= { alarmLogList 1 } + +alarmLogEntry OBJECT-TYPE + SYNTAX AlarmLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the alarm log table." + INDEX { alarmLogIndex } + ::= { alarmLogTable 1 } + +AlarmLogEntry ::= + SEQUENCE { + alarmLogIndex Unsigned32, + alarmLogUnit UnitType, + alarmLogPort Integer32, + alarmLogText DisplayString, + alarmLogSeverity AlarmPerceivedSeverity, + alarmLogActivationTime DateAndTime, + alarmLogCeaseTime DateAndTime, + alarmLogSeqNumber Counter32, + alarmLogHostName DisplayString, + alarmLogPortName DisplayString, + alarmLogPortType PortType, + alarmLogType AlarmNotificationType, + alarmLogCause AlarmProbableCause +} + +alarmLogIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An unique index assigned to each alarm." + ::= { alarmLogEntry 1 } + +alarmLogUnit OBJECT-TYPE + SYNTAX UnitType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The alarming unit associated with this alarm. + undefined(0), nmb(1), psu1(2), psu2(3), fan(4), system(5), + slaveNmb(6), slavePsu1(7), slavePsu2(8), slaveFan(9)." + ::= { alarmLogEntry 2 } + +alarmLogPort OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The alarming port associated with this alarm. + 1-10 is Line Ports. 11 and higher is Client ports. For non port alarms this value is 0." + ::= { alarmLogEntry 3 } + +alarmLogText OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The additional text for the alarm." + ::= { alarmLogEntry 4 } + +alarmLogSeverity OBJECT-TYPE + SYNTAX AlarmPerceivedSeverity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The severity of the alarm as defined in + ITU-T X.733." + ::= { alarmLogEntry 5 } + +alarmLogActivationTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the alarm was created." + ::= { alarmLogEntry 6 } + +alarmLogCeaseTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the alarm was ceased." + ::= { alarmLogEntry 7 } + +alarmLogSeqNumber OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last sequence number used when issuing + a notification for this alarm." + ::= { alarmLogEntry 8 } + +alarmLogHostName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The hostname." + ::= { alarmLogEntry 9 } + +alarmLogPortName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Port Name." + ::= { alarmLogEntry 10 } + +alarmLogPortType OBJECT-TYPE + SYNTAX PortType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Port Direction. rx(1), tx(2), biDi(3)." + ::= { alarmLogEntry 11 } + +alarmLogType OBJECT-TYPE + SYNTAX AlarmNotificationType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of alarm as defined in ITU-T X.733 + undefined (0), + other (1), + communicationsAlarm (2), + qualityOfServiceAlarm (3), + processingErrorAlarm (4), + equipmentAlarm (5), + environmental (6), + integrityViolation (7), + operationalViolation (8), + physicalViolation(9), + securityServiceOrMechanismViloation (10), + timeDomainViolation (11)" + ::= { alarmLogEntry 12 } + +alarmLogCause OBJECT-TYPE + SYNTAX AlarmProbableCause + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The alarm probable cause as defined in ITU-T X.733. + undefined (0) + adapterError (1) -- Equipment + applicationSubsystemFailure (2) -- Processing + bandwidthReduced (3) -- Quality of service + callEstablishmentError (4) -- Communications + communicationsProtocolError (5) -- Communications + communicationsSubsystemFailure (6) -- Communications + configurationOrCustomizationError (7) -- Processing + congestion (8) -- Quality of service + corruptData (9) -- Processing + cpuCyclesLimitExceeded (10) -- Processing + dTEdCEInterfaceError (11) -- Communications + datasetOrModemError (12) -- Equipment + degradedSignal (13) -- Communications + enclosureDoorOpen (14) -- Environmental + equipmentMalfunction (15) -- Equipment + excessiveVibration (16) -- Environmental + fileError (17) -- Processing + fireDetected (18) -- Environmental + floodDetected (19) -- Environmental + framingError (20) -- Communications + heatingOrVentilationOrCoolingSystemProblem (21) -- Environmental + humidityUnacceptable (22) -- Environmental + inputDeviceError (23) -- Equipment + inputOutputDeviceError (24) -- Equipment + lANError (25) -- Communications + leakDetected (26) -- Environmental + localNodeTransmissionError (27) -- Communications + lossOfFrame (28) -- Communications + lossOfSignal (29) -- Communications + materialSupplyExhausted (30) -- Environmental + multiplexerProblem (31) -- Equipment + outOfMemory (32) -- Processing + outputDeviceError (33) -- Equipment + performanceDegraded (34) -- Quality of service + powerProblem (35) -- Equipment + pressureUnacceptable (36) -- Environmental + processorProblem (37) -- Equipment + pumpFailure (38) -- Environmental + queueSizeExceeded (39) -- Quality of service + receiveFailure (40) -- Equipment + receiverFailure (41) -- Equipment + remoteNodeTransmissionError (42) -- Communications + resourceAtOrNearingCapacity (43) -- Quality of service + responseTimeExcessive (44) -- Quality of service + retransmissionRateExcessive (45) -- Quality of service + softwareProgramError (46) -- Processing + softwareError (47) -- Processing + softwareProgramAbnormallyTerminated (48) -- Processing + storageCapacityProblem (49) -- Processing + temperatureUnacceptable (50) -- Environmental + thresholdCrossed (51) -- Quality of service + timingProblem (52) -- Equipment + toxicLeakDetected (53) -- Environmental + transmitFailure (54) -- Equipment + transmitterFailure (55) -- Equipment + underlyingResourceUnavailable (56) -- Processing + versionMismatch (57) -- Processing" + ::= { alarmLogEntry 13 } + +-- +-- Notifications +-- + +alarmNotifyPrefix OBJECT IDENTIFIER ::= { alarmNotifications 0 } + +alarmNotificationCleared NOTIFICATION-TYPE + OBJECTS { + alarmIndex, + alarmUnit, + alarmPort, + alarmText, + alarmSeverity, + alarmActivationTime, + alarmCeaseTime, + alarmSeqNumber, + alarmHostName, + alarmPortName, + alarmPortType, + alarmPortAlias } + STATUS current + DESCRIPTION + "Sent when an alarm is cleared." + ::= { alarmNotifyPrefix 1 } + +alarmNotificationWarning NOTIFICATION-TYPE + OBJECTS { + alarmIndex, + alarmUnit, + alarmPort, + alarmText, + alarmSeverity, + alarmActivationTime, + alarmCeaseTime, + alarmSeqNumber, + alarmHostName, + alarmPortName, + alarmPortType, + alarmPortAlias } + STATUS current + DESCRIPTION + "Sent when an alarm with warning severity is activated." + ::= { alarmNotifyPrefix 2 } + +alarmNotificationMinor NOTIFICATION-TYPE + OBJECTS { + alarmIndex, + alarmUnit, + alarmPort, + alarmText, + alarmSeverity, + alarmActivationTime, + alarmCeaseTime, + alarmSeqNumber, + alarmHostName, + alarmPortName, + alarmPortType, + alarmPortAlias } + STATUS current + DESCRIPTION + "Sent when an alarm with minor severity is activated." + ::= { alarmNotifyPrefix 3 } + +alarmNotificationMajor NOTIFICATION-TYPE + OBJECTS { + alarmIndex, + alarmUnit, + alarmPort, + alarmText, + alarmSeverity, + alarmActivationTime, + alarmCeaseTime, + alarmSeqNumber, + alarmHostName, + alarmPortName, + alarmPortType, + alarmPortAlias } + STATUS current + DESCRIPTION + "Sent when an alarm with major severity is activated.." + ::= { alarmNotifyPrefix 4 } + +alarmNotificationCritical NOTIFICATION-TYPE + OBJECTS { + alarmIndex, + alarmUnit, + alarmPort, + alarmText, + alarmSeverity, + alarmActivationTime, + alarmCeaseTime, + alarmSeqNumber, + alarmHostName, + alarmPortName, + alarmPortType, + alarmPortAlias } + STATUS current + DESCRIPTION + "Sent when an alarm with critical severity is activated." + ::= { alarmNotifyPrefix 5 } + + +-- ---------------------------------------------------- +-- Conformance +-- ---------------------------------------------------- + +-- ---------------------------------------------------- +-- Groups +-- ---------------------------------------------------- + +smartAlarmGeneralGroupV1 OBJECT-GROUP + OBJECTS { smartAlarmGeneralLastSeqNumber, + smartAlarmGeneralHighestSeverity, + smartAlarmGeneralNumberActiveList, + smartAlarmGeneralNumberLogList } + STATUS current + DESCRIPTION + "The general alarm objects V1." + ::= { smartAlarmGroups 1 } + +smartAlarmNotificationGroupV1 NOTIFICATION-GROUP + NOTIFICATIONS { alarmNotificationCleared, + alarmNotificationCritical, + alarmNotificationMajor, + alarmNotificationMinor, + alarmNotificationWarning } + STATUS current + DESCRIPTION + "The alarm notifications V1." + ::= { smartAlarmGroups 2 } + +smartAlarmActiveTableGroupV1 OBJECT-GROUP + OBJECTS { alarmIndex, + alarmUnit, + alarmPort, + alarmText, + alarmSeverity, + alarmActivationTime, + alarmCeaseTime, + alarmSeqNumber, + alarmHostName, + alarmPortName, + alarmPortType, + alarmType, + alarmCause } + STATUS current + DESCRIPTION + "The active alarm table objects V1." + ::= { smartAlarmGroups 3 } + +smartAlarmLogTableGroupV1 OBJECT-GROUP + OBJECTS { alarmLogIndex, + alarmLogUnit, + alarmLogPort, + alarmLogText, + alarmLogSeverity, + alarmLogActivationTime, + alarmLogCeaseTime, + alarmLogSeqNumber, + alarmLogHostName, + alarmLogPortName, + alarmLogPortType, + alarmLogType, + alarmLogCause } + STATUS current + DESCRIPTION + "The alarm log table objects V1." + ::= { smartAlarmGroups 4 } + +-- ---------------------------------------------------- +-- Compliance +-- ---------------------------------------------------- + +smartAlarmBasicComplV1 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Basic implementation requirements for the alarm MIB V1." + MODULE + MANDATORY-GROUPS { + smartAlarmGeneralGroupV1, + smartAlarmNotificationGroupV1, + smartAlarmActiveTableGroupV1, + smartAlarmLogTableGroupV1 } + ::= { smartAlarmCompliances 1 } + +END \ No newline at end of file diff --git a/mibs/smartoptics/MSERIES-ENVMON-MIB b/mibs/smartoptics/MSERIES-ENVMON-MIB new file mode 100644 index 0000000000..0dc60b0e06 --- /dev/null +++ b/mibs/smartoptics/MSERIES-ENVMON-MIB @@ -0,0 +1,125 @@ + -- SmartOptics Enterprise Specific Enviroment Monitor MIB. +-- +-- Copyright (c) 2014, SmartOptics +-- All rights reserved +-- + +MSERIES-ENVMON-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, Integer32 + FROM SNMPv2-SMI + DisplayString + FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE + FROM SNMPv2-CONF + mseries + FROM MSERIES-MIB; + +smartEnvMon MODULE-IDENTITY + LAST-UPDATED "201402151034Z" + ORGANIZATION "SmartOptics" + CONTACT-INFO "http://www.smartoptics.com" + DESCRIPTION + "This is the enterprise specific Enviroment Monitor MIB for SmartOptics M-Series." + REVISION "201402151034Z" + DESCRIPTION + "The initial revision of the MSERIES Enviroment Monitor MIB." + + ::= { mseries 4 } + + smartEnvMonObjects OBJECT IDENTIFIER + ::= { smartEnvMon 1} + + smartEnvMonMIBConformance OBJECT IDENTIFIER + ::= { smartEnvMon 2} + + smartEnvMonGroups OBJECT IDENTIFIER + ::= { smartEnvMonMIBConformance 1} + + smartEnvMonCompliances OBJECT IDENTIFIER + ::= { smartEnvMonMIBConformance 2} + + +-- +-- The EnvMon Temperature Table +-- + +smartEnvMonTemperatureTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmartEnvMonTemperatureEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per temperature sensor." + ::= { smartEnvMonObjects 1 } + +smartEnvMonTemperatureEntry OBJECT-TYPE + SYNTAX SmartEnvMonTemperatureEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular temperature sensor." + INDEX { smartEnvMonTemperatureIndex } + ::= { smartEnvMonTemperatureTable 1 } + +SmartEnvMonTemperatureEntry ::= + SEQUENCE { + smartEnvMonTemperatureIndex Unsigned32, + smartEnvMonTemperatureDescr DisplayString, + smartEnvMonTemperatureValue Integer32 +} + +smartEnvMonTemperatureIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An unique index for each temperature sensor." + ::= { smartEnvMonTemperatureEntry 1 } + +smartEnvMonTemperatureDescr OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the temperature sensor." + ::= { smartEnvMonTemperatureEntry 2 } + +smartEnvMonTemperatureValue OBJECT-TYPE + SYNTAX Integer32 + UNITS "degrees Celsius" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The temperature in Celsius measured by the sensor." + ::= { smartEnvMonTemperatureEntry 3 } + + +-- ---------------------------------------------------- +-- Object and event groups +-- ---------------------------------------------------- + +smartEnvMonTemperatureGroupV1 OBJECT-GROUP + OBJECTS { + smartEnvMonTemperatureIndex, + smartEnvMonTemperatureDescr, + smartEnvMonTemperatureValue } + STATUS current + DESCRIPTION + "The EnvMon Temperatue MIB objects v1." + ::= { smartEnvMonGroups 1 } + +-- ---------------------------------------------------- +-- Compliance +-- ---------------------------------------------------- + +smartEnvMonBasicComplV1 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Basic implementation requirements for the ENVMON MIB." + MODULE + MANDATORY-GROUPS { + smartEnvMonTemperatureGroupV1 } + ::= { smartEnvMonCompliances 1 } + +END \ No newline at end of file diff --git a/mibs/smartoptics/MSERIES-MIB b/mibs/smartoptics/MSERIES-MIB new file mode 100644 index 0000000000..a0661705de --- /dev/null +++ b/mibs/smartoptics/MSERIES-MIB @@ -0,0 +1,52 @@ + -- SmartOptics Enterprise Specific MIB. +-- +-- Copyright (c) 2011, SmartOptics +-- All rights reserved +-- + +MSERIES-MIB DEFINITIONS ::= BEGIN + +IMPORTS + enterprises, MODULE-IDENTITY, OBJECT-IDENTITY + FROM SNMPv2-SMI; + +smartoptics MODULE-IDENTITY + LAST-UPDATED "201402121327Z" + ORGANIZATION "SmartOptics" + CONTACT-INFO "http://www.smartoptics.com" + DESCRIPTION + "This is the enterprise specific MIB for SmartOptics M-Series. + + The root of the OID sub-tree assigned to SmartOptics." + REVISION "201402121327Z" + DESCRIPTION + "The initial revision." + + ::= { enterprises 30826 } + + mseries OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The M-Series product root." + ::= { smartoptics 1} + + + +-- MIB overview + +-- MSERIES-SYSTEM smartSystemMIB +-- tbd + +-- MSERIES-ALARM smartAlarmMIB +-- Active Alarm List and Log. + +-- MSERIES-TC smartTcMIB +-- Textual coneventions + +-- MSERIES-PORT smartPortMIB +-- Line and Client Port Description. + +-- MSERIES-ENVMON smartEnvMonMIB +-- Temperature sensor reading from the M-Series. + +END \ No newline at end of file diff --git a/mibs/smartoptics/MSERIES-PORT-MIB b/mibs/smartoptics/MSERIES-PORT-MIB new file mode 100644 index 0000000000..9a3c11c155 --- /dev/null +++ b/mibs/smartoptics/MSERIES-PORT-MIB @@ -0,0 +1,242 @@ + -- SmartOptics Enterprise Specific Port MIB. +-- +-- Copyright (c) 2014, SmartOptics +-- All rights reserved +-- + +MSERIES-PORT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, Integer32 + FROM SNMPv2-SMI + DisplayString + FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE + FROM SNMPv2-CONF + PortType, PortStatus, PortMode + FROM MSERIES-TC + mseries + FROM MSERIES-MIB; + +smartPort MODULE-IDENTITY + LAST-UPDATED "201402121344Z" + ORGANIZATION "SmartOptics" + CONTACT-INFO "http://www.smartoptics.com" + DESCRIPTION + "This is the enterprise specific Port MIB for SmartOptics M-Series." + REVISION "201402121344Z" + DESCRIPTION + "The initial revision of the MSERIES Port MIB." + + ::= { mseries 3 } + + smartPortObjects OBJECT IDENTIFIER + ::= { smartPort 1 } + + smartPortGeneral OBJECT IDENTIFIER + ::= { smartPortObjects 1} + + smartPortList OBJECT IDENTIFIER + ::= { smartPortObjects 2} + + smartPortMIBConformance OBJECT IDENTIFIER + ::= { smartPort 2} + + smartPortGroups OBJECT IDENTIFIER + ::= { smartPortMIBConformance 1} + + smartPortCompliances OBJECT IDENTIFIER + ::= { smartPortMIBConformance 2} + + +-- +-- General +-- + +-- +-- The Port Table +-- + +smartPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmartPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A port table." + ::= { smartPortList 1 } + +smartPortEntry OBJECT-TYPE + SYNTAX SmartPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the port list." + INDEX { smartPortIndex } + ::= { smartPortTable 1 } + +SmartPortEntry ::= + SEQUENCE { + smartPortIndex Unsigned32, + smartPortName DisplayString, + smartPortAlias DisplayString, + smartPortType PortType, + smartPortPower Integer32, + smartPortStatus PortStatus, + smartPortMode PortMode, + smartPortHighPowerAlarmThreshold Integer32, + smartPortLowPowerAlarmThreshold Integer32 +} + +smartPortIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique index for each port that corresponds to the index in the interface table" + ::= { smartPortEntry 1 } + +smartPortName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the port." + ::= { smartPortEntry 2 } + +smartPortAlias OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User configurable Port Alias for the port. + + Not writeable in SmartOS v2.3" + ::= { smartPortEntry 3 } + +smartPortType OBJECT-TYPE + SYNTAX PortType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of port. + + rx(1) - Receiving port. + + tx(2) - Transmitting port. + + biDi(3) - Bidirectional port." + ::= { smartPortEntry 4 } + +smartPortPower OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The power level in units of 0.1 dBm." + ::= { smartPortEntry 5 } + +smartPortStatus OBJECT-TYPE + SYNTAX PortStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational state for a port. + + idle(1) - The port is not activated + + down(2) - The port traffic is lost. + + up(3) - There is traffic on the port. + + high(4) - The port got to high power. + + low(5) - The port got to low power. + + eyeSafety(6) - The Line Tx port is in Eye Safety Mode. + This means that either the connector on the + Line Tx port is not inserted or that you have + too strong reflection from the line fiber. + + cd(7) - Channel detected. + + ncd(8) - No channel detected." + ::= { smartPortEntry 6 } + +smartPortMode OBJECT-TYPE + SYNTAX PortMode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Mode of the Port. + + normal (1) - The port is active. No alarms + are beeing suppressed. + + service (2) . The port is in service mode + and alarms are beeing suppressed. When service + is ready smartPortMode should be set to + 'normal' again. + + Not writeable in SmartOS v2.3" + ::= { smartPortEntry 7 } + +smartPortHighPowerAlarmThreshold OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The threshold for the High Power alarm. + + Not writeable in SmartOS v2.3" + ::= { smartPortEntry 8 } + +smartPortLowPowerAlarmThreshold OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The threshold for the Low Power alarm. + + Not writeable in SmartOS v2.3" + ::= { smartPortEntry 9 } + + +-- ---------------------------------------------------- +-- Conformance +-- ---------------------------------------------------- + + +-- ---------------------------------------------------- +-- Object and event groups +-- ---------------------------------------------------- + +smartPortListGroupV1 OBJECT-GROUP + OBJECTS { + smartPortIndex, + smartPortName, + smartPortAlias, + smartPortType, + smartPortPower, + smartPortStatus, + smartPortMode, + smartPortHighPowerAlarmThreshold, + smartPortLowPowerAlarmThreshold } + STATUS current + DESCRIPTION + "The Port List MIB objects v1." + ::= { smartPortGroups 1 } + +-- ---------------------------------------------------- +-- Compliance +-- ---------------------------------------------------- + +smartPortBasicComplV1 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Basic implementation requirements for the port MIB V1." + MODULE + MANDATORY-GROUPS { + smartPortListGroupV1 } + ::= { smartPortCompliances 1 } + +END \ No newline at end of file diff --git a/mibs/smartoptics/MSERIES-TC b/mibs/smartoptics/MSERIES-TC new file mode 100644 index 0000000000..ae6e1521c1 --- /dev/null +++ b/mibs/smartoptics/MSERIES-TC @@ -0,0 +1,237 @@ + -- SmartOptics Enterprise Specific TC MIB. +-- +-- Copyright (c) 2011, SmartOptics +-- All rights reserved +-- + +MSERIES-TC DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + mseries + FROM MSERIES-MIB; + + +smartTcMIB MODULE-IDENTITY + LAST-UPDATED "201402121327Z" + ORGANIZATION "SmartOptics" + CONTACT-INFO "http://www.smartoptics.com" + DESCRIPTION + "This is the enterprise specific TC MIB for SmartOptics M-Series" + REVISION "201402121327Z" + DESCRIPTION + "Added PortStatus and PortMode." + + REVISION "201310151341Z" + DESCRIPTION + "Descriptions updated." + REVISION "201112050000Z" + DESCRIPTION + "Initial revision." + + ::= { mseries 5 } + +-- +-- definitions of the textual convetions +-- + +AlarmPerceivedSeverity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Alarm severity as defined in ITU-T X.733." + SYNTAX INTEGER { + cleared (1), + indeterminate (2), + critical (3), + major (4), + minor (5), + warning (6) + } + +AlarmNotificationType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Type of alarm as defined in ITU-T X.733." + SYNTAX INTEGER { + undefined (0), + other (1), + communicationsAlarm (2), + qualityOfServiceAlarm (3), + processingErrorAlarm (4), + equipmentAlarm (5), + environmental (6), + integrityViolation (7), + operationalViolation (8), + physicalViolation(9), + securityServiceOrMechanismViloation (10), + timeDomainViolation (11) + } + +AlarmProbableCause ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Alarm probable cause as defined in ITU-T X.733." + SYNTAX INTEGER { + undefined (0), + adapterError (1), -- Equipment + applicationSubsystemFailure (2), -- Processing + bandwidthReduced (3), -- Quality of service + callEstablishmentError (4), -- Communications + communicationsProtocolError (5), -- Communications + communicationsSubsystemFailure (6), -- Communications + configurationOrCustomizationError (7), -- Processing + congestion (8), -- Quality of service + corruptData (9), -- Processing + cpuCyclesLimitExceeded (10), -- Processing + dTEdCEInterfaceError (11), -- Communications + datasetOrModemError (12), -- Equipment + degradedSignal (13), -- Communications + enclosureDoorOpen (14), -- Environmental + equipmentMalfunction (15), -- Equipment + excessiveVibration (16), -- Environmental + fileError (17), -- Processing + fireDetected (18), -- Environmental + floodDetected (19), -- Environmental + framingError (20), -- Communications + heatingOrVentilationOrCoolingSystemProblem (21), -- Environmental + humidityUnacceptable (22), -- Environmental + inputDeviceError (23), -- Equipment + inputOutputDeviceError (24), -- Equipment + lANError (25), -- Communications + leakDetected (26), -- Environmental + localNodeTransmissionError (27), -- Communications + lossOfFrame (28), -- Communications + lossOfSignal (29), -- Communications + materialSupplyExhausted (30), -- Environmental + multiplexerProblem (31), -- Equipment + outOfMemory (32), -- Processing + outputDeviceError (33), -- Equipment + performanceDegraded (34), -- Quality of service + powerProblem (35), -- Equipment + pressureUnacceptable (36), -- Environmental + processorProblem (37), -- Equipment + pumpFailure (38), -- Environmental + queueSizeExceeded (39), -- Quality of service + receiveFailure (40), -- Equipment + receiverFailure (41), -- Equipment + remoteNodeTransmissionError (42), -- Communications + resourceAtOrNearingCapacity (43), -- Quality of service + responseTimeExcessive (44), -- Quality of service + retransmissionRateExcessive (45), -- Quality of service + softwareProgramError (46), -- Processing + softwareError (47), -- Processing + softwareProgramAbnormallyTerminated (48), -- Processing + storageCapacityProblem (49), -- Processing + temperatureUnacceptable (50), -- Environmental + thresholdCrossed (51), -- Quality of service + timingProblem (52), -- Equipment + toxicLeakDetected (53), -- Environmental + transmitFailure (54), -- Equipment + transmitterFailure (55), -- Equipment + underlyingResourceUnavailable (56), -- Processing + versionMismatch (57) } -- Processing + + +UnitType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The unit type in the M-Series. + + nmb - Network Management Board. The controlling + board of the M-Series. + + psu1 - The Power Supply in slot 1 of the M-Series. + + psu2 - The Power Supply in slot 2 of the M-Series. + + fan - The Fan of the M-Series. + + system - The chassis. + + slaveNmb - Network Management Board of the Cascading system. + + slavePsu1 - The Power Supply in slot 1 of the Cascading M-Series. + + slavePsu2 - The Power Supply in slot 2 of the Cascading M-Series. + + slaveFan - The Fan of the Cascading M-Series." + SYNTAX INTEGER { + nmb (1), + psu1 (2), + psu2 (3), + fan (4), + system (5), + slaveNmb (6), + slavePsu1 (7), + slavePsu2 (8), + slaveFan (9) + } + +PortType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Port direction. + + rx - The port direction is receiving(Rx). + + tx - The port direction is transmitting(Tx). + + biDi - The port direction is both transmitting and receiving." + SYNTAX INTEGER { + rx (1), + tx (2), + biDi (3) + } + +PortStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The operational state for a port. + + idle - The port is not activated + + down - The port traffic is lost. + + up - There is traffic on the port. + + high - The port got to high power. + + low - The port got to low power. + + eyeSafety - The Line Tx port is in Eye Safety Mode. + This means that either the connector on the + Line Tx port is not inserted or that you have + too strong reflection from the line fiber. + + cd - Channel detected. + + ncd - No channel detected." + SYNTAX INTEGER { + idle (1), + down (2), + up (3), + high (4), + low (5), + eyeSafety (6), + cd (7), + ncd (8) } + +PortMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Port Mode. + + normal - The port is active. Alarms are not suppressed. + + service - the port is in Service Mode. Alarms are + beeing suppressed. When service is ready the + Port Mode should be set back to normal." + SYNTAX INTEGER { + normal (1), + service (2) + } + +END diff --git a/tests/snmpsim/smartos.snmprec b/tests/snmpsim/smartos.snmprec new file mode 100644 index 0000000000..f911d00177 --- /dev/null +++ b/tests/snmpsim/smartos.snmprec @@ -0,0 +1,2 @@ +1.3.6.1.2.1.1.1.0|4|SmartOptics, M-Series M-1601-D1000C1 R2A, SmartOS v2.4.14 (Compiled on Thu Jun 2 14:21:33 CEST 2016) +1.3.6.1.2.1.1.2.0|6|.1.3.6.1.4.1.30826.1