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