From 659a5901d3b41b72dd7da8985fcb550d5e98ffa8 Mon Sep 17 00:00:00 2001 From: laf Date: Sat, 11 Apr 2015 18:42:15 +0100 Subject: [PATCH 01/59] Added basic detection for packetlogic devices --- includes/definitions.inc.php | 12 + includes/discovery/os/linux.inc.php | 1 + includes/polling/os/procera.inc..php | 18 + mibs/PACKETLOGIC-MIB | 11904 +++++++++++++++++++++++++ 4 files changed, 11935 insertions(+) create mode 100644 includes/polling/os/procera.inc..php create mode 100644 mibs/PACKETLOGIC-MIB diff --git a/includes/definitions.inc.php b/includes/definitions.inc.php index 137587cf6c..cad2ace71d 100644 --- a/includes/definitions.inc.php +++ b/includes/definitions.inc.php @@ -140,6 +140,18 @@ $config['os'][$os]['over'][1]['text'] = "Processor Usage"; $config['os'][$os]['over'][2]['graph'] = "device_mempool"; $config['os'][$os]['over'][2]['text'] = "Memory Usage"; +$os = "procera"; +$onfig['os'][$os]['type'] = "server"; +$config['os'][$os]['group'] = "unix"; +$config['os'][$os]['text'] = "Procera Networks"; +$config['os'][$os]['icon'] = "linux"; +$config['os'][$os]['over'][0]['graph'] = "device_bits"; +$config['os'][$os]['over'][0]['text'] = "Device Traffic"; +$config['os'][$os]['over'][1]['graph'] = "device_processor"; +$config['os'][$os]['over'][1]['text'] = "Processor Usage"; +$config['os'][$os]['over'][2]['graph'] = "device_mempool"; +$config['os'][$os]['over'][2]['text'] = "Memory Usage"; + // Other Unix-based OSes here please. $os = "freebsd"; diff --git a/includes/discovery/os/linux.inc.php b/includes/discovery/os/linux.inc.php index fcb55bc35f..79b4552606 100755 --- a/includes/discovery/os/linux.inc.php +++ b/includes/discovery/os/linux.inc.php @@ -15,6 +15,7 @@ if (!$os) elseif (strstr($sysDescr, "endian")) { $os = "endian"; } elseif (preg_match("/Cisco Small Business/", $sysDescr)) { $os = "ciscosmblinux"; } elseif (strpos($entPhysicalMfgName, "QNAP") !== FALSE) { $os = "qnap"; } + elseif (stristr($sysObjectId, "packetlogic")) { $os = "procera"; } elseif (strstr($sysObjectId, ".1.3.6.1.4.1.10002.1") || strstr($sysObjectId, ".1.3.6.1.4.1.41112.1.4") || strpos(trim(snmp_get($device, "dot11manufacturerName.5", "-Osqnv", "IEEE802dot11-MIB")), "Ubiquiti") !== FALSE) { $os = "airos"; diff --git a/includes/polling/os/procera.inc..php b/includes/polling/os/procera.inc..php new file mode 100644 index 0000000000..917c110c6d --- /dev/null +++ b/includes/polling/os/procera.inc..php @@ -0,0 +1,18 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if (stristr($poll_device['sysObjectID'], "packetlogic")) { + $version = "PacketLogic"; + $hardware = "PacketLogic"; +} diff --git a/mibs/PACKETLOGIC-MIB b/mibs/PACKETLOGIC-MIB new file mode 100644 index 0000000000..baf0663613 --- /dev/null +++ b/mibs/PACKETLOGIC-MIB @@ -0,0 +1,11904 @@ +PACKETLOGIC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + NOTIFICATION-TYPE, + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter64, + Unsigned32, TimeTicks, enterprises FROM SNMPv2-SMI + DisplayString FROM SNMPv2-TC; + +procera MODULE-IDENTITY + LAST-UPDATED "201110211250Z" + ORGANIZATION "Procera Networks, Inc." + CONTACT-INFO "support@proceranetworks.com" + DESCRIPTION "MIB for PacketLogic2" + REVISION "201110211250Z" + DESCRIPTION " Latest version at the revision date for version GET VERSION HERE" + + ::={enterprises 15397} +packetlogic2 OBJECT IDENTIFIER ::={procera 2} + +psm OBJECT IDENTIFIER ::={procera 3} + +sysdiag OBJECT IDENTIFIER ::={packetlogic2 1} + +channelstats OBJECT IDENTIFIER ::={packetlogic2 2} + +pl2Trap OBJECT IDENTIFIER ::={packetlogic2 8} + +snoopers OBJECT IDENTIFIER ::={packetlogic2 10} + +dynamiczones OBJECT IDENTIFIER ::={packetlogic2 20} + +packetprocessing OBJECT IDENTIFIER ::={sysdiag 8} + +packetprocessingRx OBJECT IDENTIFIER ::={packetprocessing 1} + +packetprocessingRxVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={packetprocessingRx 1} + +packetprocessingRxMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={packetprocessingRx 2} + +packetprocessingRxMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={packetprocessingRx 3} + +packetprocessingRxDrops OBJECT IDENTIFIER ::={packetprocessing 2} + +packetprocessingRxDropsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX drops" + + ::={packetprocessingRxDrops 1} + +packetprocessingRxDropsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX drops" + + ::={packetprocessingRxDrops 2} + +packetprocessingRxDropsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX drops" + + ::={packetprocessingRxDrops 3} + +packetprocessingTx OBJECT IDENTIFIER ::={packetprocessing 6} + +packetprocessingTxVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={packetprocessingTx 1} + +packetprocessingTxMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={packetprocessingTx 2} + +packetprocessingTxMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={packetprocessingTx 3} + +packetprocessingTxDrops OBJECT IDENTIFIER ::={packetprocessing 7} + +packetprocessingTxDropsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX drops" + + ::={packetprocessingTxDrops 1} + +packetprocessingTxDropsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX drops" + + ::={packetprocessingTxDrops 2} + +packetprocessingTxDropsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX drops" + + ::={packetprocessingTxDrops 3} + +packetprocessingRuntime OBJECT IDENTIFIER ::={packetprocessing 8} + +packetprocessingRuntimeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet" + + ::={packetprocessingRuntime 1} + +packetprocessingRuntimeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet" + + ::={packetprocessingRuntime 3} + +packetprocessingRecvtime OBJECT IDENTIFIER ::={packetprocessing 9} + +packetprocessingRecvtimeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles since rx-irq" + + ::={packetprocessingRecvtime 1} + +packetprocessingRecvtimeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles since rx-irq" + + ::={packetprocessingRecvtime 3} + +packetprocessingPacketPoolSize OBJECT IDENTIFIER ::={packetprocessing 10} + +packetprocessingPacketPoolSizeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets left in pool" + + ::={packetprocessingPacketPoolSize 1} + +packetprocessingPacketPoolSizeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets left in pool" + + ::={packetprocessingPacketPoolSize 3} + +packetprocessingRxQueueUsed OBJECT IDENTIFIER ::={packetprocessing 11} + +packetprocessingRxQueueUsedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets in RX queue" + + ::={packetprocessingRxQueueUsed 1} + +packetprocessingRxQueueUsedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets in RX queue" + + ::={packetprocessingRxQueueUsed 3} + +packetprocessingTxQueueUsed OBJECT IDENTIFIER ::={packetprocessing 12} + +packetprocessingTxQueueUsedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets in TX queue" + + ::={packetprocessingTxQueueUsed 1} + +packetprocessingTxQueueUsedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets in TX queue" + + ::={packetprocessingTxQueueUsed 3} + +packetprocessingDmaAllocs OBJECT IDENTIFIER ::={packetprocessing 13} + +packetprocessingDmaAllocsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "DMA-allocated packets" + + ::={packetprocessingDmaAllocs 1} + +packetprocessingDmaAllocsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "DMA-allocated packets" + + ::={packetprocessingDmaAllocs 3} + +packetprocessingHeavy OBJECT IDENTIFIER ::={packetprocessing 14} + +packetprocessingHeavyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy cycle packets" + + ::={packetprocessingHeavy 1} + +packetprocessingHeavyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy cycle packets" + + ::={packetprocessingHeavy 2} + +packetprocessingHeavyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy cycle packets" + + ::={packetprocessingHeavy 3} + +packetprocessingLoad OBJECT IDENTIFIER ::={packetprocessing 15} + +packetprocessingLoadVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU Load" + + ::={packetprocessingLoad 1} + +packetprocessingLoadMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU Load" + + ::={packetprocessingLoad 3} + +packetprocessingUptime OBJECT IDENTIFIER ::={packetprocessing 17} + +packetprocessingUptimeVal OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU uptime" + + ::={packetprocessingUptime 1} + +packetprocessingHeapfree OBJECT IDENTIFIER ::={packetprocessing 16} + +packetprocessingHeapfreeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Free memory (Kbytes)" + + ::={packetprocessingHeapfree 1} + +packetprocessingHeapfreeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Free memory (Kbytes)" + + ::={packetprocessingHeapfree 3} + +packetprocessingPushbackQueueFull OBJECT IDENTIFIER ::={packetprocessing 18} + +packetprocessingPushbackQueueFullVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Push back queue full" + + ::={packetprocessingPushbackQueueFull 1} + +packetprocessingPushbackQueueFullMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Push back queue full" + + ::={packetprocessingPushbackQueueFull 2} + +packetprocessingPushbackQueueFullMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Push back queue full" + + ::={packetprocessingPushbackQueueFull 3} + +packetprocessingPushbackPackets OBJECT IDENTIFIER ::={packetprocessing 19} + +packetprocessingPushbackPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Push back packets" + + ::={packetprocessingPushbackPackets 1} + +packetprocessingPushbackPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Push back packets" + + ::={packetprocessingPushbackPackets 2} + +packetprocessingPushbackPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Push back packets" + + ::={packetprocessingPushbackPackets 3} + +packetprocessingPushbackQueueSize OBJECT IDENTIFIER ::={packetprocessing 20} + +packetprocessingPushbackQueueSizeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Push back queue size" + + ::={packetprocessingPushbackQueueSize 1} + +packetprocessingPushbackQueueSizeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Push back queue size" + + ::={packetprocessingPushbackQueueSize 3} + +packetprocessingPushbackRequeues OBJECT IDENTIFIER ::={packetprocessing 21} + +packetprocessingPushbackRequeuesVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Push back requeues" + + ::={packetprocessingPushbackRequeues 1} + +packetprocessingPushbackRequeuesMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Push back requeues" + + ::={packetprocessingPushbackRequeues 3} + +drdl OBJECT IDENTIFIER ::={sysdiag 24} + +drdlWaitingChildren OBJECT IDENTIFIER ::={drdl 1} + +drdlWaitingChildrenVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Waiting childconnections" + + ::={drdlWaitingChildren 1} + +drdlWaitingChildrenMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Waiting childconnections" + + ::={drdlWaitingChildren 3} + +drdlAddedChildren OBJECT IDENTIFIER ::={drdl 2} + +drdlAddedChildrenVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "New childconnections" + + ::={drdlAddedChildren 1} + +drdlAddedChildrenMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "New childconnections" + + ::={drdlAddedChildren 2} + +drdlAddedChildrenMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "New childconnections" + + ::={drdlAddedChildren 3} + +drdlChildAbuses OBJECT IDENTIFIER ::={drdl 3} + +drdlChildAbusesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "LRU child allocations" + + ::={drdlChildAbuses 1} + +drdlChildAbusesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "LRU child allocations" + + ::={drdlChildAbuses 2} + +drdlChildAbusesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "LRU child allocations" + + ::={drdlChildAbuses 3} + +drdlChildEmpty OBJECT IDENTIFIER ::={drdl 4} + +drdlChildEmptyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Child allocation failures" + + ::={drdlChildEmpty 1} + +drdlChildEmptyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Child allocation failures" + + ::={drdlChildEmpty 2} + +drdlChildEmptyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Child allocation failures" + + ::={drdlChildEmpty 3} + +drdlProp32Fail OBJECT IDENTIFIER ::={drdl 5} + +drdlProp32FailVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Property allocation failures (32)" + + ::={drdlProp32Fail 1} + +drdlProp32FailMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Property allocation failures (32)" + + ::={drdlProp32Fail 2} + +drdlProp32FailMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Property allocation failures (32)" + + ::={drdlProp32Fail 3} + +drdlProp64Fail OBJECT IDENTIFIER ::={drdl 6} + +drdlProp64FailVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "Unused" + + ::={drdlProp64Fail 1} + +drdlProp64FailMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "Unused" + + ::={drdlProp64Fail 2} + +drdlProp64FailMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "Unused" + + ::={drdlProp64Fail 3} + +drdlProp256Fail OBJECT IDENTIFIER ::={drdl 7} + +drdlProp256FailVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Property allocation failures (256)" + + ::={drdlProp256Fail 1} + +drdlProp256FailMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Property allocation failures (256)" + + ::={drdlProp256Fail 2} + +drdlProp256FailMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Property allocation failures (256)" + + ::={drdlProp256Fail 3} + +drdlProp32Used OBJECT IDENTIFIER ::={drdl 8} + +drdlProp32UsedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Properties used (32)" + + ::={drdlProp32Used 1} + +drdlProp32UsedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Properties used (32)" + + ::={drdlProp32Used 3} + +drdlProp64Used OBJECT IDENTIFIER ::={drdl 9} + +drdlProp64UsedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "Unused" + + ::={drdlProp64Used 1} + +drdlProp64UsedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "Unused" + + ::={drdlProp64Used 2} + +drdlProp64UsedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "Unused" + + ::={drdlProp64Used 3} + +drdlProp256Used OBJECT IDENTIFIER ::={drdl 10} + +drdlProp256UsedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Properties used (256)" + + ::={drdlProp256Used 1} + +drdlProp256UsedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Properties used (256)" + + ::={drdlProp256Used 3} + +drdlAnalyzerChecks OBJECT IDENTIFIER ::={drdl 11} + +drdlAnalyzerChecksVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzer packet checks" + + ::={drdlAnalyzerChecks 1} + +drdlAnalyzerChecksMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzer packet checks" + + ::={drdlAnalyzerChecks 2} + +drdlAnalyzerChecksMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzer packet checks" + + ::={drdlAnalyzerChecks 3} + +drdlAnalyzerCheckedBytes OBJECT IDENTIFIER ::={drdl 12} + +drdlAnalyzerCheckedBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzed bytes" + + ::={drdlAnalyzerCheckedBytes 1} + +drdlAnalyzerCheckedBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzed bytes" + + ::={drdlAnalyzerCheckedBytes 2} + +drdlAnalyzerCheckedBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzed bytes" + + ::={drdlAnalyzerCheckedBytes 3} + +drdlAnalyzerSkippedBytes OBJECT IDENTIFIER ::={drdl 13} + +drdlAnalyzerSkippedBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Skipped bytes" + + ::={drdlAnalyzerSkippedBytes 1} + +drdlAnalyzerSkippedBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Skipped bytes" + + ::={drdlAnalyzerSkippedBytes 2} + +drdlAnalyzerSkippedBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Skipped bytes" + + ::={drdlAnalyzerSkippedBytes 3} + +drdlAnalyzerActions OBJECT IDENTIFIER ::={drdl 14} + +drdlAnalyzerActionsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzer actions called" + + ::={drdlAnalyzerActions 1} + +drdlAnalyzerActionsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzer actions called" + + ::={drdlAnalyzerActions 2} + +drdlAnalyzerActionsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzer actions called" + + ::={drdlAnalyzerActions 3} + +drdlPropertySet OBJECT IDENTIFIER ::={drdl 15} + +drdlPropertySetVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzer properties set" + + ::={drdlPropertySet 1} + +drdlPropertySetMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzer properties set" + + ::={drdlPropertySet 2} + +drdlPropertySetMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzer properties set" + + ::={drdlPropertySet 3} + +drdlRuntime OBJECT IDENTIFIER ::={drdl 16} + +drdlRuntimeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet" + + ::={drdlRuntime 1} + +drdlRuntimeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet" + + ::={drdlRuntime 3} + +drdlOrphans OBJECT IDENTIFIER ::={drdl 18} + +drdlOrphansVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Orphaned childconnections" + + ::={drdlOrphans 1} + +drdlOrphansMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Orphaned childconnections" + + ::={drdlOrphans 2} + +drdlOrphansMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Orphaned childconnections" + + ::={drdlOrphans 3} + +drdlTooManyChildren OBJECT IDENTIFIER ::={drdl 17} + +drdlTooManyChildrenVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused childconnection" + + ::={drdlTooManyChildren 1} + +drdlTooManyChildrenMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused childconnection" + + ::={drdlTooManyChildren 2} + +drdlTooManyChildrenMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused childconnection" + + ::={drdlTooManyChildren 3} + +drdlRuntimeFinished OBJECT IDENTIFIER ::={drdl 19} + +drdlRuntimeFinishedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per finished packet" + + ::={drdlRuntimeFinished 1} + +drdlRuntimeFinishedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per finished packet" + + ::={drdlRuntimeFinished 3} + +drdlFindHeavy OBJECT IDENTIFIER ::={drdl 20} + +drdlFindHeavyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy cycle packets" + + ::={drdlFindHeavy 1} + +drdlFindHeavyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy cycle packets" + + ::={drdlFindHeavy 2} + +drdlFindHeavyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy cycle packets" + + ::={drdlFindHeavy 3} + +drdlAutoAccepts OBJECT IDENTIFIER ::={drdl 21} + +drdlAutoAcceptsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of automatic accepts" + + ::={drdlAutoAccepts 1} + +drdlAutoAcceptsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of automatic accepts" + + ::={drdlAutoAccepts 2} + +drdlAutoAcceptsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of automatic accepts" + + ::={drdlAutoAccepts 3} + +drdlBuffersUsed OBJECT IDENTIFIER ::={drdl 22} + +drdlBuffersUsedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of buffers used" + + ::={drdlBuffersUsed 1} + +drdlBuffersUsedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of buffers used" + + ::={drdlBuffersUsed 3} + +drdlBufferAllocationFailures OBJECT IDENTIFIER ::={drdl 23} + +drdlBufferAllocationFailuresVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of buffer allocation failures" + + ::={drdlBufferAllocationFailures 1} + +drdlBufferAllocationFailuresMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of buffer allocation failures" + + ::={drdlBufferAllocationFailures 2} + +drdlBufferAllocationFailuresMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of buffer allocation failures" + + ::={drdlBufferAllocationFailures 3} + +drdlFullPackets OBJECT IDENTIFIER ::={drdl 24} + +drdlFullPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of full run packets" + + ::={drdlFullPackets 1} + +drdlFullPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of full run packets" + + ::={drdlFullPackets 2} + +drdlFullPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of full run packets" + + ::={drdlFullPackets 3} + +drdlProp0Fail OBJECT IDENTIFIER ::={drdl 25} + +drdlProp0FailVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "Unused" + + ::={drdlProp0Fail 1} + +drdlProp0FailMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "Unused" + + ::={drdlProp0Fail 3} + +drdlProp0Used OBJECT IDENTIFIER ::={drdl 26} + +drdlProp0UsedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "Unused" + + ::={drdlProp0Used 1} + +drdlProp0UsedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "Unused" + + ::={drdlProp0Used 3} + +drdlSliceStateUsed OBJECT IDENTIFIER ::={drdl 27} + +drdlSliceStateUsedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of slice state structures used" + + ::={drdlSliceStateUsed 1} + +drdlSliceStateUsedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of slice state structures used" + + ::={drdlSliceStateUsed 3} + +drdlSliceStateFail OBJECT IDENTIFIER ::={drdl 28} + +drdlSliceStateFailVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of slice state structure allocation failures" + + ::={drdlSliceStateFail 1} + +drdlSliceStateFailMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of slice state structure allocation failures" + + ::={drdlSliceStateFail 2} + +drdlSliceStateFailMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of slice state structure allocation failures" + + ::={drdlSliceStateFail 3} + +drdlLiteralSet OBJECT IDENTIFIER ::={drdl 29} + +drdlLiteralSetVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzer literals set" + + ::={drdlLiteralSet 1} + +drdlLiteralSetMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzer literals set" + + ::={drdlLiteralSet 2} + +drdlLiteralSetMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzer literals set" + + ::={drdlLiteralSet 3} + +drdlPropertyFail OBJECT IDENTIFIER ::={drdl 30} + +drdlPropertyFailVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzer properties that could not be set" + + ::={drdlPropertyFail 1} + +drdlPropertyFailMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzer properties that could not be set" + + ::={drdlPropertyFail 2} + +drdlPropertyFailMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Analyzer properties that could not be set" + + ::={drdlPropertyFail 3} + +drdlVsRangeTests OBJECT IDENTIFIER ::={drdl 45} + +drdlVsRangeTestsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Virtual services range tests" + + ::={drdlVsRangeTests 1} + +drdlVsRangeTestsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Virtual services range tests" + + ::={drdlVsRangeTests 2} + +drdlVsRangeTestsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Virtual services range tests" + + ::={drdlVsRangeTests 3} + +drdlVsRangeSteps OBJECT IDENTIFIER ::={drdl 46} + +drdlVsRangeStepsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Virtual services range steps" + + ::={drdlVsRangeSteps 1} + +drdlVsRangeStepsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Virtual services range steps" + + ::={drdlVsRangeSteps 2} + +drdlVsRangeStepsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Virtual services range steps" + + ::={drdlVsRangeSteps 3} + +drdlVsRegexTests OBJECT IDENTIFIER ::={drdl 47} + +drdlVsRegexTestsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Virtual services regex tests" + + ::={drdlVsRegexTests 1} + +drdlVsRegexTestsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Virtual services regex tests" + + ::={drdlVsRegexTests 2} + +drdlVsRegexTestsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Virtual services regex tests" + + ::={drdlVsRegexTests 3} + +drdlVsRegexSteps OBJECT IDENTIFIER ::={drdl 48} + +drdlVsRegexStepsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Virtual services regex steps" + + ::={drdlVsRegexSteps 1} + +drdlVsRegexStepsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Virtual services regex steps" + + ::={drdlVsRegexSteps 2} + +drdlVsRegexStepsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Virtual services regex steps" + + ::={drdlVsRegexSteps 3} + +drdlTaintFill OBJECT IDENTIFIER ::={drdl 49} + +drdlTaintFillVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Buckets used in taint store" + + ::={drdlTaintFill 1} + +drdlTaintFillMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Buckets used in taint store" + + ::={drdlTaintFill 3} + +drdlChildIterateMax OBJECT IDENTIFIER ::={drdl 33} + +drdlChildIterateMaxVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Childconnection iterations during search (max)" + + ::={drdlChildIterateMax 1} + +drdlChildIterateMaxMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Childconnection iterations during search (max)" + + ::={drdlChildIterateMax 3} + +ethernet OBJECT IDENTIFIER ::={sysdiag 28} + +ethernetUnicast OBJECT IDENTIFIER ::={ethernet 1} + +ethernetUnicastVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Unicast packets" + + ::={ethernetUnicast 1} + +ethernetUnicastMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Unicast packets" + + ::={ethernetUnicast 2} + +ethernetUnicastMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Unicast packets" + + ::={ethernetUnicast 3} + +ethernetBroadcast OBJECT IDENTIFIER ::={ethernet 2} + +ethernetBroadcastVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Broadcast packets" + + ::={ethernetBroadcast 1} + +ethernetBroadcastMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Broadcast packets" + + ::={ethernetBroadcast 2} + +ethernetBroadcastMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Broadcast packets" + + ::={ethernetBroadcast 3} + +ethernetMulticast OBJECT IDENTIFIER ::={ethernet 3} + +ethernetMulticastVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Multicast packets" + + ::={ethernetMulticast 1} + +ethernetMulticastMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Multicast packets" + + ::={ethernetMulticast 2} + +ethernetMulticastMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Multicast packets" + + ::={ethernetMulticast 3} + +ethernet8021q OBJECT IDENTIFIER ::={ethernet 4} + +ethernet8021qVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "802.1q encapsulated packets" + + ::={ethernet8021q 1} + +ethernet8021qMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "802.1q encapsulated packets" + + ::={ethernet8021q 2} + +ethernet8021qMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "802.1q encapsulated packets" + + ::={ethernet8021q 3} + +ethernetMpls OBJECT IDENTIFIER ::={ethernet 5} + +ethernetMplsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "MPLS over Ethernet frames" + + ::={ethernetMpls 1} + +ethernetMplsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "MPLS over Ethernet frames" + + ::={ethernetMpls 2} + +ethernetMplsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "MPLS over Ethernet frames" + + ::={ethernetMpls 3} + +ethernetMplsOoh OBJECT IDENTIFIER ::={ethernet 6} + +ethernetMplsOohVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Invalid MPLS frames" + + ::={ethernetMplsOoh 1} + +ethernetMplsOohMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Invalid MPLS frames" + + ::={ethernetMplsOoh 2} + +ethernetMplsOohMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Invalid MPLS frames" + + ::={ethernetMplsOoh 3} + +ethernetNonIp OBJECT IDENTIFIER ::={ethernet 7} + +ethernetNonIpVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Non IP packets" + + ::={ethernetNonIp 1} + +ethernetNonIpMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Non IP packets" + + ::={ethernetNonIp 2} + +ethernetNonIpMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Non IP packets" + + ::={ethernetNonIp 3} + +ethernetDivert OBJECT IDENTIFIER ::={ethernet 8} + +ethernetDivertVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Divert packets" + + ::={ethernetDivert 1} + +ethernetDivertMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Divert packets" + + ::={ethernetDivert 2} + +ethernetDivertMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Divert packets" + + ::={ethernetDivert 3} + +ethernetHBResetDrops OBJECT IDENTIFIER ::={ethernet 21} + +ethernetHBResetDropsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dropped packets because of HB Reset" + + ::={ethernetHBResetDrops 1} + +ethernetHBResetDropsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dropped packets because of HB Reset" + + ::={ethernetHBResetDrops 2} + +ethernetHBResetDropsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dropped packets because of HB Reset" + + ::={ethernetHBResetDrops 3} + +ethernetShuntEthertypePackets OBJECT IDENTIFIER ::={ethernet 22} + +ethernetShuntEthertypePacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (ethertype)" + + ::={ethernetShuntEthertypePackets 1} + +ethernetShuntEthertypePacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (ethertype)" + + ::={ethernetShuntEthertypePackets 2} + +ethernetShuntEthertypePacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (ethertype)" + + ::={ethernetShuntEthertypePackets 3} + +ethernetShuntEthertypeBytes OBJECT IDENTIFIER ::={ethernet 23} + +ethernetShuntEthertypeBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (ethertype)" + + ::={ethernetShuntEthertypeBytes 1} + +ethernetShuntEthertypeBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (ethertype)" + + ::={ethernetShuntEthertypeBytes 2} + +ethernetShuntEthertypeBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (ethertype)" + + ::={ethernetShuntEthertypeBytes 3} + +ethernetShuntMplsPackets OBJECT IDENTIFIER ::={ethernet 24} + +ethernetShuntMplsPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (MPLS)" + + ::={ethernetShuntMplsPackets 1} + +ethernetShuntMplsPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (MPLS)" + + ::={ethernetShuntMplsPackets 2} + +ethernetShuntMplsPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (MPLS)" + + ::={ethernetShuntMplsPackets 3} + +ethernetShuntMplsBytes OBJECT IDENTIFIER ::={ethernet 25} + +ethernetShuntMplsBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (MPLS)" + + ::={ethernetShuntMplsBytes 1} + +ethernetShuntMplsBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (MPLS)" + + ::={ethernetShuntMplsBytes 2} + +ethernetShuntMplsBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (MPLS)" + + ::={ethernetShuntMplsBytes 3} + +ethernetShuntEoMplsPackets OBJECT IDENTIFIER ::={ethernet 26} + +ethernetShuntEoMplsPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (EoMPLS)" + + ::={ethernetShuntEoMplsPackets 1} + +ethernetShuntEoMplsPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (EoMPLS)" + + ::={ethernetShuntEoMplsPackets 2} + +ethernetShuntEoMplsPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (EoMPLS)" + + ::={ethernetShuntEoMplsPackets 3} + +ethernetShuntEoMplsBytes OBJECT IDENTIFIER ::={ethernet 27} + +ethernetShuntEoMplsBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (EoMPLS)" + + ::={ethernetShuntEoMplsBytes 1} + +ethernetShuntEoMplsBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (EoMPLS)" + + ::={ethernetShuntEoMplsBytes 2} + +ethernetShuntEoMplsBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (EoMPLS)" + + ::={ethernetShuntEoMplsBytes 3} + +ethernetShuntDot1qPackets OBJECT IDENTIFIER ::={ethernet 28} + +ethernetShuntDot1qPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (Dot1q)" + + ::={ethernetShuntDot1qPackets 1} + +ethernetShuntDot1qPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (Dot1q)" + + ::={ethernetShuntDot1qPackets 2} + +ethernetShuntDot1qPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (Dot1q)" + + ::={ethernetShuntDot1qPackets 3} + +ethernetShuntDot1qBytes OBJECT IDENTIFIER ::={ethernet 29} + +ethernetShuntDot1qBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (Dot1q)" + + ::={ethernetShuntDot1qBytes 1} + +ethernetShuntDot1qBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (Dot1q)" + + ::={ethernetShuntDot1qBytes 2} + +ethernetShuntDot1qBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (Dot1q)" + + ::={ethernetShuntDot1qBytes 3} + +ipv4 OBJECT IDENTIFIER ::={sysdiag 32} + +ipv4Packets OBJECT IDENTIFIER ::={ipv4 1} + +ipv4PacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={ipv4Packets 1} + +ipv4PacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={ipv4Packets 2} + +ipv4PacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={ipv4Packets 3} + +ipv4Bytes OBJECT IDENTIFIER ::={ipv4 2} + +ipv4BytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX data" + + ::={ipv4Bytes 1} + +ipv4BytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX data" + + ::={ipv4Bytes 2} + +ipv4BytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX data" + + ::={ipv4Bytes 3} + +ipv4RefusedShort OBJECT IDENTIFIER ::={ipv4 3} + +ipv4RefusedShortVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (packet is too short)" + + ::={ipv4RefusedShort 1} + +ipv4RefusedShortMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (packet is too short)" + + ::={ipv4RefusedShort 2} + +ipv4RefusedShortMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (packet is too short)" + + ::={ipv4RefusedShort 3} + +ipv4RefusedVersion OBJECT IDENTIFIER ::={ipv4 4} + +ipv4RefusedVersionVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (invalid version)" + + ::={ipv4RefusedVersion 1} + +ipv4RefusedVersionMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (invalid version)" + + ::={ipv4RefusedVersion 2} + +ipv4RefusedVersionMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (invalid version)" + + ::={ipv4RefusedVersion 3} + +ipv4RefusedSelf OBJECT IDENTIFIER ::={ipv4 5} + +ipv4RefusedSelfVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (src == dest)" + + ::={ipv4RefusedSelf 1} + +ipv4RefusedSelfMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (src == dest)" + + ::={ipv4RefusedSelf 2} + +ipv4RefusedSelfMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (src == dest)" + + ::={ipv4RefusedSelf 3} + +ipv4Unfragmented OBJECT IDENTIFIER ::={ipv4 6} + +ipv4UnfragmentedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Unfragmented packets" + + ::={ipv4Unfragmented 1} + +ipv4UnfragmentedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Unfragmented packets" + + ::={ipv4Unfragmented 2} + +ipv4UnfragmentedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Unfragmented packets" + + ::={ipv4Unfragmented 3} + +ipv4Fragmented OBJECT IDENTIFIER ::={ipv4 7} + +ipv4FragmentedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packet fragments" + + ::={ipv4Fragmented 1} + +ipv4FragmentedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packet fragments" + + ::={ipv4Fragmented 2} + +ipv4FragmentedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packet fragments" + + ::={ipv4Fragmented 3} + +ipv4Forwarded OBJECT IDENTIFIER ::={ipv4 8} + +ipv4ForwardedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={ipv4Forwarded 1} + +ipv4ForwardedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={ipv4Forwarded 2} + +ipv4ForwardedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={ipv4Forwarded 3} + +ipv4RefusedFwd OBJECT IDENTIFIER ::={ipv4 9} + +ipv4RefusedFwdVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued or dropped packets" + + ::={ipv4RefusedFwd 1} + +ipv4RefusedFwdMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued or dropped packets" + + ::={ipv4RefusedFwd 2} + +ipv4RefusedFwdMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued or dropped packets" + + ::={ipv4RefusedFwd 3} + +ipv4FragmentedIds OBJECT IDENTIFIER ::={ipv4 10} + +ipv4FragmentedIdsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment ids" + + ::={ipv4FragmentedIds 1} + +ipv4FragmentedIdsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment ids" + + ::={ipv4FragmentedIds 3} + +ipv4Fragments OBJECT IDENTIFIER ::={ipv4 11} + +ipv4FragmentsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragments in queue" + + ::={ipv4Fragments 1} + +ipv4FragmentsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragments in queue" + + ::={ipv4Fragments 3} + +ipv4FragmentHeadersUsed OBJECT IDENTIFIER ::={ipv4 12} + +ipv4FragmentHeadersUsedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment headers" + + ::={ipv4FragmentHeadersUsed 1} + +ipv4FragmentHeadersUsedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment headers" + + ::={ipv4FragmentHeadersUsed 3} + +ipv4Runtime OBJECT IDENTIFIER ::={ipv4 13} + +ipv4RuntimeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet" + + ::={ipv4Runtime 1} + +ipv4RuntimeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet" + + ::={ipv4Runtime 3} + +ipv4RefusedOof OBJECT IDENTIFIER ::={ipv4 14} + +ipv4RefusedOofVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (out of fragments)" + + ::={ipv4RefusedOof 1} + +ipv4RefusedOofMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (out of fragments)" + + ::={ipv4RefusedOof 2} + +ipv4RefusedOofMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (out of fragments)" + + ::={ipv4RefusedOof 3} + +ipv4FragmentAllocationFailures OBJECT IDENTIFIER ::={ipv4 15} + +ipv4FragmentAllocationFailuresVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment allocation failures" + + ::={ipv4FragmentAllocationFailures 1} + +ipv4FragmentAllocationFailuresMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment allocation failures" + + ::={ipv4FragmentAllocationFailures 2} + +ipv4FragmentAllocationFailuresMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment allocation failures" + + ::={ipv4FragmentAllocationFailures 3} + +ipv4FragmentReassFail OBJECT IDENTIFIER ::={ipv4 16} + +ipv4FragmentReassFailVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment reassembly failures" + + ::={ipv4FragmentReassFail 1} + +ipv4FragmentReassFailMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment reassembly failures" + + ::={ipv4FragmentReassFail 2} + +ipv4FragmentReassFailMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment reassembly failures" + + ::={ipv4FragmentReassFail 3} + +ipv4RefusedFilter OBJECT IDENTIFIER ::={ipv4 17} + +ipv4RefusedFilterVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused by lowlevel filter" + + ::={ipv4RefusedFilter 1} + +ipv4RefusedFilterMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused by lowlevel filter" + + ::={ipv4RefusedFilter 2} + +ipv4RefusedFilterMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused by lowlevel filter" + + ::={ipv4RefusedFilter 3} + +ipv4Heavy OBJECT IDENTIFIER ::={ipv4 18} + +ipv4HeavyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy cycle packets" + + ::={ipv4Heavy 1} + +ipv4HeavyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy cycle packets" + + ::={ipv4Heavy 2} + +ipv4HeavyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy cycle packets" + + ::={ipv4Heavy 3} + +ipv4FragmentTooNoisy OBJECT IDENTIFIER ::={ipv4 19} + +ipv4FragmentTooNoisyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused (too many fragments)" + + ::={ipv4FragmentTooNoisy 1} + +ipv4FragmentTooNoisyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused (too many fragments)" + + ::={ipv4FragmentTooNoisy 2} + +ipv4FragmentTooNoisyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused (too many fragments)" + + ::={ipv4FragmentTooNoisy 3} + +ipv4Reassembled OBJECT IDENTIFIER ::={ipv4 20} + +ipv4ReassembledVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Reassembled packets" + + ::={ipv4Reassembled 1} + +ipv4ReassembledMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Reassembled packets" + + ::={ipv4Reassembled 2} + +ipv4ReassembledMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Reassembled packets" + + ::={ipv4Reassembled 3} + +ipv4FragmentDrops OBJECT IDENTIFIER ::={ipv4 21} + +ipv4FragmentDropsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dropped fragments (timeout/LRU)" + + ::={ipv4FragmentDrops 1} + +ipv4FragmentDropsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dropped fragments (timeout/LRU)" + + ::={ipv4FragmentDrops 2} + +ipv4FragmentDropsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dropped fragments (timeout/LRU)" + + ::={ipv4FragmentDrops 3} + +ipv4ShuntAddressPackets OBJECT IDENTIFIER ::={ipv4 35} + +ipv4ShuntAddressPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (address)" + + ::={ipv4ShuntAddressPackets 1} + +ipv4ShuntAddressPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (address)" + + ::={ipv4ShuntAddressPackets 2} + +ipv4ShuntAddressPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (address)" + + ::={ipv4ShuntAddressPackets 3} + +ipv4ShuntAddressBytes OBJECT IDENTIFIER ::={ipv4 36} + +ipv4ShuntAddressBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (address)" + + ::={ipv4ShuntAddressBytes 1} + +ipv4ShuntAddressBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (address)" + + ::={ipv4ShuntAddressBytes 2} + +ipv4ShuntAddressBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (address)" + + ::={ipv4ShuntAddressBytes 3} + +ipv4ShuntProtoPackets OBJECT IDENTIFIER ::={ipv4 37} + +ipv4ShuntProtoPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (protocol)" + + ::={ipv4ShuntProtoPackets 1} + +ipv4ShuntProtoPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (protocol)" + + ::={ipv4ShuntProtoPackets 2} + +ipv4ShuntProtoPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (protocol)" + + ::={ipv4ShuntProtoPackets 3} + +ipv4ShuntProtoBytes OBJECT IDENTIFIER ::={ipv4 38} + +ipv4ShuntProtoBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (protocol)" + + ::={ipv4ShuntProtoBytes 1} + +ipv4ShuntProtoBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (protocol)" + + ::={ipv4ShuntProtoBytes 2} + +ipv4ShuntProtoBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (protocol)" + + ::={ipv4ShuntProtoBytes 3} + +ipv6 OBJECT IDENTIFIER ::={sysdiag 126} + +ipv6Packets OBJECT IDENTIFIER ::={ipv6 1} + +ipv6PacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={ipv6Packets 1} + +ipv6PacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={ipv6Packets 2} + +ipv6PacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={ipv6Packets 3} + +ipv6Bytes OBJECT IDENTIFIER ::={ipv6 2} + +ipv6BytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX data" + + ::={ipv6Bytes 1} + +ipv6BytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX data" + + ::={ipv6Bytes 2} + +ipv6BytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX data" + + ::={ipv6Bytes 3} + +ipv6RefusedShort OBJECT IDENTIFIER ::={ipv6 3} + +ipv6RefusedShortVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (packet is too short)" + + ::={ipv6RefusedShort 1} + +ipv6RefusedShortMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (packet is too short)" + + ::={ipv6RefusedShort 2} + +ipv6RefusedShortMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (packet is too short)" + + ::={ipv6RefusedShort 3} + +ipv6RefusedVersion OBJECT IDENTIFIER ::={ipv6 4} + +ipv6RefusedVersionVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (invalid version)" + + ::={ipv6RefusedVersion 1} + +ipv6RefusedVersionMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (invalid version)" + + ::={ipv6RefusedVersion 2} + +ipv6RefusedVersionMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (invalid version)" + + ::={ipv6RefusedVersion 3} + +ipv6RefusedSelf OBJECT IDENTIFIER ::={ipv6 5} + +ipv6RefusedSelfVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (src == dest)" + + ::={ipv6RefusedSelf 1} + +ipv6RefusedSelfMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (src == dest)" + + ::={ipv6RefusedSelf 2} + +ipv6RefusedSelfMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (src == dest)" + + ::={ipv6RefusedSelf 3} + +ipv6Unfragmented OBJECT IDENTIFIER ::={ipv6 6} + +ipv6UnfragmentedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Unfragmented packets" + + ::={ipv6Unfragmented 1} + +ipv6UnfragmentedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Unfragmented packets" + + ::={ipv6Unfragmented 2} + +ipv6UnfragmentedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Unfragmented packets" + + ::={ipv6Unfragmented 3} + +ipv6Fragmented OBJECT IDENTIFIER ::={ipv6 7} + +ipv6FragmentedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packet fragments" + + ::={ipv6Fragmented 1} + +ipv6FragmentedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packet fragments" + + ::={ipv6Fragmented 2} + +ipv6FragmentedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packet fragments" + + ::={ipv6Fragmented 3} + +ipv6Forwarded OBJECT IDENTIFIER ::={ipv6 8} + +ipv6ForwardedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={ipv6Forwarded 1} + +ipv6ForwardedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={ipv6Forwarded 2} + +ipv6ForwardedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={ipv6Forwarded 3} + +ipv6RefusedFwd OBJECT IDENTIFIER ::={ipv6 9} + +ipv6RefusedFwdVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued or dropped packets" + + ::={ipv6RefusedFwd 1} + +ipv6RefusedFwdMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued or dropped packets" + + ::={ipv6RefusedFwd 2} + +ipv6RefusedFwdMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued or dropped packets" + + ::={ipv6RefusedFwd 3} + +ipv6FragmentedIds OBJECT IDENTIFIER ::={ipv6 10} + +ipv6FragmentedIdsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment ids" + + ::={ipv6FragmentedIds 1} + +ipv6FragmentedIdsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment ids" + + ::={ipv6FragmentedIds 3} + +ipv6Fragments OBJECT IDENTIFIER ::={ipv6 11} + +ipv6FragmentsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragments in queue" + + ::={ipv6Fragments 1} + +ipv6FragmentsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragments in queue" + + ::={ipv6Fragments 3} + +ipv6FragmentHeadersUsed OBJECT IDENTIFIER ::={ipv6 12} + +ipv6FragmentHeadersUsedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment headers" + + ::={ipv6FragmentHeadersUsed 1} + +ipv6FragmentHeadersUsedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment headers" + + ::={ipv6FragmentHeadersUsed 3} + +ipv6Runtime OBJECT IDENTIFIER ::={ipv6 13} + +ipv6RuntimeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet" + + ::={ipv6Runtime 1} + +ipv6RuntimeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet" + + ::={ipv6Runtime 3} + +ipv6RefusedOof OBJECT IDENTIFIER ::={ipv6 14} + +ipv6RefusedOofVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (out of fragments)" + + ::={ipv6RefusedOof 1} + +ipv6RefusedOofMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (out of fragments)" + + ::={ipv6RefusedOof 2} + +ipv6RefusedOofMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (out of fragments)" + + ::={ipv6RefusedOof 3} + +ipv6FragmentAllocationFailures OBJECT IDENTIFIER ::={ipv6 15} + +ipv6FragmentAllocationFailuresVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment allocation failures" + + ::={ipv6FragmentAllocationFailures 1} + +ipv6FragmentAllocationFailuresMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment allocation failures" + + ::={ipv6FragmentAllocationFailures 2} + +ipv6FragmentAllocationFailuresMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment allocation failures" + + ::={ipv6FragmentAllocationFailures 3} + +ipv6FragmentReassFail OBJECT IDENTIFIER ::={ipv6 16} + +ipv6FragmentReassFailVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment reassembly failures" + + ::={ipv6FragmentReassFail 1} + +ipv6FragmentReassFailMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment reassembly failures" + + ::={ipv6FragmentReassFail 2} + +ipv6FragmentReassFailMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment reassembly failures" + + ::={ipv6FragmentReassFail 3} + +ipv6RefusedFilter OBJECT IDENTIFIER ::={ipv6 17} + +ipv6RefusedFilterVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused by lowlevel filter" + + ::={ipv6RefusedFilter 1} + +ipv6RefusedFilterMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused by lowlevel filter" + + ::={ipv6RefusedFilter 2} + +ipv6RefusedFilterMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused by lowlevel filter" + + ::={ipv6RefusedFilter 3} + +ipv6Heavy OBJECT IDENTIFIER ::={ipv6 18} + +ipv6HeavyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy cycle packets" + + ::={ipv6Heavy 1} + +ipv6HeavyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy cycle packets" + + ::={ipv6Heavy 2} + +ipv6HeavyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy cycle packets" + + ::={ipv6Heavy 3} + +ipv6FragmentTooNoisy OBJECT IDENTIFIER ::={ipv6 19} + +ipv6FragmentTooNoisyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused (too many fragments)" + + ::={ipv6FragmentTooNoisy 1} + +ipv6FragmentTooNoisyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused (too many fragments)" + + ::={ipv6FragmentTooNoisy 2} + +ipv6FragmentTooNoisyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused (too many fragments)" + + ::={ipv6FragmentTooNoisy 3} + +ipv6Reassembled OBJECT IDENTIFIER ::={ipv6 20} + +ipv6ReassembledVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Reassembled packets" + + ::={ipv6Reassembled 1} + +ipv6ReassembledMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Reassembled packets" + + ::={ipv6Reassembled 2} + +ipv6ReassembledMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Reassembled packets" + + ::={ipv6Reassembled 3} + +ipv6FragmentOverlap OBJECT IDENTIFIER ::={ipv6 21} + +ipv6FragmentOverlapVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Overlapping Fragments" + + ::={ipv6FragmentOverlap 1} + +ipv6FragmentOverlapMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Overlapping Fragments" + + ::={ipv6FragmentOverlap 2} + +ipv6FragmentOverlapMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Overlapping Fragments" + + ::={ipv6FragmentOverlap 3} + +ipv6ExtDest OBJECT IDENTIFIER ::={ipv6 22} + +ipv6ExtDestVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Destination Ext. Headers" + + ::={ipv6ExtDest 1} + +ipv6ExtDestMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Destination Ext. Headers" + + ::={ipv6ExtDest 2} + +ipv6ExtDestMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Destination Ext. Headers" + + ::={ipv6ExtDest 3} + +ipv6ExtHbh OBJECT IDENTIFIER ::={ipv6 23} + +ipv6ExtHbhVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hob-by-hop Ext. Headers" + + ::={ipv6ExtHbh 1} + +ipv6ExtHbhMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hob-by-hop Ext. Headers" + + ::={ipv6ExtHbh 2} + +ipv6ExtHbhMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hob-by-hop Ext. Headers" + + ::={ipv6ExtHbh 3} + +ipv6ExtRoute OBJECT IDENTIFIER ::={ipv6 24} + +ipv6ExtRouteVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Route Ext, Headers" + + ::={ipv6ExtRoute 1} + +ipv6ExtRouteMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Route Ext, Headers" + + ::={ipv6ExtRoute 2} + +ipv6ExtRouteMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Route Ext, Headers" + + ::={ipv6ExtRoute 3} + +ipv6ExtInvl OBJECT IDENTIFIER ::={ipv6 25} + +ipv6ExtInvlVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Invalid Ext. Headers" + + ::={ipv6ExtInvl 1} + +ipv6ExtInvlMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Invalid Ext. Headers" + + ::={ipv6ExtInvl 2} + +ipv6ExtInvlMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Invalid Ext. Headers" + + ::={ipv6ExtInvl 3} + +ipv6FragnentTimeout OBJECT IDENTIFIER ::={ipv6 26} + +ipv6FragnentTimeoutVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Reassembly Timeout" + + ::={ipv6FragnentTimeout 1} + +ipv6FragnentTimeoutMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Reassembly Timeout" + + ::={ipv6FragnentTimeout 2} + +ipv6FragnentTimeoutMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Reassembly Timeout" + + ::={ipv6FragnentTimeout 3} + +ipv6FragmentDrops OBJECT IDENTIFIER ::={ipv6 27} + +ipv6FragmentDropsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dropped fragments (timeout/LRU)" + + ::={ipv6FragmentDrops 1} + +ipv6FragmentDropsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dropped fragments (timeout/LRU)" + + ::={ipv6FragmentDrops 2} + +ipv6FragmentDropsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dropped fragments (timeout/LRU)" + + ::={ipv6FragmentDrops 3} + +ipv6ShuntAddressPackets OBJECT IDENTIFIER ::={ipv6 28} + +ipv6ShuntAddressPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (address)" + + ::={ipv6ShuntAddressPackets 1} + +ipv6ShuntAddressPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (address)" + + ::={ipv6ShuntAddressPackets 2} + +ipv6ShuntAddressPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (address)" + + ::={ipv6ShuntAddressPackets 3} + +ipv6ShuntAddressBytes OBJECT IDENTIFIER ::={ipv6 29} + +ipv6ShuntAddressBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (address)" + + ::={ipv6ShuntAddressBytes 1} + +ipv6ShuntAddressBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (address)" + + ::={ipv6ShuntAddressBytes 2} + +ipv6ShuntAddressBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (address)" + + ::={ipv6ShuntAddressBytes 3} + +ipv6ShuntProtoPackets OBJECT IDENTIFIER ::={ipv6 30} + +ipv6ShuntProtoPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (protocol)" + + ::={ipv6ShuntProtoPackets 1} + +ipv6ShuntProtoPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (protocol)" + + ::={ipv6ShuntProtoPackets 2} + +ipv6ShuntProtoPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (protocol)" + + ::={ipv6ShuntProtoPackets 3} + +ipv6ShuntProtoBytes OBJECT IDENTIFIER ::={ipv6 31} + +ipv6ShuntProtoBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (protocol)" + + ::={ipv6ShuntProtoBytes 1} + +ipv6ShuntProtoBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (protocol)" + + ::={ipv6ShuntProtoBytes 2} + +ipv6ShuntProtoBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (protocol)" + + ::={ipv6ShuntProtoBytes 3} + +ipv6FragInFrag OBJECT IDENTIFIER ::={ipv6 32} + +ipv6FragInFragVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragments in Fragments" + + ::={ipv6FragInFrag 1} + +ipv6FragInFragMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragments in Fragments" + + ::={ipv6FragInFrag 2} + +ipv6FragInFragMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragments in Fragments" + + ::={ipv6FragInFrag 3} + +tcpv4 OBJECT IDENTIFIER ::={sysdiag 48} + +tcpv4Packets OBJECT IDENTIFIER ::={tcpv4 1} + +tcpv4PacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={tcpv4Packets 1} + +tcpv4PacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={tcpv4Packets 2} + +tcpv4PacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={tcpv4Packets 3} + +tcpv4Bytes OBJECT IDENTIFIER ::={tcpv4 2} + +tcpv4BytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX bytes" + + ::={tcpv4Bytes 1} + +tcpv4BytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX bytes" + + ::={tcpv4Bytes 2} + +tcpv4BytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX bytes" + + ::={tcpv4Bytes 3} + +tcpv4Forwarded OBJECT IDENTIFIER ::={tcpv4 3} + +tcpv4ForwardedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={tcpv4Forwarded 1} + +tcpv4ForwardedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={tcpv4Forwarded 2} + +tcpv4ForwardedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={tcpv4Forwarded 3} + +tcpv4CreateAttempts OBJECT IDENTIFIER ::={tcpv4 4} + +tcpv4CreateAttemptsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connection create attempts" + + ::={tcpv4CreateAttempts 1} + +tcpv4CreateAttemptsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connection create attempts" + + ::={tcpv4CreateAttempts 2} + +tcpv4CreateAttemptsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connection create attempts" + + ::={tcpv4CreateAttempts 3} + +tcpv4Created OBJECT IDENTIFIER ::={tcpv4 5} + +tcpv4CreatedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections created" + + ::={tcpv4Created 1} + +tcpv4CreatedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections created" + + ::={tcpv4Created 2} + +tcpv4CreatedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections created" + + ::={tcpv4Created 3} + +tcpv4RefusedRuleset OBJECT IDENTIFIER ::={tcpv4 6} + +tcpv4RefusedRulesetVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (ruleset)" + + ::={tcpv4RefusedRuleset 1} + +tcpv4RefusedRulesetMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (ruleset)" + + ::={tcpv4RefusedRuleset 2} + +tcpv4RefusedRulesetMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (ruleset)" + + ::={tcpv4RefusedRuleset 3} + +tcpv4RefusedShort OBJECT IDENTIFIER ::={tcpv4 7} + +tcpv4RefusedShortVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (short)" + + ::={tcpv4RefusedShort 1} + +tcpv4RefusedShortMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (short)" + + ::={tcpv4RefusedShort 2} + +tcpv4RefusedShortMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (short)" + + ::={tcpv4RefusedShort 3} + +tcpv4RefusedBroadcast OBJECT IDENTIFIER ::={tcpv4 8} + +tcpv4RefusedBroadcastVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (broadcast)" + + ::={tcpv4RefusedBroadcast 1} + +tcpv4RefusedBroadcastMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (broadcast)" + + ::={tcpv4RefusedBroadcast 2} + +tcpv4RefusedBroadcastMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (broadcast)" + + ::={tcpv4RefusedBroadcast 3} + +tcpv4RefusedOffset OBJECT IDENTIFIER ::={tcpv4 9} + +tcpv4RefusedOffsetVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (offset)" + + ::={tcpv4RefusedOffset 1} + +tcpv4RefusedOffsetMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (offset)" + + ::={tcpv4RefusedOffset 2} + +tcpv4RefusedOffsetMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (offset)" + + ::={tcpv4RefusedOffset 3} + +tcpv4Rejected OBJECT IDENTIFIER ::={tcpv4 10} + +tcpv4RejectedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rejected packets" + + ::={tcpv4Rejected 1} + +tcpv4RejectedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rejected packets" + + ::={tcpv4Rejected 2} + +tcpv4RejectedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rejected packets" + + ::={tcpv4Rejected 3} + +tcpv4RejectedOld OBJECT IDENTIFIER ::={tcpv4 11} + +tcpv4RejectedOldVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rejected packets (old)" + + ::={tcpv4RejectedOld 1} + +tcpv4RejectedOldMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rejected packets (old)" + + ::={tcpv4RejectedOld 2} + +tcpv4RejectedOldMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rejected packets (old)" + + ::={tcpv4RejectedOld 3} + +tcpv4Lostsync OBJECT IDENTIFIER ::={tcpv4 12} + +tcpv4LostsyncVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync connections" + + ::={tcpv4Lostsync 1} + +tcpv4LostsyncMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync connections" + + ::={tcpv4Lostsync 3} + +tcpv4OldPackets OBJECT IDENTIFIER ::={tcpv4 13} + +tcpv4OldPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old packets" + + ::={tcpv4OldPackets 1} + +tcpv4OldPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old packets" + + ::={tcpv4OldPackets 2} + +tcpv4OldPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old packets" + + ::={tcpv4OldPackets 3} + +tcpv4GoodputPackets OBJECT IDENTIFIER ::={tcpv4 14} + +tcpv4GoodputPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Goodput packets" + + ::={tcpv4GoodputPackets 1} + +tcpv4GoodputPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Goodput packets" + + ::={tcpv4GoodputPackets 2} + +tcpv4GoodputPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Goodput packets" + + ::={tcpv4GoodputPackets 3} + +tcpv4GoodputBytes OBJECT IDENTIFIER ::={tcpv4 15} + +tcpv4GoodputBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Goodput bytes" + + ::={tcpv4GoodputBytes 1} + +tcpv4GoodputBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Goodput bytes" + + ::={tcpv4GoodputBytes 2} + +tcpv4GoodputBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Goodput bytes" + + ::={tcpv4GoodputBytes 3} + +tcpv4Fragments OBJECT IDENTIFIER ::={tcpv4 16} + +tcpv4FragmentsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Saved fragments" + + ::={tcpv4Fragments 1} + +tcpv4FragmentsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Saved fragments" + + ::={tcpv4Fragments 3} + +tcpv4FragmentsPayload OBJECT IDENTIFIER ::={tcpv4 17} + +tcpv4FragmentsPayloadVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Saved fragments with payload" + + ::={tcpv4FragmentsPayload 1} + +tcpv4FragmentsPayloadMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Saved fragments with payload" + + ::={tcpv4FragmentsPayload 3} + +tcpv4FragmentsDropped OBJECT IDENTIFIER ::={tcpv4 18} + +tcpv4FragmentsDroppedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ignored fragments" + + ::={tcpv4FragmentsDropped 1} + +tcpv4FragmentsDroppedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ignored fragments" + + ::={tcpv4FragmentsDropped 2} + +tcpv4FragmentsDroppedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ignored fragments" + + ::={tcpv4FragmentsDropped 3} + +tcpv4PacketAllocFail OBJECT IDENTIFIER ::={tcpv4 19} + +tcpv4PacketAllocFailVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packet allocation failures" + + ::={tcpv4PacketAllocFail 1} + +tcpv4PacketAllocFailMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packet allocation failures" + + ::={tcpv4PacketAllocFail 2} + +tcpv4PacketAllocFailMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packet allocation failures" + + ::={tcpv4PacketAllocFail 3} + +tcpv4Runtime OBJECT IDENTIFIER ::={tcpv4 20} + +tcpv4RuntimeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (normal)" + + ::={tcpv4Runtime 1} + +tcpv4RuntimeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (normal)" + + ::={tcpv4Runtime 3} + +tcpv4RuntimeNew OBJECT IDENTIFIER ::={tcpv4 21} + +tcpv4RuntimeNewVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (SYN)" + + ::={tcpv4RuntimeNew 1} + +tcpv4RuntimeNewMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (SYN)" + + ::={tcpv4RuntimeNew 3} + +tcpv4RuntimeOld OBJECT IDENTIFIER ::={tcpv4 22} + +tcpv4RuntimeOldVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (old connections)" + + ::={tcpv4RuntimeOld 1} + +tcpv4RuntimeOldMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (old connections)" + + ::={tcpv4RuntimeOld 3} + +tcpv4OldGoodput OBJECT IDENTIFIER ::={tcpv4 23} + +tcpv4OldGoodputVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old bytes (goodput)" + + ::={tcpv4OldGoodput 1} + +tcpv4OldGoodputMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old bytes (goodput)" + + ::={tcpv4OldGoodput 2} + +tcpv4OldGoodputMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old bytes (goodput)" + + ::={tcpv4OldGoodput 3} + +tcpv4OldBytes OBJECT IDENTIFIER ::={tcpv4 24} + +tcpv4OldBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old bytes" + + ::={tcpv4OldBytes 1} + +tcpv4OldBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old bytes" + + ::={tcpv4OldBytes 2} + +tcpv4OldBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old bytes" + + ::={tcpv4OldBytes 3} + +tcpv4CorruptOptions OBJECT IDENTIFIER ::={tcpv4 25} + +tcpv4CorruptOptionsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets with corrupt options" + + ::={tcpv4CorruptOptions 1} + +tcpv4CorruptOptionsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets with corrupt options" + + ::={tcpv4CorruptOptions 2} + +tcpv4CorruptOptionsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets with corrupt options" + + ::={tcpv4CorruptOptions 3} + +tcpv4CorruptConn OBJECT IDENTIFIER ::={tcpv4 26} + +tcpv4CorruptConnVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets with corrupt conn" + + ::={tcpv4CorruptConn 1} + +tcpv4CorruptConnMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets with corrupt conn" + + ::={tcpv4CorruptConn 2} + +tcpv4CorruptConnMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets with corrupt conn" + + ::={tcpv4CorruptConn 3} + +tcpv4FragmentedConnections OBJECT IDENTIFIER ::={tcpv4 27} + +tcpv4FragmentedConnectionsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections with fragments" + + ::={tcpv4FragmentedConnections 1} + +tcpv4FragmentedConnectionsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections with fragments" + + ::={tcpv4FragmentedConnections 3} + +tcpv4OutOfWindowPackets OBJECT IDENTIFIER ::={tcpv4 28} + +tcpv4OutOfWindowPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of window packets (ignored)" + + ::={tcpv4OutOfWindowPackets 1} + +tcpv4OutOfWindowPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of window packets (ignored)" + + ::={tcpv4OutOfWindowPackets 2} + +tcpv4OutOfWindowPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of window packets (ignored)" + + ::={tcpv4OutOfWindowPackets 3} + +tcpv4RefusedFilter OBJECT IDENTIFIER ::={tcpv4 29} + +tcpv4RefusedFilterVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused by lowlevel filter" + + ::={tcpv4RefusedFilter 1} + +tcpv4RefusedFilterMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused by lowlevel filter" + + ::={tcpv4RefusedFilter 2} + +tcpv4RefusedFilterMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused by lowlevel filter" + + ::={tcpv4RefusedFilter 3} + +tcpv4NewHeavy OBJECT IDENTIFIER ::={tcpv4 30} + +tcpv4NewHeavyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy new packets" + + ::={tcpv4NewHeavy 1} + +tcpv4NewHeavyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy new packets" + + ::={tcpv4NewHeavy 2} + +tcpv4NewHeavyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy new packets" + + ::={tcpv4NewHeavy 3} + +tcpv4Heavy OBJECT IDENTIFIER ::={tcpv4 31} + +tcpv4HeavyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy packets" + + ::={tcpv4Heavy 1} + +tcpv4HeavyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy packets" + + ::={tcpv4Heavy 2} + +tcpv4HeavyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy packets" + + ::={tcpv4Heavy 3} + +tcpv4SynExisting OBJECT IDENTIFIER ::={tcpv4 32} + +tcpv4SynExistingVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "SYN packets for existing connections" + + ::={tcpv4SynExisting 1} + +tcpv4SynExistingMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "SYN packets for existing connections" + + ::={tcpv4SynExisting 2} + +tcpv4SynExistingMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "SYN packets for existing connections" + + ::={tcpv4SynExisting 3} + +tcpv4FragmentAllocFail OBJECT IDENTIFIER ::={tcpv4 33} + +tcpv4FragmentAllocFailVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment allocation failures" + + ::={tcpv4FragmentAllocFail 1} + +tcpv4FragmentAllocFailMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment allocation failures" + + ::={tcpv4FragmentAllocFail 2} + +tcpv4FragmentAllocFailMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment allocation failures" + + ::={tcpv4FragmentAllocFail 3} + +tcpv4EnqueuedFragments OBJECT IDENTIFIER ::={tcpv4 34} + +tcpv4EnqueuedFragmentsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued fragments" + + ::={tcpv4EnqueuedFragments 1} + +tcpv4EnqueuedFragmentsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued fragments" + + ::={tcpv4EnqueuedFragments 2} + +tcpv4EnqueuedFragmentsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued fragments" + + ::={tcpv4EnqueuedFragments 3} + +tcpv4DequeuedFragments OBJECT IDENTIFIER ::={tcpv4 35} + +tcpv4DequeuedFragmentsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeued fragments" + + ::={tcpv4DequeuedFragments 1} + +tcpv4DequeuedFragmentsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeued fragments" + + ::={tcpv4DequeuedFragments 2} + +tcpv4DequeuedFragmentsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeued fragments" + + ::={tcpv4DequeuedFragments 3} + +tcpv4DiscardedFragments OBJECT IDENTIFIER ::={tcpv4 36} + +tcpv4DiscardedFragmentsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Discarded fragments" + + ::={tcpv4DiscardedFragments 1} + +tcpv4DiscardedFragmentsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Discarded fragments" + + ::={tcpv4DiscardedFragments 2} + +tcpv4DiscardedFragmentsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Discarded fragments" + + ::={tcpv4DiscardedFragments 3} + +tcpv4EmptyPackets OBJECT IDENTIFIER ::={tcpv4 37} + +tcpv4EmptyPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets without payload" + + ::={tcpv4EmptyPackets 1} + +tcpv4EmptyPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets without payload" + + ::={tcpv4EmptyPackets 2} + +tcpv4EmptyPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets without payload" + + ::={tcpv4EmptyPackets 3} + +tcpv4OosPackets OBJECT IDENTIFIER ::={tcpv4 38} + +tcpv4OosPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync packets" + + ::={tcpv4OosPackets 1} + +tcpv4OosPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync packets" + + ::={tcpv4OosPackets 2} + +tcpv4OosPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync packets" + + ::={tcpv4OosPackets 3} + +tcpv4OosBytes OBJECT IDENTIFIER ::={tcpv4 39} + +tcpv4OosBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync bytes" + + ::={tcpv4OosBytes 1} + +tcpv4OosBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync bytes" + + ::={tcpv4OosBytes 2} + +tcpv4OosBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync bytes" + + ::={tcpv4OosBytes 3} + +tcpv4Retransmits OBJECT IDENTIFIER ::={tcpv4 40} + +tcpv4RetransmitsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Retransmitted packets" + + ::={tcpv4Retransmits 1} + +tcpv4RetransmitsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Retransmitted packets" + + ::={tcpv4Retransmits 2} + +tcpv4RetransmitsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Retransmitted packets" + + ::={tcpv4Retransmits 3} + +tcpv6 OBJECT IDENTIFIER ::={sysdiag 127} + +tcpv6Packets OBJECT IDENTIFIER ::={tcpv6 1} + +tcpv6PacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={tcpv6Packets 1} + +tcpv6PacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={tcpv6Packets 2} + +tcpv6PacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={tcpv6Packets 3} + +tcpv6Bytes OBJECT IDENTIFIER ::={tcpv6 2} + +tcpv6BytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX bytes" + + ::={tcpv6Bytes 1} + +tcpv6BytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX bytes" + + ::={tcpv6Bytes 2} + +tcpv6BytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX bytes" + + ::={tcpv6Bytes 3} + +tcpv6Forwarded OBJECT IDENTIFIER ::={tcpv6 3} + +tcpv6ForwardedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={tcpv6Forwarded 1} + +tcpv6ForwardedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={tcpv6Forwarded 2} + +tcpv6ForwardedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={tcpv6Forwarded 3} + +tcpv6CreateAttempts OBJECT IDENTIFIER ::={tcpv6 4} + +tcpv6CreateAttemptsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connection create attempts" + + ::={tcpv6CreateAttempts 1} + +tcpv6CreateAttemptsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connection create attempts" + + ::={tcpv6CreateAttempts 2} + +tcpv6CreateAttemptsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connection create attempts" + + ::={tcpv6CreateAttempts 3} + +tcpv6Created OBJECT IDENTIFIER ::={tcpv6 5} + +tcpv6CreatedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections created" + + ::={tcpv6Created 1} + +tcpv6CreatedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections created" + + ::={tcpv6Created 2} + +tcpv6CreatedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections created" + + ::={tcpv6Created 3} + +tcpv6RefusedRuleset OBJECT IDENTIFIER ::={tcpv6 6} + +tcpv6RefusedRulesetVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (ruleset)" + + ::={tcpv6RefusedRuleset 1} + +tcpv6RefusedRulesetMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (ruleset)" + + ::={tcpv6RefusedRuleset 2} + +tcpv6RefusedRulesetMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (ruleset)" + + ::={tcpv6RefusedRuleset 3} + +tcpv6RefusedShort OBJECT IDENTIFIER ::={tcpv6 7} + +tcpv6RefusedShortVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (short)" + + ::={tcpv6RefusedShort 1} + +tcpv6RefusedShortMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (short)" + + ::={tcpv6RefusedShort 2} + +tcpv6RefusedShortMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (short)" + + ::={tcpv6RefusedShort 3} + +tcpv6RefusedBroadcast OBJECT IDENTIFIER ::={tcpv6 8} + +tcpv6RefusedBroadcastVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (broadcast)" + + ::={tcpv6RefusedBroadcast 1} + +tcpv6RefusedBroadcastMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (broadcast)" + + ::={tcpv6RefusedBroadcast 2} + +tcpv6RefusedBroadcastMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (broadcast)" + + ::={tcpv6RefusedBroadcast 3} + +tcpv6RefusedOffset OBJECT IDENTIFIER ::={tcpv6 9} + +tcpv6RefusedOffsetVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (offset)" + + ::={tcpv6RefusedOffset 1} + +tcpv6RefusedOffsetMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (offset)" + + ::={tcpv6RefusedOffset 2} + +tcpv6RefusedOffsetMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused (offset)" + + ::={tcpv6RefusedOffset 3} + +tcpv6Rejected OBJECT IDENTIFIER ::={tcpv6 10} + +tcpv6RejectedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rejected packets" + + ::={tcpv6Rejected 1} + +tcpv6RejectedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rejected packets" + + ::={tcpv6Rejected 2} + +tcpv6RejectedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rejected packets" + + ::={tcpv6Rejected 3} + +tcpv6RejectedOld OBJECT IDENTIFIER ::={tcpv6 11} + +tcpv6RejectedOldVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rejected packets (old)" + + ::={tcpv6RejectedOld 1} + +tcpv6RejectedOldMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rejected packets (old)" + + ::={tcpv6RejectedOld 2} + +tcpv6RejectedOldMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rejected packets (old)" + + ::={tcpv6RejectedOld 3} + +tcpv6Lostsync OBJECT IDENTIFIER ::={tcpv6 12} + +tcpv6LostsyncVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync connections" + + ::={tcpv6Lostsync 1} + +tcpv6LostsyncMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync connections" + + ::={tcpv6Lostsync 3} + +tcpv6OldPackets OBJECT IDENTIFIER ::={tcpv6 13} + +tcpv6OldPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old packets" + + ::={tcpv6OldPackets 1} + +tcpv6OldPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old packets" + + ::={tcpv6OldPackets 2} + +tcpv6OldPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old packets" + + ::={tcpv6OldPackets 3} + +tcpv6GoodputPackets OBJECT IDENTIFIER ::={tcpv6 14} + +tcpv6GoodputPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Goodput packets" + + ::={tcpv6GoodputPackets 1} + +tcpv6GoodputPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Goodput packets" + + ::={tcpv6GoodputPackets 2} + +tcpv6GoodputPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Goodput packets" + + ::={tcpv6GoodputPackets 3} + +tcpv6GoodputBytes OBJECT IDENTIFIER ::={tcpv6 15} + +tcpv6GoodputBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Goodput bytes" + + ::={tcpv6GoodputBytes 1} + +tcpv6GoodputBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Goodput bytes" + + ::={tcpv6GoodputBytes 2} + +tcpv6GoodputBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Goodput bytes" + + ::={tcpv6GoodputBytes 3} + +tcpv6Fragments OBJECT IDENTIFIER ::={tcpv6 16} + +tcpv6FragmentsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Saved fragments" + + ::={tcpv6Fragments 1} + +tcpv6FragmentsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Saved fragments" + + ::={tcpv6Fragments 3} + +tcpv6FragmentsPayload OBJECT IDENTIFIER ::={tcpv6 17} + +tcpv6FragmentsPayloadVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Saved fragments with payload" + + ::={tcpv6FragmentsPayload 1} + +tcpv6FragmentsPayloadMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Saved fragments with payload" + + ::={tcpv6FragmentsPayload 3} + +tcpv6FragmentsDropped OBJECT IDENTIFIER ::={tcpv6 18} + +tcpv6FragmentsDroppedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ignored fragments" + + ::={tcpv6FragmentsDropped 1} + +tcpv6FragmentsDroppedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ignored fragments" + + ::={tcpv6FragmentsDropped 2} + +tcpv6FragmentsDroppedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ignored fragments" + + ::={tcpv6FragmentsDropped 3} + +tcpv6PacketAllocFail OBJECT IDENTIFIER ::={tcpv6 19} + +tcpv6PacketAllocFailVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packet allocation failures" + + ::={tcpv6PacketAllocFail 1} + +tcpv6PacketAllocFailMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packet allocation failures" + + ::={tcpv6PacketAllocFail 3} + +tcpv6Runtime OBJECT IDENTIFIER ::={tcpv6 20} + +tcpv6RuntimeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (normal)" + + ::={tcpv6Runtime 1} + +tcpv6RuntimeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (normal)" + + ::={tcpv6Runtime 3} + +tcpv6RuntimeNew OBJECT IDENTIFIER ::={tcpv6 21} + +tcpv6RuntimeNewVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (SYN)" + + ::={tcpv6RuntimeNew 1} + +tcpv6RuntimeNewMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (SYN)" + + ::={tcpv6RuntimeNew 3} + +tcpv6RuntimeOld OBJECT IDENTIFIER ::={tcpv6 22} + +tcpv6RuntimeOldVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (old connections)" + + ::={tcpv6RuntimeOld 1} + +tcpv6RuntimeOldMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (old connections)" + + ::={tcpv6RuntimeOld 3} + +tcpv6OldGoodput OBJECT IDENTIFIER ::={tcpv6 23} + +tcpv6OldGoodputVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old bytes (goodput)" + + ::={tcpv6OldGoodput 1} + +tcpv6OldGoodputMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old bytes (goodput)" + + ::={tcpv6OldGoodput 2} + +tcpv6OldGoodputMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old bytes (goodput)" + + ::={tcpv6OldGoodput 3} + +tcpv6OldBytes OBJECT IDENTIFIER ::={tcpv6 24} + +tcpv6OldBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old bytes" + + ::={tcpv6OldBytes 1} + +tcpv6OldBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old bytes" + + ::={tcpv6OldBytes 2} + +tcpv6OldBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old bytes" + + ::={tcpv6OldBytes 3} + +tcpv6CorruptOptions OBJECT IDENTIFIER ::={tcpv6 25} + +tcpv6CorruptOptionsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets with corrupt options" + + ::={tcpv6CorruptOptions 1} + +tcpv6CorruptOptionsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets with corrupt options" + + ::={tcpv6CorruptOptions 2} + +tcpv6CorruptOptionsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets with corrupt options" + + ::={tcpv6CorruptOptions 3} + +tcpv6CorruptConn OBJECT IDENTIFIER ::={tcpv6 26} + +tcpv6CorruptConnVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets with corrupt conn" + + ::={tcpv6CorruptConn 1} + +tcpv6CorruptConnMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets with corrupt conn" + + ::={tcpv6CorruptConn 2} + +tcpv6CorruptConnMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets with corrupt conn" + + ::={tcpv6CorruptConn 3} + +tcpv6FragmentedConnections OBJECT IDENTIFIER ::={tcpv6 27} + +tcpv6FragmentedConnectionsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections with fragments" + + ::={tcpv6FragmentedConnections 1} + +tcpv6FragmentedConnectionsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections with fragments" + + ::={tcpv6FragmentedConnections 3} + +tcpv6OutOfWindowPackets OBJECT IDENTIFIER ::={tcpv6 28} + +tcpv6OutOfWindowPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of window packets (ignored)" + + ::={tcpv6OutOfWindowPackets 1} + +tcpv6OutOfWindowPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of window packets (ignored)" + + ::={tcpv6OutOfWindowPackets 2} + +tcpv6OutOfWindowPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of window packets (ignored)" + + ::={tcpv6OutOfWindowPackets 3} + +tcpv6RefusedFilter OBJECT IDENTIFIER ::={tcpv6 29} + +tcpv6RefusedFilterVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused by lowlevel filter" + + ::={tcpv6RefusedFilter 1} + +tcpv6RefusedFilterMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused by lowlevel filter" + + ::={tcpv6RefusedFilter 2} + +tcpv6RefusedFilterMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets refused by lowlevel filter" + + ::={tcpv6RefusedFilter 3} + +tcpv6NewHeavy OBJECT IDENTIFIER ::={tcpv6 30} + +tcpv6NewHeavyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy new packets" + + ::={tcpv6NewHeavy 1} + +tcpv6NewHeavyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy new packets" + + ::={tcpv6NewHeavy 2} + +tcpv6NewHeavyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy new packets" + + ::={tcpv6NewHeavy 3} + +tcpv6Heavy OBJECT IDENTIFIER ::={tcpv6 31} + +tcpv6HeavyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy packets" + + ::={tcpv6Heavy 1} + +tcpv6HeavyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy packets" + + ::={tcpv6Heavy 2} + +tcpv6HeavyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy packets" + + ::={tcpv6Heavy 3} + +tcpv6SynExisting OBJECT IDENTIFIER ::={tcpv6 32} + +tcpv6SynExistingVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "SYN packets for existing connections" + + ::={tcpv6SynExisting 1} + +tcpv6SynExistingMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "SYN packets for existing connections" + + ::={tcpv6SynExisting 2} + +tcpv6SynExistingMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "SYN packets for existing connections" + + ::={tcpv6SynExisting 3} + +tcpv6FragmentAllocFail OBJECT IDENTIFIER ::={tcpv6 33} + +tcpv6FragmentAllocFailVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment allocation failures" + + ::={tcpv6FragmentAllocFail 1} + +tcpv6FragmentAllocFailMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Fragment allocation failures" + + ::={tcpv6FragmentAllocFail 3} + +tcpv6EnqueuedFragments OBJECT IDENTIFIER ::={tcpv6 34} + +tcpv6EnqueuedFragmentsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued fragments" + + ::={tcpv6EnqueuedFragments 1} + +tcpv6EnqueuedFragmentsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued fragments" + + ::={tcpv6EnqueuedFragments 2} + +tcpv6EnqueuedFragmentsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued fragments" + + ::={tcpv6EnqueuedFragments 3} + +tcpv6DequeuedFragments OBJECT IDENTIFIER ::={tcpv6 35} + +tcpv6DequeuedFragmentsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeued fragments" + + ::={tcpv6DequeuedFragments 1} + +tcpv6DequeuedFragmentsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeued fragments" + + ::={tcpv6DequeuedFragments 2} + +tcpv6DequeuedFragmentsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeued fragments" + + ::={tcpv6DequeuedFragments 3} + +tcpv6DiscardedFragments OBJECT IDENTIFIER ::={tcpv6 36} + +tcpv6DiscardedFragmentsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Discarded fragments" + + ::={tcpv6DiscardedFragments 1} + +tcpv6DiscardedFragmentsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Discarded fragments" + + ::={tcpv6DiscardedFragments 2} + +tcpv6DiscardedFragmentsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Discarded fragments" + + ::={tcpv6DiscardedFragments 3} + +tcpv6EmptyPackets OBJECT IDENTIFIER ::={tcpv6 37} + +tcpv6EmptyPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets without payload" + + ::={tcpv6EmptyPackets 1} + +tcpv6EmptyPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets without payload" + + ::={tcpv6EmptyPackets 2} + +tcpv6EmptyPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets without payload" + + ::={tcpv6EmptyPackets 3} + +tcpv6OosPackets OBJECT IDENTIFIER ::={tcpv6 38} + +tcpv6OosPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync packets" + + ::={tcpv6OosPackets 1} + +tcpv6OosPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync packets" + + ::={tcpv6OosPackets 2} + +tcpv6OosPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync packets" + + ::={tcpv6OosPackets 3} + +tcpv6OosBytes OBJECT IDENTIFIER ::={tcpv6 39} + +tcpv6OosBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync bytes" + + ::={tcpv6OosBytes 1} + +tcpv6OosBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync bytes" + + ::={tcpv6OosBytes 2} + +tcpv6OosBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out-of-sync bytes" + + ::={tcpv6OosBytes 3} + +tcpv6Retransmits OBJECT IDENTIFIER ::={tcpv6 40} + +tcpv6RetransmitsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Retransmitted packets" + + ::={tcpv6Retransmits 1} + +tcpv6RetransmitsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Retransmitted packets" + + ::={tcpv6Retransmits 2} + +tcpv6RetransmitsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Retransmitted packets" + + ::={tcpv6Retransmits 3} + +connection OBJECT IDENTIFIER ::={sysdiag 56} + +connectionCount OBJECT IDENTIFIER ::={connection 1} + +connectionCountVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Current count" + + ::={connectionCount 1} + +connectionCountMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Current count" + + ::={connectionCount 3} + +connectionEstCount OBJECT IDENTIFIER ::={connection 2} + +connectionEstCountVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Current established count" + + ::={connectionEstCount 1} + +connectionEstCountMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Current established count" + + ::={connectionEstCount 3} + +connectionCreateAttemptsInbound OBJECT IDENTIFIER ::={connection 3} + +connectionCreateAttemptsInboundVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Create attempts inbound" + + ::={connectionCreateAttemptsInbound 1} + +connectionCreateAttemptsInboundMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Create attempts inbound" + + ::={connectionCreateAttemptsInbound 2} + +connectionCreateAttemptsInboundMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Create attempts inbound" + + ::={connectionCreateAttemptsInbound 3} + +connectionCreateAttemptsOutbound OBJECT IDENTIFIER ::={connection 4} + +connectionCreateAttemptsOutboundVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Create attempts outbound" + + ::={connectionCreateAttemptsOutbound 1} + +connectionCreateAttemptsOutboundMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Create attempts outbound" + + ::={connectionCreateAttemptsOutbound 2} + +connectionCreateAttemptsOutboundMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Create attempts outbound" + + ::={connectionCreateAttemptsOutbound 3} + +connectionRefusedProt OBJECT IDENTIFIER ::={connection 5} + +connectionRefusedProtVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Attempts refused (connprot)" + + ::={connectionRefusedProt 1} + +connectionRefusedProtMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Attempts refused (connprot)" + + ::={connectionRefusedProt 2} + +connectionRefusedProtMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Attempts refused (connprot)" + + ::={connectionRefusedProt 3} + +connectionRefusedFull OBJECT IDENTIFIER ::={connection 6} + +connectionRefusedFullVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Attempts refused (resources)" + + ::={connectionRefusedFull 1} + +connectionRefusedFullMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Attempts refused (resources)" + + ::={connectionRefusedFull 2} + +connectionRefusedFullMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Attempts refused (resources)" + + ::={connectionRefusedFull 3} + +connectionCreatedInbound OBJECT IDENTIFIER ::={connection 7} + +connectionCreatedInboundVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Created inbound" + + ::={connectionCreatedInbound 1} + +connectionCreatedInboundMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Created inbound" + + ::={connectionCreatedInbound 2} + +connectionCreatedInboundMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Created inbound" + + ::={connectionCreatedInbound 3} + +connectionCreatedOutbound OBJECT IDENTIFIER ::={connection 8} + +connectionCreatedOutboundVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Created outbound" + + ::={connectionCreatedOutbound 1} + +connectionCreatedOutboundMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Created outbound" + + ::={connectionCreatedOutbound 2} + +connectionCreatedOutboundMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Created outbound" + + ::={connectionCreatedOutbound 3} + +connectionLruAllocs OBJECT IDENTIFIER ::={connection 9} + +connectionLruAllocsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections allocated from LRU" + + ::={connectionLruAllocs 1} + +connectionLruAllocsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections allocated from LRU" + + ::={connectionLruAllocs 2} + +connectionLruAllocsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections allocated from LRU" + + ::={connectionLruAllocs 3} + +connectionLookups OBJECT IDENTIFIER ::={connection 10} + +connectionLookupsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Lookups" + + ::={connectionLookups 1} + +connectionLookupsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Lookups" + + ::={connectionLookups 2} + +connectionLookupsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Lookups" + + ::={connectionLookups 3} + +connectionEstablished OBJECT IDENTIFIER ::={connection 11} + +connectionEstablishedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Made established" + + ::={connectionEstablished 1} + +connectionEstablishedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Made established" + + ::={connectionEstablished 2} + +connectionEstablishedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Made established" + + ::={connectionEstablished 3} + +connectionUpdates OBJECT IDENTIFIER ::={connection 12} + +connectionUpdatesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates sent" + + ::={connectionUpdates 1} + +connectionUpdatesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates sent" + + ::={connectionUpdates 2} + +connectionUpdatesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates sent" + + ::={connectionUpdates 3} + +connectionTtlTimeouts OBJECT IDENTIFIER ::={connection 13} + +connectionTtlTimeoutsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TTL timeouts" + + ::={connectionTtlTimeouts 1} + +connectionTtlTimeoutsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TTL timeouts" + + ::={connectionTtlTimeouts 2} + +connectionTtlTimeoutsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TTL timeouts" + + ::={connectionTtlTimeouts 3} + +connectionProtEnables OBJECT IDENTIFIER ::={connection 14} + +connectionProtEnablesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Protection enabled" + + ::={connectionProtEnables 1} + +connectionProtEnablesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Protection enabled" + + ::={connectionProtEnables 2} + +connectionProtEnablesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Protection enabled" + + ::={connectionProtEnables 3} + +connectionNotFound OBJECT IDENTIFIER ::={connection 15} + +connectionNotFoundVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Failed lookups" + + ::={connectionNotFound 1} + +connectionNotFoundMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Failed lookups" + + ::={connectionNotFound 2} + +connectionNotFoundMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Failed lookups" + + ::={connectionNotFound 3} + +connectionRuntimeFind OBJECT IDENTIFIER ::={connection 16} + +connectionRuntimeFindVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (find)" + + ::={connectionRuntimeFind 1} + +connectionRuntimeFindMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (find)" + + ::={connectionRuntimeFind 3} + +connectionRuntimeNew OBJECT IDENTIFIER ::={connection 17} + +connectionRuntimeNewVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (new)" + + ::={connectionRuntimeNew 1} + +connectionRuntimeNewMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (new)" + + ::={connectionRuntimeNew 3} + +connectionRefusedExisting OBJECT IDENTIFIER ::={connection 18} + +connectionRefusedExistingVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Attempts refused (already existed)" + + ::={connectionRefusedExisting 1} + +connectionRefusedExistingMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Attempts refused (already existed)" + + ::={connectionRefusedExisting 2} + +connectionRefusedExistingMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Attempts refused (already existed)" + + ::={connectionRefusedExisting 3} + +connectionRefusedRuleset OBJECT IDENTIFIER ::={connection 19} + +connectionRefusedRulesetVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Attempts refused (ruleset)" + + ::={connectionRefusedRuleset 1} + +connectionRefusedRulesetMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Attempts refused (ruleset)" + + ::={connectionRefusedRuleset 2} + +connectionRefusedRulesetMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Attempts refused (ruleset)" + + ::={connectionRefusedRuleset 3} + +connectionRedirected OBJECT IDENTIFIER ::={connection 20} + +connectionRedirectedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Redirected" + + ::={connectionRedirected 1} + +connectionRedirectedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Redirected" + + ::={connectionRedirected 3} + +connectionRedirectCollisions OBJECT IDENTIFIER ::={connection 21} + +connectionRedirectCollisionsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused redirects (collision)" + + ::={connectionRedirectCollisions 1} + +connectionRedirectCollisionsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refused redirects (collision)" + + ::={connectionRedirectCollisions 3} + +connectionFindHeavy OBJECT IDENTIFIER ::={connection 22} + +connectionFindHeavyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy find packets" + + ::={connectionFindHeavy 1} + +connectionFindHeavyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy find packets" + + ::={connectionFindHeavy 2} + +connectionFindHeavyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy find packets" + + ::={connectionFindHeavy 3} + +connectionNewHeavy OBJECT IDENTIFIER ::={connection 23} + +connectionNewHeavyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy new packets" + + ::={connectionNewHeavy 1} + +connectionNewHeavyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy new packets" + + ::={connectionNewHeavy 2} + +connectionNewHeavyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy new packets" + + ::={connectionNewHeavy 3} + +connectionUnestablished OBJECT IDENTIFIER ::={connection 24} + +connectionUnestablishedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Made unestablished" + + ::={connectionUnestablished 1} + +connectionUnestablishedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Made unestablished" + + ::={connectionUnestablished 2} + +connectionUnestablishedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Made unestablished" + + ::={connectionUnestablished 3} + +connectionDestroyedEst OBJECT IDENTIFIER ::={connection 25} + +connectionDestroyedEstVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Destroyed established" + + ::={connectionDestroyedEst 1} + +connectionDestroyedEstMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Destroyed established" + + ::={connectionDestroyedEst 3} + +connectionInvalidRulesetUpdate OBJECT IDENTIFIER ::={connection 26} + +connectionInvalidRulesetUpdateVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates with invalid ruleset" + + ::={connectionInvalidRulesetUpdate 1} + +connectionInvalidRulesetUpdateMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates with invalid ruleset" + + ::={connectionInvalidRulesetUpdate 2} + +connectionInvalidRulesetUpdateMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates with invalid ruleset" + + ::={connectionInvalidRulesetUpdate 3} + +connectionOrphaned OBJECT IDENTIFIER ::={connection 27} + +connectionOrphanedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections without timer" + + ::={connectionOrphaned 1} + +connectionOrphanedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections without timer" + + ::={connectionOrphaned 3} + +connectionFailureShuntPackets OBJECT IDENTIFIER ::={connection 40} + +connectionFailureShuntPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (connection create failure)" + + ::={connectionFailureShuntPackets 1} + +connectionFailureShuntPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (connection create failure)" + + ::={connectionFailureShuntPackets 2} + +connectionFailureShuntPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted packets (connection create failure)" + + ::={connectionFailureShuntPackets 3} + +connectionFailureShuntBytes OBJECT IDENTIFIER ::={connection 41} + +connectionFailureShuntBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (connection create failure)" + + ::={connectionFailureShuntBytes 1} + +connectionFailureShuntBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (connection create failure)" + + ::={connectionFailureShuntBytes 2} + +connectionFailureShuntBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shunted bytes (connection create failure)" + + ::={connectionFailureShuntBytes 3} + +connsync OBJECT IDENTIFIER ::={sysdiag 60} + +connsyncSeenSnt OBJECT IDENTIFIER ::={connsync 1} + +connsyncSeenSntVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Seen sent" + + ::={connsyncSeenSnt 1} + +connsyncSeenSntMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Seen sent" + + ::={connsyncSeenSnt 2} + +connsyncSeenSntMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Seen sent" + + ::={connsyncSeenSnt 3} + +connsyncSeenRcv OBJECT IDENTIFIER ::={connsync 2} + +connsyncSeenRcvVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Seen received" + + ::={connsyncSeenRcv 1} + +connsyncSeenRcvMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Seen received" + + ::={connsyncSeenRcv 2} + +connsyncSeenRcvMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Seen received" + + ::={connsyncSeenRcv 3} + +connsyncUpdateSnt OBJECT IDENTIFIER ::={connsync 3} + +connsyncUpdateSntVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates Sent" + + ::={connsyncUpdateSnt 1} + +connsyncUpdateSntMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates Sent" + + ::={connsyncUpdateSnt 2} + +connsyncUpdateSntMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates Sent" + + ::={connsyncUpdateSnt 3} + +connsyncSeenackRcv OBJECT IDENTIFIER ::={connsync 4} + +connsyncSeenackRcvVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "First updates received" + + ::={connsyncSeenackRcv 1} + +connsyncSeenackRcvMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "First updates received" + + ::={connsyncSeenackRcv 2} + +connsyncSeenackRcvMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "First updates received" + + ::={connsyncSeenackRcv 3} + +connsyncUpdateRcv OBJECT IDENTIFIER ::={connsync 5} + +connsyncUpdateRcvVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received" + + ::={connsyncUpdateRcv 1} + +connsyncUpdateRcvMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received" + + ::={connsyncUpdateRcv 2} + +connsyncUpdateRcvMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received" + + ::={connsyncUpdateRcv 3} + +connsyncUnknownUpdateRcv OBJECT IDENTIFIER ::={connsync 6} + +connsyncUnknownUpdateRcvVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates for unknown connections received" + + ::={connsyncUnknownUpdateRcv 1} + +connsyncUnknownUpdateRcvMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates for unknown connections received" + + ::={connsyncUnknownUpdateRcv 2} + +connsyncUnknownUpdateRcvMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates for unknown connections received" + + ::={connsyncUnknownUpdateRcv 3} + +connsyncOutofsync OBJECT IDENTIFIER ::={connsync 7} + +connsyncOutofsyncVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of syncs" + + ::={connsyncOutofsync 1} + +connsyncOutofsyncMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of syncs" + + ::={connsyncOutofsync 2} + +connsyncOutofsyncMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of syncs" + + ::={connsyncOutofsync 3} + +connsyncSynced OBJECT IDENTIFIER ::={connsync 8} + +connsyncSyncedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections actively syncing" + + ::={connsyncSynced 1} + +connsyncSyncedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections actively syncing" + + ::={connsyncSynced 3} + +connsyncDoubleSeen OBJECT IDENTIFIER ::={connsync 9} + +connsyncDoubleSeenVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Double seen" + + ::={connsyncDoubleSeen 1} + +connsyncDoubleSeenMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Double seen" + + ::={connsyncDoubleSeen 2} + +connsyncDoubleSeenMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Double seen" + + ::={connsyncDoubleSeen 3} + +connsyncHelloRcv OBJECT IDENTIFIER ::={connsync 10} + +connsyncHelloRcvVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hello received" + + ::={connsyncHelloRcv 1} + +connsyncHelloRcvMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hello received" + + ::={connsyncHelloRcv 2} + +connsyncHelloRcvMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hello received" + + ::={connsyncHelloRcv 3} + +connsyncOutofsyncMissedRcv OBJECT IDENTIFIER ::={connsync 11} + +connsyncOutofsyncMissedRcvVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of sync - missed rcv/late collision" + + ::={connsyncOutofsyncMissedRcv 1} + +connsyncOutofsyncMissedRcvMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of sync - missed rcv/late collision" + + ::={connsyncOutofsyncMissedRcv 2} + +connsyncOutofsyncMissedRcvMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of sync - missed rcv/late collision" + + ::={connsyncOutofsyncMissedRcv 3} + +connsyncOutofsyncCollision OBJECT IDENTIFIER ::={connsync 12} + +connsyncOutofsyncCollisionVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of sync - collision" + + ::={connsyncOutofsyncCollision 1} + +connsyncOutofsyncCollisionMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of sync - collision" + + ::={connsyncOutofsyncCollision 2} + +connsyncOutofsyncCollisionMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of sync - collision" + + ::={connsyncOutofsyncCollision 3} + +connsyncBadAdler OBJECT IDENTIFIER ::={connsync 13} + +connsyncBadAdlerVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates for mismatching ARM" + + ::={connsyncBadAdler 1} + +connsyncBadAdlerMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates for mismatching ARM" + + ::={connsyncBadAdler 2} + +connsyncBadAdlerMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates for mismatching ARM" + + ::={connsyncBadAdler 3} + +connsyncPktOverflow OBJECT IDENTIFIER ::={connsync 14} + +connsyncPktOverflowVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Update packet overflow" + + ::={connsyncPktOverflow 1} + +connsyncPktOverflowMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Update packet overflow" + + ::={connsyncPktOverflow 2} + +connsyncPktOverflowMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Update packet overflow" + + ::={connsyncPktOverflow 3} + +connsyncCorruptPkt OBJECT IDENTIFIER ::={connsync 15} + +connsyncCorruptPktVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Corrupt packet received" + + ::={connsyncCorruptPkt 1} + +connsyncCorruptPktMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Corrupt packet received" + + ::={connsyncCorruptPkt 2} + +connsyncCorruptPktMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Corrupt packet received" + + ::={connsyncCorruptPkt 3} + +connsyncConnNotfound OBJECT IDENTIFIER ::={connsync 16} + +connsyncConnNotfoundVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connection not found" + + ::={connsyncConnNotfound 1} + +connsyncConnNotfoundMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connection not found" + + ::={connsyncConnNotfound 2} + +connsyncConnNotfoundMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connection not found" + + ::={connsyncConnNotfound 3} + +connsyncBadVer OBJECT IDENTIFIER ::={connsync 17} + +connsyncBadVerVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Received packets with incompatible version" + + ::={connsyncBadVer 1} + +connsyncBadVerMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Received packets with incompatible version" + + ::={connsyncBadVer 2} + +connsyncBadVerMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Received packets with incompatible version" + + ::={connsyncBadVer 3} + +connsyncBadType OBJECT IDENTIFIER ::={connsync 18} + +connsyncBadTypeVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Received packets with incorrect ethernet type" + + ::={connsyncBadType 1} + +connsyncBadTypeMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Received packets with incorrect ethernet type" + + ::={connsyncBadType 2} + +connsyncBadTypeMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Received packets with incorrect ethernet type" + + ::={connsyncBadType 3} + +connsyncBadEngineid OBJECT IDENTIFIER ::={connsync 19} + +connsyncBadEngineidVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Received packets with own engine-id" + + ::={connsyncBadEngineid 1} + +connsyncBadEngineidMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Received packets with own engine-id" + + ::={connsyncBadEngineid 2} + +connsyncBadEngineidMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Received packets with own engine-id" + + ::={connsyncBadEngineid 3} + +ruleset OBJECT IDENTIFIER ::={sysdiag 64} + +rulesetReceived OBJECT IDENTIFIER ::={ruleset 1} + +rulesetReceivedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={rulesetReceived 1} + +rulesetReceivedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={rulesetReceived 2} + +rulesetReceivedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX packets" + + ::={rulesetReceived 3} + +rulesetForwarded OBJECT IDENTIFIER ::={ruleset 2} + +rulesetForwardedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={rulesetForwarded 1} + +rulesetForwardedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={rulesetForwarded 2} + +rulesetForwardedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX packets" + + ::={rulesetForwarded 3} + +rulesetRuntime OBJECT IDENTIFIER ::={ruleset 3} + +rulesetRuntimeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet" + + ::={rulesetRuntime 1} + +rulesetRuntimeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet" + + ::={rulesetRuntime 3} + +rulesetRuntimeRecalc OBJECT IDENTIFIER ::={ruleset 4} + +rulesetRuntimeRecalcVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (recalc)" + + ::={rulesetRuntimeRecalc 1} + +rulesetRuntimeRecalcMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (recalc)" + + ::={rulesetRuntimeRecalc 3} + +rulesetFwrules OBJECT IDENTIFIER ::={ruleset 5} + +rulesetFwrulesVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "FW rules loaded" + + ::={rulesetFwrules 1} + +rulesetFwrulesMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "FW rules loaded" + + ::={rulesetFwrules 3} + +rulesetShapingrules OBJECT IDENTIFIER ::={ruleset 6} + +rulesetShapingrulesVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shaping rules loaded" + + ::={rulesetShapingrules 1} + +rulesetShapingrulesMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shaping rules loaded" + + ::={rulesetShapingrules 3} + +rulesetClienttreeSize OBJECT IDENTIFIER ::={ruleset 7} + +rulesetClienttreeSizeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Nodes in Client IP-tree" + + ::={rulesetClienttreeSize 1} + +rulesetClienttreeSizeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Nodes in Client IP-tree" + + ::={rulesetClienttreeSize 3} + +rulesetServertreeSize OBJECT IDENTIFIER ::={ruleset 8} + +rulesetServertreeSizeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Nodes in Server IP-tree" + + ::={rulesetServertreeSize 1} + +rulesetServertreeSizeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Nodes in Server IP-tree" + + ::={rulesetServertreeSize 3} + +rulesetBgpNumpaths OBJECT IDENTIFIER ::={ruleset 9} + +rulesetBgpNumpathsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of ASPaths" + + ::={rulesetBgpNumpaths 1} + +rulesetBgpNumpathsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of ASPaths" + + ::={rulesetBgpNumpaths 3} + +rulesetBgpTreesize OBJECT IDENTIFIER ::={ruleset 10} + +rulesetBgpTreesizeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Nodes in BGP-tree" + + ::={rulesetBgpTreesize 1} + +rulesetBgpTreesizeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Nodes in BGP-tree" + + ::={rulesetBgpTreesize 3} + +rulesetBgpRuntimeLookup OBJECT IDENTIFIER ::={ruleset 11} + +rulesetBgpRuntimeLookupVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per ASPath lookup" + + ::={rulesetBgpRuntimeLookup 1} + +rulesetBgpRuntimeLookupMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per ASPath lookup" + + ::={rulesetBgpRuntimeLookup 3} + +rulesetBgpNumLookup OBJECT IDENTIFIER ::={ruleset 12} + +rulesetBgpNumLookupVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "BGP path lookups" + + ::={rulesetBgpNumLookup 1} + +rulesetBgpNumLookupMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "BGP path lookups" + + ::={rulesetBgpNumLookup 2} + +rulesetBgpNumLookupMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "BGP path lookups" + + ::={rulesetBgpNumLookup 3} + +rulesetPropChecks OBJECT IDENTIFIER ::={ruleset 13} + +rulesetPropChecksVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Property checks" + + ::={rulesetPropChecks 1} + +rulesetPropChecksMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Property checks" + + ::={rulesetPropChecks 2} + +rulesetPropChecksMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Property checks" + + ::={rulesetPropChecks 3} + +rulesetRuntimeProp OBJECT IDENTIFIER ::={ruleset 14} + +rulesetRuntimePropVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per property check" + + ::={rulesetRuntimeProp 1} + +rulesetRuntimePropMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per property check" + + ::={rulesetRuntimeProp 3} + +rulesetBitmasksAvg OBJECT IDENTIFIER ::={ruleset 15} + +rulesetBitmasksAvgVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Bitmask average number of words" + + ::={rulesetBitmasksAvg 1} + +rulesetBitmasksAvgMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Bitmask average number of words" + + ::={rulesetBitmasksAvg 3} + +rulesetBitmasksMax OBJECT IDENTIFIER ::={ruleset 16} + +rulesetBitmasksMaxVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Bitmask max number of words" + + ::={rulesetBitmasksMax 1} + +rulesetBitmasksMaxMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Bitmask max number of words" + + ::={rulesetBitmasksMax 3} + +rulesetDynipAdd OBJECT IDENTIFIER ::={ruleset 17} + +rulesetDynipAddVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dynamic ips added" + + ::={rulesetDynipAdd 1} + +rulesetDynipAddMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dynamic ips added" + + ::={rulesetDynipAdd 2} + +rulesetDynipAddMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dynamic ips added" + + ::={rulesetDynipAdd 3} + +rulesetDynipRemove OBJECT IDENTIFIER ::={ruleset 18} + +rulesetDynipRemoveVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dynamic ips removed" + + ::={rulesetDynipRemove 1} + +rulesetDynipRemoveMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dynamic ips removed" + + ::={rulesetDynipRemove 2} + +rulesetDynipRemoveMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dynamic ips removed" + + ::={rulesetDynipRemove 3} + +rulesetRecalcHeavy OBJECT IDENTIFIER ::={ruleset 19} + +rulesetRecalcHeavyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy recalc packets" + + ::={rulesetRecalcHeavy 1} + +rulesetRecalcHeavyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy recalc packets" + + ::={rulesetRecalcHeavy 2} + +rulesetRecalcHeavyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy recalc packets" + + ::={rulesetRecalcHeavy 3} + +rulesetHeavy OBJECT IDENTIFIER ::={ruleset 20} + +rulesetHeavyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy check packets" + + ::={rulesetHeavy 1} + +rulesetHeavyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy check packets" + + ::={rulesetHeavy 2} + +rulesetHeavyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy check packets" + + ::={rulesetHeavy 3} + +rulesetPropHeavy OBJECT IDENTIFIER ::={ruleset 21} + +rulesetPropHeavyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy property checks" + + ::={rulesetPropHeavy 1} + +rulesetPropHeavyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy property checks" + + ::={rulesetPropHeavy 2} + +rulesetPropHeavyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heavy property checks" + + ::={rulesetPropHeavy 3} + +rulesetLastUpdate OBJECT IDENTIFIER ::={ruleset 22} + +rulesetLastUpdateVal OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Last ruleset reload" + + ::={rulesetLastUpdate 1} + +rulesetDynipNum OBJECT IDENTIFIER ::={ruleset 23} + +rulesetDynipNumVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dynamic ips current" + + ::={rulesetDynipNum 1} + +rulesetDynipNumMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dynamic ips current" + + ::={rulesetDynipNum 3} + +rulesetStatisticsrules OBJECT IDENTIFIER ::={ruleset 24} + +rulesetStatisticsrulesVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Statistics rules loaded" + + ::={rulesetStatisticsrules 1} + +rulesetStatisticsrulesMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Statistics rules loaded" + + ::={rulesetStatisticsrules 3} + +rulesetLocaltreeSize OBJECT IDENTIFIER ::={ruleset 25} + +rulesetLocaltreeSizeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Nodes in Local IP-tree" + + ::={rulesetLocaltreeSize 1} + +rulesetLocaltreeSizeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Nodes in Local IP-tree" + + ::={rulesetLocaltreeSize 3} + +rulesetStatisticsRuleOverflow OBJECT IDENTIFIER ::={ruleset 26} + +rulesetStatisticsRuleOverflowVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many matching statistics rules" + + ::={rulesetStatisticsRuleOverflow 1} + +rulesetStatisticsRuleOverflowMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many matching statistics rules" + + ::={rulesetStatisticsRuleOverflow 2} + +rulesetStatisticsRuleOverflowMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many matching statistics rules" + + ::={rulesetStatisticsRuleOverflow 3} + +rulesetConnStatechange OBJECT IDENTIFIER ::={ruleset 27} + +rulesetConnStatechangeVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges" + + ::={rulesetConnStatechange 1} + +rulesetConnStatechangeMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges" + + ::={rulesetConnStatechange 2} + +rulesetConnStatechangeMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges" + + ::={rulesetConnStatechange 3} + +rulesetConnStatechangeProp OBJECT IDENTIFIER ::={ruleset 28} + +rulesetConnStatechangePropVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges (prop)" + + ::={rulesetConnStatechangeProp 1} + +rulesetConnStatechangePropMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges (prop)" + + ::={rulesetConnStatechangeProp 2} + +rulesetConnStatechangePropMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges (prop)" + + ::={rulesetConnStatechangeProp 3} + +rulesetConnStatechangeService OBJECT IDENTIFIER ::={ruleset 29} + +rulesetConnStatechangeServiceVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges (service)" + + ::={rulesetConnStatechangeService 1} + +rulesetConnStatechangeServiceMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges (service)" + + ::={rulesetConnStatechangeService 2} + +rulesetConnStatechangeServiceMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges (service)" + + ::={rulesetConnStatechangeService 3} + +rulesetConnStatechangeFlags OBJECT IDENTIFIER ::={ruleset 30} + +rulesetConnStatechangeFlagsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges (flags)" + + ::={rulesetConnStatechangeFlags 1} + +rulesetConnStatechangeFlagsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges (flags)" + + ::={rulesetConnStatechangeFlags 2} + +rulesetConnStatechangeFlagsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges (flags)" + + ::={rulesetConnStatechangeFlags 3} + +rulesetConnStatechangeAspath OBJECT IDENTIFIER ::={ruleset 31} + +rulesetConnStatechangeAspathVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges (aspath)" + + ::={rulesetConnStatechangeAspath 1} + +rulesetConnStatechangeAspathMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges (aspath)" + + ::={rulesetConnStatechangeAspath 2} + +rulesetConnStatechangeAspathMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges (aspath)" + + ::={rulesetConnStatechangeAspath 3} + +rulesetRecalcVersion OBJECT IDENTIFIER ::={ruleset 32} + +rulesetRecalcVersionVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset recalcs from version" + + ::={rulesetRecalcVersion 1} + +rulesetRecalcVersionMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset recalcs from version" + + ::={rulesetRecalcVersion 2} + +rulesetRecalcVersionMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset recalcs from version" + + ::={rulesetRecalcVersion 3} + +rulesetRecalcTime OBJECT IDENTIFIER ::={ruleset 33} + +rulesetRecalcTimeVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset recalcs from time" + + ::={rulesetRecalcTime 1} + +rulesetRecalcTimeMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset recalcs from time" + + ::={rulesetRecalcTime 2} + +rulesetRecalcTimeMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset recalcs from time" + + ::={rulesetRecalcTime 3} + +rulesetRecalcBgp OBJECT IDENTIFIER ::={ruleset 34} + +rulesetRecalcBgpVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset recalcs from bgp" + + ::={rulesetRecalcBgp 1} + +rulesetRecalcBgpMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset recalcs from bgp" + + ::={rulesetRecalcBgp 2} + +rulesetRecalcBgpMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset recalcs from bgp" + + ::={rulesetRecalcBgp 3} + +rulesetRecalcUnknown OBJECT IDENTIFIER ::={ruleset 35} + +rulesetRecalcUnknownVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset recalcs from state" + + ::={rulesetRecalcUnknown 1} + +rulesetRecalcUnknownMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset recalcs from state" + + ::={rulesetRecalcUnknown 2} + +rulesetRecalcUnknownMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset recalcs from state" + + ::={rulesetRecalcUnknown 3} + +rulesetOutdatedService OBJECT IDENTIFIER ::={ruleset 36} + +rulesetOutdatedServiceVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset recalcs with outdated service ruleset" + + ::={rulesetOutdatedService 1} + +rulesetOutdatedServiceMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset recalcs with outdated service ruleset" + + ::={rulesetOutdatedService 2} + +rulesetOutdatedServiceMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset recalcs with outdated service ruleset" + + ::={rulesetOutdatedService 3} + +rulesetSubscribers OBJECT IDENTIFIER ::={ruleset 37} + +rulesetSubscribersVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of added subscribers" + + ::={rulesetSubscribers 1} + +rulesetSubscribersMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of added subscribers" + + ::={rulesetSubscribers 3} + +rulesetBadAspath OBJECT IDENTIFIER ::={ruleset 38} + +rulesetBadAspathVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old or corrupted AS-path entry" + + ::={rulesetBadAspath 1} + +rulesetBadAspathMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old or corrupted AS-path entry" + + ::={rulesetBadAspath 2} + +rulesetBadAspathMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Old or corrupted AS-path entry" + + ::={rulesetBadAspath 3} + +rulesetConnStatechangeLinklevel OBJECT IDENTIFIER ::={ruleset 39} + +rulesetConnStatechangeLinklevelVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges (linklevel)" + + ::={rulesetConnStatechangeLinklevel 1} + +rulesetConnStatechangeLinklevelMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges (linklevel)" + + ::={rulesetConnStatechangeLinklevel 2} + +rulesetConnStatechangeLinklevelMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow ruleset statechanges (linklevel)" + + ::={rulesetConnStatechangeLinklevel 3} + +rulesetSubscriberAllocFail OBJECT IDENTIFIER ::={ruleset 40} + +rulesetSubscriberAllocFailVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Subscriber allocation failures" + + ::={rulesetSubscriberAllocFail 1} + +rulesetSubscriberAllocFailMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Subscriber allocation failures" + + ::={rulesetSubscriberAllocFail 2} + +rulesetSubscriberAllocFailMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Subscriber allocation failures" + + ::={rulesetSubscriberAllocFail 3} + +rulesetDynipAllocFail OBJECT IDENTIFIER ::={ruleset 41} + +rulesetDynipAllocFailVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dynamic ip loading failures (allocation failure)" + + ::={rulesetDynipAllocFail 1} + +rulesetDynipAllocFailMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dynamic ip loading failures (allocation failure)" + + ::={rulesetDynipAllocFail 2} + +rulesetDynipAllocFailMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dynamic ip loading failures (allocation failure)" + + ::={rulesetDynipAllocFail 3} + +rulesetDynipOversized OBJECT IDENTIFIER ::={ruleset 42} + +rulesetDynipOversizedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dynamic ip loading failures (oversized)" + + ::={rulesetDynipOversized 1} + +rulesetDynipOversizedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dynamic ip loading failures (oversized)" + + ::={rulesetDynipOversized 2} + +rulesetDynipOversizedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dynamic ip loading failures (oversized)" + + ::={rulesetDynipOversized 3} + +firewall OBJECT IDENTIFIER ::={sysdiag 80} + +fwAccepts OBJECT IDENTIFIER ::={firewall 1} + +fwAcceptsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving ACCEPT" + + ::={fwAccepts 1} + +fwAcceptsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving ACCEPT" + + ::={fwAccepts 2} + +fwAcceptsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving ACCEPT" + + ::={fwAccepts 3} + +fwRejects OBJECT IDENTIFIER ::={firewall 2} + +fwRejectsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving REJECT" + + ::={fwRejects 1} + +fwRejectsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving REJECT" + + ::={fwRejects 2} + +fwRejectsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving REJECT" + + ::={fwRejects 3} + +fwDrops OBJECT IDENTIFIER ::={firewall 3} + +fwDropsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving DROP" + + ::={fwDrops 1} + +fwDropsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving DROP" + + ::={fwDrops 2} + +fwDropsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving DROP" + + ::={fwDrops 3} + +fwRewites OBJECT IDENTIFIER ::={firewall 4} + +fwRewitesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving REWRITE" + + ::={fwRewites 1} + +fwRewitesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving REWRITE" + + ::={fwRewites 2} + +fwRewitesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving REWRITE" + + ::={fwRewites 3} + +fwDiverts OBJECT IDENTIFIER ::={firewall 5} + +fwDivertsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving DIVERT" + + ::={fwDiverts 1} + +fwDivertsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving DIVERT" + + ::={fwDiverts 2} + +fwDivertsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving DIVERT" + + ::={fwDiverts 3} + +fwRuleSets OBJECT IDENTIFIER ::={firewall 6} + +fwRuleSetsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations" + + ::={fwRuleSets 1} + +fwRuleSetsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations" + + ::={fwRuleSets 2} + +fwRuleSetsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations" + + ::={fwRuleSets 3} + +fwLogs OBJECT IDENTIFIER ::={firewall 7} + +fwLogsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Log entries" + + ::={fwLogs 1} + +fwLogsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Log entries" + + ::={fwLogs 2} + +fwLogsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Log entries" + + ::={fwLogs 3} + +fwMonitor OBJECT IDENTIFIER ::={firewall 8} + +fwMonitorVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Monitored packets" + + ::={fwMonitor 1} + +fwMonitorMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Monitored packets" + + ::={fwMonitor 2} + +fwMonitorMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Monitored packets" + + ::={fwMonitor 3} + +fwMonitorFailures OBJECT IDENTIFIER ::={firewall 9} + +fwMonitorFailuresVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Failed monitored packets" + + ::={fwMonitorFailures 1} + +fwMonitorFailuresMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Failed monitored packets" + + ::={fwMonitorFailures 2} + +fwMonitorFailuresMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Failed monitored packets" + + ::={fwMonitorFailures 3} + +fwInjects OBJECT IDENTIFIER ::={firewall 10} + +fwInjectsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving INJECT" + + ::={fwInjects 1} + +fwInjectsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving INJECT" + + ::={fwInjects 2} + +fwInjectsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ruleset evaluations giving INJECT" + + ::={fwInjects 3} + +fwInjectsFailures OBJECT IDENTIFIER ::={firewall 11} + +fwInjectsFailuresVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Inject data preparation failures" + + ::={fwInjectsFailures 1} + +fwInjectsFailuresMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Inject data preparation failures" + + ::={fwInjectsFailures 2} + +fwInjectsFailuresMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Inject data preparation failures" + + ::={fwInjectsFailures 3} + +fwInjectsFailuresProp OBJECT IDENTIFIER ::={firewall 12} + +fwInjectsFailuresPropVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Inject properties exceeding max length (255)" + + ::={fwInjectsFailuresProp 1} + +fwInjectsFailuresPropMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Inject properties exceeding max length (255)" + + ::={fwInjectsFailuresProp 2} + +fwInjectsFailuresPropMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Inject properties exceeding max length (255)" + + ::={fwInjectsFailuresProp 3} + +fwMidconnRewrite OBJECT IDENTIFIER ::={firewall 13} + +fwMidconnRewriteVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rewrites changed in active connection" + + ::={fwMidconnRewrite 1} + +fwMidconnRewriteMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rewrites changed in active connection" + + ::={fwMidconnRewrite 2} + +fwMidconnRewriteMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rewrites changed in active connection" + + ::={fwMidconnRewrite 3} + +shaping OBJECT IDENTIFIER ::={sysdiag 88} + +shapingEnqueued OBJECT IDENTIFIER ::={shaping 1} + +shapingEnqueuedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued packets" + + ::={shapingEnqueued 1} + +shapingEnqueuedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued packets" + + ::={shapingEnqueued 2} + +shapingEnqueuedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued packets" + + ::={shapingEnqueued 3} + +shapingDequeued OBJECT IDENTIFIER ::={shaping 2} + +shapingDequeuedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeued packets" + + ::={shapingDequeued 1} + +shapingDequeuedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeued packets" + + ::={shapingDequeued 2} + +shapingDequeuedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeued packets" + + ::={shapingDequeued 3} + +shapingBrownConnDrops OBJECT IDENTIFIER ::={shaping 8} + +shapingBrownConnDropsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "BROWN per connection drops" + + ::={shapingBrownConnDrops 1} + +shapingBrownConnDropsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "BROWN per connection drops" + + ::={shapingBrownConnDrops 2} + +shapingBrownConnDropsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "BROWN per connection drops" + + ::={shapingBrownConnDrops 3} + +shapingQueueSize OBJECT IDENTIFIER ::={shaping 9} + +shapingQueueSizeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queue size" + + ::={shapingQueueSize 1} + +shapingQueueSizeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queue size" + + ::={shapingQueueSize 3} + +shapingRulesSetCount OBJECT IDENTIFIER ::={shaping 10} + +shapingRulesSetCountVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rule sets" + + ::={shapingRulesSetCount 1} + +shapingRulesSetCountMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rule sets" + + ::={shapingRulesSetCount 2} + +shapingRulesSetCountMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Rule sets" + + ::={shapingRulesSetCount 3} + +shapingEnqueuedBytes OBJECT IDENTIFIER ::={shaping 11} + +shapingEnqueuedBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued bytes" + + ::={shapingEnqueuedBytes 1} + +shapingEnqueuedBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued bytes" + + ::={shapingEnqueuedBytes 2} + +shapingEnqueuedBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Enqueued bytes" + + ::={shapingEnqueuedBytes 3} + +shapingDequeuedBytes OBJECT IDENTIFIER ::={shaping 12} + +shapingDequeuedBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeued bytes" + + ::={shapingDequeuedBytes 1} + +shapingDequeuedBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeued bytes" + + ::={shapingDequeuedBytes 2} + +shapingDequeuedBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeued bytes" + + ::={shapingDequeuedBytes 3} + +shapingObjectCopies OBJECT IDENTIFIER ::={shaping 13} + +shapingObjectCopiesVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object copies" + + ::={shapingObjectCopies 1} + +shapingObjectCopiesMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object copies" + + ::={shapingObjectCopies 3} + +shapingOutofpacketsDrops OBJECT IDENTIFIER ::={shaping 15} + +shapingOutofpacketsDropsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of packets drops" + + ::={shapingOutofpacketsDrops 1} + +shapingOutofpacketsDropsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of packets drops" + + ::={shapingOutofpacketsDrops 2} + +shapingOutofpacketsDropsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of packets drops" + + ::={shapingOutofpacketsDrops 3} + +shapingReceived OBJECT IDENTIFIER ::={shaping 16} + +shapingReceivedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets received" + + ::={shapingReceived 1} + +shapingReceivedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets received" + + ::={shapingReceived 2} + +shapingReceivedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets received" + + ::={shapingReceived 3} + +shapingObjectChecks OBJECT IDENTIFIER ::={shaping 17} + +shapingObjectChecksVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object checks" + + ::={shapingObjectChecks 1} + +shapingObjectChecksMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object checks" + + ::={shapingObjectChecks 2} + +shapingObjectChecksMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object checks" + + ::={shapingObjectChecks 3} + +shapingRuntimeCheck OBJECT IDENTIFIER ::={shaping 18} + +shapingRuntimeCheckVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (check)" + + ::={shapingRuntimeCheck 1} + +shapingRuntimeCheckMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (check)" + + ::={shapingRuntimeCheck 3} + +shapingRuntimeEnqueue OBJECT IDENTIFIER ::={shaping 19} + +shapingRuntimeEnqueueVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (enqueue)" + + ::={shapingRuntimeEnqueue 1} + +shapingRuntimeEnqueueMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (enqueue)" + + ::={shapingRuntimeEnqueue 3} + +shapingObjectPoolExhausted OBJECT IDENTIFIER ::={shaping 25} + +shapingObjectPoolExhaustedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many dynamic objects" + + ::={shapingObjectPoolExhausted 1} + +shapingObjectPoolExhaustedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many dynamic objects" + + ::={shapingObjectPoolExhausted 2} + +shapingObjectPoolExhaustedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many dynamic objects" + + ::={shapingObjectPoolExhausted 3} + +shapingOutOfCreditsDrops OBJECT IDENTIFIER ::={shaping 26} + +shapingOutOfCreditsDropsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of credits (vbs) drops" + + ::={shapingOutOfCreditsDrops 1} + +shapingOutOfCreditsDropsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of credits (vbs) drops" + + ::={shapingOutOfCreditsDrops 2} + +shapingOutOfCreditsDropsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of credits (vbs) drops" + + ::={shapingOutOfCreditsDrops 3} + +shapingRuntimeDequeue OBJECT IDENTIFIER ::={shaping 30} + +shapingRuntimeDequeueVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (dequeue)" + + ::={shapingRuntimeDequeue 1} + +shapingRuntimeDequeueMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (dequeue)" + + ::={shapingRuntimeDequeue 2} + +shapingRuntimeDequeueMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Average cycles per packet (dequeue)" + + ::={shapingRuntimeDequeue 3} + +shapingObjectOverflow OBJECT IDENTIFIER ::={shaping 31} + +shapingObjectOverflowVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many shaping objects matching a connection" + + ::={shapingObjectOverflow 1} + +shapingObjectOverflowMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many shaping objects matching a connection" + + ::={shapingObjectOverflow 2} + +shapingObjectOverflowMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many shaping objects matching a connection" + + ::={shapingObjectOverflow 3} + +shapingRuleOverflow OBJECT IDENTIFIER ::={shaping 32} + +shapingRuleOverflowVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many matching rules" + + ::={shapingRuleOverflow 1} + +shapingRuleOverflowMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many matching rules" + + ::={shapingRuleOverflow 2} + +shapingRuleOverflowMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many matching rules" + + ::={shapingRuleOverflow 3} + +shapingOutOfArrays OBJECT IDENTIFIER ::={shaping 33} + +shapingOutOfArraysVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of shaping rule arrays" + + ::={shapingOutOfArrays 1} + +shapingOutOfArraysMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of shaping rule arrays" + + ::={shapingOutOfArrays 2} + +shapingOutOfArraysMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of shaping rule arrays" + + ::={shapingOutOfArrays 3} + +shapingDrops OBJECT IDENTIFIER ::={shaping 37} + +shapingDropsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (all types)" + + ::={shapingDrops 1} + +shapingDropsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (all types)" + + ::={shapingDrops 2} + +shapingDropsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (all types)" + + ::={shapingDrops 3} + +shapingObjectFull OBJECT IDENTIFIER ::={shaping 38} + +shapingObjectFullVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shaping object queue full" + + ::={shapingObjectFull 1} + +shapingObjectFullMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shaping object queue full" + + ::={shapingObjectFull 2} + +shapingObjectFullMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Shaping object queue full" + + ::={shapingObjectFull 3} + +shapingUnshaped OBJECT IDENTIFIER ::={shaping 39} + +shapingUnshapedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Unshaped packets" + + ::={shapingUnshaped 1} + +shapingUnshapedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Unshaped packets" + + ::={shapingUnshaped 2} + +shapingUnshapedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Unshaped packets" + + ::={shapingUnshaped 3} + +shapingUnshapedBytes OBJECT IDENTIFIER ::={shaping 40} + +shapingUnshapedBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Unshaped bytes" + + ::={shapingUnshapedBytes 1} + +shapingUnshapedBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Unshaped bytes" + + ::={shapingUnshapedBytes 2} + +shapingUnshapedBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Unshaped bytes" + + ::={shapingUnshapedBytes 3} + +shapingDequeueCalls OBJECT IDENTIFIER ::={shaping 41} + +shapingDequeueCallsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeue calls" + + ::={shapingDequeueCalls 1} + +shapingDequeueCallsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeue calls" + + ::={shapingDequeueCalls 2} + +shapingDequeueCallsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeue calls" + + ::={shapingDequeueCalls 3} + +shapingRecycleObjects OBJECT IDENTIFIER ::={shaping 42} + +shapingRecycleObjectsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Objects in recycle queue" + + ::={shapingRecycleObjects 1} + +shapingRecycleObjectsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Objects in recycle queue" + + ::={shapingRecycleObjects 3} + +shapingLocalhostOverflow OBJECT IDENTIFIER ::={shaping 43} + +shapingLocalhostOverflowVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many dynamic objects in rule" + + ::={shapingLocalhostOverflow 1} + +shapingLocalhostOverflowMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many dynamic objects in rule" + + ::={shapingLocalhostOverflow 2} + +shapingLocalhostOverflowMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many dynamic objects in rule" + + ::={shapingLocalhostOverflow 3} + +shapingDirect OBJECT IDENTIFIER ::={shaping 44} + +shapingDirectVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Directly sent packets" + + ::={shapingDirect 1} + +shapingDirectMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Directly sent packets" + + ::={shapingDirect 2} + +shapingDirectMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Directly sent packets" + + ::={shapingDirect 3} + +shapingDirectBytes OBJECT IDENTIFIER ::={shaping 45} + +shapingDirectBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Directly sent bytes" + + ::={shapingDirectBytes 1} + +shapingDirectBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Directly sent bytes" + + ::={shapingDirectBytes 2} + +shapingDirectBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Directly sent bytes" + + ::={shapingDirectBytes 3} + +shapingBorrowDequeues OBJECT IDENTIFIER ::={shaping 46} + +shapingBorrowDequeuesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Borrowing dequeues" + + ::={shapingBorrowDequeues 1} + +shapingBorrowDequeuesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Borrowing dequeues" + + ::={shapingBorrowDequeues 2} + +shapingBorrowDequeuesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Borrowing dequeues" + + ::={shapingBorrowDequeues 3} + +shapingVbsSplitError OBJECT IDENTIFIER ::={shaping 47} + +shapingVbsSplitErrorVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "VBS split allocation failures" + + ::={shapingVbsSplitError 1} + +shapingVbsSplitErrorMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "VBS split allocation failures" + + ::={shapingVbsSplitError 2} + +shapingVbsSplitErrorMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "VBS split allocation failures" + + ::={shapingVbsSplitError 3} + +shapingBrownHostDrops OBJECT IDENTIFIER ::={shaping 48} + +shapingBrownHostDropsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "BROWN per host drops" + + ::={shapingBrownHostDrops 1} + +shapingBrownHostDropsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "BROWN per host drops" + + ::={shapingBrownHostDrops 2} + +shapingBrownHostDropsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "BROWN per host drops" + + ::={shapingBrownHostDrops 3} + +shapingMaxConnDrops OBJECT IDENTIFIER ::={shaping 49} + +shapingMaxConnDropsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object max connections reached" + + ::={shapingMaxConnDrops 1} + +shapingMaxConnDropsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object max connections reached" + + ::={shapingMaxConnDrops 2} + +shapingMaxConnDropsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object max connections reached" + + ::={shapingMaxConnDrops 3} + +shapingScheduledOdirs OBJECT IDENTIFIER ::={shaping 50} + +shapingScheduledOdirsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Scheduled odirs" + + ::={shapingScheduledOdirs 1} + +shapingScheduledOdirsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Scheduled odirs" + + ::={shapingScheduledOdirs 3} + +shapingQueuePoolExhausted OBJECT IDENTIFIER ::={shaping 51} + +shapingQueuePoolExhaustedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queue pool exhausted" + + ::={shapingQueuePoolExhausted 1} + +shapingQueuePoolExhaustedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queue pool exhausted" + + ::={shapingQueuePoolExhausted 2} + +shapingQueuePoolExhaustedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queue pool exhausted" + + ::={shapingQueuePoolExhausted 3} + +shapingActiveQueues OBJECT IDENTIFIER ::={shaping 52} + +shapingActiveQueuesVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Active queues" + + ::={shapingActiveQueues 1} + +shapingActiveQueuesMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Active queues" + + ::={shapingActiveQueues 3} + +shapingQueueAllocations OBJECT IDENTIFIER ::={shaping 53} + +shapingQueueAllocationsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queue allocations" + + ::={shapingQueueAllocations 1} + +shapingQueueAllocationsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queue allocations" + + ::={shapingQueueAllocations 2} + +shapingQueueAllocationsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queue allocations" + + ::={shapingQueueAllocations 3} + +shapingDropsPrio1 OBJECT IDENTIFIER ::={shaping 54} + +shapingDropsPrio1Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 1)" + + ::={shapingDropsPrio1 1} + +shapingDropsPrio1Mom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 1)" + + ::={shapingDropsPrio1 2} + +shapingDropsPrio1Max OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 1)" + + ::={shapingDropsPrio1 3} + +shapingDropsPrio2 OBJECT IDENTIFIER ::={shaping 55} + +shapingDropsPrio2Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 2)" + + ::={shapingDropsPrio2 1} + +shapingDropsPrio2Mom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 2)" + + ::={shapingDropsPrio2 2} + +shapingDropsPrio2Max OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 2)" + + ::={shapingDropsPrio2 3} + +shapingDropsPrio3 OBJECT IDENTIFIER ::={shaping 56} + +shapingDropsPrio3Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 3)" + + ::={shapingDropsPrio3 1} + +shapingDropsPrio3Mom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 3)" + + ::={shapingDropsPrio3 2} + +shapingDropsPrio3Max OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 3)" + + ::={shapingDropsPrio3 3} + +shapingDropsPrio4 OBJECT IDENTIFIER ::={shaping 57} + +shapingDropsPrio4Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 4)" + + ::={shapingDropsPrio4 1} + +shapingDropsPrio4Mom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 4)" + + ::={shapingDropsPrio4 2} + +shapingDropsPrio4Max OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 4)" + + ::={shapingDropsPrio4 3} + +shapingDropsPrio5 OBJECT IDENTIFIER ::={shaping 58} + +shapingDropsPrio5Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 5)" + + ::={shapingDropsPrio5 1} + +shapingDropsPrio5Mom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 5)" + + ::={shapingDropsPrio5 2} + +shapingDropsPrio5Max OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 5)" + + ::={shapingDropsPrio5 3} + +shapingDropsPrio6 OBJECT IDENTIFIER ::={shaping 59} + +shapingDropsPrio6Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 6)" + + ::={shapingDropsPrio6 1} + +shapingDropsPrio6Mom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 6)" + + ::={shapingDropsPrio6 2} + +shapingDropsPrio6Max OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 6)" + + ::={shapingDropsPrio6 3} + +shapingDropsPrio7 OBJECT IDENTIFIER ::={shaping 60} + +shapingDropsPrio7Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 7)" + + ::={shapingDropsPrio7 1} + +shapingDropsPrio7Mom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 7)" + + ::={shapingDropsPrio7 2} + +shapingDropsPrio7Max OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 7)" + + ::={shapingDropsPrio7 3} + +shapingDropsPrio8 OBJECT IDENTIFIER ::={shaping 61} + +shapingDropsPrio8Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 8)" + + ::={shapingDropsPrio8 1} + +shapingDropsPrio8Mom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 8)" + + ::={shapingDropsPrio8 2} + +shapingDropsPrio8Max OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 8)" + + ::={shapingDropsPrio8 3} + +shapingDropsPrio9 OBJECT IDENTIFIER ::={shaping 62} + +shapingDropsPrio9Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 9)" + + ::={shapingDropsPrio9 1} + +shapingDropsPrio9Mom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 9)" + + ::={shapingDropsPrio9 2} + +shapingDropsPrio9Max OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (prio 9)" + + ::={shapingDropsPrio9 3} + +shapingDropsPrioOther OBJECT IDENTIFIER ::={shaping 63} + +shapingDropsPrioOtherVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (other prio)" + + ::={shapingDropsPrioOther 1} + +shapingDropsPrioOtherMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (other prio)" + + ::={shapingDropsPrioOther 2} + +shapingDropsPrioOtherMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Queuing drops (other prio)" + + ::={shapingDropsPrioOther 3} + +shapingDropsCps OBJECT IDENTIFIER ::={shaping 64} + +shapingDropsCpsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPS limit drops" + + ::={shapingDropsCps 1} + +shapingDropsCpsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPS limit drops" + + ::={shapingDropsCps 2} + +shapingDropsCpsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPS limit drops" + + ::={shapingDropsCps 3} + +shapingFailedFairnessObjects OBJECT IDENTIFIER ::={shaping 65} + +shapingFailedFairnessObjectsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Host fairness data allocation failures" + + ::={shapingFailedFairnessObjects 1} + +shapingFailedFairnessObjectsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Host fairness data allocation failures" + + ::={shapingFailedFairnessObjects 2} + +shapingFailedFairnessObjectsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Host fairness data allocation failures" + + ::={shapingFailedFairnessObjects 3} + +shapingUsedFairnessObjects OBJECT IDENTIFIER ::={shaping 66} + +shapingUsedFairnessObjectsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Host fairness data used" + + ::={shapingUsedFairnessObjects 1} + +shapingUsedFairnessObjectsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Host fairness data used" + + ::={shapingUsedFairnessObjects 3} + +shapingReloadDrops OBJECT IDENTIFIER ::={shaping 67} + +shapingReloadDropsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Drops caused by ruleset reload" + + ::={shapingReloadDrops 1} + +shapingReloadDropsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Drops caused by ruleset reload" + + ::={shapingReloadDrops 2} + +shapingReloadDropsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Drops caused by ruleset reload" + + ::={shapingReloadDrops 3} + +shapingRequeueQueueUsed OBJECT IDENTIFIER ::={shaping 68} + +shapingRequeueQueueUsedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets in requeue queue" + + ::={shapingRequeueQueueUsed 1} + +shapingRequeueQueueUsedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets in requeue queue" + + ::={shapingRequeueQueueUsed 3} + +shapingDirectBytesPrio0 OBJECT IDENTIFIER ::={shaping 69} + +shapingDirectBytesPrio0Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Directly sent bytes (prio 0)" + + ::={shapingDirectBytesPrio0 1} + +shapingDirectBytesPrio0Mom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Directly sent bytes (prio 0)" + + ::={shapingDirectBytesPrio0 2} + +shapingDirectBytesPrio0Max OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Directly sent bytes (prio 0)" + + ::={shapingDirectBytesPrio0 3} + +shapingDequeuedOdirs OBJECT IDENTIFIER ::={shaping 70} + +shapingDequeuedOdirsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeued Odirs" + + ::={shapingDequeuedOdirs 1} + +shapingDequeuedOdirsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeued Odirs" + + ::={shapingDequeuedOdirs 2} + +shapingDequeuedOdirsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dequeued Odirs" + + ::={shapingDequeuedOdirs 3} + +shapingSkippedQsyncUpdates OBJECT IDENTIFIER ::={shaping 71} + +shapingSkippedQsyncUpdatesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Skipped qsync updates (no xfer)" + + ::={shapingSkippedQsyncUpdates 1} + +shapingSkippedQsyncUpdatesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Skipped qsync updates (no xfer)" + + ::={shapingSkippedQsyncUpdates 2} + +shapingSkippedQsyncUpdatesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Skipped qsync updates (no xfer)" + + ::={shapingSkippedQsyncUpdates 3} + +shapingObjectCopiesCreated OBJECT IDENTIFIER ::={shaping 72} + +shapingObjectCopiesCreatedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object copies created" + + ::={shapingObjectCopiesCreated 1} + +shapingObjectCopiesCreatedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object copies created" + + ::={shapingObjectCopiesCreated 2} + +shapingObjectCopiesCreatedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object copies created" + + ::={shapingObjectCopiesCreated 3} + +pppoe OBJECT IDENTIFIER ::={sysdiag 96} + +pppoeShortPackets OBJECT IDENTIFIER ::={pppoe 1} + +pppoeShortPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Short Packets dropped" + + ::={pppoeShortPackets 1} + +pppoeShortPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Short Packets dropped" + + ::={pppoeShortPackets 2} + +pppoeShortPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Short Packets dropped" + + ::={pppoeShortPackets 3} + +pppoeBadversionPackets OBJECT IDENTIFIER ::={pppoe 2} + +pppoeBadversionPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets with unknown version" + + ::={pppoeBadversionPackets 1} + +pppoeBadversionPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets with unknown version" + + ::={pppoeBadversionPackets 2} + +pppoeBadversionPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Packets with unknown version" + + ::={pppoeBadversionPackets 3} + +pppoeControlPackets OBJECT IDENTIFIER ::={pppoe 3} + +pppoeControlPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Control packets" + + ::={pppoeControlPackets 1} + +pppoeControlPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Control packets" + + ::={pppoeControlPackets 2} + +pppoeControlPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Control packets" + + ::={pppoeControlPackets 3} + +pppoeTruncatedPackets OBJECT IDENTIFIER ::={pppoe 4} + +pppoeTruncatedPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Truncated packets dropped" + + ::={pppoeTruncatedPackets 1} + +pppoeTruncatedPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Truncated packets dropped" + + ::={pppoeTruncatedPackets 2} + +pppoeTruncatedPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Truncated packets dropped" + + ::={pppoeTruncatedPackets 3} + +pppoePaddedPackets OBJECT IDENTIFIER ::={pppoe 5} + +pppoePaddedPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Padded packets" + + ::={pppoePaddedPackets 1} + +pppoePaddedPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Padded packets" + + ::={pppoePaddedPackets 2} + +pppoePaddedPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Padded packets" + + ::={pppoePaddedPackets 3} + +pppoeIpv4Packets OBJECT IDENTIFIER ::={pppoe 6} + +pppoeIpv4PacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "IPv4 packets" + + ::={pppoeIpv4Packets 1} + +pppoeIpv4PacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "IPv4 packets" + + ::={pppoeIpv4Packets 2} + +pppoeIpv4PacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "IPv4 packets" + + ::={pppoeIpv4Packets 3} + +pppoeNonIpPackets OBJECT IDENTIFIER ::={pppoe 7} + +pppoeNonIpPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Non IP packets" + + ::={pppoeNonIpPackets 1} + +pppoeNonIpPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Non IP packets" + + ::={pppoeNonIpPackets 2} + +pppoeNonIpPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Non IP packets" + + ::={pppoeNonIpPackets 3} + +pppoeIpv6Packets OBJECT IDENTIFIER ::={pppoe 8} + +pppoeIpv6PacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "IPv6 packets" + + ::={pppoeIpv6Packets 1} + +pppoeIpv6PacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "IPv6 packets" + + ::={pppoeIpv6Packets 2} + +pppoeIpv6PacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "IPv6 packets" + + ::={pppoeIpv6Packets 3} + +general OBJECT IDENTIFIER ::={sysdiag 104} + +generalUptime OBJECT IDENTIFIER ::={general 1} + +generalUptimeVal OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION "System uptime" + + ::={generalUptime 1} + +generalPldUptime OBJECT IDENTIFIER ::={general 2} + +generalPldUptimeVal OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION "PLD uptime" + + ::={generalPldUptime 1} + +generalUser OBJECT IDENTIFIER ::={general 3} + +generalUserVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU User (0)" + + ::={generalUser 1} + +generalUserMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU User (0)" + + ::={generalUser 3} + +generalNice OBJECT IDENTIFIER ::={general 4} + +generalNiceVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU Nice (0)" + + ::={generalNice 1} + +generalNiceMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU Nice (0)" + + ::={generalNice 3} + +generalSystem OBJECT IDENTIFIER ::={general 5} + +generalSystemVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU System (0)" + + ::={generalSystem 1} + +generalSystemMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU System (0)" + + ::={generalSystem 3} + +generalUsage OBJECT IDENTIFIER ::={general 6} + +generalUsageVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU Usage (0)" + + ::={generalUsage 1} + +generalUsageMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU Usage (0)" + + ::={generalUsage 3} + +generalIowait OBJECT IDENTIFIER ::={general 7} + +generalIowaitVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU IO Wait (0)" + + ::={generalIowait 1} + +generalIowaitMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU IO Wait (0)" + + ::={generalIowait 3} + +generalIrq OBJECT IDENTIFIER ::={general 8} + +generalIrqVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU IRQ (0)" + + ::={generalIrq 1} + +generalIrqMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU IRQ (0)" + + ::={generalIrq 3} + +generalSoftirq OBJECT IDENTIFIER ::={general 9} + +generalSoftirqVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU SoftIRQ (0)" + + ::={generalSoftirq 1} + +generalSoftirqMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU SoftIRQ (0)" + + ::={generalSoftirq 3} + +generalUser1 OBJECT IDENTIFIER ::={general 10} + +generalUser1Val OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU User (1)" + + ::={generalUser1 1} + +generalUser1Max OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU User (1)" + + ::={generalUser1 3} + +generalNice1 OBJECT IDENTIFIER ::={general 11} + +generalNice1Val OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU Nice (1)" + + ::={generalNice1 1} + +generalNice1Max OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU Nice (1)" + + ::={generalNice1 3} + +generalSystem1 OBJECT IDENTIFIER ::={general 12} + +generalSystem1Val OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU System (1)" + + ::={generalSystem1 1} + +generalSystem1Max OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU System (1)" + + ::={generalSystem1 3} + +generalUsage1 OBJECT IDENTIFIER ::={general 13} + +generalUsage1Val OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU Usage (1)" + + ::={generalUsage1 1} + +generalUsage1Max OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU Usage (1)" + + ::={generalUsage1 3} + +generalIowait1 OBJECT IDENTIFIER ::={general 14} + +generalIowait1Val OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU IO Wait (1)" + + ::={generalIowait1 1} + +generalIowait1Max OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU IO Wait (1)" + + ::={generalIowait1 3} + +generalIrq1 OBJECT IDENTIFIER ::={general 15} + +generalIrq1Val OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU IRQ (1)" + + ::={generalIrq1 1} + +generalIrq1Max OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU IRQ (1)" + + ::={generalIrq1 3} + +generalSoftirq1 OBJECT IDENTIFIER ::={general 16} + +generalSoftirq1Val OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU SoftIRQ (1)" + + ::={generalSoftirq1 1} + +generalSoftirq1Max OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CPU SoftIRQ (1)" + + ::={generalSoftirq1 3} + +generalSwapIn OBJECT IDENTIFIER ::={general 17} + +generalSwapInVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Pages swapped in" + + ::={generalSwapIn 1} + +generalSwapInMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Pages swapped in" + + ::={generalSwapIn 3} + +generalSwapOut OBJECT IDENTIFIER ::={general 18} + +generalSwapOutVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Pages swapped out" + + ::={generalSwapOut 1} + +generalSwapOutMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Pages swapped out" + + ::={generalSwapOut 3} + +generalClients OBJECT IDENTIFIER ::={general 19} + +generalClientsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connected clients" + + ::={generalClients 1} + +generalClientsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connected clients" + + ::={generalClients 3} + +generalClientsAll OBJECT IDENTIFIER ::={general 20} + +generalClientsAllVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connected full clients" + + ::={generalClientsAll 1} + +generalClientsAllMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connected full clients" + + ::={generalClientsAll 3} + +generalMemFree OBJECT IDENTIFIER ::={general 21} + +generalMemFreeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Memory free" + + ::={generalMemFree 1} + +generalMemFreeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Memory free" + + ::={generalMemFree 3} + +generalMemUsed OBJECT IDENTIFIER ::={general 22} + +generalMemUsedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Memory used" + + ::={generalMemUsed 1} + +generalMemUsedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Memory used" + + ::={generalMemUsed 3} + +generalVmallocFree OBJECT IDENTIFIER ::={general 23} + +generalVmallocFreeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "VMalloc Memory free" + + ::={generalVmallocFree 1} + +generalVmallocFreeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "VMalloc Memory free" + + ::={generalVmallocFree 3} + +generalVmallocUsed OBJECT IDENTIFIER ::={general 24} + +generalVmallocUsedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "VMalloc memory used" + + ::={generalVmallocUsed 1} + +generalVmallocUsedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "VMalloc memory used" + + ::={generalVmallocUsed 3} + +generalVmallocChunk OBJECT IDENTIFIER ::={general 25} + +generalVmallocChunkVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "VMalloc memory chunk" + + ::={generalVmallocChunk 1} + +generalVmallocChunkMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "VMalloc memory chunk" + + ::={generalVmallocChunk 3} + +generalHosts OBJECT IDENTIFIER ::={general 29} + +generalHostsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hosts" + + ::={generalHosts 1} + +generalHostsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hosts" + + ::={generalHosts 3} + +generalConnections OBJECT IDENTIFIER ::={general 30} + +generalConnectionsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections" + + ::={generalConnections 1} + +generalConnectionsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections" + + ::={generalConnections 3} + +generalVnos OBJECT IDENTIFIER ::={general 31} + +generalVnosVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Visible NetObjects" + + ::={generalVnos 1} + +generalVnosMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Visible NetObjects" + + ::={generalVnos 3} + +generalSystemHdUsage OBJECT IDENTIFIER ::={general 32} + +generalSystemHdUsageVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "System disk usage" + + ::={generalSystemHdUsage 1} + +generalSystemHdUsageMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "System disk usage" + + ::={generalSystemHdUsage 3} + +generalStatsHdUsage OBJECT IDENTIFIER ::={general 33} + +generalStatsHdUsageVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Stats disk usage" + + ::={generalStatsHdUsage 1} + +generalStatsHdUsageMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Stats disk usage" + + ::={generalStatsHdUsage 3} + +generalStatsHdSize OBJECT IDENTIFIER ::={general 34} + +generalStatsHdSizeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Stats disk size" + + ::={generalStatsHdSize 1} + +generalStatsHdSizeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Stats disk size" + + ::={generalStatsHdSize 3} + +generalSystemHdSize OBJECT IDENTIFIER ::={general 35} + +generalSystemHdSizeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "System disk size" + + ::={generalSystemHdSize 1} + +generalSystemHdSizeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "System disk size" + + ::={generalSystemHdSize 3} + +generalPlsdRingbufUsage OBJECT IDENTIFIER ::={general 37} + +generalPlsdRingbufUsageVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "PLSD buffer usage" + + ::={generalPlsdRingbufUsage 1} + +generalPlsdRingbufUsageMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "PLSD buffer usage" + + ::={generalPlsdRingbufUsage 3} + +generalActiveVnos OBJECT IDENTIFIER ::={general 40} + +generalActiveVnosVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Active visible NetObjects" + + ::={generalActiveVnos 1} + +generalActiveVnosMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Active visible NetObjects" + + ::={generalActiveVnos 3} + +generalDrdlRevision OBJECT IDENTIFIER ::={general 42} + +generalDrdlRevisionVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "DRDL revision" + + ::={generalDrdlRevision 1} + +generalDrdlRevisionMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "DRDL revision" + + ::={generalDrdlRevision 3} + +generalFailedNetobjects OBJECT IDENTIFIER ::={general 43} + +generalFailedNetobjectsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Visible netobject pool exhausted" + + ::={generalFailedNetobjects 1} + +generalFailedNetobjectsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Visible netobject pool exhausted" + + ::={generalFailedNetobjects 2} + +generalFailedNetobjectsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Visible netobject pool exhausted" + + ::={generalFailedNetobjects 3} + +generalFailedFullNetobjects OBJECT IDENTIFIER ::={general 44} + +generalFailedFullNetobjectsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Active visible netobject pool exhausted" + + ::={generalFailedFullNetobjects 1} + +generalFailedFullNetobjectsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Active visible netobject pool exhausted" + + ::={generalFailedFullNetobjects 2} + +generalFailedFullNetobjectsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Active visible netobject pool exhausted" + + ::={generalFailedFullNetobjects 3} + +generalStringCacheUsage OBJECT IDENTIFIER ::={general 45} + +generalStringCacheUsageVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "String cache usage" + + ::={generalStringCacheUsage 1} + +generalStringCacheUsageMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "String cache usage" + + ::={generalStringCacheUsage 3} + +generalUnaccountedPlsdIn OBJECT IDENTIFIER ::={general 46} + +generalUnaccountedPlsdInVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Bytes in not accounted in plsd" + + ::={generalUnaccountedPlsdIn 1} + +generalUnaccountedPlsdInMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Bytes in not accounted in plsd" + + ::={generalUnaccountedPlsdIn 2} + +generalUnaccountedPlsdInMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Bytes in not accounted in plsd" + + ::={generalUnaccountedPlsdIn 3} + +generalUnaccountedPlsdOut OBJECT IDENTIFIER ::={general 47} + +generalUnaccountedPlsdOutVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Bytes out not accounted in plsd" + + ::={generalUnaccountedPlsdOut 1} + +generalUnaccountedPlsdOutMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Bytes out not accounted in plsd" + + ::={generalUnaccountedPlsdOut 2} + +generalUnaccountedPlsdOutMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Bytes out not accounted in plsd" + + ::={generalUnaccountedPlsdOut 3} + +generalUnaccountedPlsdFlows OBJECT IDENTIFIER ::={general 48} + +generalUnaccountedPlsdFlowsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow updates not sent to plsd" + + ::={generalUnaccountedPlsdFlows 1} + +generalUnaccountedPlsdFlowsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow updates not sent to plsd" + + ::={generalUnaccountedPlsdFlows 2} + +generalUnaccountedPlsdFlowsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow updates not sent to plsd" + + ::={generalUnaccountedPlsdFlows 3} + +generalHostCacheExhausted OBJECT IDENTIFIER ::={general 59} + +generalHostCacheExhaustedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hosts not created due to exhausted cache" + + ::={generalHostCacheExhausted 1} + +generalHostCacheExhaustedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hosts not created due to exhausted cache" + + ::={generalHostCacheExhausted 2} + +generalHostCacheExhaustedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hosts not created due to exhausted cache" + + ::={generalHostCacheExhausted 3} + +interface OBJECT IDENTIFIER ::={sysdiag 120} + +interfaceBytesToEngine OBJECT IDENTIFIER ::={interface 8} + +interfaceBytesToEngineVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Sent to engine" + + ::={interfaceBytesToEngine 1} + +interfaceBytesToEngineMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Sent to engine" + + ::={interfaceBytesToEngine 2} + +interfaceBytesToEngineMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Sent to engine" + + ::={interfaceBytesToEngine 3} + +interfaceBytesFromEngine OBJECT IDENTIFIER ::={interface 9} + +interfaceBytesFromEngineVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Received from engine" + + ::={interfaceBytesFromEngine 1} + +interfaceBytesFromEngineMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Received from engine" + + ::={interfaceBytesFromEngine 2} + +interfaceBytesFromEngineMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Received from engine" + + ::={interfaceBytesFromEngine 3} + +interfaceFlowNewMissed OBJECT IDENTIFIER ::={interface 10} + +interfaceFlowNewMissedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "New flows missed" + + ::={interfaceFlowNewMissed 1} + +interfaceFlowNewMissedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "New flows missed" + + ::={interfaceFlowNewMissed 2} + +interfaceFlowNewMissedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "New flows missed" + + ::={interfaceFlowNewMissed 3} + +interfaceFlowUpdMissed OBJECT IDENTIFIER ::={interface 11} + +interfaceFlowUpdMissedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow updates missed" + + ::={interfaceFlowUpdMissed 1} + +interfaceFlowUpdMissedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow updates missed" + + ::={interfaceFlowUpdMissed 2} + +interfaceFlowUpdMissedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Flow updates missed" + + ::={interfaceFlowUpdMissed 3} + +interfaceFlowNew OBJECT IDENTIFIER ::={interface 12} + +interfaceFlowNewVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "New flows" + + ::={interfaceFlowNew 1} + +interfaceFlowNewMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "New flows" + + ::={interfaceFlowNew 2} + +interfaceFlowNewMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "New flows" + + ::={interfaceFlowNew 3} + +interfaceFlowHostnameAllocFail OBJECT IDENTIFIER ::={interface 13} + +interfaceFlowHostnameAllocFailVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hostname allocation failures" + + ::={interfaceFlowHostnameAllocFail 1} + +interfaceFlowHostnameAllocFailMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hostname allocation failures" + + ::={interfaceFlowHostnameAllocFail 2} + +interfaceFlowHostnameAllocFailMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hostname allocation failures" + + ::={interfaceFlowHostnameAllocFail 3} + +interfaceFlowUpdReordered OBJECT IDENTIFIER ::={interface 14} + +interfaceFlowUpdReorderedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Reordered flow updates" + + ::={interfaceFlowUpdReordered 1} + +interfaceFlowUpdReorderedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Reordered flow updates" + + ::={interfaceFlowUpdReordered 2} + +interfaceFlowUpdReorderedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Reordered flow updates" + + ::={interfaceFlowUpdReordered 3} + +dynnetobjs OBJECT IDENTIFIER ::={sysdiag 121} + +dynamicnetobjectFailedInserts OBJECT IDENTIFIER ::={dynnetobjs 1} + +dynamicnetobjectFailedInsertsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Failed inserts (too many dynamic items)" + + ::={dynamicnetobjectFailedInserts 1} + +dynamicnetobjectFailedInsertsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Failed inserts (too many dynamic items)" + + ::={dynamicnetobjectFailedInserts 2} + +dynamicnetobjectFailedInsertsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Failed inserts (too many dynamic items)" + + ::={dynamicnetobjectFailedInserts 3} + +dynamicnetobjectListItems OBJECT IDENTIFIER ::={dynnetobjs 2} + +dynamicnetobjectListItemsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Items returned from last PLDB query" + + ::={dynamicnetobjectListItems 1} + +dynamicnetobjectListItemsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Items returned from last PLDB query" + + ::={dynamicnetobjectListItems 3} + +dynamicnetobjectRemoveSucceeded OBJECT IDENTIFIER ::={dynnetobjs 3} + +dynamicnetobjectRemoveSucceededVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls succeeded" + + ::={dynamicnetobjectRemoveSucceeded 1} + +dynamicnetobjectRemoveSucceededMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls succeeded" + + ::={dynamicnetobjectRemoveSucceeded 2} + +dynamicnetobjectRemoveSucceededMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls succeeded" + + ::={dynamicnetobjectRemoveSucceeded 3} + +dynamicnetobjectRemoveFailed OBJECT IDENTIFIER ::={dynnetobjs 4} + +dynamicnetobjectRemoveFailedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls failed" + + ::={dynamicnetobjectRemoveFailed 1} + +dynamicnetobjectRemoveFailedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls failed" + + ::={dynamicnetobjectRemoveFailed 2} + +dynamicnetobjectRemoveFailedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls failed" + + ::={dynamicnetobjectRemoveFailed 3} + +dynamicnetobjectCurrentIpCount OBJECT IDENTIFIER ::={dynnetobjs 5} + +dynamicnetobjectCurrentIpCountVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "IPs in table" + + ::={dynamicnetobjectCurrentIpCount 1} + +dynamicnetobjectCurrentIpCountMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "IPs in table" + + ::={dynamicnetobjectCurrentIpCount 3} + +dynamicnetobjectCurrentCount OBJECT IDENTIFIER ::={dynnetobjs 6} + +dynamicnetobjectCurrentCountVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Items in table" + + ::={dynamicnetobjectCurrentCount 1} + +dynamicnetobjectCurrentCountMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Items in table" + + ::={dynamicnetobjectCurrentCount 3} + +dynamicnetobjectRemovePldbFailed OBJECT IDENTIFIER ::={dynnetobjs 7} + +dynamicnetobjectRemovePldbFailedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls failed in PLDB" + + ::={dynamicnetobjectRemovePldbFailed 1} + +dynamicnetobjectRemovePldbFailedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls failed in PLDB" + + ::={dynamicnetobjectRemovePldbFailed 2} + +dynamicnetobjectRemovePldbFailedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls failed in PLDB" + + ::={dynamicnetobjectRemovePldbFailed 3} + +dynamicnetobjectAddSucceeded OBJECT IDENTIFIER ::={dynnetobjs 8} + +dynamicnetobjectAddSucceededVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Add calls succeeded" + + ::={dynamicnetobjectAddSucceeded 1} + +dynamicnetobjectAddSucceededMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Add calls succeeded" + + ::={dynamicnetobjectAddSucceeded 2} + +dynamicnetobjectAddSucceededMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Add calls succeeded" + + ::={dynamicnetobjectAddSucceeded 3} + +dynamicnetobjectAddFailed OBJECT IDENTIFIER ::={dynnetobjs 9} + +dynamicnetobjectAddFailedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Add calls failed" + + ::={dynamicnetobjectAddFailed 1} + +dynamicnetobjectAddFailedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Add calls failed" + + ::={dynamicnetobjectAddFailed 2} + +dynamicnetobjectAddFailedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Add calls failed" + + ::={dynamicnetobjectAddFailed 3} + +dynamicnetobjectInsertPldbFailed OBJECT IDENTIFIER ::={dynnetobjs 10} + +dynamicnetobjectInsertPldbFailedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Add calls failed in PLDB" + + ::={dynamicnetobjectInsertPldbFailed 1} + +dynamicnetobjectInsertPldbFailedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Add calls failed in PLDB" + + ::={dynamicnetobjectInsertPldbFailed 2} + +dynamicnetobjectInsertPldbFailedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Add calls failed in PLDB" + + ::={dynamicnetobjectInsertPldbFailed 3} + +dynamicnetobjectAddCalls OBJECT IDENTIFIER ::={dynnetobjs 11} + +dynamicnetobjectAddCallsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Add calls attempted" + + ::={dynamicnetobjectAddCalls 1} + +dynamicnetobjectAddCallsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Add calls attempted" + + ::={dynamicnetobjectAddCalls 2} + +dynamicnetobjectAddCallsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Add calls attempted" + + ::={dynamicnetobjectAddCalls 3} + +dynamicnetobjectRemoveCalls OBJECT IDENTIFIER ::={dynnetobjs 12} + +dynamicnetobjectRemoveCallsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls attempted" + + ::={dynamicnetobjectRemoveCalls 1} + +dynamicnetobjectRemoveCallsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls attempted" + + ::={dynamicnetobjectRemoveCalls 2} + +dynamicnetobjectRemoveCallsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls attempted" + + ::={dynamicnetobjectRemoveCalls 3} + +dynamicnetobjectUnqualifiedNoRemoveCalls OBJECT IDENTIFIER ::={dynnetobjs 13} + +dynamicnetobjectUnqualifiedNoRemoveCallsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls for unknown netobject" + + ::={dynamicnetobjectUnqualifiedNoRemoveCalls 1} + +dynamicnetobjectUnqualifiedNoRemoveCallsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls for unknown netobject" + + ::={dynamicnetobjectUnqualifiedNoRemoveCalls 2} + +dynamicnetobjectUnqualifiedNoRemoveCallsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls for unknown netobject" + + ::={dynamicnetobjectUnqualifiedNoRemoveCalls 3} + +dynamicnetobjectUnqualifiedIpRemoveCalls OBJECT IDENTIFIER ::={dynnetobjs 14} + +dynamicnetobjectUnqualifiedIpRemoveCallsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls for unknown IP" + + ::={dynamicnetobjectUnqualifiedIpRemoveCalls 1} + +dynamicnetobjectUnqualifiedIpRemoveCallsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls for unknown IP" + + ::={dynamicnetobjectUnqualifiedIpRemoveCalls 2} + +dynamicnetobjectUnqualifiedIpRemoveCallsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remove calls for unknown IP" + + ::={dynamicnetobjectUnqualifiedIpRemoveCalls 3} + +dynamicnetobjectListCalls OBJECT IDENTIFIER ::={dynnetobjs 15} + +dynamicnetobjectListCallsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "List calls attempted" + + ::={dynamicnetobjectListCalls 1} + +dynamicnetobjectListCallsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "List calls attempted" + + ::={dynamicnetobjectListCalls 2} + +dynamicnetobjectListCallsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "List calls attempted" + + ::={dynamicnetobjectListCalls 3} + +dynamicnetobjectListItemsReturned OBJECT IDENTIFIER ::={dynnetobjs 16} + +dynamicnetobjectListItemsReturnedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Items returned from list calls" + + ::={dynamicnetobjectListItemsReturned 1} + +dynamicnetobjectListItemsReturnedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Items returned from list calls" + + ::={dynamicnetobjectListItemsReturned 2} + +dynamicnetobjectListItemsReturnedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Items returned from list calls" + + ::={dynamicnetobjectListItemsReturned 3} + +dynamicnetobjectSubscriberConflicts OBJECT IDENTIFIER ::={dynnetobjs 17} + +dynamicnetobjectSubscriberConflictsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Conflicting subscriber names" + + ::={dynamicnetobjectSubscriberConflicts 1} + +dynamicnetobjectSubscriberConflictsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Conflicting subscriber names" + + ::={dynamicnetobjectSubscriberConflicts 2} + +dynamicnetobjectSubscriberConflictsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Conflicting subscriber names" + + ::={dynamicnetobjectSubscriberConflicts 3} + +dynamicnetobjectSubscriberCount OBJECT IDENTIFIER ::={dynnetobjs 18} + +dynamicnetobjectSubscriberCountVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of unique subscriber names" + + ::={dynamicnetobjectSubscriberCount 1} + +dynamicnetobjectSubscriberCountMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of unique subscriber names" + + ::={dynamicnetobjectSubscriberCount 3} + +dynamicnetobjectSubscriberTooMany OBJECT IDENTIFIER ::={dynnetobjs 19} + +dynamicnetobjectSubscriberTooManyVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many unique subscriber names failures" + + ::={dynamicnetobjectSubscriberTooMany 1} + +dynamicnetobjectSubscriberTooManyMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many unique subscriber names failures" + + ::={dynamicnetobjectSubscriberTooMany 2} + +dynamicnetobjectSubscriberTooManyMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too many unique subscriber names failures" + + ::={dynamicnetobjectSubscriberTooMany 3} + +dynamicnetobjectSqliteMemoryUsed OBJECT IDENTIFIER ::={dynnetobjs 20} + +dynamicnetobjectSqliteMemoryUsedVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "Add requests in queue" + + ::={dynamicnetobjectSqliteMemoryUsed 1} + +dynamicnetobjectSqliteMemoryUsedMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "Add requests in queue" + + ::={dynamicnetobjectSqliteMemoryUsed 3} + +dynamicnetobjectPendingAdds OBJECT IDENTIFIER ::={dynnetobjs 21} + +dynamicnetobjectPendingAddsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "Memory used by the dynitems sqlite thread" + + ::={dynamicnetobjectPendingAdds 1} + +dynamicnetobjectPendingAddsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION "Memory used by the dynitems sqlite thread" + + ::={dynamicnetobjectPendingAdds 3} + +bgp OBJECT IDENTIFIER ::={sysdiag 122} + +bgpUpdates OBJECT IDENTIFIER ::={bgp 1} + +bgpUpdatesVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received" + + ::={bgpUpdates 1} + +bgpUpdatesMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received" + + ::={bgpUpdates 3} + +bgpPrefixes OBJECT IDENTIFIER ::={bgp 2} + +bgpPrefixesVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of prefixes" + + ::={bgpPrefixes 1} + +bgpPrefixesMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of prefixes" + + ::={bgpPrefixes 3} + +bgpPaths OBJECT IDENTIFIER ::={bgp 3} + +bgpPathsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of unique paths" + + ::={bgpPaths 1} + +bgpPathsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of unique paths" + + ::={bgpPaths 3} + +bgpUptime OBJECT IDENTIFIER ::={bgp 4} + +bgpUptimeVal OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connection uptime" + + ::={bgpUptime 1} + +bgpConvresionTime OBJECT IDENTIFIER ::={bgp 5} + +bgpConvresionTimeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Time to convert lookup tree" + + ::={bgpConvresionTime 1} + +bgpConvresionTimeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Time to convert lookup tree" + + ::={bgpConvresionTime 3} + +bgpSendTime OBJECT IDENTIFIER ::={bgp 6} + +bgpSendTimeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Time to update lookup tree" + + ::={bgpSendTime 1} + +bgpSendTimeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Time to update lookup tree" + + ::={bgpSendTime 3} + +bgpReplaces OBJECT IDENTIFIER ::={bgp 7} + +bgpReplacesVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Total count of announces without withdraw" + + ::={bgpReplaces 1} + +bgpReplacesMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Total count of announces without withdraw" + + ::={bgpReplaces 3} + +bgpWithdraws OBJECT IDENTIFIER ::={bgp 8} + +bgpWithdrawsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Total count of withdrawn routes" + + ::={bgpWithdraws 1} + +bgpWithdrawsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Total count of withdrawn routes" + + ::={bgpWithdraws 3} + +bgpAnnounces OBJECT IDENTIFIER ::={bgp 9} + +bgpAnnouncesVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Total count of announced routes" + + ::={bgpAnnounces 1} + +bgpAnnouncesMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Total count of announced routes" + + ::={bgpAnnounces 3} + +bgpReconnects OBJECT IDENTIFIER ::={bgp 10} + +bgpReconnectsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Total number of reconnects" + + ::={bgpReconnects 1} + +bgpReconnectsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Total number of reconnects" + + ::={bgpReconnects 3} + +bgpPathConvTime OBJECT IDENTIFIER ::={bgp 11} + +bgpPathConvTimeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Time to convert/send paths" + + ::={bgpPathConvTime 1} + +bgpPathConvTimeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Time to convert/send paths" + + ::={bgpPathConvTime 3} + +bgpRecyclePaths OBJECT IDENTIFIER ::={bgp 12} + +bgpRecyclePathsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of paths waiting for garbage collection" + + ::={bgpRecyclePaths 1} + +bgpRecyclePathsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of paths waiting for garbage collection" + + ::={bgpRecyclePaths 3} + +bgpFreelistPaths OBJECT IDENTIFIER ::={bgp 13} + +bgpFreelistPathsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of paths in freelist" + + ::={bgpFreelistPaths 1} + +bgpFreelistPathsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of paths in freelist" + + ::={bgpFreelistPaths 3} + +bgpBalanceTime OBJECT IDENTIFIER ::={bgp 14} + +bgpBalanceTimeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Time to rebalance tree" + + ::={bgpBalanceTime 1} + +bgpBalanceTimeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Time to rebalance tree" + + ::={bgpBalanceTime 3} + +bgpCommunityTooSmall OBJECT IDENTIFIER ::={bgp 24} + +bgpCommunityTooSmallVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of community updates received that exceed PL_CONFIG_BGP_MAX_COMMUNITIES" + + ::={bgpCommunityTooSmall 1} + +bgpCommunityTooSmallMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of community updates received that exceed PL_CONFIG_BGP_MAX_COMMUNITIES" + + ::={bgpCommunityTooSmall 3} + +bgpCommunityMaxSeen OBJECT IDENTIFIER ::={bgp 25} + +bgpCommunityMaxSeenVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Maximum number of communities we have seen in a BGP update" + + ::={bgpCommunityMaxSeen 1} + +bgpCommunityMaxSeenMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Maximum number of communities we have seen in a BGP update" + + ::={bgpCommunityMaxSeen 3} + +qsync OBJECT IDENTIFIER ::={sysdiag 123} + +qsyncIUpdates OBJECT IDENTIFIER ::={qsync 1} + +qsyncIUpdatesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received from reapers" + + ::={qsyncIUpdates 1} + +qsyncIUpdatesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received from reapers" + + ::={qsyncIUpdates 2} + +qsyncIUpdatesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received from reapers" + + ::={qsyncIUpdates 3} + +qsyncIUpdatesOldRuleset OBJECT IDENTIFIER ::={qsync 2} + +qsyncIUpdatesOldRulesetVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received from reapers with old ruleset" + + ::={qsyncIUpdatesOldRuleset 1} + +qsyncIUpdatesOldRulesetMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received from reapers with old ruleset" + + ::={qsyncIUpdatesOldRuleset 2} + +qsyncIUpdatesOldRulesetMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received from reapers with old ruleset" + + ::={qsyncIUpdatesOldRuleset 3} + +qsyncIUpdatesUnknownObject OBJECT IDENTIFIER ::={qsync 3} + +qsyncIUpdatesUnknownObjectVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received for unknown object" + + ::={qsyncIUpdatesUnknownObject 1} + +qsyncIUpdatesUnknownObjectMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received for unknown object" + + ::={qsyncIUpdatesUnknownObject 2} + +qsyncIUpdatesUnknownObjectMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received for unknown object" + + ::={qsyncIUpdatesUnknownObject 3} + +qsyncIReaperSplitsCreated OBJECT IDENTIFIER ::={qsync 4} + +qsyncIReaperSplitsCreatedVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Split entries created (reaper)" + + ::={qsyncIReaperSplitsCreated 1} + +qsyncIReaperSplitsCreatedMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Split entries created (reaper)" + + ::={qsyncIReaperSplitsCreated 2} + +qsyncIReaperSplitsCreatedMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Split entries created (reaper)" + + ::={qsyncIReaperSplitsCreated 3} + +qsyncIReaperSplitsActive OBJECT IDENTIFIER ::={qsync 5} + +qsyncIReaperSplitsActiveVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Split entries active (reaper)" + + ::={qsyncIReaperSplitsActive 1} + +qsyncIReaperSplitsActiveMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Split entries active (reaper)" + + ::={qsyncIReaperSplitsActive 3} + +qsyncISumFreelistSize OBJECT IDENTIFIER ::={qsync 6} + +qsyncISumFreelistSizeVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Split entries on free list (sum)" + + ::={qsyncISumFreelistSize 1} + +qsyncISumFreelistSizeMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Split entries on free list (sum)" + + ::={qsyncISumFreelistSize 3} + +qsyncISumSplitsActive OBJECT IDENTIFIER ::={qsync 7} + +qsyncISumSplitsActiveVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Split entries active (sum)" + + ::={qsyncISumSplitsActive 1} + +qsyncISumSplitsActiveMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Split entries active (sum)" + + ::={qsyncISumSplitsActive 3} + +qsyncIAdjustmentsSent OBJECT IDENTIFIER ::={qsync 8} + +qsyncIAdjustmentsSentVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object adjustments sent" + + ::={qsyncIAdjustmentsSent 1} + +qsyncIAdjustmentsSentMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object adjustments sent" + + ::={qsyncIAdjustmentsSent 2} + +qsyncIAdjustmentsSentMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object adjustments sent" + + ::={qsyncIAdjustmentsSent 3} + +qsyncENumPeers OBJECT IDENTIFIER ::={qsync 9} + +qsyncENumPeersVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Number of peers" + + ::={qsyncENumPeers 1} + +qsyncENumPeersMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Number of peers" + + ::={qsyncENumPeers 3} + +qsyncEUpdatesMismatch OBJECT IDENTIFIER ::={qsync 10} + +qsyncEUpdatesMismatchVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Updates with mismatching ruleset" + + ::={qsyncEUpdatesMismatch 1} + +qsyncEUpdatesMismatchMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Updates with mismatching ruleset" + + ::={qsyncEUpdatesMismatch 2} + +qsyncEUpdatesMismatchMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Updates with mismatching ruleset" + + ::={qsyncEUpdatesMismatch 3} + +qsyncEUpdatePackets OBJECT IDENTIFIER ::={qsync 11} + +qsyncEUpdatePacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Update packets" + + ::={qsyncEUpdatePackets 1} + +qsyncEUpdatePacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Update packets" + + ::={qsyncEUpdatePackets 2} + +qsyncEUpdatePacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Update packets" + + ::={qsyncEUpdatePackets 3} + +qsyncESplitTimeout OBJECT IDENTIFIER ::={qsync 12} + +qsyncESplitTimeoutVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Split object age timeout" + + ::={qsyncESplitTimeout 1} + +qsyncESplitTimeoutMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Split object age timeout" + + ::={qsyncESplitTimeout 2} + +qsyncESplitTimeoutMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Split object age timeout" + + ::={qsyncESplitTimeout 3} + +qsyncERecvUpdateEntries OBJECT IDENTIFIER ::={qsync 13} + +qsyncERecvUpdateEntriesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Received update entries" + + ::={qsyncERecvUpdateEntries 1} + +qsyncERecvUpdateEntriesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Received update entries" + + ::={qsyncERecvUpdateEntries 2} + +qsyncERecvUpdateEntriesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Received update entries" + + ::={qsyncERecvUpdateEntries 3} + +qsyncESendUpdateEntries OBJECT IDENTIFIER ::={qsync 14} + +qsyncESendUpdateEntriesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Sent update entries" + + ::={qsyncESendUpdateEntries 1} + +qsyncESendUpdateEntriesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Sent update entries" + + ::={qsyncESendUpdateEntries 2} + +qsyncESendUpdateEntriesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Sent update entries" + + ::={qsyncESendUpdateEntries 3} + +qsyncESendUpdatePackets OBJECT IDENTIFIER ::={qsync 15} + +qsyncESendUpdatePacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Sent update packets" + + ::={qsyncESendUpdatePackets 1} + +qsyncESendUpdatePacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Sent update packets" + + ::={qsyncESendUpdatePackets 2} + +qsyncESendUpdatePacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Sent update packets" + + ::={qsyncESendUpdatePackets 3} + +qsyncIUnsync OBJECT IDENTIFIER ::={qsync 16} + +qsyncIUnsyncVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Qsync not run because unsynced objects" + + ::={qsyncIUnsync 1} + +qsyncIUnsyncMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Qsync not run because unsynced objects" + + ::={qsyncIUnsync 2} + +qsyncIUnsyncMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Qsync not run because unsynced objects" + + ::={qsyncIUnsync 3} + +qsyncESendbufFull OBJECT IDENTIFIER ::={qsync 17} + +qsyncESendbufFullVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Entries dropped due to full sendbuffer" + + ::={qsyncESendbufFull 1} + +qsyncESendbufFullMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Entries dropped due to full sendbuffer" + + ::={qsyncESendbufFull 2} + +qsyncESendbufFullMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Entries dropped due to full sendbuffer" + + ::={qsyncESendbufFull 3} + +qsyncESendbufUsage OBJECT IDENTIFIER ::={qsync 18} + +qsyncESendbufUsageVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Sendbuffer usage" + + ::={qsyncESendbufUsage 1} + +qsyncESendbufUsageMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(ext) Sendbuffer usage" + + ::={qsyncESendbufUsage 3} + +qsyncIIgnoredOOO OBJECT IDENTIFIER ::={qsync 19} + +qsyncIIgnoredOOOVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ignored out of order updates" + + ::={qsyncIIgnoredOOO 1} + +qsyncIIgnoredOOOMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ignored out of order updates" + + ::={qsyncIIgnoredOOO 2} + +qsyncIIgnoredOOOMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ignored out of order updates" + + ::={qsyncIIgnoredOOO 3} + +qsyncIIgnoredGenWrap OBJECT IDENTIFIER ::={qsync 20} + +qsyncIIgnoredGenWrapVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ignored updates (generation wrap)" + + ::={qsyncIIgnoredGenWrap 1} + +qsyncIIgnoredGenWrapMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ignored updates (generation wrap)" + + ::={qsyncIIgnoredGenWrap 2} + +qsyncIIgnoredGenWrapMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ignored updates (generation wrap)" + + ::={qsyncIIgnoredGenWrap 3} + +shapingcounter OBJECT IDENTIFIER ::={sysdiag 124} + +shapingcounterUpdates OBJECT IDENTIFIER ::={shapingcounter 1} + +shapingcounterUpdatesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received" + + ::={shapingcounterUpdates 1} + +shapingcounterUpdatesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received" + + ::={shapingcounterUpdates 2} + +shapingcounterUpdatesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates received" + + ::={shapingcounterUpdates 3} + +shapingcounterActive OBJECT IDENTIFIER ::={shapingcounter 2} + +shapingcounterActiveVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Active counters" + + ::={shapingcounterActive 1} + +shapingcounterActiveMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Active counters" + + ::={shapingcounterActive 3} + +shapingcounterClients OBJECT IDENTIFIER ::={shapingcounter 3} + +shapingcounterClientsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Active clients" + + ::={shapingcounterClients 1} + +shapingcounterClientsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Active clients" + + ::={shapingcounterClients 3} + +shapingcounterRecycle OBJECT IDENTIFIER ::={shapingcounter 4} + +shapingcounterRecycleVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Recycles" + + ::={shapingcounterRecycle 1} + +shapingcounterRecycleMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Recycles" + + ::={shapingcounterRecycle 2} + +shapingcounterRecycleMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Recycles" + + ::={shapingcounterRecycle 3} + +shapingcounterUpdatesInteresting OBJECT IDENTIFIER ::={shapingcounter 5} + +shapingcounterUpdatesInterestingVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates crossing granularity boundary received" + + ::={shapingcounterUpdatesInteresting 1} + +shapingcounterUpdatesInterestingMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates crossing granularity boundary received" + + ::={shapingcounterUpdatesInteresting 2} + +shapingcounterUpdatesInterestingMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Updates crossing granularity boundary received" + + ::={shapingcounterUpdatesInteresting 3} + +divert OBJECT IDENTIFIER ::={sysdiag 125} + +divertOutOfHosts OBJECT IDENTIFIER ::={divert 2} + +divertOutOfHostsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of hosts" + + ::={divertOutOfHosts 1} + +divertOutOfHostsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of hosts" + + ::={divertOutOfHosts 2} + +divertOutOfHostsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Out of hosts" + + ::={divertOutOfHosts 3} + +divertOversizeL2 OBJECT IDENTIFIER ::={divert 3} + +divertOversizeL2Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too large L2-headers" + + ::={divertOversizeL2 1} + +divertOversizeL2Mom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too large L2-headers" + + ::={divertOversizeL2 2} + +divertOversizeL2Max OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Too large L2-headers" + + ::={divertOversizeL2 3} + +divertEgressPackets OBJECT IDENTIFIER ::={divert 4} + +divertEgressPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Egress packets" + + ::={divertEgressPackets 1} + +divertEgressPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Egress packets" + + ::={divertEgressPackets 2} + +divertEgressPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Egress packets" + + ::={divertEgressPackets 3} + +divertEgressBytes OBJECT IDENTIFIER ::={divert 5} + +divertEgressBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Egress bytes" + + ::={divertEgressBytes 1} + +divertEgressBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Egress bytes" + + ::={divertEgressBytes 2} + +divertEgressBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Egress bytes" + + ::={divertEgressBytes 3} + +divertIngressPackets OBJECT IDENTIFIER ::={divert 6} + +divertIngressPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ingress packets" + + ::={divertIngressPackets 1} + +divertIngressPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ingress packets" + + ::={divertIngressPackets 2} + +divertIngressPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ingress packets" + + ::={divertIngressPackets 3} + +divertIngressBytes OBJECT IDENTIFIER ::={divert 7} + +divertIngressBytesVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ingress bytes" + + ::={divertIngressBytes 1} + +divertIngressBytesMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ingress bytes" + + ::={divertIngressBytes 2} + +divertIngressBytesMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ingress bytes" + + ::={divertIngressBytes 3} + +divertIngressPacketsNohost OBJECT IDENTIFIER ::={divert 8} + +divertIngressPacketsNohostVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ingress packets with missing host" + + ::={divertIngressPacketsNohost 1} + +divertIngressPacketsNohostMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ingress packets with missing host" + + ::={divertIngressPacketsNohost 2} + +divertIngressPacketsNohostMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ingress packets with missing host" + + ::={divertIngressPacketsNohost 3} + +divertIngressPacketsNol2 OBJECT IDENTIFIER ::={divert 9} + +divertIngressPacketsNol2Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ingress packets with host missing L2-header" + + ::={divertIngressPacketsNol2 1} + +divertIngressPacketsNol2Mom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ingress packets with host missing L2-header" + + ::={divertIngressPacketsNol2 2} + +divertIngressPacketsNol2Max OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Ingress packets with host missing L2-header" + + ::={divertIngressPacketsNol2 3} + +divertHostsUse OBJECT IDENTIFIER ::={divert 10} + +divertHostsUseVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hosts" + + ::={divertHostsUse 1} + +divertHostsUseMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hosts" + + ::={divertHostsUse 3} + +divertConnections OBJECT IDENTIFIER ::={divert 11} + +divertConnectionsVal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections" + + ::={divertConnections 1} + +divertConnectionsMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connections" + + ::={divertConnections 3} + +divertHbReqSent OBJECT IDENTIFIER ::={divert 12} + +divertHbReqSentVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heartbeat requests sent" + + ::={divertHbReqSent 1} + +divertHbReqSentMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heartbeat requests sent" + + ::={divertHbReqSent 2} + +divertHbReqSentMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heartbeat requests sent" + + ::={divertHbReqSent 3} + +divertHbReqRecv OBJECT IDENTIFIER ::={divert 13} + +divertHbReqRecvVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heartbeat requests received" + + ::={divertHbReqRecv 1} + +divertHbReqRecvMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heartbeat requests received" + + ::={divertHbReqRecv 2} + +divertHbReqRecvMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heartbeat requests received" + + ::={divertHbReqRecv 3} + +divertHbRepSent OBJECT IDENTIFIER ::={divert 14} + +divertHbRepSentVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heartbeat replies sent" + + ::={divertHbRepSent 1} + +divertHbRepSentMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heartbeat replies sent" + + ::={divertHbRepSent 2} + +divertHbRepSentMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heartbeat replies sent" + + ::={divertHbRepSent 3} + +divertHbRepRecv OBJECT IDENTIFIER ::={divert 15} + +divertHbRepRecvVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heartbeat replies received" + + ::={divertHbRepRecv 1} + +divertHbRepRecvMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heartbeat replies received" + + ::={divertHbRepRecv 2} + +divertHbRepRecvMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heartbeat replies received" + + ::={divertHbRepRecv 3} + +divertHbLost OBJECT IDENTIFIER ::={divert 16} + +divertHbLostVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heartbeats lost" + + ::={divertHbLost 1} + +divertHbLostMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heartbeats lost" + + ::={divertHbLost 2} + +divertHbLostMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Heartbeats lost" + + ::={divertHbLost 3} + +divertBypassPackets OBJECT IDENTIFIER ::={divert 17} + +divertBypassPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Bypassed packets" + + ::={divertBypassPackets 1} + +divertBypassPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Bypassed packets" + + ::={divertBypassPackets 2} + +divertBypassPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Bypassed packets" + + ::={divertBypassPackets 3} + +divertDroppedPackets OBJECT IDENTIFIER ::={divert 18} + +divertDroppedPacketsVal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dropped packets" + + ::={divertDroppedPackets 1} + +divertDroppedPacketsMom OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dropped packets" + + ::={divertDroppedPackets 2} + +divertDroppedPacketsMax OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Dropped packets" + + ::={divertDroppedPackets 3} + + + + +END + From 66a3f03f7c8e539ab66c3e3e9184e575b49e8ce0 Mon Sep 17 00:00:00 2001 From: laf Date: Sun, 12 Apr 2015 09:23:56 +0100 Subject: [PATCH 02/59] fixed filename --- includes/polling/os/{procera.inc..php => procera.inc.php} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename includes/polling/os/{procera.inc..php => procera.inc.php} (100%) diff --git a/includes/polling/os/procera.inc..php b/includes/polling/os/procera.inc.php similarity index 100% rename from includes/polling/os/procera.inc..php rename to includes/polling/os/procera.inc.php From 42acccd3fb425345855bb3c830d74fb18e39acf6 Mon Sep 17 00:00:00 2001 From: laf Date: Mon, 13 Apr 2015 10:18:15 +0100 Subject: [PATCH 03/59] started on schedule maintenance section --- html/ajax_search.php | 5 +- html/includes/table/alert-schedule.inc.php | 64 ++++++++++++ html/pages/alert-schedule.inc.php | 115 +++++++++++++++++++++ 3 files changed, 182 insertions(+), 2 deletions(-) create mode 100644 html/includes/table/alert-schedule.inc.php create mode 100644 html/pages/alert-schedule.inc.php diff --git a/html/ajax_search.php b/html/ajax_search.php index d6aa5fe2c6..2000e3182e 100755 --- a/html/ajax_search.php +++ b/html/ajax_search.php @@ -31,9 +31,9 @@ if (isset($_REQUEST['search'])) if( $_REQUEST['type'] == 'group' ) { include_once('../includes/device-groups.inc.php'); - foreach( dbFetchRows("SELECT name FROM device_groups WHERE name LIKE '%".$search."%'") as $group ) { + foreach( dbFetchRows("SELECT id,name FROM device_groups WHERE name LIKE '%".$search."%'") as $group ) { if( $_REQUEST['map'] ) { - $results[] = array('name'=>'g:'.$group['name']); + $results[] = array('name'=>'g:'.$group['name'],'group_id'=>$group['id']); } else { $results[] = array('name'=>$group['name']); } @@ -74,6 +74,7 @@ if (isset($_REQUEST['search'])) } $num_ports = dbFetchCell("SELECT COUNT(*) FROM `ports` WHERE device_id = ?", array($result['device_id'])); $device[]=array('name'=>$name, + 'device_id'=>$result['device_id'], 'url'=> generate_device_url($result), 'colours'=>$highlight_colour, 'device_ports'=>$num_ports, diff --git a/html/includes/table/alert-schedule.inc.php b/html/includes/table/alert-schedule.inc.php new file mode 100644 index 0000000000..dcea1023af --- /dev/null +++ b/html/includes/table/alert-schedule.inc.php @@ -0,0 +1,64 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +$where = 1; + +if ($_SESSION['userlevel'] >= '5') { + $sql = " FROM `alert_schedule` AS S LEFT JOIN `devices` AS `D` ON `S`.`device_id`=`D`.`device_id` WHERE $where"; +} else { + $sql = " FROM `alert_schedule` AS S, devices_perms AS P LEFT JOIN `devices` AS `D` WHERE $where AND `S`.`device_id` = `P`.`device_id` AND `P`.`user_id` = ?"; + $param[] = $_SESSION['user_id']; +} + +if (isset($searchPhrase) && !empty($searchPhrase)) { + $sql .= " AND (`D`.`hostname` LIKE '%$searchPhrase%' OR `S`.`start` LIKE '%$searchPhrase%' OR `S`.`end` LIKE '%$searchPhrase%')"; +} + +$count_sql = "SELECT COUNT(`id`) $sql"; +$total = dbFetchCell($count_sql,$param); +if (empty($total)) { + $total = 0; +} + +if (!isset($sort) || empty($sort)) { + $sort = '`D`.`hostname` ASC '; +} + +$sql .= " ORDER BY $sort"; + +if (isset($current)) { + $limit_low = ($current * $rowCount) - ($rowCount); + $limit_high = $rowCount; +} + +if ($rowCount != -1) { + $sql .= " LIMIT $limit_low,$limit_high"; +} + +$sql = "SELECT DATE_FORMAT(`S`.`start`, '%D %b %Y %T') AS `start`, DATE_FORMAT(`S`.`end`, '%D %b %Y %T') AS `end`, `D`.`hostname`, `S`.`device_id` $sql"; + +foreach (dbFetchRows($sql,$param) as $schedule) { + if ($schedule['device_id'] == '-1') { + $host_link = 'All devices'; + } else { + $dev = device_by_id_cache($schedule['device_id']); + $host_link = generate_device_link($dev, shorthost($dev['hostname'])); + } + $response[] = array('hostname'=>$host_link, + 'start'=>$schedule['start'], + 'end'=>$schedule['end']); +} + +$output = array('current'=>$current,'rowCount'=>$rowCount,'rows'=>$response,'total'=>$total); +echo _json_encode($output); diff --git a/html/pages/alert-schedule.inc.php b/html/pages/alert-schedule.inc.php new file mode 100644 index 0000000000..23d44463ed --- /dev/null +++ b/html/pages/alert-schedule.inc.php @@ -0,0 +1,115 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +$pagetitle[] = "Alert Schedule"; + +?> + + + + +
+
+ + + + + + + + +
HostnameStartEnd
+
+
+ From 47a3663be6bccf582fed87fae5e5d11c2cba4af8 Mon Sep 17 00:00:00 2001 From: laf Date: Mon, 13 Apr 2015 15:46:38 +0100 Subject: [PATCH 04/59] updating to use date --- html/pages/alert-schedule.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/html/pages/alert-schedule.inc.php b/html/pages/alert-schedule.inc.php index 23d44463ed..5c54d8bc1d 100644 --- a/html/pages/alert-schedule.inc.php +++ b/html/pages/alert-schedule.inc.php @@ -105,10 +105,10 @@ $(function () { $("#start").datetimepicker(); $("#end").datetimepicker(); $("#start").on("dp.change", function (e) { - $("#end").data("DateTimePicker").minDate(e.value); + $("#end").data("DateTimePicker").minDate(e.date); }); $("#end").on("dp.change", function (e) { - $("#start").data("DateTimePicker").maxDate(e.value); + $("#start").data("DateTimePicker").maxDate(e.date); }); }); From 65c3d1bf3868ad3e1caec9fc77021735df53f989 Mon Sep 17 00:00:00 2001 From: laf Date: Mon, 13 Apr 2015 15:48:29 +0100 Subject: [PATCH 05/59] Squashed 'html/js/datetime/' changes from 5b3fc61..e750af7 e750af7 Update README.md 805bcc3 Update CONTRIBUTING.md 613a583 Update CONTRIBUTING.md 31e50cc Update bootstrap-datetimepicker-build.less d004434 Merge pull request #891 from Eonasdan/development adc8a68 fixes #867 8e16324 fixing locale formatting dfe5657 patch #752 b2a71de fixes #874 d00e39d version bump 762a90d couple of fixes d072d92 added keepInvalid 8eae1a4 Fixes and some new features 7f7dff4 Merge pull request #802 from zpaulovics/development 28699b6 Merge pull request #818 from mcarepa/improv-picker-placement 0abdcb1 Merge pull request #828 from ahmader/development a9744c5 Merge pull request #831 from admackin/development 86b49cb Update package.json ea501fa Fixes #793 0c5ad39 quick typo fixs 1cff47b picker placement conditions updated 6d245c9 version bump a4e7201 fixes and new features a865edf Revert "flipping events again" 78e28f5 Revert "tests" b7ae1e3 Fixed the options handling for componets 197647d tests 8d0fef8 flipping events again 8daa2b2 fix for #794 0221cb4 Merge pull request #778 from davidrojo/iss777 c11f3be Merge pull request #789 from comerc/patch-5 159d29e Update bootstrap-datetimepicker.js b545f2a Fixed coding style 19b485a Fixed coding style 6066555 Update CONTRIBUTING.md 1b2fe6e Update CONTRIBUTING.md 8d5b40a Fixes #777 37d8ce1 fix for #760 1cae292 fix for #761 499f619 fixing less 557b657 updating to v4 d9560b3 Update CONTRIBUTING.md 29b397d Update README.md 29cd87f Update bower.json fc56ea1 fixes #664 4c74e82 Merge pull request #635 from PeterDaveHello/patch-1 d756797 fix indent in package.json git-subtree-dir: html/js/datetime git-subtree-split: e750af7a4a65870030056a83fd1b52fc7b343246 --- .jscs.json | 1 - CONTRIBUTING.md | 8 +- Gruntfile.js | 53 +- LICENSE | 2 +- README.md | 22 +- bower.json | 8 +- build/css/bootstrap-datetimepicker.css | 362 +- build/css/bootstrap-datetimepicker.min.css | 367 +- build/js/bootstrap-datetimepicker.min.js | 9 +- .../Bootstrap.v3.Datetimepicker.4.0.0.nupkg | Bin 0 -> 23451 bytes ...ootstrap.v3.Datetimepicker.CSS.4.0.0.nupkg | Bin 0 -> 24328 bytes component.json | 5 +- composer.json | 7 +- package.json | 16 +- src/js/bootstrap-datetimepicker.js | 3081 ++++++++++------- src/less/_bootstrap-datetimepicker.less | 343 ++ src/less/bootstrap-datetimepicker-build.less | 16 +- src/less/bootstrap-datetimepicker.less | 294 -- .../Bootstrap.v3.Datetimepicker.CSS.nuspec | 6 +- src/nuget/Bootstrap.v3.Datetimepicker.nuspec | 6 +- src/nuget/install.ps1 | 2 +- test/publicApiSpec.js | 700 ++++ 22 files changed, 3643 insertions(+), 1665 deletions(-) create mode 100644 build/nuget/Bootstrap.v3.Datetimepicker.4.0.0.nupkg create mode 100644 build/nuget/Bootstrap.v3.Datetimepicker.CSS.4.0.0.nupkg create mode 100644 src/less/_bootstrap-datetimepicker.less delete mode 100755 src/less/bootstrap-datetimepicker.less create mode 100644 test/publicApiSpec.js diff --git a/.jscs.json b/.jscs.json index 1ce31f8275..8af2b6139f 100644 --- a/.jscs.json +++ b/.jscs.json @@ -54,7 +54,6 @@ "requireCamelCaseOrUpperCaseIdentifiers": "ignoreProperties", "disallowKeywords": ["with"], "disallowMultipleLineStrings": true, - "validateLineBreaks": "LF", "validateIndentation": 4, "disallowTrailingWhitespace": true, "disallowTrailingComma": true, diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 461fef02df..6b319c1f67 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,9 @@ Submitting Issues ================= -If you are submitting a bug, please test and/or fork [this jsfiddle](http://jsfiddle.net/kmbo576p/) demonstrating the issue. Code issues and fringe case bugs that do not include a jsfiddle (or similar) will be closed. +If you are submitting a bug, please test and/or fork [this jsfiddle](http://jsfiddle.net/Eonasdan/0Ltv25o8/) demonstrating the issue. Code issues and fringe case bugs that do not include a jsfiddle (or similar) will be closed. + +Issues that are submitted without a description (title only) will be closed with no further explanation. Contributing code ================= @@ -22,6 +24,9 @@ Very important notes * **Pull requests to the `master` branch will be closed.** Please submit all pull requests to the `development` branch. * **Do not include the minified files in your pull request.** Don't worry, we'll build them when we cut a release. + * Pull requests that do not include a description (title only) and the following will be closed: + * What the change does + * A use case (for new features or enhancements) Grunt tasks =========== @@ -30,3 +35,4 @@ We use Grunt for managing the build. Here are some useful Grunt tasks: * `grunt` The default task lints the code and runs the tests. You should make sure you do this before submitting a PR. * `grunt build` Compiles the less stylesheet and minifies the javascript source in build directory. + * `grunt build:travis` Compliles and runs the jasmine/travis tests. **All PR's MUST pass tests in place** diff --git a/Gruntfile.js b/Gruntfile.js index cf1ade14ce..9aa026ca45 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -24,11 +24,12 @@ module.exports = function (grunt) { jshint: { all: [ - 'Gruntfile.js', 'src/js/*.js' + 'Gruntfile.js', 'src/js/*.js', 'test/*.js' ], options: { 'browser' : true, 'node' : true, + 'jquery' : true, 'boss' : false, 'curly' : true, 'debug' : false, @@ -57,15 +58,24 @@ module.exports = function (grunt) { 'quotmark' : 'single', 'globals': { 'define': false, - 'jQuery': false, - 'moment': false + 'moment': false, + // Jasmine + 'jasmine': false, + 'describe': false, + 'xdescribe': false, + 'expect': false, + 'it': false, + 'xit': false, + 'spyOn': false, + 'beforeEach': false, + 'afterEach': false } } }, jscs: { all: [ - 'Gruntfile.js', 'src/js/*.js' + 'Gruntfile.js', 'src/js/*.js', 'test/*.js' ], options: { config: '.jscs.json' @@ -86,22 +96,49 @@ module.exports = function (grunt) { 'build/css/bootstrap-datetimepicker.css': 'src/less/bootstrap-datetimepicker-build.less' } } + }, + + jasmine: { + customTemplate: { + src: 'src/js/*.js', + options: { + specs: 'test/*Spec.js', + helpers: 'test/*Helper.js', + styles: [ + 'node_modules/bootstrap/dist/css/bootstrap.min.css', + 'build/css/bootstrap-datetimepicker.min.css' + ], + vendor: [ + 'node_modules/jquery/dist/jquery.min.js', + 'node_modules/moment/min/moment-with-locales.min.js', + 'node_modules/bootstrap/dist/js/bootstrap.min.js' + ], + display: 'none', + summary: 'true' + } + } } }); grunt.loadTasks('tasks'); + grunt.loadNpmTasks('grunt-contrib-jasmine'); + // These plugins provide necessary tasks. require('load-grunt-tasks')(grunt); // Default task. - grunt.registerTask('default', ['jshint', 'jscs']); + grunt.registerTask('default', ['jshint', 'jscs', 'less', 'jasmine']); // travis build task grunt.registerTask('build:travis', [ // code style - 'jshint', 'jscs' + 'jshint', 'jscs', + // build + 'uglify', 'less', + // tests + 'jasmine' ]); // Task to be run when building @@ -131,7 +168,7 @@ module.exports = function (grunt) { done(); }); } - else { + else { //--target=css grunt.util.spawn({ cmd: 'src/nuget/nuget.exe', args: [ @@ -152,4 +189,6 @@ module.exports = function (grunt) { }); } }); + + grunt.registerTask('test', ['jshint', 'jscs', 'uglify', 'less', 'jasmine']); }; diff --git a/LICENSE b/LICENSE index 47f5de70e4..f8071d73e1 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014 Eonasdan, nikoskalogridis +Copyright (c) 2015 Jonathan Peterson (@Eonasdan) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index dbe1d698ad..3b4df255f5 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,25 @@ -# Bootstrap v3 datetimepicker widget ![GitHub version](https://badge.fury.io/gh/Eonasdan%2Fbootstrap-datetimepicker.png)   ![Travis](https://travis-ci.org/Eonasdan/bootstrap-datetimepicker.svg?branch=development) +# Bootstrap 3 Date/Time Picker +![GitHub version](https://badge.fury.io/gh/Eonasdan%2Fbootstrap-datetimepicker.png)   ![Travis](https://travis-ci.org/Eonasdan/bootstrap-datetimepicker.svg?branch=development) ![DateTimePicker](http://i.imgur.com/nfnvh5g.png) ## [View the manual and demos](http://eonasdan.github.io/bootstrap-datetimepicker/) +#v4 +v4 is out now! For v4 related bugs and issues see: /Eonasdan/bootstrap-datetimepicker/labels/v4. + +v3 is going into an archive state. Please be sure to check the documents. v4 has breaking changes and is a major rewrite. + ## Submitting Issues -Please test and/or fork [this jsfiddle](http://jsfiddle.net/kmbo576p/) with an example of your issue before you post an issue here. +If you have issues, please check the following first: +* Have you read the docs? +* Do you have the latest version of momentjs? +* Do you have the latest version of jQuery? +* Please test and/or fork [this jsfiddle](http://jsfiddle.net/Eonasdan/0Ltv25o8/) with an example of your issue before you post an issue here. ## Where do you use this? -I'd love to know if your public site is using this plugin and list your logo on the documentation site. Please email me `eonasdan at outlook dot com`. Do not submit issue/feature request to this email, they will be ignored. +I'd love to know if your public site is using this plugin and list your logo on the documentation site. Please email me `eonasdan at outlook dot com`. Do not submit issue/feature request to this email, they will be **ignored**. -## [Installation instructions](https://github.com/Eonasdan/bootstrap-datetimepicker/wiki/Installation) -Installation instructions has been moved to the wiki +## [Installation instructions](http://eonasdan.github.io/bootstrap-datetimepicker/Installing/) -## [Change Log](https://github.com/Eonasdan/bootstrap-datetimepicker/wiki/Change-Log) -The change log has moved to the wiki +## [Change Log](http://eonasdan.github.io/bootstrap-datetimepicker/Version%204%20Changelog/) diff --git a/bower.json b/bower.json index aaf6fcb120..34ab9314c1 100644 --- a/bower.json +++ b/bower.json @@ -1,13 +1,15 @@ { "name": "eonasdan-bootstrap-datetimepicker", - "version": "3.1.3", + "version": "4.7.14", "main": [ "build/css/bootstrap-datetimepicker.min.css", - "build/js/bootstrap-datetimepicker.min.js" + "build/js/bootstrap-datetimepicker.min.js", + "src/less/_bootstrap-datetimepicker.less", + "src/less/bootstrap-datetimepicker-build.less", + "src/js/bootstrap-datetimepicker.js" ], "dependencies": { "jquery": ">=1.8.3", - "bootstrap": ">= 3.0", "moment": ">=2.8.0" }, "homepage": "https://github.com/Eonasdan/bootstrap-datetimepicker", diff --git a/build/css/bootstrap-datetimepicker.css b/build/css/bootstrap-datetimepicker.css index bd37b08b39..c70216196f 100644 --- a/build/css/bootstrap-datetimepicker.css +++ b/build/css/bootstrap-datetimepicker.css @@ -1,75 +1,76 @@ /*! - * Datetimepicker for Bootstrap v3 -//! version : 3.1.3 + * Datetimepicker for Bootstrap 3 + * ! version : 4.7.14 * https://github.com/Eonasdan/bootstrap-datetimepicker/ */ .bootstrap-datetimepicker-widget { - top: 0; - left: 0; - width: 250px; + list-style: none; +} +.bootstrap-datetimepicker-widget.dropdown-menu { + margin: 2px 0; padding: 4px; - margin-top: 1px; - z-index: 99999 !important; - border-radius: 4px; + width: 19em; } -.bootstrap-datetimepicker-widget.timepicker-sbs { - width: 600px; +@media (min-width: 768px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } } -.bootstrap-datetimepicker-widget.bottom:before { +@media (min-width: 992px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +@media (min-width: 1200px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +.bootstrap-datetimepicker-widget.dropdown-menu:before, +.bootstrap-datetimepicker-widget.dropdown-menu:after { content: ''; display: inline-block; + position: absolute; +} +.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before { border-left: 7px solid transparent; border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; + border-bottom: 7px solid #cccccc; border-bottom-color: rgba(0, 0, 0, 0.2); - position: absolute; top: -7px; left: 7px; } -.bootstrap-datetimepicker-widget.bottom:after { - content: ''; - display: inline-block; +.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after { border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 6px solid white; - position: absolute; top: -6px; left: 8px; } -.bootstrap-datetimepicker-widget.top:before { - content: ''; - display: inline-block; +.bootstrap-datetimepicker-widget.dropdown-menu.top:before { border-left: 7px solid transparent; border-right: 7px solid transparent; - border-top: 7px solid #ccc; + border-top: 7px solid #cccccc; border-top-color: rgba(0, 0, 0, 0.2); - position: absolute; bottom: -7px; left: 6px; } -.bootstrap-datetimepicker-widget.top:after { - content: ''; - display: inline-block; +.bootstrap-datetimepicker-widget.dropdown-menu.top:after { border-left: 6px solid transparent; border-right: 6px solid transparent; border-top: 6px solid white; - position: absolute; bottom: -6px; left: 7px; } -.bootstrap-datetimepicker-widget .dow { - width: 14.2857%; -} -.bootstrap-datetimepicker-widget.pull-right:before { +.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before { left: auto; right: 6px; } -.bootstrap-datetimepicker-widget.pull-right:after { +.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after { left: auto; right: 7px; } -.bootstrap-datetimepicker-widget > ul { - list-style-type: none; +.bootstrap-datetimepicker-widget .list-unstyled { margin: 0; } .bootstrap-datetimepicker-widget a[data-action] { @@ -89,82 +90,238 @@ .bootstrap-datetimepicker-widget button[data-action] { padding: 6px; } -.bootstrap-datetimepicker-widget table[data-hour-format="12"] .separator { - width: 4px; +.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; padding: 0; - margin: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Increment Hours"; } -.bootstrap-datetimepicker-widget .datepicker > div { - display: none; +.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Increment Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Decrement Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Decrement Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Show Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Show Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Toggle AM/PM"; +} +.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Clear the picker"; +} +.bootstrap-datetimepicker-widget .btn[data-action="today"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Set the date to today"; } .bootstrap-datetimepicker-widget .picker-switch { text-align: center; } +.bootstrap-datetimepicker-widget .picker-switch::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Toggle Date and Time Screens"; +} +.bootstrap-datetimepicker-widget .picker-switch td { + padding: 0; + margin: 0; + height: auto; + width: auto; + line-height: inherit; +} +.bootstrap-datetimepicker-widget .picker-switch td span { + line-height: 2.5; + height: 2.5em; + width: 100%; +} .bootstrap-datetimepicker-widget table { width: 100%; margin: 0; } -.bootstrap-datetimepicker-widget td, -.bootstrap-datetimepicker-widget th { +.bootstrap-datetimepicker-widget table td, +.bootstrap-datetimepicker-widget table th { text-align: center; border-radius: 4px; } -.bootstrap-datetimepicker-widget td { - height: 54px; - line-height: 54px; - width: 54px; -} -.bootstrap-datetimepicker-widget td.cw { - font-size: 10px; - height: 20px; - line-height: 20px; - color: #777777; -} -.bootstrap-datetimepicker-widget td.day { +.bootstrap-datetimepicker-widget table th { height: 20px; line-height: 20px; width: 20px; } -.bootstrap-datetimepicker-widget td.day:hover, -.bootstrap-datetimepicker-widget td.hour:hover, -.bootstrap-datetimepicker-widget td.minute:hover, -.bootstrap-datetimepicker-widget td.second:hover { +.bootstrap-datetimepicker-widget table th.picker-switch { + width: 145px; +} +.bootstrap-datetimepicker-widget table th.disabled, +.bootstrap-datetimepicker-widget table th.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget table th.prev::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Previous Month"; +} +.bootstrap-datetimepicker-widget table th.next::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Next Month"; +} +.bootstrap-datetimepicker-widget table thead tr:first-child th { + cursor: pointer; +} +.bootstrap-datetimepicker-widget table thead tr:first-child th:hover { + background: #eeeeee; +} +.bootstrap-datetimepicker-widget table td { + height: 54px; + line-height: 54px; + width: 54px; +} +.bootstrap-datetimepicker-widget table td.cw { + font-size: .8em; + height: 20px; + line-height: 20px; + color: #777777; +} +.bootstrap-datetimepicker-widget table td.day { + height: 20px; + line-height: 20px; + width: 20px; +} +.bootstrap-datetimepicker-widget table td.day:hover, +.bootstrap-datetimepicker-widget table td.hour:hover, +.bootstrap-datetimepicker-widget table td.minute:hover, +.bootstrap-datetimepicker-widget table td.second:hover { background: #eeeeee; cursor: pointer; } -.bootstrap-datetimepicker-widget td.old, -.bootstrap-datetimepicker-widget td.new { +.bootstrap-datetimepicker-widget table td.old, +.bootstrap-datetimepicker-widget table td.new { color: #777777; } -.bootstrap-datetimepicker-widget td.today { +.bootstrap-datetimepicker-widget table td.today { position: relative; } -.bootstrap-datetimepicker-widget td.today:before { +.bootstrap-datetimepicker-widget table td.today:before { content: ''; display: inline-block; - border-left: 7px solid transparent; - border-bottom: 7px solid #428bca; + border: 0 0 7px 7px solid transparent; + border-bottom-color: #337ab7; border-top-color: rgba(0, 0, 0, 0.2); position: absolute; bottom: 4px; right: 4px; } -.bootstrap-datetimepicker-widget td.active, -.bootstrap-datetimepicker-widget td.active:hover { - background-color: #428bca; +.bootstrap-datetimepicker-widget table td.active, +.bootstrap-datetimepicker-widget table td.active:hover { + background-color: #337ab7; color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } -.bootstrap-datetimepicker-widget td.active.today:before { +.bootstrap-datetimepicker-widget table td.active.today:before { border-bottom-color: #fff; } -.bootstrap-datetimepicker-widget td.disabled, -.bootstrap-datetimepicker-widget td.disabled:hover { +.bootstrap-datetimepicker-widget table td.disabled, +.bootstrap-datetimepicker-widget table td.disabled:hover { background: none; color: #777777; cursor: not-allowed; } -.bootstrap-datetimepicker-widget td span { +.bootstrap-datetimepicker-widget table td span { display: inline-block; width: 54px; height: 54px; @@ -173,66 +330,37 @@ cursor: pointer; border-radius: 4px; } -.bootstrap-datetimepicker-widget td span:hover { +.bootstrap-datetimepicker-widget table td span:hover { background: #eeeeee; } -.bootstrap-datetimepicker-widget td span.active { - background-color: #428bca; +.bootstrap-datetimepicker-widget table td span.active { + background-color: #337ab7; color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } -.bootstrap-datetimepicker-widget td span.old { +.bootstrap-datetimepicker-widget table td span.old { color: #777777; } -.bootstrap-datetimepicker-widget td span.disabled, -.bootstrap-datetimepicker-widget td span.disabled:hover { +.bootstrap-datetimepicker-widget table td span.disabled, +.bootstrap-datetimepicker-widget table td span.disabled:hover { background: none; color: #777777; cursor: not-allowed; } -.bootstrap-datetimepicker-widget th { - height: 20px; - line-height: 20px; - width: 20px; +.bootstrap-datetimepicker-widget.usetwentyfour td.hour { + height: 27px; + line-height: 27px; } -.bootstrap-datetimepicker-widget th.picker-switch { - width: 145px; -} -.bootstrap-datetimepicker-widget th.next, -.bootstrap-datetimepicker-widget th.prev { - font-size: 21px; -} -.bootstrap-datetimepicker-widget th.disabled, -.bootstrap-datetimepicker-widget th.disabled:hover { - background: none; - color: #777777; - cursor: not-allowed; -} -.bootstrap-datetimepicker-widget thead tr:first-child th { +.input-group.date .input-group-addon { cursor: pointer; } -.bootstrap-datetimepicker-widget thead tr:first-child th:hover { - background: #eeeeee; -} -.input-group.date .input-group-addon span { - display: block; - cursor: pointer; - width: 16px; - height: 16px; -} -.bootstrap-datetimepicker-widget.left-oriented:before { - left: auto; - right: 6px; -} -.bootstrap-datetimepicker-widget.left-oriented:after { - left: auto; - right: 7px; -} -.bootstrap-datetimepicker-widget ul.list-unstyled li div.timepicker div.timepicker-picker table.table-condensed tbody > tr > td { - padding: 0px !important; -} -@media screen and (max-width: 767px) { - .bootstrap-datetimepicker-widget.timepicker-sbs { - width: 283px; - } +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; } diff --git a/build/css/bootstrap-datetimepicker.min.css b/build/css/bootstrap-datetimepicker.min.css index cf838a3c23..c70216196f 100644 --- a/build/css/bootstrap-datetimepicker.min.css +++ b/build/css/bootstrap-datetimepicker.min.css @@ -1,5 +1,366 @@ /*! - * Datetimepicker for Bootstrap v3 -//! version : 3.1.3 + * Datetimepicker for Bootstrap 3 + * ! version : 4.7.14 * https://github.com/Eonasdan/bootstrap-datetimepicker/ - */.bootstrap-datetimepicker-widget{top:0;left:0;width:250px;padding:4px;margin-top:1px;z-index:99999!important;border-radius:4px}.bootstrap-datetimepicker-widget.timepicker-sbs{width:600px}.bootstrap-datetimepicker-widget.bottom:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:7px}.bootstrap-datetimepicker-widget.bottom:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:8px}.bootstrap-datetimepicker-widget.top:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.top:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;position:absolute;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget .dow{width:14.2857%}.bootstrap-datetimepicker-widget.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget>ul{list-style-type:none;margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget table[data-hour-format="12"] .separator{width:4px;padding:0;margin:0}.bootstrap-datetimepicker-widget .datepicker>div{display:none}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget td,.bootstrap-datetimepicker-widget th{text-align:center;border-radius:4px}.bootstrap-datetimepicker-widget td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget td.cw{font-size:10px;height:20px;line-height:20px;color:#777}.bootstrap-datetimepicker-widget td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget td.day:hover,.bootstrap-datetimepicker-widget td.hour:hover,.bootstrap-datetimepicker-widget td.minute:hover,.bootstrap-datetimepicker-widget td.second:hover{background:#eee;cursor:pointer}.bootstrap-datetimepicker-widget td.old,.bootstrap-datetimepicker-widget td.new{color:#777}.bootstrap-datetimepicker-widget td.today{position:relative}.bootstrap-datetimepicker-widget td.today:before{content:'';display:inline-block;border-left:7px solid transparent;border-bottom:7px solid #428bca;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget td.active,.bootstrap-datetimepicker-widget td.active:hover{background-color:#428bca;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget td.disabled,.bootstrap-datetimepicker-widget td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget td span:hover{background:#eee}.bootstrap-datetimepicker-widget td span.active{background-color:#428bca;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget td span.old{color:#777}.bootstrap-datetimepicker-widget td span.disabled,.bootstrap-datetimepicker-widget td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget th.picker-switch{width:145px}.bootstrap-datetimepicker-widget th.next,.bootstrap-datetimepicker-widget th.prev{font-size:21px}.bootstrap-datetimepicker-widget th.disabled,.bootstrap-datetimepicker-widget th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget thead tr:first-child th:hover{background:#eee}.input-group.date .input-group-addon span{display:block;cursor:pointer;width:16px;height:16px}.bootstrap-datetimepicker-widget.left-oriented:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.left-oriented:after{left:auto;right:7px}.bootstrap-datetimepicker-widget ul.list-unstyled li div.timepicker div.timepicker-picker table.table-condensed tbody>tr>td{padding:0!important}@media screen and (max-width:767px){.bootstrap-datetimepicker-widget.timepicker-sbs{width:283px}} \ No newline at end of file + */ +.bootstrap-datetimepicker-widget { + list-style: none; +} +.bootstrap-datetimepicker-widget.dropdown-menu { + margin: 2px 0; + padding: 4px; + width: 19em; +} +@media (min-width: 768px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +@media (min-width: 992px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +@media (min-width: 1200px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +.bootstrap-datetimepicker-widget.dropdown-menu:before, +.bootstrap-datetimepicker-widget.dropdown-menu:after { + content: ''; + display: inline-block; + position: absolute; +} +.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before { + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #cccccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + top: -7px; + left: 7px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after { + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid white; + top: -6px; + left: 8px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.top:before { + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-top: 7px solid #cccccc; + border-top-color: rgba(0, 0, 0, 0.2); + bottom: -7px; + left: 6px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.top:after { + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid white; + bottom: -6px; + left: 7px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before { + left: auto; + right: 6px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after { + left: auto; + right: 7px; +} +.bootstrap-datetimepicker-widget .list-unstyled { + margin: 0; +} +.bootstrap-datetimepicker-widget a[data-action] { + padding: 6px 0; +} +.bootstrap-datetimepicker-widget a[data-action]:active { + box-shadow: none; +} +.bootstrap-datetimepicker-widget .timepicker-hour, +.bootstrap-datetimepicker-widget .timepicker-minute, +.bootstrap-datetimepicker-widget .timepicker-second { + width: 54px; + font-weight: bold; + font-size: 1.2em; + margin: 0; +} +.bootstrap-datetimepicker-widget button[data-action] { + padding: 6px; +} +.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Increment Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Increment Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Decrement Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Decrement Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Show Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Show Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Toggle AM/PM"; +} +.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Clear the picker"; +} +.bootstrap-datetimepicker-widget .btn[data-action="today"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Set the date to today"; +} +.bootstrap-datetimepicker-widget .picker-switch { + text-align: center; +} +.bootstrap-datetimepicker-widget .picker-switch::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Toggle Date and Time Screens"; +} +.bootstrap-datetimepicker-widget .picker-switch td { + padding: 0; + margin: 0; + height: auto; + width: auto; + line-height: inherit; +} +.bootstrap-datetimepicker-widget .picker-switch td span { + line-height: 2.5; + height: 2.5em; + width: 100%; +} +.bootstrap-datetimepicker-widget table { + width: 100%; + margin: 0; +} +.bootstrap-datetimepicker-widget table td, +.bootstrap-datetimepicker-widget table th { + text-align: center; + border-radius: 4px; +} +.bootstrap-datetimepicker-widget table th { + height: 20px; + line-height: 20px; + width: 20px; +} +.bootstrap-datetimepicker-widget table th.picker-switch { + width: 145px; +} +.bootstrap-datetimepicker-widget table th.disabled, +.bootstrap-datetimepicker-widget table th.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget table th.prev::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Previous Month"; +} +.bootstrap-datetimepicker-widget table th.next::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Next Month"; +} +.bootstrap-datetimepicker-widget table thead tr:first-child th { + cursor: pointer; +} +.bootstrap-datetimepicker-widget table thead tr:first-child th:hover { + background: #eeeeee; +} +.bootstrap-datetimepicker-widget table td { + height: 54px; + line-height: 54px; + width: 54px; +} +.bootstrap-datetimepicker-widget table td.cw { + font-size: .8em; + height: 20px; + line-height: 20px; + color: #777777; +} +.bootstrap-datetimepicker-widget table td.day { + height: 20px; + line-height: 20px; + width: 20px; +} +.bootstrap-datetimepicker-widget table td.day:hover, +.bootstrap-datetimepicker-widget table td.hour:hover, +.bootstrap-datetimepicker-widget table td.minute:hover, +.bootstrap-datetimepicker-widget table td.second:hover { + background: #eeeeee; + cursor: pointer; +} +.bootstrap-datetimepicker-widget table td.old, +.bootstrap-datetimepicker-widget table td.new { + color: #777777; +} +.bootstrap-datetimepicker-widget table td.today { + position: relative; +} +.bootstrap-datetimepicker-widget table td.today:before { + content: ''; + display: inline-block; + border: 0 0 7px 7px solid transparent; + border-bottom-color: #337ab7; + border-top-color: rgba(0, 0, 0, 0.2); + position: absolute; + bottom: 4px; + right: 4px; +} +.bootstrap-datetimepicker-widget table td.active, +.bootstrap-datetimepicker-widget table td.active:hover { + background-color: #337ab7; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.bootstrap-datetimepicker-widget table td.active.today:before { + border-bottom-color: #fff; +} +.bootstrap-datetimepicker-widget table td.disabled, +.bootstrap-datetimepicker-widget table td.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget table td span { + display: inline-block; + width: 54px; + height: 54px; + line-height: 54px; + margin: 2px 1.5px; + cursor: pointer; + border-radius: 4px; +} +.bootstrap-datetimepicker-widget table td span:hover { + background: #eeeeee; +} +.bootstrap-datetimepicker-widget table td span.active { + background-color: #337ab7; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.bootstrap-datetimepicker-widget table td span.old { + color: #777777; +} +.bootstrap-datetimepicker-widget table td span.disabled, +.bootstrap-datetimepicker-widget table td span.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget.usetwentyfour td.hour { + height: 27px; + line-height: 27px; +} +.input-group.date .input-group-addon { + cursor: pointer; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} diff --git a/build/js/bootstrap-datetimepicker.min.js b/build/js/bootstrap-datetimepicker.min.js index cdba4b1051..a60af89d8d 100644 --- a/build/js/bootstrap-datetimepicker.min.js +++ b/build/js/bootstrap-datetimepicker.min.js @@ -1 +1,8 @@ -!function(a,b){"use strict";if("function"==typeof define&&define.amd)define(["jquery","moment"],b);else if("object"==typeof exports)b(require("jquery"),require("moment"));else{if(!jQuery)throw new Error("bootstrap-datetimepicker requires jQuery to be loaded first");if(!moment)throw new Error("bootstrap-datetimepicker requires moment.js to be loaded first");b(a.jQuery,moment)}}(this,function(a,b){"use strict";if("undefined"==typeof b)throw new Error("momentjs is required");var c=0,d=function(d,e){var f,g=a.fn.datetimepicker.defaults,h={time:"glyphicon glyphicon-time",date:"glyphicon glyphicon-calendar",up:"glyphicon glyphicon-chevron-up",down:"glyphicon glyphicon-chevron-down"},i=this,j=!1,k=function(){var f,j,k=!1;if(i.options=a.extend({},g,e),i.options.icons=a.extend({},h,i.options.icons),i.element=a(d),m(),!i.options.pickTime&&!i.options.pickDate)throw new Error("Must choose at least one picker");if(i.id=c++,b.locale(i.options.language),i.date=b(),i.unset=!1,i.isInput=i.element.is("input"),i.component=!1,i.element.hasClass("input-group")&&(i.component=i.element.find(0===i.element.find(".datepickerbutton").size()?'[class^="input-group-"]':".datepickerbutton")),i.format=i.options.format,f=b().localeData(),i.format||(i.format=i.options.pickDate?f.longDateFormat("L"):"",i.options.pickDate&&i.options.pickTime&&(i.format+=" "),i.format+=i.options.pickTime?f.longDateFormat("LT"):"",i.options.useSeconds&&(-1!==f.longDateFormat("LT").indexOf(" A")?i.format=i.format.split(" A")[0]+":ss A":i.format+=":ss")),i.use24hours=i.format.toLowerCase().indexOf("a")<0&&i.format.indexOf("h")<0,i.component&&(k=i.component.find("span")),i.options.pickTime&&k&&k.addClass(i.options.icons.time),i.options.pickDate&&k&&(k.removeClass(i.options.icons.time),k.addClass(i.options.icons.date)),i.options.widgetParent="string"==typeof i.options.widgetParent&&i.options.widgetParent||i.element.parents().filter(function(){return"scroll"===a(this).css("overflow-y")}).get(0)||"body",i.widget=a(Q()).appendTo(i.options.widgetParent),i.minViewMode=i.options.minViewMode||0,"string"==typeof i.minViewMode)switch(i.minViewMode){case"months":i.minViewMode=1;break;case"years":i.minViewMode=2;break;default:i.minViewMode=0}if(i.viewMode=i.options.viewMode||0,"string"==typeof i.viewMode)switch(i.viewMode){case"months":i.viewMode=1;break;case"years":i.viewMode=2;break;default:i.viewMode=0}i.viewMode=Math.max(i.viewMode,i.minViewMode),i.options.disabledDates=O(i.options.disabledDates),i.options.enabledDates=O(i.options.enabledDates),i.startViewMode=i.viewMode,i.setMinDate(i.options.minDate),i.setMaxDate(i.options.maxDate),r(),s(),u(),v(),w(),q(),E(),l().prop("disabled")||F(),""!==i.options.defaultDate&&""===l().val()&&i.setValue(i.options.defaultDate),1!==i.options.minuteStepping&&(j=i.options.minuteStepping,i.date.minutes(Math.round(i.date.minutes()/j)*j%60).seconds(0))},l=function(){var a;if(i.isInput)return i.element;if(a=i.element.find(".datepickerinput"),0===a.size())a=i.element.find("input");else if(!a.is("input"))throw new Error('CSS class "datepickerinput" cannot be applied to non input element');return a},m=function(){var a;a=i.element.is("input")?i.element.data():i.element.find("input").data(),void 0!==a.dateFormat&&(i.options.format=a.dateFormat),void 0!==a.datePickdate&&(i.options.pickDate=a.datePickdate),void 0!==a.datePicktime&&(i.options.pickTime=a.datePicktime),void 0!==a.dateUseminutes&&(i.options.useMinutes=a.dateUseminutes),void 0!==a.dateUseseconds&&(i.options.useSeconds=a.dateUseseconds),void 0!==a.dateUsecurrent&&(i.options.useCurrent=a.dateUsecurrent),void 0!==a.calendarWeeks&&(i.options.calendarWeeks=a.calendarWeeks),void 0!==a.dateMinutestepping&&(i.options.minuteStepping=a.dateMinutestepping),void 0!==a.dateMindate&&(i.options.minDate=a.dateMindate),void 0!==a.dateMaxdate&&(i.options.maxDate=a.dateMaxdate),void 0!==a.dateShowtoday&&(i.options.showToday=a.dateShowtoday),void 0!==a.dateCollapse&&(i.options.collapse=a.dateCollapse),void 0!==a.dateLanguage&&(i.options.language=a.dateLanguage),void 0!==a.dateDefaultdate&&(i.options.defaultDate=a.dateDefaultdate),void 0!==a.dateDisableddates&&(i.options.disabledDates=a.dateDisableddates),void 0!==a.dateEnableddates&&(i.options.enabledDates=a.dateEnableddates),void 0!==a.dateIcons&&(i.options.icons=a.dateIcons),void 0!==a.dateUsestrict&&(i.options.useStrict=a.dateUsestrict),void 0!==a.dateDirection&&(i.options.direction=a.dateDirection),void 0!==a.dateSidebyside&&(i.options.sideBySide=a.dateSidebyside),void 0!==a.dateDaysofweekdisabled&&(i.options.daysOfWeekDisabled=a.dateDaysofweekdisabled)},n=function(){var b,c="absolute",d=i.component?i.component.offset():i.element.offset(),e=a(window);i.width=i.component?i.component.outerWidth():i.element.outerWidth(),d.top=d.top+i.element.outerHeight(),"up"===i.options.direction?b="top":"bottom"===i.options.direction?b="bottom":"auto"===i.options.direction&&(b=d.top+i.widget.height()>e.height()+e.scrollTop()&&i.widget.height()+i.element.outerHeight()"),e=b.weekdaysMin();if(i.options.calendarWeeks===!0&&d.append('#'),0===b().localeData()._week.dow)for(c=0;7>c;c++)d.append(''+e[c]+"");else for(c=1;8>c;c++)d.append(7===c?''+e[0]+"":''+e[c]+"");i.widget.find(".datepicker-days thead").append(d)},s=function(){b.locale(i.options.language);var a,c="",d=b.monthsShort();for(a=0;12>a;a++)c+=''+d[a]+"";i.widget.find(".datepicker-months td").append(c)},t=function(){if(i.options.pickDate){b.locale(i.options.language);var c,d,e,f,g,h,j,k,l,m=i.viewDate.year(),n=i.viewDate.month(),o=i.options.minDate.year(),p=i.options.minDate.month(),q=i.options.maxDate.year(),r=i.options.maxDate.month(),s=[],t=b.months();for(i.widget.find(".datepicker-days").find(".disabled").removeClass("disabled"),i.widget.find(".datepicker-months").find(".disabled").removeClass("disabled"),i.widget.find(".datepicker-years").find(".disabled").removeClass("disabled"),i.widget.find(".datepicker-days th:eq(1)").text(t[n]+" "+m),d=b(i.viewDate,i.format,i.options.useStrict).subtract(1,"months"),j=d.daysInMonth(),d.date(j).startOf("week"),(m===o&&p>=n||o>m)&&i.widget.find(".datepicker-days th:eq(0)").addClass("disabled"),(m===q&&n>=r||m>q)&&i.widget.find(".datepicker-days th:eq(2)").addClass("disabled"),e=b(d).add(42,"d");d.isBefore(e);){if(d.weekday()===b().startOf("week").weekday()&&(f=a(""),s.push(f),i.options.calendarWeeks===!0&&f.append(''+d.week()+"")),g="",d.year()m||d.year()===m&&d.month()>n)&&(g+=" new"),d.isSame(b({y:i.date.year(),M:i.date.month(),d:i.date.date()}))&&(g+=" active"),(M(d,"day")||!N(d))&&(g+=" disabled"),i.options.showToday===!0&&d.isSame(b(),"day")&&(g+=" today"),i.options.daysOfWeekDisabled)for(h=0;h'+d.date()+""),c=d.date(),d.add(1,"d"),c===d.date()&&d.add(1,"d")}for(i.widget.find(".datepicker-days tbody").empty().append(s),l=i.date.year(),t=i.widget.find(".datepicker-months").find("th:eq(1)").text(m).end().find("span").removeClass("active"),l===m&&t.eq(i.date.month()).addClass("active"),o>m-1&&i.widget.find(".datepicker-months th:eq(0)").addClass("disabled"),m+1>q&&i.widget.find(".datepicker-months th:eq(2)").addClass("disabled"),h=0;12>h;h++)m===o&&p>h||o>m?a(t[h]).addClass("disabled"):(m===q&&h>r||m>q)&&a(t[h]).addClass("disabled");for(s="",m=10*parseInt(m/10,10),k=i.widget.find(".datepicker-years").find("th:eq(1)").text(m+"-"+(m+9)).parents("table").find("td"),i.widget.find(".datepicker-years").find("th").removeClass("disabled"),o>m&&i.widget.find(".datepicker-years").find("th:eq(0)").addClass("disabled"),m+9>q&&i.widget.find(".datepicker-years").find("th:eq(2)").addClass("disabled"),m-=1,h=-1;11>h;h++)s+='m||m>q?" disabled":"")+'">'+m+"",m+=1;k.html(s)}},u=function(){b.locale(i.options.language);var a,c,d,e=i.widget.find(".timepicker .timepicker-hours table"),f="";if(e.parent().hide(),i.use24hours)for(a=0,c=0;6>c;c+=1){for(f+="",d=0;4>d;d+=1)f+=''+P(a.toString())+"",a++;f+=""}else for(a=1,c=0;3>c;c+=1){for(f+="",d=0;4>d;d+=1)f+=''+P(a.toString())+"",a++;f+=""}e.html(f)},v=function(){var a,b,c=i.widget.find(".timepicker .timepicker-minutes table"),d="",e=0,f=i.options.minuteStepping;for(c.parent().hide(),1===f&&(f=5),a=0;ab;b+=1)60>e?(d+=''+P(e.toString())+"",e+=f):d+="";d+=""}c.html(d)},w=function(){var a,b,c=i.widget.find(".timepicker .timepicker-seconds table"),d="",e=0;for(c.parent().hide(),a=0;3>a;a++){for(d+="",b=0;4>b;b+=1)d+=''+P(e.toString())+"",e+=5;d+=""}c.html(d)},x=function(){if(i.date){var a=i.widget.find(".timepicker span[data-time-component]"),b=i.date.hours(),c=i.date.format("A");i.use24hours||(0===b?b=12:12!==b&&(b%=12),i.widget.find(".timepicker [data-action=togglePeriod]").text(c)),a.filter("[data-time-component=hours]").text(P(b)),a.filter("[data-time-component=minutes]").text(P(i.date.minutes())),a.filter("[data-time-component=seconds]").text(P(i.date.second()))}},y=function(c){c.stopPropagation(),c.preventDefault(),i.unset=!1;var d,e,f,g,h=a(c.target).closest("span, td, th"),j=b(i.date);if(1===h.length&&!h.is(".disabled"))switch(h[0].nodeName.toLowerCase()){case"th":switch(h[0].className){case"picker-switch":E(1);break;case"prev":case"next":f=R.modes[i.viewMode].navStep,"prev"===h[0].className&&(f=-1*f),i.viewDate.add(f,R.modes[i.viewMode].navFnc),t()}break;case"span":h.is(".month")?(d=h.parent().find("span").index(h),i.viewDate.month(d)):(e=parseInt(h.text(),10)||0,i.viewDate.year(e)),i.viewMode===i.minViewMode&&(i.date=b({y:i.viewDate.year(),M:i.viewDate.month(),d:i.viewDate.date(),h:i.date.hours(),m:i.date.minutes(),s:i.date.seconds()}),K(),o(j,c.type)),E(-1),t();break;case"td":h.is(".day")&&(g=parseInt(h.text(),10)||1,d=i.viewDate.month(),e=i.viewDate.year(),h.is(".old")?0===d?(d=11,e-=1):d-=1:h.is(".new")&&(11===d?(d=0,e+=1):d+=1),i.date=b({y:e,M:d,d:g,h:i.date.hours(),m:i.date.minutes(),s:i.date.seconds()}),i.viewDate=b({y:e,M:d,d:Math.min(28,g)}),t(),K(),o(j,c.type))}},z={incrementHours:function(){L("add","hours",1)},incrementMinutes:function(){L("add","minutes",i.options.minuteStepping)},incrementSeconds:function(){L("add","seconds",1)},decrementHours:function(){L("subtract","hours",1)},decrementMinutes:function(){L("subtract","minutes",i.options.minuteStepping)},decrementSeconds:function(){L("subtract","seconds",1)},togglePeriod:function(){var a=i.date.hours();a>=12?a-=12:a+=12,i.date.hours(a)},showPicker:function(){i.widget.find(".timepicker > div:not(.timepicker-picker)").hide(),i.widget.find(".timepicker .timepicker-picker").show()},showHours:function(){i.widget.find(".timepicker .timepicker-picker").hide(),i.widget.find(".timepicker .timepicker-hours").show()},showMinutes:function(){i.widget.find(".timepicker .timepicker-picker").hide(),i.widget.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){i.widget.find(".timepicker .timepicker-picker").hide(),i.widget.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);i.use24hours||(i.date.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),i.date.hours(c),z.showPicker.call(i)},selectMinute:function(b){i.date.minutes(parseInt(a(b.target).text(),10)),z.showPicker.call(i)},selectSecond:function(b){i.date.seconds(parseInt(a(b.target).text(),10)),z.showPicker.call(i)}},A=function(c){var d=b(i.date),e=a(c.currentTarget).data("action"),f=z[e].apply(i,arguments);return B(c),i.date||(i.date=b({y:1970})),K(),x(),o(d,c.type),f},B=function(a){a.stopPropagation(),a.preventDefault()},C=function(a){27===a.keyCode&&i.hide()},D=function(c){b.locale(i.options.language);var d=a(c.target),e=b(i.date),f=b(d.val(),i.format,i.options.useStrict);f.isValid()&&!M(f)&&N(f)?(q(),i.setValue(f),o(e,c.type),K()):(i.viewDate=e,i.unset=!0,o(e,c.type),p(f))},E=function(a){a&&(i.viewMode=Math.max(i.minViewMode,Math.min(2,i.viewMode+a))),i.widget.find(".datepicker > div").hide().filter(".datepicker-"+R.modes[i.viewMode].clsName).show()},F=function(){var b,c,d,e,f;i.widget.on("click",".datepicker *",a.proxy(y,this)),i.widget.on("click","[data-action]",a.proxy(A,this)),i.widget.on("mousedown",a.proxy(B,this)),i.element.on("keydown",a.proxy(C,this)),i.options.pickDate&&i.options.pickTime&&i.widget.on("click.togglePicker",".accordion-toggle",function(g){if(g.stopPropagation(),b=a(this),c=b.closest("ul"),d=c.find(".in"),e=c.find(".collapse:not(.in)"),d&&d.length){if(f=d.data("collapse"),f&&f.transitioning)return;d.collapse("hide"),e.collapse("show"),b.find("span").toggleClass(i.options.icons.time+" "+i.options.icons.date),i.component&&i.component.find("span").toggleClass(i.options.icons.time+" "+i.options.icons.date)}}),i.isInput?i.element.on({click:a.proxy(i.show,this),focus:a.proxy(i.show,this),change:a.proxy(D,this),blur:a.proxy(i.hide,this)}):(i.element.on({change:a.proxy(D,this)},"input"),i.component?(i.component.on("click",a.proxy(i.show,this)),i.component.on("mousedown",a.proxy(B,this))):i.element.on("click",a.proxy(i.show,this)))},G=function(){a(window).on("resize.datetimepicker"+i.id,a.proxy(n,this)),i.isInput||a(document).on("mousedown.datetimepicker"+i.id,a.proxy(i.hide,this))},H=function(){i.widget.off("click",".datepicker *",i.click),i.widget.off("click","[data-action]"),i.widget.off("mousedown",i.stopEvent),i.options.pickDate&&i.options.pickTime&&i.widget.off("click.togglePicker"),i.isInput?i.element.off({focus:i.show,change:D,click:i.show,blur:i.hide}):(i.element.off({change:D},"input"),i.component?(i.component.off("click",i.show),i.component.off("mousedown",i.stopEvent)):i.element.off("click",i.show))},I=function(){a(window).off("resize.datetimepicker"+i.id),i.isInput||a(document).off("mousedown.datetimepicker"+i.id)},J=function(){if(i.element){var b,c=i.element.parents(),d=!1;for(b=0;b0?d:!1},P=function(a){return a=a.toString(),a.length>=2?a:"0"+a},Q=function(){var a='‹›',b='',c='
'+a+'
'+a+b+'
'+a+b+"
",d="";return i.options.pickDate&&i.options.pickTime?(d='
',d+=i.options.sideBySide?'
'+c+'
'+S.getTemplate()+"
":'
    '+c+'
  • '+S.getTemplate()+"
",d+="
"):i.options.pickTime?'":'"},R={modes:[{clsName:"days",navFnc:"month",navStep:1},{clsName:"months",navFnc:"year",navStep:1},{clsName:"years",navFnc:"year",navStep:10}]},S={hourTemplate:'',minuteTemplate:'',secondTemplate:''};S.getTemplate=function(){return'
"+(i.options.useSeconds?'':"")+(i.use24hours?"":'')+" "+(i.options.useSeconds?'":"")+(i.use24hours?"":'')+'"+(i.options.useSeconds?'':"")+(i.use24hours?"":'')+'
'+(i.options.useMinutes?'':"")+"
"+S.hourTemplate+' :'+(i.options.useMinutes?S.minuteTemplate:'00')+":'+S.secondTemplate+"
'+(i.options.useMinutes?'':"")+"
'+(i.options.useSeconds?'
':"")},i.destroy=function(){H(),I(),i.widget.remove(),i.element.removeData("DateTimePicker"),i.component&&i.component.removeData("DateTimePicker")},i.show=function(a){if(!l().prop("disabled")){if(i.options.useCurrent&&""===l().val()){if(1!==i.options.minuteStepping){var c=b(),d=i.options.minuteStepping;c.minutes(Math.round(c.minutes()/d)*d%60).seconds(0),i.setValue(c.format(i.format))}else i.setValue(b().format(i.format));o("",a.type)}a&&"click"===a.type&&i.isInput&&i.widget.hasClass("picker-open")||(i.widget.hasClass("picker-open")?(i.widget.hide(),i.widget.removeClass("picker-open")):(i.widget.show(),i.widget.addClass("picker-open")),i.height=i.component?i.component.outerHeight():i.element.outerHeight(),n(),i.element.trigger({type:"dp.show",date:b(i.date)}),G(),a&&B(a))}},i.disable=function(){var a=l();a.prop("disabled")||(a.prop("disabled",!0),H())},i.enable=function(){var a=l();a.prop("disabled")&&(a.prop("disabled",!1),F())},i.hide=function(){var a,c,d=i.widget.find(".collapse");for(a=0;a1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return-1!==g.indexOf("Y");case"M":return-1!==g.indexOf("M");case"d":return-1!==g.toLowerCase().indexOf("d");case"h":case"H":return-1!==g.toLowerCase().indexOf("h");case"m":return-1!==g.indexOf("m");case"s":return-1!==g.indexOf("s");default:return!1}},y=function(){return x("h")||x("m")||x("s")},z=function(){return x("y")||x("M")||x("d")},A=function(){var b=a("").append(a("").append(a("").addClass("prev").attr("data-action","previous").append(a("").addClass(d.icons.previous))).append(a("").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("").addClass("next").attr("data-action","next").append(a("").addClass(d.icons.next)))),c=a("").append(a("").append(a("").attr("colspan",d.calendarWeeks?"8":"7")));return[a("
").addClass("datepicker-days").append(a("").addClass("table-condensed").append(b).append(a(""))),a("
").addClass("datepicker-months").append(a("
").addClass("table-condensed").append(b.clone()).append(c.clone())),a("
").addClass("datepicker-years").append(a("
").addClass("table-condensed").append(b.clone()).append(c.clone()))]},B=function(){var b=a(""),c=a(""),e=a("");return x("h")&&(b.append(a("
").append(a("").attr({href:"#",tabindex:"-1"}).addClass("btn").attr("data-action","incrementHours").append(a("").addClass(d.icons.up)))),c.append(a("").append(a("").addClass("timepicker-hour").attr("data-time-component","hours").attr("data-action","showHours"))),e.append(a("").append(a("").attr({href:"#",tabindex:"-1"}).addClass("btn").attr("data-action","decrementHours").append(a("").addClass(d.icons.down))))),x("m")&&(x("h")&&(b.append(a("").addClass("separator")),c.append(a("").addClass("separator").html(":")),e.append(a("").addClass("separator"))),b.append(a("").append(a("").attr({href:"#",tabindex:"-1"}).addClass("btn").attr("data-action","incrementMinutes").append(a("").addClass(d.icons.up)))),c.append(a("").append(a("").addClass("timepicker-minute").attr("data-time-component","minutes").attr("data-action","showMinutes"))),e.append(a("").append(a("").attr({href:"#",tabindex:"-1"}).addClass("btn").attr("data-action","decrementMinutes").append(a("").addClass(d.icons.down))))),x("s")&&(x("m")&&(b.append(a("").addClass("separator")),c.append(a("").addClass("separator").html(":")),e.append(a("").addClass("separator"))),b.append(a("").append(a("").attr({href:"#",tabindex:"-1"}).addClass("btn").attr("data-action","incrementSeconds").append(a("").addClass(d.icons.up)))),c.append(a("").append(a("").addClass("timepicker-second").attr("data-time-component","seconds").attr("data-action","showSeconds"))),e.append(a("").append(a("").attr({href:"#",tabindex:"-1"}).addClass("btn").attr("data-action","decrementSeconds").append(a("").addClass(d.icons.down))))),f||(b.append(a("").addClass("separator")),c.append(a("").append(a("").addClass("separator"))),a("
").addClass("timepicker-picker").append(a("").addClass("table-condensed").append([b,c,e]))},C=function(){var b=a("
").addClass("timepicker-hours").append(a("
").addClass("table-condensed")),c=a("
").addClass("timepicker-minutes").append(a("
").addClass("table-condensed")),d=a("
").addClass("timepicker-seconds").append(a("
").addClass("table-condensed")),e=[B()];return x("h")&&e.push(b),x("m")&&e.push(c),x("s")&&e.push(d),e},D=function(){var b=[];return d.showTodayButton&&b.push(a("
").append(a("").attr("data-action","today").append(a("").addClass(d.icons.today)))),!d.sideBySide&&z()&&y()&&b.push(a("").append(a("").attr("data-action","togglePicker").append(a("").addClass(d.icons.time)))),d.showClear&&b.push(a("").append(a("").attr("data-action","clear").append(a("").addClass(d.icons.clear)))),d.showClose&&b.push(a("").append(a("").attr("data-action","close").append(a("").addClass(d.icons.close)))),a("").addClass("table-condensed").append(a("").append(a("").append(b)))},E=function(){var b=a("
").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("
").addClass("datepicker").append(A()),e=a("
").addClass("timepicker").append(C()),g=a("
    ").addClass("list-unstyled"),h=a("
  • ").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(D());return d.inline&&b.removeClass("dropdown-menu"),f&&b.addClass("usetwentyfour"),d.sideBySide&&z()&&y()?(b.addClass("timepicker-sbs"),b.append(a("
    ").addClass("row").append(c.addClass("col-sm-6")).append(e.addClass("col-sm-6"))),b.append(h),b):("top"===d.toolbarPlacement&&g.append(h),z()&&g.append(a("
  • ").addClass(d.collapse&&y()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&g.append(h),y()&&g.append(a("
  • ").addClass(d.collapse&&z()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&g.append(h),b.append(g))},F=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},G=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.parent().append(o);else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"relative"!==b.css("position")&&(b=b.parents().filter(function(){return"relative"===a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a relative positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?e.top+c.outerHeight():"auto",left:"left"===h?b.css("padding-left"):"auto",right:"left"===h?"auto":b.width()-c.outerWidth()})},H=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},I=function(a){o&&(a&&(i=Math.max(p,Math.min(2,i+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[i].clsName).show())},J=function(){var b=a("
"),c=l.clone().startOf("w");for(d.calendarWeeks===!0&&b.append(a(""),d.calendarWeeks&&e.append('"),i.push(e)),f="",c.isBefore(l,"M")&&(f+=" old"),c.isAfter(l,"M")&&(f+=" new"),c.isSame(k,"d")&&!m&&(f+=" active"),M(c,"d")||(f+=" disabled"),c.isSame(b(),"d")&&(f+=" today"),(0===c.day()||6===c.day())&&(f+=" weekend"),e.append('"),c.add(1,"d");g.find("tbody").empty().append(i),O(),P()}},R=function(){var b=o.find(".timepicker-hours table"),c=l.clone().startOf("d"),d=[],e=a("");for(l.hour()>11&&!f&&c.hour(12);c.isSame(l,"d")&&(f||l.hour()<12&&c.hour()<12||l.hour()>11);)c.hour()%4===0&&(e=a(""),d.push(e)),e.append('"),c.add(1,"h");b.empty().append(d)},S=function(){for(var b=o.find(".timepicker-minutes table"),c=l.clone().startOf("h"),e=[],f=a(""),g=1===d.stepping?5:d.stepping;l.isSame(c,"h");)c.minute()%(4*g)===0&&(f=a(""),e.push(f)),f.append('"),c.add(g,"m");b.empty().append(e)},T=function(){for(var b=o.find(".timepicker-seconds table"),c=l.clone().startOf("m"),d=[],e=a("");l.isSame(c,"m");)c.second()%20===0&&(e=a(""),d.push(e)),e.append('"),c.add(5,"s");b.empty().append(d)},U=function(){var a=o.find(".timepicker span[data-time-component]");f||o.find(".timepicker [data-action=togglePeriod]").text(k.format("A")),a.filter("[data-time-component=hours]").text(k.format(f?"HH":"hh")),a.filter("[data-time-component=minutes]").text(k.format("mm")),a.filter("[data-time-component=seconds]").text(k.format("ss")),R(),S(),T()},V=function(){o&&(Q(),U())},W=function(a){var b=m?null:k;return a?(a=a.clone().locale(d.locale),1!==d.stepping&&a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping%60).seconds(0),void(M(a)?(k=a,l=k.clone(),e.val(k.format(g)),c.data("date",k.format(g)),V(),m=!1,H({type:"dp.change",date:k.clone(),oldDate:b})):(d.keepInvalid||e.val(m?"":k.format(g)),H({type:"dp.error",date:a})))):(m=!0,e.val(""),c.data("date",""),H({type:"dp.change",date:null,oldDate:b}),void V())},X=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return c&&c.transitioning?(b=!0,!1):!0}),b?j:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",G),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,H({type:"dp.hide",date:k.clone()}),j)):j},Y=function(){W(null)},Z={next:function(){l.add(q[i].navStep,q[i].navFnc),Q()},previous:function(){l.subtract(q[i].navStep,q[i].navFnc),Q()},pickerSwitch:function(){I(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));l.month(c),i===p?(W(k.clone().year(l.year()).month(l.month())),d.inline||X()):(I(-1),Q())},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;l.year(c),i===p?(W(k.clone().year(l.year())),d.inline||X()):(I(-1),Q())},selectDay:function(b){var c=l.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),W(c.date(parseInt(a(b.target).text(),10))),y()||d.keepOpen||d.inline||X()},incrementHours:function(){W(k.clone().add(1,"h"))},incrementMinutes:function(){W(k.clone().add(d.stepping,"m"))},incrementSeconds:function(){W(k.clone().add(1,"s"))},decrementHours:function(){W(k.clone().subtract(1,"h"))},decrementMinutes:function(){W(k.clone().subtract(d.stepping,"m"))},decrementSeconds:function(){W(k.clone().subtract(1,"s"))},togglePeriod:function(){W(k.clone().add(k.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);f||(k.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),W(k.clone().hours(c)),Z.showPicker.call(j)},selectMinute:function(b){W(k.clone().minutes(parseInt(a(b.target).text(),10))),Z.showPicker.call(j)},selectSecond:function(b){W(k.clone().seconds(parseInt(a(b.target).text(),10))),Z.showPicker.call(j)},clear:Y,today:function(){W(b())},close:X},$=function(b){return a(b.currentTarget).is(".disabled")?!1:(Z[a(b.currentTarget).data("action")].apply(j,arguments),!1)},_=function(){var c,f={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return e.prop("disabled")||!d.ignoreReadonly&&e.prop("readonly")||o?j:(d.useCurrent&&m&&(e.is("input")&&0===e.val().trim().length||d.inline)&&(c=b(),"string"==typeof d.useCurrent&&(c=f[d.useCurrent](c)),W(c)),o=E(),J(),N(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),V(),I(),a(window).on("resize",G),o.on("click","[data-action]",$),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),o.show(),G(),e.is(":focus")||e.focus(),H({type:"dp.show"}),j)},ab=function(){return o?X():_()},bb=function(a){return a=b.isMoment(a)||a instanceof Date?b(a):b(a,h,d.useStrict),a.locale(d.locale),a},cb=function(a){var b,c,e,f,g=null,h=[],i={},k=a.which,l="p";w[k]=l;for(b in w)w.hasOwnProperty(b)&&w[b]===l&&(h.push(b),parseInt(b,10)!==k&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[k]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(j,o),a.stopPropagation(),a.preventDefault())},db=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},eb=function(b){var c=a(b.target).val().trim(),d=c?bb(c):null;return W(d),b.stopImmediatePropagation(),!1},fb=function(){e.on({change:eb,blur:d.debug?"":X,keydown:cb,keyup:db}),c.is("input")?e.on({focus:_}):n&&(n.on("click",ab),n.on("mousedown",!1))},gb=function(){e.off({change:eb,blur:X,keydown:cb,keyup:db}),c.is("input")?e.off({focus:_}):n&&(n.off("click",ab),n.off("mousedown",!1))},hb=function(b){var c={};return a.each(b,function(){var a=bb(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),Object.keys(c).length?c:!1},ib=function(){var a=d.format||"L LT";g=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=k.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return k.localeData().longDateFormat(a)||a})}),h=d.extraFormats?d.extraFormats.slice():[],h.indexOf(a)<0&&h.indexOf(g)<0&&h.push(g),f=g.toLowerCase().indexOf("a")<1&&g.indexOf("h")<1,x("y")&&(p=2),x("M")&&(p=1),x("d")&&(p=0),i=Math.max(p,i),m||W(k)};if(j.destroy=function(){X(),gb(),c.removeData("DateTimePicker"),c.removeData("date")},j.toggle=ab,j.show=_,j.hide=X,j.disable=function(){return X(),n&&n.hasClass("btn")&&n.addClass("disabled"),e.prop("disabled",!0),j},j.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),e.prop("disabled",!1),j},j.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,j},j.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===j[a])throw new TypeError("option "+a+" is not recognized!");j[a](b)}),j},j.date=function(a){if(0===arguments.length)return m?null:k.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return W(null===a?null:bb(a)),j},j.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a sting or boolean:false parameter "+a);return d.format=a,g&&ib(),j},j.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,j},j.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,h&&ib(),j},j.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,V(),j;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=hb(b),d.enabledDates=!1,V(),j},j.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,V(),j;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=hb(b),d.disabledDates=!1,V(),j},j.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");return d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),V(),j},j.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,V(),j;"string"==typeof a&&("now"===a||"moment"===a)&&(a=b());var c=bb(a);if(!c.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&c.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+c.format(g));return d.maxDate=c,d.maxDate.isBefore(a)&&W(d.maxDate),l.isAfter(c)&&(l=c.clone()),V(),j},j.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,V(),j;"string"==typeof a&&("now"===a||"moment"===a)&&(a=b());var c=bb(a);if(!c.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&c.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+c.format(g));return d.minDate=c,d.minDate.isAfter(a)&&W(d.minDate),l.isBefore(c)&&(l=c.clone()),V(),j},j.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,j;"string"==typeof a&&("now"===a||"moment"===a)&&(a=b());var c=bb(a);if(!c.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!M(c))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=c,d.defaultDate&&""===e.val().trim()&&void 0===e.attr("placeholder")&&W(d.defaultDate),j},j.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,k.locale(d.locale),l.locale(d.locale),g&&ib(),o&&(X(),_()),j},j.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,j)},j.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,j},j.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?j:(d.collapse=a,o&&(X(),_()),j)},j.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(X(),_()),j},j.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,j},j.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(X(),_()),j},j.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(-1===r.indexOf(a))throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,i=Math.max(r.indexOf(a),p),I(),j},j.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===u.indexOf(a))throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(X(),_()),j},j.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return V(),j},j.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,V(),j},j.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(X(),_()),j},j.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(X(),_()),j},j.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(X(),_()),j},j.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,j},j.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,j},j.clear=function(){return Y(),j},j.keyBinds=function(a){return d.keyBinds=a,j},j.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,j},j.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,j},j.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");return d.keepInvalid=a,j},j.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,j},c.is("input"))e=c;else if(e=c.find(d.datepickerInput),0===e.size())e=c.find("input");else if(!e.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=c.find(0===c.find(".datepickerbutton").size()?'[class^="input-group-"]':".datepickerbutton")),!d.inline&&!e.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return a.extend(!0,d,F()),j.options(d),ib(),fb(),e.prop("disabled")&&j.disable(),e.is("input")&&0!==e.val().trim().length?W(bb(e.val().trim())):d.defaultDate&&void 0===e.attr("placeholder")&&W(d.defaultDate),d.inline&&_(),j};a.fn.datetimepicker=function(b){return this.each(function(){var d=a(this);d.data("DateTimePicker")||(b=a.extend(!0,{},a.fn.datetimepicker.defaults,b),d.data("DateTimePicker",c(d,b)))})},a.fn.datetimepicker.defaults={format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"glyphicon glyphicon-time",date:"glyphicon glyphicon-calendar",up:"glyphicon glyphicon-chevron-up",down:"glyphicon glyphicon-chevron-down",previous:"glyphicon glyphicon-chevron-left",next:"glyphicon glyphicon-chevron-right",today:"glyphicon glyphicon-screenshot",clear:"glyphicon glyphicon-trash",close:"glyphicon glyphicon-remove"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:[],calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var c=this.date()||b();this.date(a.find(".datepicker").is(":visible")?c.clone().subtract(7,"d"):c.clone().add(1,"m"))}},down:function(a){if(!a)return void this.show();var c=this.date()||b();this.date(a.find(".datepicker").is(":visible")?c.clone().add(7,"d"):c.clone().subtract(1,"m"))},"control up":function(a){if(a){var c=this.date()||b();this.date(a.find(".datepicker").is(":visible")?c.clone().subtract(1,"y"):c.clone().add(1,"h"))}},"control down":function(a){if(a){var c=this.date()||b();this.date(a.find(".datepicker").is(":visible")?c.clone().add(1,"y"):c.clone().subtract(1,"h"))}},left:function(a){if(a){var c=this.date()||b();a.find(".datepicker").is(":visible")&&this.date(c.clone().subtract(1,"d"))}},right:function(a){if(a){var c=this.date()||b();a.find(".datepicker").is(":visible")&&this.date(c.clone().add(1,"d"))}},pageUp:function(a){if(a){var c=this.date()||b();a.find(".datepicker").is(":visible")&&this.date(c.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var c=this.date()||b();a.find(".datepicker").is(":visible")&&this.date(c.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(b())},"delete":function(){this.clear()}},debug:!1}}); \ No newline at end of file diff --git a/build/nuget/Bootstrap.v3.Datetimepicker.4.0.0.nupkg b/build/nuget/Bootstrap.v3.Datetimepicker.4.0.0.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..f38538a53e8a2a2f3bfc726c119340192c96fed1 GIT binary patch literal 23451 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 literal 0 HcmV?d00001 diff --git a/build/nuget/Bootstrap.v3.Datetimepicker.CSS.4.0.0.nupkg b/build/nuget/Bootstrap.v3.Datetimepicker.CSS.4.0.0.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..d10e267cfcd686ecaf8318f1ad27aa7f48f48bf4 GIT binary patch literal 24328 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 V)lkO5J{g9KdhMY~bjRrA>>op--F5%~ literal 0 HcmV?d00001 diff --git a/component.json b/component.json index fbaa840165..184d374809 100644 --- a/component.json +++ b/component.json @@ -1,10 +1,9 @@ { "name": "bootstrap-datetimepicker", - "version": "3.1.3", - "main": ["build/css/bootstrap-datetimepicker.min.css","build/js/bootstrap-datetimepicker.min.js"], + "version": "4.7.14", + "main": ["build/css/bootstrap-datetimepicker.min.css","build/js/bootstrap-datetimepicker.min.js","src/less/_bootstrap-datetimepicker.less","src/less/bootstrap-datetimepicker-build.less","src/js/bootstrap-datetimepicker.js"], "dependencies": { "jquery" : ">=1.8.3", - "bootstrap" : ">=3.0", "moment": ">=2.8.0" } } diff --git a/composer.json b/composer.json index cf5646145d..f5d733ef4b 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "eonasdan/bootstrap-datetimepicker", "type": "component", - "version": "3.1.3", + "version": "4.7.14", "description": "Date/time picker widget based on twitter bootstrap", "keywords": [ "bootstrap", @@ -12,7 +12,6 @@ "require": { "robloach/component-installer": "*", "components/jquery": ">=1.9.1", - "components/bootstrap": "3.*", "moment/moment": ">=2.8" }, "extra": { @@ -23,7 +22,9 @@ "files": [ "build/js/bootstrap-datetimepicker.min.js", "build/css/bootstrap-datetimepicker.css", - "build/css/bootstrap-datetimepicker.min.css" + "build/css/bootstrap-datetimepicker.min.css", + "src/less/_bootstrap-datetimepicker.less", + "src/less/bootstrap-datetimepicker-build.less" ] } } diff --git a/package.json b/package.json index 3c2afba972..512d4f0e15 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "bootstrap-datetimepicker", "main": "src/js/bootstrap-datetimepicker.js", - "version": "3.1.3", + "version": "4.7.14", "repository": { "type": "git", "url": "https://github.com/eonasdan/bootstrap-datetimepicker.git" @@ -15,21 +15,21 @@ "datepicker", "datetimepicker", "timepicker", - "moment" + "moment" ], "dependencies": { - "moment": "~2.8.1", - "bootstrap": "^3.0", - "jquery": "^1.8.3" + "moment": "~2.8.2", + "bootstrap": "^3.0", + "jquery": "latest" }, "devDependencies": { "grunt": "latest", + "grunt-contrib-jasmine": "^0.7.0", "grunt-contrib-jshint": "latest", + "grunt-contrib-less": "latest", "grunt-contrib-uglify": "latest", "grunt-jscs": "latest", - "load-grunt-tasks": "latest", "grunt-string-replace": "latest", - "grunt-contrib-less": "latest", - "bootstrap": "latest" + "load-grunt-tasks": "latest" } } diff --git a/src/js/bootstrap-datetimepicker.js b/src/js/bootstrap-datetimepicker.js index 44abcc1fe3..034cf5d8c4 100644 --- a/src/js/bootstrap-datetimepicker.js +++ b/src/js/bootstrap-datetimepicker.js @@ -1,1384 +1,2051 @@ +/*! version : 4.7.14 + ========================================================= + bootstrap-datetimejs + https://github.com/Eonasdan/bootstrap-datetimepicker + Copyright (c) 2015 Jonathan Peterson + ========================================================= + */ /* -//! version : 3.1.3 -========================================================= -bootstrap-datetimepicker.js -https://github.com/Eonasdan/bootstrap-datetimepicker -========================================================= -The MIT License (MIT) + The MIT License (MIT) -Copyright (c) 2014 Jonathan Peterson + Copyright (c) 2015 Jonathan Peterson -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ -;(function (root, factory) { + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + */ +/*global define:false */ +/*global exports:false */ +/*global require:false */ +/*global jQuery:false */ +/*global moment:false */ +(function (factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // AMD is used - Register as an anonymous module. define(['jquery', 'moment'], factory); } else if (typeof exports === 'object') { factory(require('jquery'), require('moment')); - } - else { - // Neither AMD or CommonJS used. Use global variables. - if (!jQuery) { - throw new Error('bootstrap-datetimepicker requires jQuery to be loaded first'); + } else { + // Neither AMD nor CommonJS used. Use global variables. + if (typeof jQuery === 'undefined') { + throw 'bootstrap-datetimepicker requires jQuery to be loaded first'; } - if (!moment) { - throw new Error('bootstrap-datetimepicker requires moment.js to be loaded first'); + if (typeof moment === 'undefined') { + throw 'bootstrap-datetimepicker requires Moment.js to be loaded first'; } - factory(root.jQuery, moment); + factory(jQuery, moment); } -}(this, function ($, moment) { +}(function ($, moment) { 'use strict'; - if (typeof moment === 'undefined') { - throw new Error('momentjs is required'); + if (!moment) { + throw new Error('bootstrap-datetimepicker requires Moment.js to be loaded first'); } - var dpgId = 0, + var dateTimePicker = function (element, options) { + var picker = {}, + date = moment().startOf('d'), + viewDate = date.clone(), + unset = true, + input, + component = false, + widget = false, + use24Hours, + minViewModeNumber = 0, + actualFormat, + parseFormats, + currentViewMode, + datePickerModes = [ + { + clsName: 'days', + navFnc: 'M', + navStep: 1 + }, + { + clsName: 'months', + navFnc: 'y', + navStep: 1 + }, + { + clsName: 'years', + navFnc: 'y', + navStep: 10 + } + ], + viewModes = ['days', 'months', 'years'], + verticalModes = ['top', 'bottom', 'auto'], + horizontalModes = ['left', 'right', 'auto'], + toolbarPlacements = ['default', 'top', 'bottom'], + keyMap = { + 'up': 38, + 38: 'up', + 'down': 40, + 40: 'down', + 'left': 37, + 37: 'left', + 'right': 39, + 39: 'right', + 'tab': 9, + 9: 'tab', + 'escape': 27, + 27: 'escape', + 'enter': 13, + 13: 'enter', + 'pageUp': 33, + 33: 'pageUp', + 'pageDown': 34, + 34: 'pageDown', + 'shift': 16, + 16: 'shift', + 'control': 17, + 17: 'control', + 'space': 32, + 32: 'space', + 't': 84, + 84: 't', + 'delete': 46, + 46: 'delete' + }, + keyState = {}, - DateTimePicker = function (element, options) { - var defaults = $.fn.datetimepicker.defaults, - - icons = { - time: 'glyphicon glyphicon-time', - date: 'glyphicon glyphicon-calendar', - up: 'glyphicon glyphicon-chevron-up', - down: 'glyphicon glyphicon-chevron-down' + /******************************************************************************** + * + * Private functions + * + ********************************************************************************/ + isEnabled = function (granularity) { + if (typeof granularity !== 'string' || granularity.length > 1) { + throw new TypeError('isEnabled expects a single character string parameter'); + } + switch (granularity) { + case 'y': + return actualFormat.indexOf('Y') !== -1; + case 'M': + return actualFormat.indexOf('M') !== -1; + case 'd': + return actualFormat.toLowerCase().indexOf('d') !== -1; + case 'h': + case 'H': + return actualFormat.toLowerCase().indexOf('h') !== -1; + case 'm': + return actualFormat.indexOf('m') !== -1; + case 's': + return actualFormat.indexOf('s') !== -1; + default: + return false; + } }, - picker = this, - errored = false, - dDate, + hasTime = function () { + return (isEnabled('h') || isEnabled('m') || isEnabled('s')); + }, - init = function () { - var icon = false, localeData, rInterval; - picker.options = $.extend({}, defaults, options); - picker.options.icons = $.extend({}, icons, picker.options.icons); + hasDate = function () { + return (isEnabled('y') || isEnabled('M') || isEnabled('d')); + }, - picker.element = $(element); + getDatePickerTemplate = function () { + var headTemplate = $('') + .append($('') + .append($('') + .append($('') + .append($('
").addClass("cw").text("#"));c.isBefore(l.clone().endOf("w"));)b.append(a("").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},K=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},L=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},M=function(a,b){return a.isValid()?d.disabledDates&&K(a)&&"M"!==b?!1:d.enabledDates&&!L(a)&&"M"!==b?!1:d.minDate&&a.isBefore(d.minDate,b)?!1:d.maxDate&&a.isAfter(d.maxDate,b)?!1:"d"===b&&-1!==d.daysOfWeekDisabled.indexOf(a.day())?!1:!0:!1},N=function(){for(var b=[],c=l.clone().startOf("y").hour(12);c.isSame(l,"y");)b.push(a("").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},O=function(){var b=o.find(".datepicker-months"),c=b.find("th"),d=b.find("tbody").find("span");b.find(".disabled").removeClass("disabled"),M(l.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(l.year()),M(l.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),d.removeClass("active"),k.isSame(l,"y")&&d.eq(k.month()).addClass("active"),d.each(function(b){M(l.clone().month(b),"M")||a(this).addClass("disabled")})},P=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=l.clone().subtract(5,"y"),e=l.clone().add(6,"y"),f="";for(a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+e.year()),d.maxDate&&d.maxDate.isBefore(e,"y")&&b.eq(2).addClass("disabled");!c.isAfter(e,"y");)f+=''+c.year()+"",c.add(1,"y");a.find("td").html(f)},Q=function(){var c,e,f,g=o.find(".datepicker-days"),h=g.find("th"),i=[];if(z()){for(g.find(".disabled").removeClass("disabled"),h.eq(1).text(l.format(d.dayViewHeaderFormat)),M(l.clone().subtract(1,"M"),"M")||h.eq(0).addClass("disabled"),M(l.clone().add(1,"M"),"M")||h.eq(2).addClass("disabled"),c=l.clone().startOf("M").startOf("week");!l.clone().endOf("M").endOf("w").isBefore(c,"d");)0===c.weekday()&&(e=a("
'+c.week()+"'+c.date()+"
'+c.format(f?"HH":"hh")+"
'+c.format("mm")+"
'+c.format("ss")+"
').addClass('prev').attr('data-action', 'previous') + .append($('').addClass(options.icons.previous)) + ) + .append($('').addClass('picker-switch').attr('data-action', 'pickerSwitch').attr('colspan', (options.calendarWeeks ? '6' : '5'))) + .append($('').addClass('next').attr('data-action', 'next') + .append($('').addClass(options.icons.next)) + ) + ), + contTemplate = $('
').attr('colspan', (options.calendarWeeks ? '8' : '7'))) + ); - dataToOptions(); + return [ + $('
').addClass('datepicker-days') + .append($('').addClass('table-condensed') + .append(headTemplate) + .append($('')) + ), + $('
').addClass('datepicker-months') + .append($('
').addClass('table-condensed') + .append(headTemplate.clone()) + .append(contTemplate.clone()) + ), + $('
').addClass('datepicker-years') + .append($('
').addClass('table-condensed') + .append(headTemplate.clone()) + .append(contTemplate.clone()) + ) + ]; + }, - if (!(picker.options.pickTime || picker.options.pickDate)) { - throw new Error('Must choose at least one picker'); - } + getTimePickerMainTemplate = function () { + var topRow = $(''), + middleRow = $(''), + bottomRow = $(''); - picker.id = dpgId++; - moment.locale(picker.options.language); - picker.date = moment(); - picker.unset = false; - picker.isInput = picker.element.is('input'); - picker.component = false; - - if (picker.element.hasClass('input-group')) { - if (picker.element.find('.datepickerbutton').size() === 0) {//in case there is more then one 'input-group-addon' Issue #48 - picker.component = picker.element.find('[class^="input-group-"]'); + if (isEnabled('h')) { + topRow.append($('
') + .append($('').attr({href: '#', tabindex: '-1'}).addClass('btn').attr('data-action', 'incrementHours') + .append($('').addClass(options.icons.up)))); + middleRow.append($('') + .append($('').addClass('timepicker-hour').attr('data-time-component', 'hours').attr('data-action', 'showHours'))); + bottomRow.append($('') + .append($('').attr({href: '#', tabindex: '-1'}).addClass('btn').attr('data-action', 'decrementHours') + .append($('').addClass(options.icons.down)))); } - else { - picker.component = picker.element.find('.datepickerbutton'); - } - } - picker.format = picker.options.format; - - localeData = moment().localeData(); - - if (!picker.format) { - picker.format = (picker.options.pickDate ? localeData.longDateFormat('L') : ''); - if (picker.options.pickDate && picker.options.pickTime) { - picker.format += ' '; - } - picker.format += (picker.options.pickTime ? localeData.longDateFormat('LT') : ''); - if (picker.options.useSeconds) { - if (localeData.longDateFormat('LT').indexOf(' A') !== -1) { - picker.format = picker.format.split(' A')[0] + ':ss A'; + if (isEnabled('m')) { + if (isEnabled('h')) { + topRow.append($('').addClass('separator')); + middleRow.append($('').addClass('separator').html(':')); + bottomRow.append($('').addClass('separator')); } - else { - picker.format += ':ss'; + topRow.append($('') + .append($('').attr({href: '#', tabindex: '-1'}).addClass('btn').attr('data-action', 'incrementMinutes') + .append($('').addClass(options.icons.up)))); + middleRow.append($('') + .append($('').addClass('timepicker-minute').attr('data-time-component', 'minutes').attr('data-action', 'showMinutes'))); + bottomRow.append($('') + .append($('').attr({href: '#', tabindex: '-1'}).addClass('btn').attr('data-action', 'decrementMinutes') + .append($('').addClass(options.icons.down)))); + } + if (isEnabled('s')) { + if (isEnabled('m')) { + topRow.append($('').addClass('separator')); + middleRow.append($('').addClass('separator').html(':')); + bottomRow.append($('').addClass('separator')); } + topRow.append($('') + .append($('').attr({href: '#', tabindex: '-1'}).addClass('btn').attr('data-action', 'incrementSeconds') + .append($('').addClass(options.icons.up)))); + middleRow.append($('') + .append($('').addClass('timepicker-second').attr('data-time-component', 'seconds').attr('data-action', 'showSeconds'))); + bottomRow.append($('') + .append($('').attr({href: '#', tabindex: '-1'}).addClass('btn').attr('data-action', 'decrementSeconds') + .append($('').addClass(options.icons.down)))); } - } - picker.use24hours = (picker.format.toLowerCase().indexOf('a') < 0 && picker.format.indexOf('h') < 0); - if (picker.component) { - icon = picker.component.find('span'); - } - - if (picker.options.pickTime) { - if (icon) { - icon.addClass(picker.options.icons.time); + if (!use24Hours) { + topRow.append($('').addClass('separator')); + middleRow.append($('') + .append($('').addClass('separator')); } - } - if (picker.options.pickDate) { - if (icon) { - icon.removeClass(picker.options.icons.time); - icon.addClass(picker.options.icons.date); + + return $('
').addClass('timepicker-picker') + .append($('').addClass('table-condensed') + .append([topRow, middleRow, bottomRow])); + }, + + getTimePickerTemplate = function () { + var hoursView = $('
').addClass('timepicker-hours') + .append($('
').addClass('table-condensed')), + minutesView = $('
').addClass('timepicker-minutes') + .append($('
').addClass('table-condensed')), + secondsView = $('
').addClass('timepicker-seconds') + .append($('
').addClass('table-condensed')), + ret = [getTimePickerMainTemplate()]; + + if (isEnabled('h')) { + ret.push(hoursView); } - } - - picker.options.widgetParent = - typeof picker.options.widgetParent === 'string' && picker.options.widgetParent || - picker.element.parents().filter(function () { - return 'scroll' === $(this).css('overflow-y'); - }).get(0) || - 'body'; - - picker.widget = $(getTemplate()).appendTo(picker.options.widgetParent); - - picker.minViewMode = picker.options.minViewMode || 0; - if (typeof picker.minViewMode === 'string') { - switch (picker.minViewMode) { - case 'months': - picker.minViewMode = 1; - break; - case 'years': - picker.minViewMode = 2; - break; - default: - picker.minViewMode = 0; - break; + if (isEnabled('m')) { + ret.push(minutesView); } - } - picker.viewMode = picker.options.viewMode || 0; - if (typeof picker.viewMode === 'string') { - switch (picker.viewMode) { - case 'months': - picker.viewMode = 1; - break; - case 'years': - picker.viewMode = 2; - break; - default: - picker.viewMode = 0; - break; + if (isEnabled('s')) { + ret.push(secondsView); } - } - picker.viewMode = Math.max(picker.viewMode, picker.minViewMode); + return ret; + }, - picker.options.disabledDates = indexGivenDates(picker.options.disabledDates); - picker.options.enabledDates = indexGivenDates(picker.options.enabledDates); + getToolbar = function () { + var row = []; + if (options.showTodayButton) { + row.push($('
').append($('').attr('data-action', 'today').append($('').addClass(options.icons.today)))); + } + if (!options.sideBySide && hasDate() && hasTime()) { + row.push($('').append($('').attr('data-action', 'togglePicker').append($('').addClass(options.icons.time)))); + } + if (options.showClear) { + row.push($('').append($('').attr('data-action', 'clear').append($('').addClass(options.icons.clear)))); + } + if (options.showClose) { + row.push($('').append($('').attr('data-action', 'close').append($('').addClass(options.icons.close)))); + } + return $('').addClass('table-condensed').append($('').append($('').append(row))); + }, - picker.startViewMode = picker.viewMode; - picker.setMinDate(picker.options.minDate); - picker.setMaxDate(picker.options.maxDate); - fillDow(); - fillMonths(); - fillHours(); - fillMinutes(); - fillSeconds(); - update(); - showMode(); - if (!getPickerInput().prop('disabled')) { - attachDatePickerEvents(); - } - if (picker.options.defaultDate !== '' && getPickerInput().val() === '') { - picker.setValue(picker.options.defaultDate); - } - if (picker.options.minuteStepping !== 1) { - rInterval = picker.options.minuteStepping; - picker.date.minutes((Math.round(picker.date.minutes() / rInterval) * rInterval) % 60).seconds(0); - } - }, + getTemplate = function () { + var template = $('
').addClass('bootstrap-datetimepicker-widget dropdown-menu'), + dateView = $('
').addClass('datepicker').append(getDatePickerTemplate()), + timeView = $('
').addClass('timepicker').append(getTimePickerTemplate()), + content = $('
    ').addClass('list-unstyled'), + toolbar = $('
  • ').addClass('picker-switch' + (options.collapse ? ' accordion-toggle' : '')).append(getToolbar()); - getPickerInput = function () { - var input; + if (options.inline) { + template.removeClass('dropdown-menu'); + } - if (picker.isInput) { - return picker.element; - } - input = picker.element.find('.datepickerinput'); - if (input.size() === 0) { - input = picker.element.find('input'); - } - else if (!input.is('input')) { - throw new Error('CSS class "datepickerinput" cannot be applied to non input element'); - } - return input; - }, + if (use24Hours) { + template.addClass('usetwentyfour'); + } + if (options.sideBySide && hasDate() && hasTime()) { + template.addClass('timepicker-sbs'); + template.append( + $('
    ').addClass('row') + .append(dateView.addClass('col-sm-6')) + .append(timeView.addClass('col-sm-6')) + ); + template.append(toolbar); + return template; + } - dataToOptions = function () { - var eData; - if (picker.element.is('input')) { - eData = picker.element.data(); - } - else { - eData = picker.element.find('input').data(); - } - if (eData.dateFormat !== undefined) { - picker.options.format = eData.dateFormat; - } - if (eData.datePickdate !== undefined) { - picker.options.pickDate = eData.datePickdate; - } - if (eData.datePicktime !== undefined) { - picker.options.pickTime = eData.datePicktime; - } - if (eData.dateUseminutes !== undefined) { - picker.options.useMinutes = eData.dateUseminutes; - } - if (eData.dateUseseconds !== undefined) { - picker.options.useSeconds = eData.dateUseseconds; - } - if (eData.dateUsecurrent !== undefined) { - picker.options.useCurrent = eData.dateUsecurrent; - } - if (eData.calendarWeeks !== undefined) { - picker.options.calendarWeeks = eData.calendarWeeks; - } - if (eData.dateMinutestepping !== undefined) { - picker.options.minuteStepping = eData.dateMinutestepping; - } - if (eData.dateMindate !== undefined) { - picker.options.minDate = eData.dateMindate; - } - if (eData.dateMaxdate !== undefined) { - picker.options.maxDate = eData.dateMaxdate; - } - if (eData.dateShowtoday !== undefined) { - picker.options.showToday = eData.dateShowtoday; - } - if (eData.dateCollapse !== undefined) { - picker.options.collapse = eData.dateCollapse; - } - if (eData.dateLanguage !== undefined) { - picker.options.language = eData.dateLanguage; - } - if (eData.dateDefaultdate !== undefined) { - picker.options.defaultDate = eData.dateDefaultdate; - } - if (eData.dateDisableddates !== undefined) { - picker.options.disabledDates = eData.dateDisableddates; - } - if (eData.dateEnableddates !== undefined) { - picker.options.enabledDates = eData.dateEnableddates; - } - if (eData.dateIcons !== undefined) { - picker.options.icons = eData.dateIcons; - } - if (eData.dateUsestrict !== undefined) { - picker.options.useStrict = eData.dateUsestrict; - } - if (eData.dateDirection !== undefined) { - picker.options.direction = eData.dateDirection; - } - if (eData.dateSidebyside !== undefined) { - picker.options.sideBySide = eData.dateSidebyside; - } - if (eData.dateDaysofweekdisabled !== undefined) { - picker.options.daysOfWeekDisabled = eData.dateDaysofweekdisabled; - } - }, + if (options.toolbarPlacement === 'top') { + content.append(toolbar); + } + if (hasDate()) { + content.append($('
  • ').addClass((options.collapse && hasTime() ? 'collapse in' : '')).append(dateView)); + } + if (options.toolbarPlacement === 'default') { + content.append(toolbar); + } + if (hasTime()) { + content.append($('
  • ').addClass((options.collapse && hasDate() ? 'collapse' : '')).append(timeView)); + } + if (options.toolbarPlacement === 'bottom') { + content.append(toolbar); + } + return template.append(content); + }, - place = function () { - var position = 'absolute', - offset = picker.component ? picker.component.offset() : picker.element.offset(), - $window = $(window), - placePosition; + dataToOptions = function () { + var eData, + dataOptions = {}; - picker.width = picker.component ? picker.component.outerWidth() : picker.element.outerWidth(); - offset.top = offset.top + picker.element.outerHeight(); - - if (picker.options.direction === 'up') { - placePosition = 'top'; - } else if (picker.options.direction === 'bottom') { - placePosition = 'bottom'; - } else if (picker.options.direction === 'auto') { - if (offset.top + picker.widget.height() > $window.height() + $window.scrollTop() && picker.widget.height() + picker.element.outerHeight() < offset.top) { - placePosition = 'top'; + if (element.is('input') || options.inline) { + eData = element.data(); } else { - placePosition = 'bottom'; + eData = element.find('input').data(); } - } - if (placePosition === 'top') { - offset.bottom = $window.height() - offset.top + picker.element.outerHeight() + 3; - picker.widget.addClass('top').removeClass('bottom'); - } else { - offset.top += 1; - picker.widget.addClass('bottom').removeClass('top'); - } - if (picker.options.width !== undefined) { - picker.widget.width(picker.options.width); - } + if (eData.dateOptions && eData.dateOptions instanceof Object) { + dataOptions = $.extend(true, dataOptions, eData.dateOptions); + } - if (picker.options.orientation === 'left') { - picker.widget.addClass('left-oriented'); - offset.left = offset.left - picker.widget.width() + 20; - } - - if (isInFixed()) { - position = 'fixed'; - offset.top -= $window.scrollTop(); - offset.left -= $window.scrollLeft(); - } - - if ($window.width() < offset.left + picker.widget.outerWidth()) { - offset.right = $window.width() - offset.left - picker.width; - offset.left = 'auto'; - picker.widget.addClass('pull-right'); - } else { - offset.right = 'auto'; - picker.widget.removeClass('pull-right'); - } - - if (placePosition === 'top') { - picker.widget.css({ - position: position, - bottom: offset.bottom, - top: 'auto', - left: offset.left, - right: offset.right + $.each(options, function (key) { + var attributeName = 'date' + key.charAt(0).toUpperCase() + key.slice(1); + if (eData[attributeName] !== undefined) { + dataOptions[key] = eData[attributeName]; + } }); - } else { - picker.widget.css({ - position: position, - top: offset.top, - bottom: 'auto', - left: offset.left, - right: offset.right - }); - } - }, + return dataOptions; + }, - notifyChange = function (oldDate, eventType) { - if (moment(picker.date).isSame(moment(oldDate)) && !errored) { - return; - } - errored = false; - picker.element.trigger({ - type: 'dp.change', - date: moment(picker.date), - oldDate: moment(oldDate) - }); + place = function () { + var position = (component || element).position(), + offset = (component || element).offset(), + vertical = options.widgetPositioning.vertical, + horizontal = options.widgetPositioning.horizontal, + parent; - if (eventType !== 'change') { - picker.element.change(); - } - }, - - notifyError = function (date) { - errored = true; - picker.element.trigger({ - type: 'dp.error', - date: moment(date, picker.format, picker.options.useStrict) - }); - }, - - update = function (newDate) { - moment.locale(picker.options.language); - var dateStr = newDate; - if (!dateStr) { - dateStr = getPickerInput().val(); - if (dateStr) { - picker.date = moment(dateStr, picker.format, picker.options.useStrict); + if (options.widgetParent) { + parent = options.widgetParent.append(widget); + } else if (element.is('input')) { + parent = element.parent().append(widget); + } else if (options.inline) { + parent = element.append(widget); + return; + } else { + parent = element; + element.children().first().after(widget); } - if (!picker.date) { - picker.date = moment(); - } - } - picker.viewDate = moment(picker.date).startOf('month'); - fillDate(); - fillTime(); - }, - fillDow = function () { - moment.locale(picker.options.language); - var html = $('
'), weekdaysMin = moment.weekdaysMin(), i; - if (picker.options.calendarWeeks === true) { - html.append(''); - } - if (moment().localeData()._week.dow === 0) { // starts on Sunday - for (i = 0; i < 7; i++) { - html.append(''); - } - } else { - for (i = 1; i < 8; i++) { - if (i === 7) { - html.append(''); + // Top and bottom logic + if (vertical === 'auto') { + if (offset.top + widget.height() * 1.5 >= $(window).height() + $(window).scrollTop() && + widget.height() + element.outerHeight() < offset.top) { + vertical = 'top'; } else { - html.append(''); + vertical = 'bottom'; } } - } - picker.widget.find('.datepicker-days thead').append(html); - }, - fillMonths = function () { - moment.locale(picker.options.language); - var html = '', i, monthsShort = moment.monthsShort(); - for (i = 0; i < 12; i++) { - html += '' + monthsShort[i] + ''; - } - picker.widget.find('.datepicker-months td').append(html); - }, - - fillDate = function () { - if (!picker.options.pickDate) { - return; - } - moment.locale(picker.options.language); - var year = picker.viewDate.year(), - month = picker.viewDate.month(), - startYear = picker.options.minDate.year(), - startMonth = picker.options.minDate.month(), - endYear = picker.options.maxDate.year(), - endMonth = picker.options.maxDate.month(), - currentDate, - prevMonth, nextMonth, html = [], row, clsName, i, days, yearCont, currentYear, months = moment.months(); - - picker.widget.find('.datepicker-days').find('.disabled').removeClass('disabled'); - picker.widget.find('.datepicker-months').find('.disabled').removeClass('disabled'); - picker.widget.find('.datepicker-years').find('.disabled').removeClass('disabled'); - - picker.widget.find('.datepicker-days th:eq(1)').text( - months[month] + ' ' + year); - - prevMonth = moment(picker.viewDate, picker.format, picker.options.useStrict).subtract(1, 'months'); - days = prevMonth.daysInMonth(); - prevMonth.date(days).startOf('week'); - if ((year === startYear && month <= startMonth) || year < startYear) { - picker.widget.find('.datepicker-days th:eq(0)').addClass('disabled'); - } - if ((year === endYear && month >= endMonth) || year > endYear) { - picker.widget.find('.datepicker-days th:eq(2)').addClass('disabled'); - } - - nextMonth = moment(prevMonth).add(42, 'd'); - while (prevMonth.isBefore(nextMonth)) { - if (prevMonth.weekday() === moment().startOf('week').weekday()) { - row = $(''); - html.push(row); - if (picker.options.calendarWeeks === true) { - row.append(''); + // Left and right logic + if (horizontal === 'auto') { + if (parent.width() < offset.left + widget.outerWidth() / 2 && + offset.left + widget.outerWidth() > $(window).width()) { + horizontal = 'right'; + } else { + horizontal = 'left'; } } - clsName = ''; - if (prevMonth.year() < year || (prevMonth.year() === year && prevMonth.month() < month)) { - clsName += ' old'; - } else if (prevMonth.year() > year || (prevMonth.year() === year && prevMonth.month() > month)) { - clsName += ' new'; + + if (vertical === 'top') { + widget.addClass('top').removeClass('bottom'); + } else { + widget.addClass('bottom').removeClass('top'); } - if (prevMonth.isSame(moment({y: picker.date.year(), M: picker.date.month(), d: picker.date.date()}))) { - clsName += ' active'; + + if (horizontal === 'right') { + widget.addClass('pull-right'); + } else { + widget.removeClass('pull-right'); } - if (isInDisableDates(prevMonth, 'day') || !isInEnableDates(prevMonth)) { - clsName += ' disabled'; + + // find the first parent element that has a relative css positioning + if (parent.css('position') !== 'relative') { + parent = parent.parents().filter(function () { + return $(this).css('position') === 'relative'; + }).first(); } - if (picker.options.showToday === true) { - if (prevMonth.isSame(moment(), 'day')) { + + if (parent.length === 0) { + throw new Error('datetimepicker component should be placed within a relative positioned container'); + } + + widget.css({ + top: vertical === 'top' ? 'auto' : position.top + element.outerHeight(), + bottom: vertical === 'top' ? position.top + element.outerHeight() : 'auto', + left: horizontal === 'left' ? parent.css('padding-left') : 'auto', + right: horizontal === 'left' ? 'auto' : parent.width() - element.outerWidth() + }); + }, + + notifyEvent = function (e) { + if (e.type === 'dp.change' && ((e.date && e.date.isSame(e.oldDate)) || (!e.date && !e.oldDate))) { + return; + } + element.trigger(e); + }, + + showMode = function (dir) { + if (!widget) { + return; + } + if (dir) { + currentViewMode = Math.max(minViewModeNumber, Math.min(2, currentViewMode + dir)); + } + widget.find('.datepicker > div').hide().filter('.datepicker-' + datePickerModes[currentViewMode].clsName).show(); + }, + + fillDow = function () { + var row = $(''), + currentDate = viewDate.clone().startOf('w'); + + if (options.calendarWeeks === true) { + row.append($(''); + if (options.calendarWeeks) { + row.append(''); + } + html.push(row); + } + clsName = ''; + if (currentDate.isBefore(viewDate, 'M')) { + clsName += ' old'; + } + if (currentDate.isAfter(viewDate, 'M')) { + clsName += ' new'; + } + if (currentDate.isSame(date, 'd') && !unset) { + clsName += ' active'; + } + if (!isValid(currentDate, 'd')) { + clsName += ' disabled'; + } + if (currentDate.isSame(moment(), 'd')) { clsName += ' today'; } - } - if (picker.options.daysOfWeekDisabled) { - for (i = 0; i < picker.options.daysOfWeekDisabled.length; i++) { - if (prevMonth.day() === picker.options.daysOfWeekDisabled[i]) { - clsName += ' disabled'; - break; - } + if (currentDate.day() === 0 || currentDate.day() === 6) { + clsName += ' weekend'; } + row.append(''); + currentDate.add(1, 'd'); } - row.append(''); - currentDate = prevMonth.date(); - prevMonth.add(1, 'd'); + daysView.find('tbody').empty().append(html); - if (currentDate === prevMonth.date()) { - prevMonth.add(1, 'd'); + updateMonths(); + + updateYears(); + }, + + fillHours = function () { + var table = widget.find('.timepicker-hours table'), + currentHour = viewDate.clone().startOf('d'), + html = [], + row = $(''); + + if (viewDate.hour() > 11 && !use24Hours) { + currentHour.hour(12); } - } - picker.widget.find('.datepicker-days tbody').empty().append(html); - currentYear = picker.date.year(); - months = picker.widget.find('.datepicker-months').find('th:eq(1)').text(year).end().find('span').removeClass('active'); - if (currentYear === year) { - months.eq(picker.date.month()).addClass('active'); - } - if (year - 1 < startYear) { - picker.widget.find('.datepicker-months th:eq(0)').addClass('disabled'); - } - if (year + 1 > endYear) { - picker.widget.find('.datepicker-months th:eq(2)').addClass('disabled'); - } - for (i = 0; i < 12; i++) { - if ((year === startYear && startMonth > i) || (year < startYear)) { - $(months[i]).addClass('disabled'); - } else if ((year === endYear && endMonth < i) || (year > endYear)) { - $(months[i]).addClass('disabled'); - } - } - - html = ''; - year = parseInt(year / 10, 10) * 10; - yearCont = picker.widget.find('.datepicker-years').find( - 'th:eq(1)').text(year + '-' + (year + 9)).parents('table').find('td'); - picker.widget.find('.datepicker-years').find('th').removeClass('disabled'); - if (startYear > year) { - picker.widget.find('.datepicker-years').find('th:eq(0)').addClass('disabled'); - } - if (endYear < year + 9) { - picker.widget.find('.datepicker-years').find('th:eq(2)').addClass('disabled'); - } - year -= 1; - for (i = -1; i < 11; i++) { - html += '' + year + ''; - year += 1; - } - yearCont.html(html); - }, - - fillHours = function () { - moment.locale(picker.options.language); - var table = picker.widget.find('.timepicker .timepicker-hours table'), html = '', current, i, j; - table.parent().hide(); - if (picker.use24hours) { - current = 0; - for (i = 0; i < 6; i += 1) { - html += ''; - for (j = 0; j < 4; j += 1) { - html += ''; - current++; + while (currentHour.isSame(viewDate, 'd') && (use24Hours || (viewDate.hour() < 12 && currentHour.hour() < 12) || viewDate.hour() > 11)) { + if (currentHour.hour() % 4 === 0) { + row = $(''); + html.push(row); } - html += ''; + row.append(''); + currentHour.add(1, 'h'); } - } - else { - current = 1; - for (i = 0; i < 3; i += 1) { - html += ''; - for (j = 0; j < 4; j += 1) { - html += ''; - current++; + table.empty().append(html); + }, + + fillMinutes = function () { + var table = widget.find('.timepicker-minutes table'), + currentMinute = viewDate.clone().startOf('h'), + html = [], + row = $(''), + step = options.stepping === 1 ? 5 : options.stepping; + + while (viewDate.isSame(currentMinute, 'h')) { + if (currentMinute.minute() % (step * 4) === 0) { + row = $(''); + html.push(row); } - html += ''; + row.append(''); + currentMinute.add(step, 'm'); } - } - table.html(html); - }, + table.empty().append(html); + }, - fillMinutes = function () { - var table = picker.widget.find('.timepicker .timepicker-minutes table'), html = '', current = 0, i, j, step = picker.options.minuteStepping; - table.parent().hide(); - if (step === 1) { - step = 5; - } - for (i = 0; i < Math.ceil(60 / step / 4) ; i++) { - html += ''; - for (j = 0; j < 4; j += 1) { - if (current < 60) { - html += ''; - current += step; - } else { - html += ''; + fillSeconds = function () { + var table = widget.find('.timepicker-seconds table'), + currentSecond = viewDate.clone().startOf('m'), + html = [], + row = $(''); + + while (viewDate.isSame(currentSecond, 'm')) { + if (currentSecond.second() % 20 === 0) { + row = $(''); + html.push(row); } + row.append(''); + currentSecond.add(5, 's'); } - html += ''; - } - table.html(html); - }, - fillSeconds = function () { - var table = picker.widget.find('.timepicker .timepicker-seconds table'), html = '', current = 0, i, j; - table.parent().hide(); - for (i = 0; i < 3; i++) { - html += ''; - for (j = 0; j < 4; j += 1) { - html += ''; - current += 5; + table.empty().append(html); + }, + + fillTime = function () { + var timeComponents = widget.find('.timepicker span[data-time-component]'); + if (!use24Hours) { + widget.find('.timepicker [data-action=togglePeriod]').text(date.format('A')); } - html += ''; - } - table.html(html); - }, + timeComponents.filter('[data-time-component=hours]').text(date.format(use24Hours ? 'HH' : 'hh')); + timeComponents.filter('[data-time-component=minutes]').text(date.format('mm')); + timeComponents.filter('[data-time-component=seconds]').text(date.format('ss')); - fillTime = function () { - if (!picker.date) { - return; - } - var timeComponents = picker.widget.find('.timepicker span[data-time-component]'), - hour = picker.date.hours(), - period = picker.date.format('A'); - if (!picker.use24hours) { - if (hour === 0) { - hour = 12; - } else if (hour !== 12) { - hour = hour % 12; + fillHours(); + fillMinutes(); + fillSeconds(); + }, + + update = function () { + if (!widget) { + return; } - picker.widget.find('.timepicker [data-action=togglePeriod]').text(period); - } - timeComponents.filter('[data-time-component=hours]').text(padLeft(hour)); - timeComponents.filter('[data-time-component=minutes]').text(padLeft(picker.date.minutes())); - timeComponents.filter('[data-time-component=seconds]').text(padLeft(picker.date.second())); - }, + fillDate(); + fillTime(); + }, - click = function (e) { - e.stopPropagation(); - e.preventDefault(); - picker.unset = false; - var target = $(e.target).closest('span, td, th'), month, year, step, day, oldDate = moment(picker.date); - if (target.length === 1) { - if (!target.is('.disabled')) { - switch (target[0].nodeName.toLowerCase()) { - case 'th': - switch (target[0].className) { - case 'picker-switch': - showMode(1); - break; - case 'prev': - case 'next': - step = dpGlobal.modes[picker.viewMode].navStep; - if (target[0].className === 'prev') { - step = step * -1; - } - picker.viewDate.add(step, dpGlobal.modes[picker.viewMode].navFnc); - fillDate(); - break; - } - break; - case 'span': - if (target.is('.month')) { - month = target.parent().find('span').index(target); - picker.viewDate.month(month); - } else { - year = parseInt(target.text(), 10) || 0; - picker.viewDate.year(year); - } - if (picker.viewMode === picker.minViewMode) { - picker.date = moment({ - y: picker.viewDate.year(), - M: picker.viewDate.month(), - d: picker.viewDate.date(), - h: picker.date.hours(), - m: picker.date.minutes(), - s: picker.date.seconds() - }); - set(); - notifyChange(oldDate, e.type); - } - showMode(-1); - fillDate(); - break; - case 'td': - if (target.is('.day')) { - day = parseInt(target.text(), 10) || 1; - month = picker.viewDate.month(); - year = picker.viewDate.year(); - if (target.is('.old')) { - if (month === 0) { - month = 11; - year -= 1; - } else { - month -= 1; - } - } else if (target.is('.new')) { - if (month === 11) { - month = 0; - year += 1; - } else { - month += 1; - } - } - picker.date = moment({ - y: year, - M: month, - d: day, - h: picker.date.hours(), - m: picker.date.minutes(), - s: picker.date.seconds() - } - ); - picker.viewDate = moment({ - y: year, M: month, d: Math.min(28, day) - }); - fillDate(); - set(); - notifyChange(oldDate, e.type); - } - break; - } + setValue = function (targetMoment) { + var oldDate = unset ? null : date; + + // case of calling setValue(null or false) + if (!targetMoment) { + unset = true; + input.val(''); + element.data('date', ''); + notifyEvent({ + type: 'dp.change', + date: null, + oldDate: oldDate + }); + update(); + return; } - } - }, - actions = { - incrementHours: function () { - checkDate('add', 'hours', 1); - }, + targetMoment = targetMoment.clone().locale(options.locale); - incrementMinutes: function () { - checkDate('add', 'minutes', picker.options.minuteStepping); - }, + if (options.stepping !== 1) { + targetMoment.minutes((Math.round(targetMoment.minutes() / options.stepping) * options.stepping) % 60).seconds(0); + } - incrementSeconds: function () { - checkDate('add', 'seconds', 1); - }, - - decrementHours: function () { - checkDate('subtract', 'hours', 1); - }, - - decrementMinutes: function () { - checkDate('subtract', 'minutes', picker.options.minuteStepping); - }, - - decrementSeconds: function () { - checkDate('subtract', 'seconds', 1); - }, - - togglePeriod: function () { - var hour = picker.date.hours(); - if (hour >= 12) { - hour -= 12; + if (isValid(targetMoment)) { + date = targetMoment; + viewDate = date.clone(); + input.val(date.format(actualFormat)); + element.data('date', date.format(actualFormat)); + update(); + unset = false; + notifyEvent({ + type: 'dp.change', + date: date.clone(), + oldDate: oldDate + }); } else { - hour += 12; + if (!options.keepInvalid) { + input.val(unset ? '' : date.format(actualFormat)); + } + notifyEvent({ + type: 'dp.error', + date: targetMoment + }); } - picker.date.hours(hour); }, - showPicker: function () { - picker.widget.find('.timepicker > div:not(.timepicker-picker)').hide(); - picker.widget.find('.timepicker .timepicker-picker').show(); + hide = function () { + var transitioning = false; + if (!widget) { + return picker; + } + // Ignore event if in the middle of a picker transition + widget.find('.collapse').each(function () { + var collapseData = $(this).data('collapse'); + if (collapseData && collapseData.transitioning) { + transitioning = true; + return false; + } + return true; + }); + if (transitioning) { + return picker; + } + if (component && component.hasClass('btn')) { + component.toggleClass('active'); + } + widget.hide(); + + $(window).off('resize', place); + widget.off('click', '[data-action]'); + widget.off('mousedown', false); + + widget.remove(); + widget = false; + + notifyEvent({ + type: 'dp.hide', + date: date.clone() + }); + return picker; }, - showHours: function () { - picker.widget.find('.timepicker .timepicker-picker').hide(); - picker.widget.find('.timepicker .timepicker-hours').show(); + clear = function () { + setValue(null); }, - showMinutes: function () { - picker.widget.find('.timepicker .timepicker-picker').hide(); - picker.widget.find('.timepicker .timepicker-minutes').show(); - }, + /******************************************************************************** + * + * Widget UI interaction functions + * + ********************************************************************************/ + actions = { + next: function () { + viewDate.add(datePickerModes[currentViewMode].navStep, datePickerModes[currentViewMode].navFnc); + fillDate(); + }, - showSeconds: function () { - picker.widget.find('.timepicker .timepicker-picker').hide(); - picker.widget.find('.timepicker .timepicker-seconds').show(); - }, + previous: function () { + viewDate.subtract(datePickerModes[currentViewMode].navStep, datePickerModes[currentViewMode].navFnc); + fillDate(); + }, - selectHour: function (e) { - var hour = parseInt($(e.target).text(), 10); - if (!picker.use24hours) { - if (picker.date.hours() >= 12) { - if (hour !== 12) { - hour += 12; + pickerSwitch: function () { + showMode(1); + }, + + selectMonth: function (e) { + var month = $(e.target).closest('tbody').find('span').index($(e.target)); + viewDate.month(month); + if (currentViewMode === minViewModeNumber) { + setValue(date.clone().year(viewDate.year()).month(viewDate.month())); + if (!options.inline) { + hide(); } } else { - if (hour === 12) { - hour = 0; - } + showMode(-1); + fillDate(); } - } - picker.date.hours(hour); - actions.showPicker.call(picker); - }, + }, - selectMinute: function (e) { - picker.date.minutes(parseInt($(e.target).text(), 10)); - actions.showPicker.call(picker); - }, + selectYear: function (e) { + var year = parseInt($(e.target).text(), 10) || 0; + viewDate.year(year); + if (currentViewMode === minViewModeNumber) { + setValue(date.clone().year(viewDate.year())); + if (!options.inline) { + hide(); + } + } else { + showMode(-1); + fillDate(); + } + }, - selectSecond: function (e) { - picker.date.seconds(parseInt($(e.target).text(), 10)); - actions.showPicker.call(picker); - } - }, + selectDay: function (e) { + var day = viewDate.clone(); + if ($(e.target).is('.old')) { + day.subtract(1, 'M'); + } + if ($(e.target).is('.new')) { + day.add(1, 'M'); + } + setValue(day.date(parseInt($(e.target).text(), 10))); + if (!hasTime() && !options.keepOpen && !options.inline) { + hide(); + } + }, - doAction = function (e) { - var oldDate = moment(picker.date), - action = $(e.currentTarget).data('action'), - rv = actions[action].apply(picker, arguments); - stopEvent(e); - if (!picker.date) { - picker.date = moment({y: 1970}); - } - set(); - fillTime(); - notifyChange(oldDate, e.type); - return rv; - }, + incrementHours: function () { + setValue(date.clone().add(1, 'h')); + }, - stopEvent = function (e) { - e.stopPropagation(); - e.preventDefault(); - }, + incrementMinutes: function () { + setValue(date.clone().add(options.stepping, 'm')); + }, - keydown = function (e) { - if (e.keyCode === 27) { // allow escape to hide picker - picker.hide(); - } - }, + incrementSeconds: function () { + setValue(date.clone().add(1, 's')); + }, - change = function (e) { - moment.locale(picker.options.language); - var input = $(e.target), oldDate = moment(picker.date), newDate = moment(input.val(), picker.format, picker.options.useStrict); - if (newDate.isValid() && !isInDisableDates(newDate) && isInEnableDates(newDate)) { - update(); - picker.setValue(newDate); - notifyChange(oldDate, e.type); - set(); - } - else { - picker.viewDate = oldDate; - picker.unset = true; - notifyChange(oldDate, e.type); - notifyError(newDate); - } - }, + decrementHours: function () { + setValue(date.clone().subtract(1, 'h')); + }, - showMode = function (dir) { - if (dir) { - picker.viewMode = Math.max(picker.minViewMode, Math.min(2, picker.viewMode + dir)); - } - picker.widget.find('.datepicker > div').hide().filter('.datepicker-' + dpGlobal.modes[picker.viewMode].clsName).show(); - }, + decrementMinutes: function () { + setValue(date.clone().subtract(options.stepping, 'm')); + }, - attachDatePickerEvents = function () { - var $this, $parent, expanded, closed, collapseData; - picker.widget.on('click', '.datepicker *', $.proxy(click, this)); // this handles date picker clicks - picker.widget.on('click', '[data-action]', $.proxy(doAction, this)); // this handles time picker clicks - picker.widget.on('mousedown', $.proxy(stopEvent, this)); - picker.element.on('keydown', $.proxy(keydown, this)); - if (picker.options.pickDate && picker.options.pickTime) { - picker.widget.on('click.togglePicker', '.accordion-toggle', function (e) { - e.stopPropagation(); - $this = $(this); - $parent = $this.closest('ul'); - expanded = $parent.find('.in'); - closed = $parent.find('.collapse:not(.in)'); + decrementSeconds: function () { + setValue(date.clone().subtract(1, 's')); + }, + + togglePeriod: function () { + setValue(date.clone().add((date.hours() >= 12) ? -12 : 12, 'h')); + }, + + togglePicker: function (e) { + var $this = $(e.target), + $parent = $this.closest('ul'), + expanded = $parent.find('.in'), + closed = $parent.find('.collapse:not(.in)'), + collapseData; if (expanded && expanded.length) { collapseData = expanded.data('collapse'); if (collapseData && collapseData.transitioning) { return; } - expanded.collapse('hide'); - closed.collapse('show'); - $this.find('span').toggleClass(picker.options.icons.time + ' ' + picker.options.icons.date); - if (picker.component) { - picker.component.find('span').toggleClass(picker.options.icons.time + ' ' + picker.options.icons.date); + if (expanded.collapse) { // if collapse plugin is available through bootstrap.js then use it + expanded.collapse('hide'); + closed.collapse('show'); + } else { // otherwise just toggle in class on the two views + expanded.removeClass('in'); + closed.addClass('in'); + } + if ($this.is('span')) { + $this.toggleClass(options.icons.time + ' ' + options.icons.date); + } else { + $this.find('span').toggleClass(options.icons.time + ' ' + options.icons.date); + } + + // NOTE: uncomment if toggled state will be restored in show() + //if (component) { + // component.find('span').toggleClass(options.icons.time + ' ' + options.icons.date); + //} + } + }, + + showPicker: function () { + widget.find('.timepicker > div:not(.timepicker-picker)').hide(); + widget.find('.timepicker .timepicker-picker').show(); + }, + + showHours: function () { + widget.find('.timepicker .timepicker-picker').hide(); + widget.find('.timepicker .timepicker-hours').show(); + }, + + showMinutes: function () { + widget.find('.timepicker .timepicker-picker').hide(); + widget.find('.timepicker .timepicker-minutes').show(); + }, + + showSeconds: function () { + widget.find('.timepicker .timepicker-picker').hide(); + widget.find('.timepicker .timepicker-seconds').show(); + }, + + selectHour: function (e) { + var hour = parseInt($(e.target).text(), 10); + + if (!use24Hours) { + if (date.hours() >= 12) { + if (hour !== 12) { + hour += 12; + } + } else { + if (hour === 12) { + hour = 0; + } } } - }); - } - if (picker.isInput) { - picker.element.on({ - 'click': $.proxy(picker.show, this), - 'focus': $.proxy(picker.show, this), - 'change': $.proxy(change, this), - 'blur': $.proxy(picker.hide, this) - }); - } else { - picker.element.on({ - 'change': $.proxy(change, this) - }, 'input'); - if (picker.component) { - picker.component.on('click', $.proxy(picker.show, this)); - picker.component.on('mousedown', $.proxy(stopEvent, this)); - } else { - picker.element.on('click', $.proxy(picker.show, this)); + setValue(date.clone().hours(hour)); + actions.showPicker.call(picker); + }, + + selectMinute: function (e) { + setValue(date.clone().minutes(parseInt($(e.target).text(), 10))); + actions.showPicker.call(picker); + }, + + selectSecond: function (e) { + setValue(date.clone().seconds(parseInt($(e.target).text(), 10))); + actions.showPicker.call(picker); + }, + + clear: clear, + + today: function () { + setValue(moment()); + }, + + close: hide + }, + + doAction = function (e) { + if ($(e.currentTarget).is('.disabled')) { + return false; } - } - }, + actions[$(e.currentTarget).data('action')].apply(picker, arguments); + return false; + }, - attachDatePickerGlobalEvents = function () { - $(window).on( - 'resize.datetimepicker' + picker.id, $.proxy(place, this)); - if (!picker.isInput) { - $(document).on( - 'mousedown.datetimepicker' + picker.id, $.proxy(picker.hide, this)); - } - }, + show = function () { + var currentMoment, + useCurrentGranularity = { + 'year': function (m) { + return m.month(0).date(1).hours(0).seconds(0).minutes(0); + }, + 'month': function (m) { + return m.date(1).hours(0).seconds(0).minutes(0); + }, + 'day': function (m) { + return m.hours(0).seconds(0).minutes(0); + }, + 'hour': function (m) { + return m.seconds(0).minutes(0); + }, + 'minute': function (m) { + return m.seconds(0); + } + }; - detachDatePickerEvents = function () { - picker.widget.off('click', '.datepicker *', picker.click); - picker.widget.off('click', '[data-action]'); - picker.widget.off('mousedown', picker.stopEvent); - if (picker.options.pickDate && picker.options.pickTime) { - picker.widget.off('click.togglePicker'); - } - if (picker.isInput) { - picker.element.off({ - 'focus': picker.show, + if (input.prop('disabled') || (!options.ignoreReadonly && input.prop('readonly')) || widget) { + return picker; + } + if (options.useCurrent && unset && ((input.is('input') && input.val().trim().length === 0) || options.inline)) { + currentMoment = moment(); + if (typeof options.useCurrent === 'string') { + currentMoment = useCurrentGranularity[options.useCurrent](currentMoment); + } + setValue(currentMoment); + } + + widget = getTemplate(); + + fillDow(); + fillMonths(); + + widget.find('.timepicker-hours').hide(); + widget.find('.timepicker-minutes').hide(); + widget.find('.timepicker-seconds').hide(); + + update(); + showMode(); + + $(window).on('resize', place); + widget.on('click', '[data-action]', doAction); // this handles clicks on the widget + widget.on('mousedown', false); + + if (component && component.hasClass('btn')) { + component.toggleClass('active'); + } + widget.show(); + place(); + + if (!input.is(':focus')) { + input.focus(); + } + + notifyEvent({ + type: 'dp.show' + }); + return picker; + }, + + toggle = function () { + return (widget ? hide() : show()); + }, + + parseInputDate = function (inputDate) { + if (moment.isMoment(inputDate) || inputDate instanceof Date) { + inputDate = moment(inputDate); + } else { + inputDate = moment(inputDate, parseFormats, options.useStrict); + } + inputDate.locale(options.locale); + return inputDate; + }, + + keydown = function (e) { + //if (e.keyCode === 27 && widget) { // allow escape to hide picker + // hide(); + // return false; + //} + //if (e.keyCode === 40 && !widget) { // allow down to show picker + // show(); + // e.preventDefault(); + //} + //return true; + + var handler = null, + index, + index2, + pressedKeys = [], + pressedModifiers = {}, + currentKey = e.which, + keyBindKeys, + allModifiersPressed, + pressed = 'p'; + + keyState[currentKey] = pressed; + + for (index in keyState) { + if (keyState.hasOwnProperty(index) && keyState[index] === pressed) { + pressedKeys.push(index); + if (parseInt(index, 10) !== currentKey) { + pressedModifiers[index] = true; + } + } + } + + for (index in options.keyBinds) { + if (options.keyBinds.hasOwnProperty(index) && typeof (options.keyBinds[index]) === 'function') { + keyBindKeys = index.split(' '); + if (keyBindKeys.length === pressedKeys.length && keyMap[currentKey] === keyBindKeys[keyBindKeys.length - 1]) { + allModifiersPressed = true; + for (index2 = keyBindKeys.length - 2; index2 >= 0; index2--) { + if (!(keyMap[keyBindKeys[index2]] in pressedModifiers)) { + allModifiersPressed = false; + break; + } + } + if (allModifiersPressed) { + handler = options.keyBinds[index]; + break; + } + } + } + } + + if (handler) { + handler.call(picker, widget); + e.stopPropagation(); + e.preventDefault(); + } + }, + + keyup = function (e) { + keyState[e.which] = 'r'; + e.stopPropagation(); + e.preventDefault(); + }, + + change = function (e) { + var val = $(e.target).val().trim(), + parsedDate = val ? parseInputDate(val) : null; + setValue(parsedDate); + e.stopImmediatePropagation(); + return false; + }, + + attachDatePickerElementEvents = function () { + input.on({ 'change': change, - 'click': picker.show, - 'blur' : picker.hide + 'blur': options.debug ? '' : hide, + 'keydown': keydown, + 'keyup': keyup }); - } else { - picker.element.off({ - 'change': change - }, 'input'); - if (picker.component) { - picker.component.off('click', picker.show); - picker.component.off('mousedown', picker.stopEvent); - } else { - picker.element.off('click', picker.show); + + if (element.is('input')) { + input.on({ + 'focus': show + }); + } else if (component) { + component.on('click', toggle); + component.on('mousedown', false); } - } - }, + }, - detachDatePickerGlobalEvents = function () { - $(window).off('resize.datetimepicker' + picker.id); - if (!picker.isInput) { - $(document).off('mousedown.datetimepicker' + picker.id); - } - }, + detachDatePickerElementEvents = function () { + input.off({ + 'change': change, + 'blur': hide, + 'keydown': keydown, + 'keyup': keyup + }); - isInFixed = function () { - if (picker.element) { - var parents = picker.element.parents(), inFixed = false, i; - for (i = 0; i < parents.length; i++) { - if ($(parents[i]).css('position') === 'fixed') { - inFixed = true; - break; + if (element.is('input')) { + input.off({ + 'focus': show + }); + } else if (component) { + component.off('click', toggle); + component.off('mousedown', false); + } + }, + + indexGivenDates = function (givenDatesArray) { + // Store given enabledDates and disabledDates as keys. + // This way we can check their existence in O(1) time instead of looping through whole array. + // (for example: options.enabledDates['2014-02-27'] === true) + var givenDatesIndexed = {}; + $.each(givenDatesArray, function () { + var dDate = parseInputDate(this); + if (dDate.isValid()) { + givenDatesIndexed[dDate.format('YYYY-MM-DD')] = true; } + }); + return (Object.keys(givenDatesIndexed).length) ? givenDatesIndexed : false; + }, + + initFormatting = function () { + var format = options.format || 'L LT'; + + actualFormat = format.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function (formatInput) { + var newinput = date.localeData().longDateFormat(formatInput) || formatInput; + return newinput.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function (formatInput2) { //temp fix for #740 + return date.localeData().longDateFormat(formatInput2) || formatInput2; + }); + }); + + + parseFormats = options.extraFormats ? options.extraFormats.slice() : []; + if (parseFormats.indexOf(format) < 0 && parseFormats.indexOf(actualFormat) < 0) { + parseFormats.push(actualFormat); } - return inFixed; - } else { - return false; - } - }, - set = function () { - moment.locale(picker.options.language); - var formatted = ''; - if (!picker.unset) { - formatted = moment(picker.date).format(picker.format); - } - getPickerInput().val(formatted); - picker.element.data('date', formatted); - if (!picker.options.pickTime) { - picker.hide(); - } - }, + use24Hours = (actualFormat.toLowerCase().indexOf('a') < 1 && actualFormat.indexOf('h') < 1); - checkDate = function (direction, unit, amount) { - moment.locale(picker.options.language); - var newDate; - if (direction === 'add') { - newDate = moment(picker.date); - if (newDate.hours() === 23) { - newDate.add(amount, unit); + if (isEnabled('y')) { + minViewModeNumber = 2; } - newDate.add(amount, unit); - } - else { - newDate = moment(picker.date).subtract(amount, unit); - } - if (isInDisableDates(moment(newDate.subtract(amount, unit))) || isInDisableDates(newDate)) { - notifyError(newDate.format(picker.format)); - return; - } - - if (direction === 'add') { - picker.date.add(amount, unit); - } - else { - picker.date.subtract(amount, unit); - } - picker.unset = false; - }, - - isInDisableDates = function (date, timeUnit) { - moment.locale(picker.options.language); - var maxDate = moment(picker.options.maxDate, picker.format, picker.options.useStrict), - minDate = moment(picker.options.minDate, picker.format, picker.options.useStrict); - - if (timeUnit) { - maxDate = maxDate.endOf(timeUnit); - minDate = minDate.startOf(timeUnit); - } - - if (date.isAfter(maxDate) || date.isBefore(minDate)) { - return true; - } - if (picker.options.disabledDates === false) { - return false; - } - return picker.options.disabledDates[date.format('YYYY-MM-DD')] === true; - }, - isInEnableDates = function (date) { - moment.locale(picker.options.language); - if (picker.options.enabledDates === false) { - return true; - } - return picker.options.enabledDates[date.format('YYYY-MM-DD')] === true; - }, - - indexGivenDates = function (givenDatesArray) { - // Store given enabledDates and disabledDates as keys. - // This way we can check their existence in O(1) time instead of looping through whole array. - // (for example: picker.options.enabledDates['2014-02-27'] === true) - var givenDatesIndexed = {}, givenDatesCount = 0, i; - for (i = 0; i < givenDatesArray.length; i++) { - if (moment.isMoment(givenDatesArray[i]) || givenDatesArray[i] instanceof Date) { - dDate = moment(givenDatesArray[i]); - } else { - dDate = moment(givenDatesArray[i], picker.format, picker.options.useStrict); + if (isEnabled('M')) { + minViewModeNumber = 1; } - if (dDate.isValid()) { - givenDatesIndexed[dDate.format('YYYY-MM-DD')] = true; - givenDatesCount++; + if (isEnabled('d')) { + minViewModeNumber = 0; } - } - if (givenDatesCount > 0) { - return givenDatesIndexed; - } - return false; - }, - padLeft = function (string) { - string = string.toString(); - if (string.length >= 2) { - return string; - } - return '0' + string; - }, + currentViewMode = Math.max(minViewModeNumber, currentViewMode); - getTemplate = function () { - var - headTemplate = - '' + - '' + - '' + - '' + - '', - contTemplate = - '', - template = '
' + - '
#' + weekdaysMin[i] + '' + weekdaysMin[0] + '' + weekdaysMin[i] + '
' + prevMonth.week() + '
').addClass('cw').text('#')); + } + + while (currentDate.isBefore(viewDate.clone().endOf('w'))) { + row.append($('').addClass('dow').text(currentDate.format('dd'))); + currentDate.add(1, 'd'); + } + widget.find('.datepicker-days thead').append(row); + }, + + isInDisabledDates = function (testDate) { + return options.disabledDates[testDate.format('YYYY-MM-DD')] === true; + }, + + isInEnabledDates = function (testDate) { + return options.enabledDates[testDate.format('YYYY-MM-DD')] === true; + }, + + isValid = function (targetMoment, granularity) { + if (!targetMoment.isValid()) { + return false; + } + if (options.disabledDates && isInDisabledDates(targetMoment) && granularity !== 'M') { + return false; + } + if (options.enabledDates && !isInEnabledDates(targetMoment) && granularity !== 'M') { + return false; + } + if (options.minDate && targetMoment.isBefore(options.minDate, granularity)) { + return false; + } + if (options.maxDate && targetMoment.isAfter(options.maxDate, granularity)) { + return false; + } + if (granularity === 'd' && options.daysOfWeekDisabled.indexOf(targetMoment.day()) !== -1) { //widget && widget.find('.datepicker-days').length > 0 + return false; + } + return true; + }, + + fillMonths = function () { + var spans = [], + monthsShort = viewDate.clone().startOf('y').hour(12); // hour is changed to avoid DST issues in some browsers + while (monthsShort.isSame(viewDate, 'y')) { + spans.push($('').attr('data-action', 'selectMonth').addClass('month').text(monthsShort.format('MMM'))); + monthsShort.add(1, 'M'); + } + widget.find('.datepicker-months td').empty().append(spans); + }, + + updateMonths = function () { + var monthsView = widget.find('.datepicker-months'), + monthsViewHeader = monthsView.find('th'), + months = monthsView.find('tbody').find('span'); + + monthsView.find('.disabled').removeClass('disabled'); + + if (!isValid(viewDate.clone().subtract(1, 'y'), 'y')) { + monthsViewHeader.eq(0).addClass('disabled'); + } + + monthsViewHeader.eq(1).text(viewDate.year()); + + if (!isValid(viewDate.clone().add(1, 'y'), 'y')) { + monthsViewHeader.eq(2).addClass('disabled'); + } + + months.removeClass('active'); + if (date.isSame(viewDate, 'y')) { + months.eq(date.month()).addClass('active'); + } + + months.each(function (index) { + if (!isValid(viewDate.clone().month(index), 'M')) { + $(this).addClass('disabled'); + } + }); + }, + + updateYears = function () { + var yearsView = widget.find('.datepicker-years'), + yearsViewHeader = yearsView.find('th'), + startYear = viewDate.clone().subtract(5, 'y'), + endYear = viewDate.clone().add(6, 'y'), + html = ''; + + yearsView.find('.disabled').removeClass('disabled'); + + if (options.minDate && options.minDate.isAfter(startYear, 'y')) { + yearsViewHeader.eq(0).addClass('disabled'); + } + + yearsViewHeader.eq(1).text(startYear.year() + '-' + endYear.year()); + + if (options.maxDate && options.maxDate.isBefore(endYear, 'y')) { + yearsViewHeader.eq(2).addClass('disabled'); + } + + while (!startYear.isAfter(endYear, 'y')) { + html += '' + startYear.year() + ''; + startYear.add(1, 'y'); + } + + yearsView.find('td').html(html); + }, + + fillDate = function () { + var daysView = widget.find('.datepicker-days'), + daysViewHeader = daysView.find('th'), + currentDate, + html = [], + row, + clsName; + + if (!hasDate()) { + return; + } + + daysView.find('.disabled').removeClass('disabled'); + daysViewHeader.eq(1).text(viewDate.format(options.dayViewHeaderFormat)); + + if (!isValid(viewDate.clone().subtract(1, 'M'), 'M')) { + daysViewHeader.eq(0).addClass('disabled'); + } + if (!isValid(viewDate.clone().add(1, 'M'), 'M')) { + daysViewHeader.eq(2).addClass('disabled'); + } + + currentDate = viewDate.clone().startOf('M').startOf('week'); + + while (!viewDate.clone().endOf('M').endOf('w').isBefore(currentDate, 'd')) { + if (currentDate.weekday() === 0) { + row = $('
' + currentDate.week() + '' + currentDate.date() + '' + prevMonth.date() + '
' + padLeft(current.toString()) + '
' + currentHour.format(use24Hours ? 'HH' : 'hh') + '
' + padLeft(current.toString()) + '
' + currentMinute.format('mm') + '
' + padLeft(current.toString()) + '
' + currentSecond.format('ss') + '
' + padLeft(current.toString()) + '
' + headTemplate + '
' + - '' + - '
' + - '' + headTemplate + contTemplate + '
' + - '
' + - '
' + - '' + headTemplate + contTemplate + '
' + - '
', - ret = ''; - if (picker.options.pickDate && picker.options.pickTime) { - ret = '
'; - return ret; - } - if (picker.options.pickTime) { - return ( - '' - ); - } - return ( - '' - ); - }, - - dpGlobal = { - modes: [ - { - clsName: 'days', - navFnc: 'month', - navStep: 1 - }, - { - clsName: 'months', - navFnc: 'year', - navStep: 1 - }, - { - clsName: 'years', - navFnc: 'year', - navStep: 10 - } - ] - }, - - tpGlobal = { - hourTemplate: '', - minuteTemplate: '', - secondTemplate: '' - }; - - tpGlobal.getTemplate = function () { - return ( - '
' + - '' + - '' + - '' + - '' + - '' + - (picker.options.useSeconds ? - '' : '') + - (picker.use24hours ? '' : '') + - '' + - '' + - ' ' + - '' + - ' ' + - (picker.options.useSeconds ? - '' : '') + - (picker.use24hours ? '' : '' + - '') + - '' + - '' + - '' + - '' + - '' + - (picker.options.useSeconds ? - '' : '') + - (picker.use24hours ? '' : '') + - '' + - '
' + (picker.options.useMinutes ? '' : '') + '
' + tpGlobal.hourTemplate + ':' + (picker.options.useMinutes ? tpGlobal.minuteTemplate : '00') + ':' + tpGlobal.secondTemplate + '
' + (picker.options.useMinutes ? '' : '') + '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - (picker.options.useSeconds ? - '
' : '') - ); - }; + }; + /******************************************************************************** + * + * Public API functions + * ===================== + * + * Important: Do not expose direct references to private objects or the options + * object to the outer world. Always return a clone when returning values or make + * a clone when setting a private variable. + * + ********************************************************************************/ picker.destroy = function () { - detachDatePickerEvents(); - detachDatePickerGlobalEvents(); - picker.widget.remove(); - picker.element.removeData('DateTimePicker'); - if (picker.component) { - picker.component.removeData('DateTimePicker'); - } + hide(); + detachDatePickerElementEvents(); + element.removeData('DateTimePicker'); + element.removeData('date'); }; - picker.show = function (e) { - if (getPickerInput().prop('disabled')) { - return; - } - if (picker.options.useCurrent) { - if (getPickerInput().val() === '') { - if (picker.options.minuteStepping !== 1) { - var mDate = moment(), - rInterval = picker.options.minuteStepping; - mDate.minutes((Math.round(mDate.minutes() / rInterval) * rInterval) % 60).seconds(0); - picker.setValue(mDate.format(picker.format)); - } else { - picker.setValue(moment().format(picker.format)); - } - notifyChange('', e.type); - } - } - // if this is a click event on the input field and picker is already open don't hide it - if (e && e.type === 'click' && picker.isInput && picker.widget.hasClass('picker-open')) { - return; - } - if (picker.widget.hasClass('picker-open')) { - picker.widget.hide(); - picker.widget.removeClass('picker-open'); - } - else { - picker.widget.show(); - picker.widget.addClass('picker-open'); - } - picker.height = picker.component ? picker.component.outerHeight() : picker.element.outerHeight(); - place(); - picker.element.trigger({ - type: 'dp.show', - date: moment(picker.date) - }); - attachDatePickerGlobalEvents(); - if (e) { - stopEvent(e); - } - }; + picker.toggle = toggle; + + picker.show = show; + + picker.hide = hide; picker.disable = function () { - var input = getPickerInput(); - if (input.prop('disabled')) { - return; + hide(); + if (component && component.hasClass('btn')) { + component.addClass('disabled'); } input.prop('disabled', true); - detachDatePickerEvents(); + return picker; }; picker.enable = function () { - var input = getPickerInput(); - if (!input.prop('disabled')) { - return; + if (component && component.hasClass('btn')) { + component.removeClass('disabled'); } input.prop('disabled', false); - attachDatePickerEvents(); + return picker; }; - picker.hide = function () { - // Ignore event if in the middle of a picker transition - var collapse = picker.widget.find('.collapse'), i, collapseData; - for (i = 0; i < collapse.length; i++) { - collapseData = collapse.eq(i).data('collapse'); - if (collapseData && collapseData.transitioning) { - return; + picker.ignoreReadonly = function (ignoreReadonly) { + if (arguments.length === 0) { + return options.ignoreReadonly; + } + if (typeof ignoreReadonly !== 'boolean') { + throw new TypeError('ignoreReadonly () expects a boolean parameter'); + } + options.ignoreReadonly = ignoreReadonly; + return picker; + }; + + picker.options = function (newOptions) { + if (arguments.length === 0) { + return $.extend(true, {}, options); + } + + if (!(newOptions instanceof Object)) { + throw new TypeError('options() options parameter should be an object'); + } + $.extend(true, options, newOptions); + $.each(options, function (key, value) { + if (picker[key] !== undefined) { + picker[key](value); + } else { + throw new TypeError('option ' + key + ' is not recognized!'); + } + }); + return picker; + }; + + picker.date = function (newDate) { + if (arguments.length === 0) { + if (unset) { + return null; + } + return date.clone(); + } + + if (newDate !== null && typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date)) { + throw new TypeError('date() parameter must be one of [null, string, moment or Date]'); + } + + setValue(newDate === null ? null : parseInputDate(newDate)); + return picker; + }; + + picker.format = function (newFormat) { + if (arguments.length === 0) { + return options.format; + } + + if ((typeof newFormat !== 'string') && ((typeof newFormat !== 'boolean') || (newFormat !== false))) { + throw new TypeError('format() expects a sting or boolean:false parameter ' + newFormat); + } + + options.format = newFormat; + if (actualFormat) { + initFormatting(); // reinit formatting + } + return picker; + }; + + picker.dayViewHeaderFormat = function (newFormat) { + if (arguments.length === 0) { + return options.dayViewHeaderFormat; + } + + if (typeof newFormat !== 'string') { + throw new TypeError('dayViewHeaderFormat() expects a string parameter'); + } + + options.dayViewHeaderFormat = newFormat; + return picker; + }; + + picker.extraFormats = function (formats) { + if (arguments.length === 0) { + return options.extraFormats; + } + + if (formats !== false && !(formats instanceof Array)) { + throw new TypeError('extraFormats() expects an array or false parameter'); + } + + options.extraFormats = formats; + if (parseFormats) { + initFormatting(); // reinit formatting + } + return picker; + }; + + picker.disabledDates = function (dates) { + if (arguments.length === 0) { + return (options.disabledDates ? $.extend({}, options.disabledDates) : options.disabledDates); + } + + if (!dates) { + options.disabledDates = false; + update(); + return picker; + } + if (!(dates instanceof Array)) { + throw new TypeError('disabledDates() expects an array parameter'); + } + options.disabledDates = indexGivenDates(dates); + options.enabledDates = false; + update(); + return picker; + }; + + picker.enabledDates = function (dates) { + if (arguments.length === 0) { + return (options.enabledDates ? $.extend({}, options.enabledDates) : options.enabledDates); + } + + if (!dates) { + options.enabledDates = false; + update(); + return picker; + } + if (!(dates instanceof Array)) { + throw new TypeError('enabledDates() expects an array parameter'); + } + options.enabledDates = indexGivenDates(dates); + options.disabledDates = false; + update(); + return picker; + }; + + picker.daysOfWeekDisabled = function (daysOfWeekDisabled) { + if (arguments.length === 0) { + return options.daysOfWeekDisabled.splice(0); + } + + if (!(daysOfWeekDisabled instanceof Array)) { + throw new TypeError('daysOfWeekDisabled() expects an array parameter'); + } + options.daysOfWeekDisabled = daysOfWeekDisabled.reduce(function (previousValue, currentValue) { + currentValue = parseInt(currentValue, 10); + if (currentValue > 6 || currentValue < 0 || isNaN(currentValue)) { + return previousValue; + } + if (previousValue.indexOf(currentValue) === -1) { + previousValue.push(currentValue); + } + return previousValue; + }, []).sort(); + update(); + return picker; + }; + + picker.maxDate = function (maxDate) { + if (arguments.length === 0) { + return options.maxDate ? options.maxDate.clone() : options.maxDate; + } + + if ((typeof maxDate === 'boolean') && maxDate === false) { + options.maxDate = false; + update(); + return picker; + } + + if (typeof maxDate === 'string') { + if (maxDate === 'now' || maxDate === 'moment') { + maxDate = moment(); } } - picker.widget.hide(); - picker.widget.removeClass('picker-open'); - picker.viewMode = picker.startViewMode; + + var parsedDate = parseInputDate(maxDate); + + if (!parsedDate.isValid()) { + throw new TypeError('maxDate() Could not parse date parameter: ' + maxDate); + } + if (options.minDate && parsedDate.isBefore(options.minDate)) { + throw new TypeError('maxDate() date parameter is before options.minDate: ' + parsedDate.format(actualFormat)); + } + options.maxDate = parsedDate; + if (options.maxDate.isBefore(maxDate)) { + setValue(options.maxDate); + } + if (viewDate.isAfter(parsedDate)) { + viewDate = parsedDate.clone(); + } + update(); + return picker; + }; + + picker.minDate = function (minDate) { + if (arguments.length === 0) { + return options.minDate ? options.minDate.clone() : options.minDate; + } + + if ((typeof minDate === 'boolean') && minDate === false) { + options.minDate = false; + update(); + return picker; + } + + if (typeof minDate === 'string') { + if (minDate === 'now' || minDate === 'moment') { + minDate = moment(); + } + } + + var parsedDate = parseInputDate(minDate); + + if (!parsedDate.isValid()) { + throw new TypeError('minDate() Could not parse date parameter: ' + minDate); + } + if (options.maxDate && parsedDate.isAfter(options.maxDate)) { + throw new TypeError('minDate() date parameter is after options.maxDate: ' + parsedDate.format(actualFormat)); + } + options.minDate = parsedDate; + if (options.minDate.isAfter(minDate)) { + setValue(options.minDate); + } + if (viewDate.isBefore(parsedDate)) { + viewDate = parsedDate.clone(); + } + update(); + return picker; + }; + + picker.defaultDate = function (defaultDate) { + if (arguments.length === 0) { + return options.defaultDate ? options.defaultDate.clone() : options.defaultDate; + } + if (!defaultDate) { + options.defaultDate = false; + return picker; + } + + if (typeof defaultDate === 'string') { + if (defaultDate === 'now' || defaultDate === 'moment') { + defaultDate = moment(); + } + } + + var parsedDate = parseInputDate(defaultDate); + if (!parsedDate.isValid()) { + throw new TypeError('defaultDate() Could not parse date parameter: ' + defaultDate); + } + if (!isValid(parsedDate)) { + throw new TypeError('defaultDate() date passed is invalid according to component setup validations'); + } + + options.defaultDate = parsedDate; + + if (options.defaultDate && input.val().trim() === '' && input.attr('placeholder') === undefined) { + setValue(options.defaultDate); + } + return picker; + }; + + picker.locale = function (locale) { + if (arguments.length === 0) { + return options.locale; + } + + if (!moment.localeData(locale)) { + throw new TypeError('locale() locale ' + locale + ' is not loaded from moment locales!'); + } + + options.locale = locale; + date.locale(options.locale); + viewDate.locale(options.locale); + + if (actualFormat) { + initFormatting(); // reinit formatting + } + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.stepping = function (stepping) { + if (arguments.length === 0) { + return options.stepping; + } + + stepping = parseInt(stepping, 10); + if (isNaN(stepping) || stepping < 1) { + stepping = 1; + } + options.stepping = stepping; + return picker; + }; + + picker.useCurrent = function (useCurrent) { + var useCurrentOptions = ['year', 'month', 'day', 'hour', 'minute']; + if (arguments.length === 0) { + return options.useCurrent; + } + + if ((typeof useCurrent !== 'boolean') && (typeof useCurrent !== 'string')) { + throw new TypeError('useCurrent() expects a boolean or string parameter'); + } + if (typeof useCurrent === 'string' && useCurrentOptions.indexOf(useCurrent.toLowerCase()) === -1) { + throw new TypeError('useCurrent() expects a string parameter of ' + useCurrentOptions.join(', ')); + } + options.useCurrent = useCurrent; + return picker; + }; + + picker.collapse = function (collapse) { + if (arguments.length === 0) { + return options.collapse; + } + + if (typeof collapse !== 'boolean') { + throw new TypeError('collapse() expects a boolean parameter'); + } + if (options.collapse === collapse) { + return picker; + } + options.collapse = collapse; + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.icons = function (icons) { + if (arguments.length === 0) { + return $.extend({}, options.icons); + } + + if (!(icons instanceof Object)) { + throw new TypeError('icons() expects parameter to be an Object'); + } + $.extend(options.icons, icons); + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.useStrict = function (useStrict) { + if (arguments.length === 0) { + return options.useStrict; + } + + if (typeof useStrict !== 'boolean') { + throw new TypeError('useStrict() expects a boolean parameter'); + } + options.useStrict = useStrict; + return picker; + }; + + picker.sideBySide = function (sideBySide) { + if (arguments.length === 0) { + return options.sideBySide; + } + + if (typeof sideBySide !== 'boolean') { + throw new TypeError('sideBySide() expects a boolean parameter'); + } + options.sideBySide = sideBySide; + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.viewMode = function (viewMode) { + if (arguments.length === 0) { + return options.viewMode; + } + + if (typeof viewMode !== 'string') { + throw new TypeError('viewMode() expects a string parameter'); + } + + if (viewModes.indexOf(viewMode) === -1) { + throw new TypeError('viewMode() parameter must be one of (' + viewModes.join(', ') + ') value'); + } + + options.viewMode = viewMode; + currentViewMode = Math.max(viewModes.indexOf(viewMode), minViewModeNumber); + showMode(); - picker.element.trigger({ - type: 'dp.hide', - date: moment(picker.date) - }); - detachDatePickerGlobalEvents(); + return picker; }; - picker.setValue = function (newDate) { - moment.locale(picker.options.language); - if (!newDate) { - picker.unset = true; - set(); + picker.toolbarPlacement = function (toolbarPlacement) { + if (arguments.length === 0) { + return options.toolbarPlacement; + } + + if (typeof toolbarPlacement !== 'string') { + throw new TypeError('toolbarPlacement() expects a string parameter'); + } + if (toolbarPlacements.indexOf(toolbarPlacement) === -1) { + throw new TypeError('toolbarPlacement() parameter must be one of (' + toolbarPlacements.join(', ') + ') value'); + } + options.toolbarPlacement = toolbarPlacement; + + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.widgetPositioning = function (widgetPositioning) { + if (arguments.length === 0) { + return $.extend({}, options.widgetPositioning); + } + + if (({}).toString.call(widgetPositioning) !== '[object Object]') { + throw new TypeError('widgetPositioning() expects an object variable'); + } + if (widgetPositioning.horizontal) { + if (typeof widgetPositioning.horizontal !== 'string') { + throw new TypeError('widgetPositioning() horizontal variable must be a string'); + } + widgetPositioning.horizontal = widgetPositioning.horizontal.toLowerCase(); + if (horizontalModes.indexOf(widgetPositioning.horizontal) === -1) { + throw new TypeError('widgetPositioning() expects horizontal parameter to be one of (' + horizontalModes.join(', ') + ')'); + } + options.widgetPositioning.horizontal = widgetPositioning.horizontal; + } + if (widgetPositioning.vertical) { + if (typeof widgetPositioning.vertical !== 'string') { + throw new TypeError('widgetPositioning() vertical variable must be a string'); + } + widgetPositioning.vertical = widgetPositioning.vertical.toLowerCase(); + if (verticalModes.indexOf(widgetPositioning.vertical) === -1) { + throw new TypeError('widgetPositioning() expects vertical parameter to be one of (' + verticalModes.join(', ') + ')'); + } + options.widgetPositioning.vertical = widgetPositioning.vertical; + } + update(); + return picker; + }; + + picker.calendarWeeks = function (calendarWeeks) { + if (arguments.length === 0) { + return options.calendarWeeks; + } + + if (typeof calendarWeeks !== 'boolean') { + throw new TypeError('calendarWeeks() expects parameter to be a boolean value'); + } + + options.calendarWeeks = calendarWeeks; + update(); + return picker; + }; + + picker.showTodayButton = function (showTodayButton) { + if (arguments.length === 0) { + return options.showTodayButton; + } + + if (typeof showTodayButton !== 'boolean') { + throw new TypeError('showTodayButton() expects a boolean parameter'); + } + + options.showTodayButton = showTodayButton; + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.showClear = function (showClear) { + if (arguments.length === 0) { + return options.showClear; + } + + if (typeof showClear !== 'boolean') { + throw new TypeError('showClear() expects a boolean parameter'); + } + + options.showClear = showClear; + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.widgetParent = function (widgetParent) { + if (arguments.length === 0) { + return options.widgetParent; + } + + if (typeof widgetParent === 'string') { + widgetParent = $(widgetParent); + } + + if (widgetParent !== null && (typeof widgetParent !== 'string' && !(widgetParent instanceof $))) { + throw new TypeError('widgetParent() expects a string or a jQuery object parameter'); + } + + options.widgetParent = widgetParent; + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.keepOpen = function (keepOpen) { + if (arguments.length === 0) { + return options.keepOpen; + } + + if (typeof keepOpen !== 'boolean') { + throw new TypeError('keepOpen() expects a boolean parameter'); + } + + options.keepOpen = keepOpen; + return picker; + }; + + picker.inline = function (inline) { + if (arguments.length === 0) { + return options.inline; + } + + if (typeof inline !== 'boolean') { + throw new TypeError('inline() expects a boolean parameter'); + } + + options.inline = inline; + return picker; + }; + + picker.clear = function () { + clear(); + return picker; + }; + + picker.keyBinds = function (keyBinds) { + options.keyBinds = keyBinds; + return picker; + }; + + picker.debug = function (debug) { + if (typeof debug !== 'boolean') { + throw new TypeError('debug() expects a boolean parameter'); + } + + options.debug = debug; + return picker; + }; + + picker.showClose = function (showClose) { + if (arguments.length === 0) { + return options.showClose; + } + + if (typeof showClose !== 'boolean') { + throw new TypeError('showClose() expects a boolean parameter'); + } + + options.showClose = showClose; + return picker; + }; + + picker.keepInvalid = function (keepInvalid) { + if (arguments.length === 0) { + return options.keepInvalid; + } + + if (typeof keepInvalid !== 'boolean') { + throw new TypeError('keepInvalid() expects a boolean parameter'); + } + options.keepInvalid = keepInvalid; + return picker; + }; + + picker.datepickerInput = function (datepickerInput) { + if (arguments.length === 0) { + return options.datepickerInput; + } + + if (typeof datepickerInput !== 'string') { + throw new TypeError('datepickerInput() expects a string parameter'); + } + + options.datepickerInput = datepickerInput; + return picker; + }; + + // initializing element and component attributes + if (element.is('input')) { + input = element; + } else { + input = element.find(options.datepickerInput); + if (input.size() === 0) { + input = element.find('input'); + } else if (!input.is('input')) { + throw new Error('CSS class "' + options.datepickerInput + '" cannot be applied to non input element'); + } + } + + if (element.hasClass('input-group')) { + // in case there is more then one 'input-group-addon' Issue #48 + if (element.find('.datepickerbutton').size() === 0) { + component = element.find('[class^="input-group-"]'); } else { - picker.unset = false; + component = element.find('.datepickerbutton'); } - if (!moment.isMoment(newDate)) { - newDate = (newDate instanceof Date) ? moment(newDate) : moment(newDate, picker.format, picker.options.useStrict); - } else { - newDate = newDate.locale(picker.options.language); - } - if (newDate.isValid()) { - picker.date = newDate; - set(); - picker.viewDate = moment({y: picker.date.year(), M: picker.date.month()}); - fillDate(); - fillTime(); - } - else { - notifyError(newDate); - } - }; + } - picker.getDate = function () { - if (picker.unset) { - return null; - } - return moment(picker.date); - }; + if (!options.inline && !input.is('input')) { + throw new Error('Could not initialize DateTimePicker without an input element'); + } - picker.setDate = function (date) { - var oldDate = moment(picker.date); - if (!date) { - picker.setValue(null); - } else { - picker.setValue(date); - } - notifyChange(oldDate, 'function'); - }; + $.extend(true, options, dataToOptions()); - picker.setDisabledDates = function (dates) { - picker.options.disabledDates = indexGivenDates(dates); - if (picker.viewDate) { - update(); - } - }; + picker.options(options); - picker.setEnabledDates = function (dates) { - picker.options.enabledDates = indexGivenDates(dates); - if (picker.viewDate) { - update(); - } - }; + initFormatting(); - picker.setMaxDate = function (date) { - if (date === undefined) { - return; - } - if (moment.isMoment(date) || date instanceof Date) { - picker.options.maxDate = moment(date); - } else { - picker.options.maxDate = moment(date, picker.format, picker.options.useStrict); - } - if (picker.viewDate) { - update(); - } - }; + attachDatePickerElementEvents(); - picker.setMinDate = function (date) { - if (date === undefined) { - return; - } - if (moment.isMoment(date) || date instanceof Date) { - picker.options.minDate = moment(date); - } else { - picker.options.minDate = moment(date, picker.format, picker.options.useStrict); - } - if (picker.viewDate) { - update(); - } - }; - - init(); + if (input.prop('disabled')) { + picker.disable(); + } + if (input.is('input') && input.val().trim().length !== 0) { + setValue(parseInputDate(input.val().trim())); + } + else if (options.defaultDate && input.attr('placeholder') === undefined) { + setValue(options.defaultDate); + } + if (options.inline) { + show(); + } + return picker; }; + /******************************************************************************** + * + * jQuery plugin constructor and defaults object + * + ********************************************************************************/ + $.fn.datetimepicker = function (options) { return this.each(function () { - var $this = $(this), - data = $this.data('DateTimePicker'); - if (!data) { - $this.data('DateTimePicker', new DateTimePicker(this, options)); + var $this = $(this); + if (!$this.data('DateTimePicker')) { + // create a private copy of the defaults object + options = $.extend(true, {}, $.fn.datetimepicker.defaults, options); + $this.data('DateTimePicker', dateTimePicker($this, options)); } }); }; $.fn.datetimepicker.defaults = { format: false, - pickDate: true, - pickTime: true, - useMinutes: true, - useSeconds: false, + dayViewHeaderFormat: 'MMMM YYYY', + extraFormats: false, + stepping: 1, + minDate: false, + maxDate: false, useCurrent: true, - calendarWeeks: false, - minuteStepping: 1, - minDate: moment({y: 1900}), - maxDate: moment().add(100, 'y'), - showToday: true, collapse: true, - language: moment.locale(), - defaultDate: '', + locale: moment.locale(), + defaultDate: false, disabledDates: false, enabledDates: false, - icons: {}, + icons: { + time: 'glyphicon glyphicon-time', + date: 'glyphicon glyphicon-calendar', + up: 'glyphicon glyphicon-chevron-up', + down: 'glyphicon glyphicon-chevron-down', + previous: 'glyphicon glyphicon-chevron-left', + next: 'glyphicon glyphicon-chevron-right', + today: 'glyphicon glyphicon-screenshot', + clear: 'glyphicon glyphicon-trash', + close: 'glyphicon glyphicon-remove' + }, useStrict: false, - direction: 'auto', sideBySide: false, daysOfWeekDisabled: [], - widgetParent: false + calendarWeeks: false, + viewMode: 'days', + toolbarPlacement: 'default', + showTodayButton: false, + showClear: false, + showClose: false, + widgetPositioning: { + horizontal: 'auto', + vertical: 'auto' + }, + widgetParent: null, + ignoreReadonly: false, + keepOpen: false, + inline: false, + keepInvalid: false, + datepickerInput: '.datepickerinput', + keyBinds: { + up: function (widget) { + if (!widget) { + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().subtract(7, 'd')); + } else { + this.date(d.clone().add(1, 'm')); + } + }, + down: function (widget) { + if (!widget) { + this.show(); + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().add(7, 'd')); + } else { + this.date(d.clone().subtract(1, 'm')); + } + }, + 'control up': function (widget) { + if (!widget) { + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().subtract(1, 'y')); + } else { + this.date(d.clone().add(1, 'h')); + } + }, + 'control down': function (widget) { + if (!widget) { + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().add(1, 'y')); + } else { + this.date(d.clone().subtract(1, 'h')); + } + }, + left: function (widget) { + if (!widget) { + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().subtract(1, 'd')); + } + }, + right: function (widget) { + if (!widget) { + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().add(1, 'd')); + } + }, + pageUp: function (widget) { + if (!widget) { + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().subtract(1, 'M')); + } + }, + pageDown: function (widget) { + if (!widget) { + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().add(1, 'M')); + } + }, + enter: function () { + this.hide(); + }, + escape: function () { + this.hide(); + }, + //tab: function (widget) { //this break the flow of the form. disabling for now + // var toggle = widget.find('.picker-switch a[data-action="togglePicker"]'); + // if(toggle.length > 0) toggle.click(); + //}, + 'control space': function (widget) { + if (widget.find('.timepicker').is(':visible')) { + widget.find('.btn[data-action="togglePeriod"]').click(); + } + }, + t: function () { + this.date(moment()); + }, + 'delete': function () { + this.clear(); + } + }, + debug: false }; })); diff --git a/src/less/_bootstrap-datetimepicker.less b/src/less/_bootstrap-datetimepicker.less new file mode 100644 index 0000000000..64d9a70e71 --- /dev/null +++ b/src/less/_bootstrap-datetimepicker.less @@ -0,0 +1,343 @@ +/*! + * Datetimepicker for Bootstrap 3 + * ! version : 4.7.14 + * https://github.com/Eonasdan/bootstrap-datetimepicker/ + */ +@bs-datetimepicker-timepicker-font-size: 1.2em; +@bs-datetimepicker-active-bg: @btn-primary-bg; +@bs-datetimepicker-active-color: @btn-primary-color; +@bs-datetimepicker-border-radius: @border-radius-base; +@bs-datetimepicker-btn-hover-bg: @gray-lighter; +@bs-datetimepicker-disabled-color: @gray-light; +@bs-datetimepicker-alternate-color: @gray-light; +@bs-datetimepicker-secondary-border-color: #ccc; +@bs-datetimepicker-secondary-border-color-rgba: rgba(0, 0, 0, 0.2); +@bs-datetimepicker-primary-border-color: white; +@bs-datetimepicker-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + +.bootstrap-datetimepicker-widget { + list-style: none; + + &.dropdown-menu { + margin: 2px 0; + padding: 4px; + width: 19em; + + &.timepicker-sbs { + @media (min-width: @screen-sm-min) { + width: 38em; + } + + @media (min-width: @screen-md-min) { + width: 38em; + } + + @media (min-width: @screen-lg-min) { + width: 38em; + } + } + + &:before, &:after { + content: ''; + display: inline-block; + position: absolute; + } + + &.bottom { + &:before { + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid @bs-datetimepicker-secondary-border-color; + border-bottom-color: @bs-datetimepicker-secondary-border-color-rgba; + top: -7px; + left: 7px; + } + + &:after { + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid @bs-datetimepicker-primary-border-color; + top: -6px; + left: 8px; + } + } + + &.top { + &:before { + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-top: 7px solid @bs-datetimepicker-secondary-border-color; + border-top-color: @bs-datetimepicker-secondary-border-color-rgba; + bottom: -7px; + left: 6px; + } + + &:after { + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid @bs-datetimepicker-primary-border-color; + bottom: -6px; + left: 7px; + } + } + + &.pull-right { + &:before { + left: auto; + right: 6px; + } + + &:after { + left: auto; + right: 7px; + } + } + } + + .list-unstyled { + margin: 0; + } + + a[data-action] { + padding: 6px 0; + } + + a[data-action]:active { + box-shadow: none; + } + + .timepicker-hour, .timepicker-minute, .timepicker-second { + width: 54px; + font-weight: bold; + font-size: @bs-datetimepicker-timepicker-font-size; + margin: 0; + } + + button[data-action] { + padding: 6px; + } + + .btn[data-action="incrementHours"]::after { + .sr-only(); + content: "Increment Hours"; + } + + .btn[data-action="incrementMinutes"]::after { + .sr-only(); + content: "Increment Minutes"; + } + + .btn[data-action="decrementHours"]::after { + .sr-only(); + content: "Decrement Hours"; + } + + .btn[data-action="decrementMinutes"]::after { + .sr-only(); + content: "Decrement Minutes"; + } + + .btn[data-action="showHours"]::after { + .sr-only(); + content: "Show Hours"; + } + + .btn[data-action="showMinutes"]::after { + .sr-only(); + content: "Show Minutes"; + } + + .btn[data-action="togglePeriod"]::after { + .sr-only(); + content: "Toggle AM/PM"; + } + + .btn[data-action="clear"]::after { + .sr-only(); + content: "Clear the picker"; + } + + .btn[data-action="today"]::after { + .sr-only(); + content: "Set the date to today"; + } + + .picker-switch { + text-align: center; + + &::after { + .sr-only(); + content: "Toggle Date and Time Screens"; + } + + td { + padding: 0; + margin: 0; + height: auto; + width: auto; + line-height: inherit; + + span { + line-height: 2.5; + height: 2.5em; + width: 100%; + } + } + } + + table { + width: 100%; + margin: 0; + + + & td, + & th { + text-align: center; + border-radius: @bs-datetimepicker-border-radius; + } + + & th { + height: 20px; + line-height: 20px; + width: 20px; + + &.picker-switch { + width: 145px; + } + + &.disabled, + &.disabled:hover { + background: none; + color: @bs-datetimepicker-disabled-color; + cursor: not-allowed; + } + + &.prev::after { + .sr-only(); + content: "Previous Month"; + } + + &.next::after { + .sr-only(); + content: "Next Month"; + } + } + + & thead tr:first-child th { + cursor: pointer; + + &:hover { + background: @bs-datetimepicker-btn-hover-bg; + } + } + + & td { + height: 54px; + line-height: 54px; + width: 54px; + + &.cw { + font-size: .8em; + height: 20px; + line-height: 20px; + color: @bs-datetimepicker-alternate-color; + } + + &.day { + height: 20px; + line-height: 20px; + width: 20px; + } + + &.day:hover, + &.hour:hover, + &.minute:hover, + &.second:hover { + background: @bs-datetimepicker-btn-hover-bg; + cursor: pointer; + } + + &.old, + &.new { + color: @bs-datetimepicker-alternate-color; + } + + &.today { + position: relative; + + &:before { + content: ''; + display: inline-block; + border: 0 0 7px 7px solid transparent; + border-bottom-color: @bs-datetimepicker-active-bg; + border-top-color: @bs-datetimepicker-secondary-border-color-rgba; + position: absolute; + bottom: 4px; + right: 4px; + } + } + + &.active, + &.active:hover { + background-color: @bs-datetimepicker-active-bg; + color: @bs-datetimepicker-active-color; + text-shadow: @bs-datetimepicker-text-shadow; + } + + &.active.today:before { + border-bottom-color: #fff; + } + + &.disabled, + &.disabled:hover { + background: none; + color: @bs-datetimepicker-disabled-color; + cursor: not-allowed; + } + + span { + display: inline-block; + width: 54px; + height: 54px; + line-height: 54px; + margin: 2px 1.5px; + cursor: pointer; + border-radius: @bs-datetimepicker-border-radius; + + &:hover { + background: @bs-datetimepicker-btn-hover-bg; + } + + &.active { + background-color: @bs-datetimepicker-active-bg; + color: @bs-datetimepicker-active-color; + text-shadow: @bs-datetimepicker-text-shadow; + } + + &.old { + color: @bs-datetimepicker-alternate-color; + } + + &.disabled, + &.disabled:hover { + background: none; + color: @bs-datetimepicker-disabled-color; + cursor: not-allowed; + } + } + } + } + + &.usetwentyfour { + td.hour { + height: 27px; + line-height: 27px; + } + } +} + +.input-group.date { + & .input-group-addon { + cursor: pointer; + } +} diff --git a/src/less/bootstrap-datetimepicker-build.less b/src/less/bootstrap-datetimepicker-build.less index 4a17370153..76dd98a653 100644 --- a/src/less/bootstrap-datetimepicker-build.less +++ b/src/less/bootstrap-datetimepicker-build.less @@ -1,5 +1,17 @@ -// Import boostrap variables including default color palette and fonts +// Import bootstrap variables including default color palette and fonts @import "../../node_modules/bootstrap/less/variables.less"; // Import datepicker component -@import "bootstrap-datetimepicker.less"; +@import "_bootstrap-datetimepicker.less"; + + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} diff --git a/src/less/bootstrap-datetimepicker.less b/src/less/bootstrap-datetimepicker.less deleted file mode 100755 index 14eb9da542..0000000000 --- a/src/less/bootstrap-datetimepicker.less +++ /dev/null @@ -1,294 +0,0 @@ -/*! - * Datetimepicker for Bootstrap v3 -//! version : 3.1.3 - * https://github.com/Eonasdan/bootstrap-datetimepicker/ - */ -.bootstrap-datetimepicker-widget { - top: 0; - left: 0; - width: 250px; - padding: 4px; - margin-top: 1px; - z-index: 99999 !important; - border-radius: @border-radius-base; - - &.timepicker-sbs { - width: 600px; - } - - &.bottom { - &:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-bottom-color: rgba(0,0,0,.2); - position: absolute; - top: -7px; - left: 7px; - } - - &:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid white; - position: absolute; - top: -6px; - left: 8px; - } - } - - &.top { - &:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-top: 7px solid #ccc; - border-top-color: rgba(0,0,0,.2); - position: absolute; - bottom: -7px; - left: 6px; - } - - &:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid white; - position: absolute; - bottom: -6px; - left: 7px; - } - } - - & .dow { - width: 14.2857%; - } - - &.pull-right { - &:before { - left: auto; - right: 6px; - } - - &:after { - left: auto; - right: 7px; - } - } - - >ul { - list-style-type: none; - margin: 0; - } - - a[data-action] { - padding: 6px 0; - } - - a[data-action]:active { - box-shadow: none; - } - - .timepicker-hour, .timepicker-minute, .timepicker-second { - width: 54px; - font-weight: bold; - font-size: 1.2em; - margin: 0; - } - - button[data-action] { - padding: 6px; - } - - table[data-hour-format="12"] .separator { - width: 4px; - padding: 0; - margin: 0; - } - - .datepicker > div { - display: none; - } - - .picker-switch { - text-align: center; - } - - table { - width: 100%; - margin: 0; - } - - td, - th { - text-align: center; - border-radius: @border-radius-base; - } - - td { - height: 54px; - line-height: 54px; - width: 54px; - - &.cw - { - font-size: 10px; - height: 20px; - line-height: 20px; - color: @gray-light; - } - - &.day - { - height: 20px; - line-height: 20px; - width: 20px; - } - - &.day:hover, - &.hour:hover, - &.minute:hover, - &.second:hover { - background: @gray-lighter; - cursor: pointer; - } - - &.old, - &.new { - color: @gray-light; - } - - &.today { - position: relative; - - &:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-bottom: 7px solid @btn-primary-bg; - border-top-color: rgba(0, 0, 0, 0.2); - position: absolute; - bottom: 4px; - right: 4px; - } - } - - &.active, - &.active:hover { - background-color: @btn-primary-bg; - color: @btn-primary-color; - text-shadow: 0 -1px 0 rgba(0,0,0,.25); - } - - &.active.today:before { - border-bottom-color: #fff; - } - - &.disabled, - &.disabled:hover { - background: none; - color: @gray-light; - cursor: not-allowed; - } - - span { - display: inline-block; - width: 54px; - height: 54px; - line-height: 54px; - margin: 2px 1.5px; - cursor: pointer; - border-radius: @border-radius-base; - - &:hover { - background: @gray-lighter; - } - - &.active { - background-color: @btn-primary-bg; - color: @btn-primary-color; - text-shadow: 0 -1px 0 rgba(0,0,0,.25); - } - - &.old { - color: @gray-light; - } - - &.disabled, - &.disabled:hover { - background: none; - color: @gray-light; - cursor: not-allowed; - } - } - } - - th { - height: 20px; - line-height: 20px; - width: 20px; - - &.picker-switch { - width: 145px; - } - - &.next, - &.prev { - font-size: @font-size-base * 1.5; - } - - &.disabled, - &.disabled:hover { - background: none; - color: @gray-light; - cursor: not-allowed; - } - } - - thead tr:first-child th { - cursor: pointer; - - &:hover { - background: @gray-lighter; - } - } -} - -.input-group { - &.date { - .input-group-addon span { - display: block; - cursor: pointer; - width: 16px; - height: 16px; - } - } -} - -.bootstrap-datetimepicker-widget.left-oriented { - &:before { - left: auto; - right: 6px; - } - - &:after { - left: auto; - right: 7px; - } -} - -.bootstrap-datetimepicker-widget ul.list-unstyled li div.timepicker div.timepicker-picker table.table-condensed tbody > tr > td { - padding: 0px !important; -} - -@media screen and (max-width: 767px) { - .bootstrap-datetimepicker-widget.timepicker-sbs { - width: 283px; - } -} diff --git a/src/nuget/Bootstrap.v3.Datetimepicker.CSS.nuspec b/src/nuget/Bootstrap.v3.Datetimepicker.CSS.nuspec index 4192e1eb79..8f2add7ef8 100644 --- a/src/nuget/Bootstrap.v3.Datetimepicker.CSS.nuspec +++ b/src/nuget/Bootstrap.v3.Datetimepicker.CSS.nuspec @@ -2,7 +2,7 @@ Bootstrap.v3.Datetimepicker.CSS - 3.1.2 + 4.0.0 Bootstrap 3 Datetimepicker CSS Eonasdan Eonasdan @@ -12,12 +12,12 @@ For usage, installation and demos see Project Site on GitHub -For CSS version install Bootstrap.v3.Datetimepicker.CSS +For LESS version install Bootstrap.v3.Datetimepicker Check the change log on Github at https://github.com/Eonasdan/bootstrap-datetimepicker/wiki/Change-Log bootstrap date time picker datetimepicker datepicker jquery - + diff --git a/src/nuget/Bootstrap.v3.Datetimepicker.nuspec b/src/nuget/Bootstrap.v3.Datetimepicker.nuspec index 267ec06a41..2cd9551a09 100644 --- a/src/nuget/Bootstrap.v3.Datetimepicker.nuspec +++ b/src/nuget/Bootstrap.v3.Datetimepicker.nuspec @@ -2,7 +2,7 @@ Bootstrap.v3.Datetimepicker - 3.1.2 + 4.0.0 Bootstrap 3 Datetimepicker Eonasdan Eonasdan @@ -17,13 +17,13 @@ For CSS version install Bootstrap.v3.Datetimepicker.CSS bootstrap date time picker datetimepicker datepicker jquery - + - + diff --git a/src/nuget/install.ps1 b/src/nuget/install.ps1 index b0443b27c8..e3220106e5 100644 --- a/src/nuget/install.ps1 +++ b/src/nuget/install.ps1 @@ -1,2 +1,2 @@ # install.ps1 -$DTE.ItemOperations.Navigate("https://github.com/Eonasdan/bootstrap-datetimepicker#change-log", $DTE.vsNavigateOptions.vsNavigateOptionsNewWindow) +$DTE.ItemOperations.Navigate("http://eonasdan.github.io/bootstrap-datetimepicker/", $DTE.vsNavigateOptions.vsNavigateOptionsNewWindow) diff --git a/test/publicApiSpec.js b/test/publicApiSpec.js new file mode 100644 index 0000000000..c9b7a50349 --- /dev/null +++ b/test/publicApiSpec.js @@ -0,0 +1,700 @@ +describe('Plugin initialization and component basic construction', function () { + 'use strict'; + + it('loads jquery plugin properly', function () { + expect($('
').datetimepicker).toBeDefined(); + expect(typeof $('
').datetimepicker).toEqual('function'); + expect($('
').datetimepicker.defaults).toBeDefined(); + }); + + it('creates the component with default options on an input element', function () { + var dtp = $(''); + $(document).find('body').append(dtp); + + expect(function () { + dtp = dtp.datetimepicker(); + }).not.toThrow(); + + expect(dtp).not.toBe(null); + }); + + xit('calls destroy when Element that the component is attached is removed', function () { + var dtpElement = $('
').attr('class', 'row').append($('
').attr('class', 'col-md-12').append($(''))), + dtp; + $(document).find('body').append(dtpElement); + dtpElement.datetimepicker(); + dtp = dtpElement.data('DateTimePicker'); + spyOn(dtp, 'destroy').and.callThrough(); + dtpElement.remove(); + expect(dtp.destroy).toHaveBeenCalled(); + }); +}); + +describe('Public API method tests', function () { + 'use strict'; + var dtp, + dtpElement, + dpChangeSpy, + dpShowSpy, + dpHideSpy, + dpErrorSpy; + + beforeEach(function () { + dpChangeSpy = jasmine.createSpy('dp.change event Spy'); + dpShowSpy = jasmine.createSpy('dp.show event Spy'); + dpHideSpy = jasmine.createSpy('dp.hide event Spy'); + dpErrorSpy = jasmine.createSpy('dp.error event Spy'); + dtpElement = $('').attr('id', 'dtp'); + + $(document).find('body').append($('
').attr('class', 'row').append($('
').attr('class', 'col-md-12').append(dtpElement))); + $(document).find('body').on('dp.change', dpChangeSpy); + $(document).find('body').on('dp.show', dpShowSpy); + $(document).find('body').on('dp.hide', dpHideSpy); + $(document).find('body').on('dp.error', dpErrorSpy); + + dtpElement.datetimepicker(); + dtp = dtpElement.data('DateTimePicker'); + }); + + afterEach(function () { + dtp.destroy(); + dtpElement.remove(); + }); + + describe('configuration option name match to public api function', function () { + Object.getOwnPropertyNames($.fn.datetimepicker.defaults).forEach(function (key) { + it('has function ' + key + '()', function () { + expect(dtp[key]).toBeDefined(); + }); + }); + }); + + describe('date() function', function () { + describe('typechecking', function () { + it('accepts a null', function () { + expect(function () { + dtp.date(null); + }).not.toThrow(); + }); + + it('accepts a string', function () { + expect(function () { + dtp.date('2013/05/24'); + }).not.toThrow(); + }); + + it('accepts a Date object', function () { + expect(function () { + dtp.date(new Date()); + }).not.toThrow(); + }); + + it('accepts a Moment object', function () { + expect(function () { + dtp.date(moment()); + }).not.toThrow(); + }); + + it('does not accept undefined', function () { + expect(function () { + dtp.date(undefined); + }).toThrow(); + }); + + it('does not accept a number', function () { + expect(function () { + dtp.date(0); + }).toThrow(); + }); + + it('does not accept a generic Object', function () { + expect(function () { + dtp.date({}); + }).toThrow(); + }); + + it('does not accept a boolean', function () { + expect(function () { + dtp.date(false); + }).toThrow(); + }); + }); + + describe('functionality', function () { + it('has no date set upon construction', function () { + expect(dtp.date()).toBe(null); + }); + + it('sets the date correctly', function () { + var timestamp = moment(); + dtp.date(timestamp); + expect(dtp.date().isSame(timestamp)).toBe(true); + }); + }); + }); + + describe('format() function', function () { + describe('typechecking', function () { + it('accepts a false value', function () { + expect(function () { + dtp.format(false); + }).not.toThrow(); + }); + + it('accepts a string', function () { + expect(function () { + dtp.format('YYYY-MM-DD'); + }).not.toThrow(); + }); + + it('does not accept undefined', function () { + expect(function () { + dtp.format(undefined); + }).toThrow(); + }); + + it('does not accept true', function () { + expect(function () { + dtp.format(true); + }).toThrow(); + }); + + it('does not accept a generic Object', function () { + expect(function () { + dtp.format({}); + }).toThrow(); + }); + }); + + describe('functionality', function () { + it('returns no format before format is set', function () { + expect(dtp.format()).toBe(false); + }); + + it('sets the format correctly', function () { + dtp.format('YYYY-MM-DD'); + expect(dtp.format()).toBe('YYYY-MM-DD'); + }); + }); + }); + + describe('destroy() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.destroy).toBeDefined(); + }); + }); + }); + + describe('toggle() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.toggle).toBeDefined(); + }); + }); + + // describe('functionality', function () { + // it('') + // }); + }); + + describe('show() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.show).toBeDefined(); + }); + }); + + describe('functionality', function () { + it('emits a show event when called while widget is hidden', function () { + dtp.show(); + expect(dpShowSpy).toHaveBeenCalled(); + }); + + it('does not emit a show event when called and widget is already showing', function () { + dtp.hide(); + dtp.show(); + dpShowSpy.calls.reset(); + dtp.show(); + expect(dpShowSpy).not.toHaveBeenCalled(); + }); + + it('actually shows the widget', function () { + dtp.show(); + expect($(document).find('body').find('.bootstrap-datetimepicker-widget').length).toEqual(1); + }); + }); + }); + + describe('hide() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.hide).toBeDefined(); + }); + }); + + describe('functionality', function () { + it('emits a hide event when called while widget is shown', function () { + dtp.show(); + dtp.hide(); + expect(dpHideSpy).toHaveBeenCalled(); + }); + + it('does not emit a hide event when called while widget is hidden', function () { + dtp.hide(); + expect(dpHideSpy).not.toHaveBeenCalled(); + }); + + it('actually hides the widget', function () { + dtp.show(); + dtp.hide(); + expect($(document).find('body').find('.bootstrap-datetimepicker-widget').length).toEqual(0); + }); + }); + }); + + describe('disable() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.disable).toBeDefined(); + }); + }); + }); + + describe('enable() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.enable).toBeDefined(); + }); + }); + }); + + describe('options() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.options).toBeDefined(); + }); + }); + }); + + describe('disabledDates() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.disabledDates).toBeDefined(); + }); + }); + }); + + describe('enabledDates() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.enabledDates).toBeDefined(); + }); + }); + }); + + describe('daysOfWeekDisabled() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.daysOfWeekDisabled).toBeDefined(); + }); + }); + }); + + describe('maxDate() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.maxDate).toBeDefined(); + }); + }); + }); + + describe('minDate() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.minDate).toBeDefined(); + }); + }); + }); + + describe('defaultDate() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.defaultDate).toBeDefined(); + }); + }); + describe('functionality', function () { + it('returns no defaultDate before defaultDate is set', function () { + expect(dtp.defaultDate()).toBe(false); + }); + + it('sets the defaultDate correctly', function () { + var timestamp = moment(); + dtp.defaultDate(timestamp); + expect(dtp.defaultDate().isSame(timestamp)).toBe(true); + expect(dtp.date().isSame(timestamp)).toBe(true); + }); + + it('triggers a change event upon setting a default date and input field is empty', function () { + dtp.date(null); + dtp.defaultDate(moment()); + expect(dpChangeSpy).toHaveBeenCalled(); + }); + + it('does not override input value if it already has one', function () { + var timestamp = moment(); + dtp.date(timestamp); + dtp.defaultDate(moment().year(2000)); + expect(dtp.date().isSame(timestamp)).toBe(true); + }); + }); + }); + + describe('locale() function', function () { + describe('functionality', function () { + it('it has the same locale as the global moment locale with default options', function () { + expect(dtp.locale()).toBe(moment.locale()); + }); + + it('it switches to a selected locale without affecting global moment locale', function () { + dtp.locale('el'); + dtp.date(moment()); + expect(dtp.locale()).toBe('el'); + expect(dtp.date().locale()).toBe('el'); + expect(moment.locale()).toBe('en'); + }); + }); + }); + + describe('useCurrent() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.useCurrent).toBeDefined(); + }); + }); + describe('check type and parameter validity', function () { + it('accepts either a boolean value or string', function () { + var useCurrentOptions = ['year', 'month', 'day', 'hour', 'minute']; + + expect(function () { + dtp.useCurrent(false); + }).not.toThrow(); + expect(function () { + dtp.useCurrent(true); + }).not.toThrow(); + + useCurrentOptions.forEach(function (value) { + expect(function () { + dtp.useCurrent(value); + }).not.toThrow(); + }); + + expect(function () { + dtp.useCurrent('test'); + }).toThrow(); + expect(function () { + dtp.useCurrent({}); + }).toThrow(); + }); + }); + describe('functionality', function () { + it('triggers a change event upon show() and input field is empty', function () { + dtp.useCurrent(true); + dtp.show(); + expect(dpChangeSpy).toHaveBeenCalled(); + }); + }); + }); + + describe('ignoreReadonly() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.ignoreReadonly).toBeDefined(); + }); + }); + }); + + describe('stepping() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.stepping).toBeDefined(); + }); + }); + }); + + describe('collapse() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.collapse).toBeDefined(); + }); + }); + }); + + describe('icons() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.icons).toBeDefined(); + }); + }); + }); + + describe('useStrict() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.useStrict).toBeDefined(); + }); + }); + }); + + describe('sideBySide() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.sideBySide).toBeDefined(); + }); + }); + }); + + describe('viewMode() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.viewMode).toBeDefined(); + }); + }); + }); + + describe('widgetPositioning() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.widgetPositioning).toBeDefined(); + }); + }); + }); + + describe('calendarWeeks() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.calendarWeeks).toBeDefined(); + }); + }); + }); + + describe('showTodayButton() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.showTodayButton).toBeDefined(); + }); + }); + }); + + describe('showClear() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.showClear).toBeDefined(); + }); + }); + }); + + describe('dayViewHeaderFormat() function', function () { + describe('typechecking', function () { + it('does not accept a false value', function () { + expect(function () { + dtp.dayViewHeaderFormat(false); + }).toThrow(); + }); + + it('accepts a string', function () { + expect(function () { + dtp.dayViewHeaderFormat('YYYY-MM-DD'); + }).not.toThrow(); + }); + + it('does not accept undefined', function () { + expect(function () { + dtp.dayViewHeaderFormat(undefined); + }).toThrow(); + }); + + it('does not accept true', function () { + expect(function () { + dtp.dayViewHeaderFormat(true); + }).toThrow(); + }); + + it('does not accept a generic Object', function () { + expect(function () { + dtp.dayViewHeaderFormat({}); + }).toThrow(); + }); + }); + + describe('functionality', function () { + it('expects dayViewHeaderFormat to be default of MMMM YYYY', function () { + expect(dtp.dayViewHeaderFormat()).toBe('MMMM YYYY'); + }); + + it('sets the dayViewHeaderFormat correctly', function () { + dtp.dayViewHeaderFormat('MM YY'); + expect(dtp.dayViewHeaderFormat()).toBe('MM YY'); + }); + }); + }); + + describe('extraFormats() function', function () { + describe('typechecking', function () { + it('accepts a false value', function () { + expect(function () { + dtp.extraFormats(false); + }).not.toThrow(); + }); + + it('does not accept a string', function () { + expect(function () { + dtp.extraFormats('YYYY-MM-DD'); + }).toThrow(); + }); + + it('does not accept undefined', function () { + expect(function () { + dtp.extraFormats(undefined); + }).toThrow(); + }); + + it('does not accept true', function () { + expect(function () { + dtp.extraFormats(true); + }).toThrow(); + }); + + it('accepts an Array', function () { + expect(function () { + dtp.extraFormats(['YYYY-MM-DD']); + }).not.toThrow(); + }); + }); + + describe('functionality', function () { + it('returns no extraFormats before extraFormats is set', function () { + expect(dtp.extraFormats()).toBe(false); + }); + + it('sets the extraFormats correctly', function () { + dtp.extraFormats(['YYYY-MM-DD']); + expect(dtp.extraFormats()[0]).toBe('YYYY-MM-DD'); + }); + }); + }); + + describe('toolbarPlacement() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.toolbarPlacement).toBeDefined(); + }); + }); + describe('check type and parameter validity', function () { + it('does not accept a false value', function () { + expect(function () { + dtp.dayViewHeaderFormat(false); + }).toThrow(); + }); + it('does not accept a false value', function () { + expect(function () { + dtp.dayViewHeaderFormat(false); + }).toThrow(); + }); + it('accepts a string', function () { + var toolbarPlacementOptions = ['default', 'top', 'bottom']; + + toolbarPlacementOptions.forEach(function (value) { + expect(function () { + dtp.toolbarPlacement(value); + }).not.toThrow(); + }); + + expect(function () { + dtp.toolbarPlacement('test'); + }).toThrow(); + expect(function () { + dtp.toolbarPlacement({}); + }).toThrow(); + }); + }); + }); + + describe('widgetParent() function', function () { + describe('typechecking', function () { + it('accepts a null', function () { + expect(function () { + dtp.widgetParent(null); + }).not.toThrow(); + }); + + it('accepts a string', function () { + expect(function () { + dtp.widgetParent('testDiv'); + }).not.toThrow(); + }); + + it('accepts a jquery object', function () { + expect(function () { + dtp.widgetParent($('#testDiv')); + }).not.toThrow(); + }); + + it('does not accept undefined', function () { + expect(function () { + dtp.widgetParent(undefined); + }).toThrow(); + }); + + it('does not accept a number', function () { + expect(function () { + dtp.widgetParent(0); + }).toThrow(); + }); + + it('does not accept a generic Object', function () { + expect(function () { + dtp.widgetParent({}); + }).toThrow(); + }); + + it('does not accept a boolean', function () { + expect(function () { + dtp.widgetParent(false); + }).toThrow(); + }); + }); + }); + + describe('keepOpen() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.keepOpen).toBeDefined(); + }); + }); + }); + + describe('inline() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.inline).toBeDefined(); + }); + }); + }); + + describe('clear() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.clear).toBeDefined(); + }); + }); + }); + + describe('keyBinds() function', function () { + describe('existence', function () { + it('is defined', function () { + expect(dtp.keyBinds).toBeDefined(); + }); + }); + }); +}); From 18b4dcb136113132220f5006d9d1bbfc723a8097 Mon Sep 17 00:00:00 2001 From: laf Date: Mon, 13 Apr 2015 17:48:49 +0100 Subject: [PATCH 06/59] More work on maintenance --- html/forms/schedule-maintenance.inc.php | 15 +++++++ html/pages/alert-schedule.inc.php | 56 +++++++++++++++++++++---- html/pages/graphs.inc.php | 4 +- 3 files changed, 66 insertions(+), 9 deletions(-) create mode 100644 html/forms/schedule-maintenance.inc.php diff --git a/html/forms/schedule-maintenance.inc.php b/html/forms/schedule-maintenance.inc.php new file mode 100644 index 0000000000..b3be48c0ff --- /dev/null +++ b/html/forms/schedule-maintenance.inc.php @@ -0,0 +1,15 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + + diff --git a/html/pages/alert-schedule.inc.php b/html/pages/alert-schedule.inc.php index 5c54d8bc1d..b9c62c8099 100644 --- a/html/pages/alert-schedule.inc.php +++ b/html/pages/alert-schedule.inc.php @@ -13,6 +13,7 @@ */ $pagetitle[] = "Alert Schedule"; +$no_refresh = TRUE; ?> @@ -34,19 +35,35 @@ $pagetitle[] = "Alert Schedule";
- - -
-
-
+ +
-
+
+
+ +
@@ -61,6 +78,11 @@ $pagetitle[] = "Alert Schedule";
+
+
+ +
+
@@ -98,7 +120,27 @@ var grid = $("#alert-schedule").bootgrid({ $('#sched-submit').click('', function(e) { e.preventDefault(); - alert($('form.schedule-maintenance-form').serialize()); + var device = $("#device").val(); + var start = $("#start").val(); + var end = $("#end").val(); + $.ajax({ + type: "POST", + url: "/ajax_form.php", + data: { type: "schedule-maintenance", subtype: "add", device: device, start: start, end: end }, + dataType: "json", + success: function(data){ + if(data.status == 'ok') { + $("#message").html('
'+data.message+'
'); + $("#schedule-maintenance").modal('hide'); + } else { + $("#response").html('
'+data.message+'
'); + } + }, + error: function(){ + $("#response").html('
An error occurred.
'); + } + }); + }); $(function () { diff --git a/html/pages/graphs.inc.php b/html/pages/graphs.inc.php index 960733cdda..2996766c7e 100644 --- a/html/pages/graphs.inc.php +++ b/html/pages/graphs.inc.php @@ -156,8 +156,8 @@ if (!$auth) From a15180333aa68505ebbd736b9b509ae8381af028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Rosiak?= Date: Mon, 13 Apr 2015 23:11:27 +0200 Subject: [PATCH 07/59] Minor APC Polling Changes - Add InRow Serial ID - Convert from OID to MIB names --- includes/polling/os/apc.inc.php | 46 +++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/includes/polling/os/apc.inc.php b/includes/polling/os/apc.inc.php index 814860f4a3..b64751d3d6 100755 --- a/includes/polling/os/apc.inc.php +++ b/includes/polling/os/apc.inc.php @@ -1,58 +1,64 @@ Date: Mon, 13 Apr 2015 23:29:04 +0200 Subject: [PATCH 08/59] APC InfraStruxure Detection - Just basic s/n & hw detection --- includes/polling/os/apc.inc.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/includes/polling/os/apc.inc.php b/includes/polling/os/apc.inc.php index b64751d3d6..001f536d0d 100755 --- a/includes/polling/os/apc.inc.php +++ b/includes/polling/os/apc.inc.php @@ -27,6 +27,12 @@ if ($serial == "") $serial = trim(snmp_get($device, "PowerNet-MIB::airIRRCUnitIdentSerialNumber.0", "-OQv", "", ""),'"'); } +if ($serial == "") +{ + # InfraStruxure + $serial = trim(snmp_get($device, "PowerNet-MIB::isxModularPduIdentSerialNumber.0", "-OQv", "", ""),'"'); +} + ///////////////////// # PDU @@ -61,6 +67,13 @@ if ($hardware == " ") $hardware .= ' ' . trim(snmp_get($device, "PowerNet-MIB::airIRRCUnitIdentHardwareRevision.0", "-OQv", "", ""),'"'); } +if ($hardware == " ") +{ + # InfraStruxure + $hardware = trim(snmp_get($device, "PowerNet-MIB::isxModularPduIdentModelNumber.0", "-OQv", "", ""),'"'); + $hardware .= ' ' . trim(snmp_get($device, "PowerNet-MIB::isxModularPduIdentMonitorCardHardwareRev.0", "-OQv", "", ""),'"'); +} + ///////////////////// $AOSrev = trim(snmp_get($device, "1.3.6.1.4.1.318.1.4.2.4.1.4.1", "-OQv", "", ""),'"'); @@ -88,6 +101,12 @@ if ($AOSrev == '') # InRow chiller $version = trim(snmp_get($device, "PowerNet-MIB::airIRRCUnitIdentFirmwareRevision.0", "-OQv", "", ""),'"'); } + + if ($version == "") + { + # InfraStruxure + $version = trim(snmp_get($device, "PowerNet-MIB::isxModularPduIdentMonitorCardFirmwareAppRev.0", "-OQv", "", ""),'"'); + } } else { From 226ddb51eaab81cac8745ec5e28ec9533f7d3525 Mon Sep 17 00:00:00 2001 From: Paul Gear Date: Tue, 14 Apr 2015 19:55:22 +1000 Subject: [PATCH 09/59] Allow matching HP switches like "HP A5120-24G SI Switch Software Version 5.20" --- includes/discovery/os/comware.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/discovery/os/comware.inc.php b/includes/discovery/os/comware.inc.php index 94f0f7f15e..f5c632b8db 100644 --- a/includes/discovery/os/comware.inc.php +++ b/includes/discovery/os/comware.inc.php @@ -3,7 +3,7 @@ if (!$os) { if (strstr($sysDescr, "Comware")) { $os = "comware"; } - else if(preg_match('/HP [a-zA-Z0-9-]+ Switch Software Version/',$sysDescr)) { $os = "comware"; } + else if(preg_match('/HP [a-zA-Z0-9- ]+ Switch Software Version/',$sysDescr)) { $os = "comware"; } } ?> From 0690857d1573fe3bd2433c0200dfc9df5063d227 Mon Sep 17 00:00:00 2001 From: laf Date: Wed, 15 Apr 2015 01:05:24 +0100 Subject: [PATCH 10/59] Added gentle nudge to enable stats --- doc/Installation/Installation-(Debian-Ubuntu).md | 2 ++ doc/Installation/Installation-(RHEL-CentOS).md | 2 ++ doc/Installation/Installation-Lighttpd-(Debian-Ubuntu).md | 2 ++ 3 files changed, 6 insertions(+) diff --git a/doc/Installation/Installation-(Debian-Ubuntu).md b/doc/Installation/Installation-(Debian-Ubuntu).md index 4df0bfee4c..e7a56447ce 100644 --- a/doc/Installation/Installation-(Debian-Ubuntu).md +++ b/doc/Installation/Installation-(Debian-Ubuntu).md @@ -182,6 +182,8 @@ so that it looks like this: That's it! You now should be able to log in to http://librenms.example.com/. Please note that we have not covered HTTPS setup in this example, so your LibreNMS install is not secure by default. Please do not expose it to the public Internet unless you have configured HTTPS and taken appropriate web server hardening steps. +It would be great if you would consider opting into the stats system we have, please see [this page](http://docs.librenms.org/General/Callback-Stats-and-Privacy/) on what it is and how to enable it. + [1]: https://github.com/Atrato/observium-poller-wrapper [2]: http://git-scm.com/book [3]: http://gitready.com/ diff --git a/doc/Installation/Installation-(RHEL-CentOS).md b/doc/Installation/Installation-(RHEL-CentOS).md index e8a17014d4..e7b3d4998a 100644 --- a/doc/Installation/Installation-(RHEL-CentOS).md +++ b/doc/Installation/Installation-(RHEL-CentOS).md @@ -216,3 +216,5 @@ so that it looks like this: ### Install complete ### That's it! You now should be able to log in to http://librenms.example.com/. Please note that we have not covered HTTPS setup in this example, so your LibreNMS install is not secure by default. Please do not expose it to the public Internet unless you have configured HTTPS and taken appropriate web server hardening steps. + +It would be great if you would consider opting into the stats system we have, please see [this page](http://docs.librenms.org/General/Callback-Stats-and-Privacy/) on what it is and how to enable it. diff --git a/doc/Installation/Installation-Lighttpd-(Debian-Ubuntu).md b/doc/Installation/Installation-Lighttpd-(Debian-Ubuntu).md index 1966542830..3d95a539aa 100644 --- a/doc/Installation/Installation-Lighttpd-(Debian-Ubuntu).md +++ b/doc/Installation/Installation-Lighttpd-(Debian-Ubuntu).md @@ -158,3 +158,5 @@ so that it looks like this: ### Install complete ### That's it! You now should be able to log in to http://librenms.example.com/. Please note that we have not covered HTTPS setup in this example, so your LibreNMS install is not secure by default. Please do not expose it to the public Internet unless you have configured HTTPS and taken appropriate web server hardening steps. + +It would be great if you would consider opting into the stats system we have, please see [this page](http://docs.librenms.org/General/Callback-Stats-and-Privacy/) on what it is and how to enable it. From 7ef8e1f856429b36fa0f854f567107be57931fa3 Mon Sep 17 00:00:00 2001 From: laf Date: Wed, 15 Apr 2015 00:59:24 +0100 Subject: [PATCH 11/59] Updated Cisco mibs and added another regex for different cisco products --- includes/polling/os/cisco.inc.php | 6 +-- mibs/CISCO-PRODUCTS-MIB | 82 +++++++++++++++++++++++++++---- mibs/OLD-CISCO-CHASSIS-MIB-V1SMI | 50 +++++++++++++++++-- 3 files changed, 123 insertions(+), 15 deletions(-) diff --git a/includes/polling/os/cisco.inc.php b/includes/polling/os/cisco.inc.php index 82b444fdaa..bed288e036 100644 --- a/includes/polling/os/cisco.inc.php +++ b/includes/polling/os/cisco.inc.php @@ -5,10 +5,10 @@ if (preg_match('/^Cisco IOS Software, .+? Software \([^\-]+-([\w\d]+)-\w\), Vers $features = $regexp_result[1]; $version = $regexp_result[2]; } -elseif( false ) +elseif (preg_match('/^Cisco IOS Software, .+? Software([\,\w\d]*) \([^\-]+-([\w\d]+)-\w\), Version ([^,]+)/', $poll_device['sysDescr'], $regexp_result)) { - # Placeholder - # Other regexp for other type of string + $features = $regexp_result[2]; + $version = $regexp_result[3]; } echo("\n".$poll_device['sysDescr']."\n"); diff --git a/mibs/CISCO-PRODUCTS-MIB b/mibs/CISCO-PRODUCTS-MIB index 96c802eaf8..9b263cd96b 100644 --- a/mibs/CISCO-PRODUCTS-MIB +++ b/mibs/CISCO-PRODUCTS-MIB @@ -3,7 +3,7 @@ -- -- January 1995, Jeffrey T. Johnson -- --- Copyright (c) 1995-2014 by cisco Systems, Inc. +-- Copyright (c) 1995-2015 by cisco Systems, Inc. -- All rights reserved. -- -- ***************************************************************** @@ -18,7 +18,7 @@ IMPORTS FROM CISCO-SMI; ciscoProductsMIB MODULE-IDENTITY - LAST-UPDATED "201411060000Z" + LAST-UPDATED "201503260000Z" ORGANIZATION "Cisco Systems, Inc." CONTACT-INFO " Cisco Systems @@ -35,7 +35,7 @@ ciscoProductsMIB MODULE-IDENTITY "This module defines the object identifiers that are assigned to various hardware platforms, and hence are returned as values for sysObjectID" - REVISION "201305280000Z" + REVISION "201503250000Z" DESCRIPTION "Added following OIDs: ciscoMPX, ciscoNMCUEEC, ciscoWLSE1132, @@ -1551,7 +1551,7 @@ ciscoNam2320 OBJECT IDENTIFIER ::= { ciscoProducts 1528 } -- ciscoNam3 OBJECT IDENTIFIER ::= { ciscoProducts 1529 } -- Cisco NAM-3 for Catalyst 6500 cisco819HG4GAK9 OBJECT IDENTIFIER ::= { ciscoProducts 1530 } -- C819HG-4G-A-K9 Hardened Router with 1 Gigabit Ethernet WAN, 4 Fast Ethernet LAN, 1 AT&T LTE modem, 1 Serial, 1 Console/Aux ports, 256MB flash memory, 512MB DRAM ciscoECDS50IVB OBJECT IDENTIFIER ::= { ciscoProducts 1536 } -- Cisco Enterprise Content Delivery System Model MDE50IVB -ciscoVSR1000 OBJECT IDENTIFIER ::= { ciscoProducts 1537 } -- Cisco Virtual Services Router 1000 +ciscoCSR1000v OBJECT IDENTIFIER ::= { ciscoProducts 1537 } -- Cisco Cloud Services Router 1000v ciscoASR5000 OBJECT IDENTIFIER ::= { ciscoProducts 1538 } -- Cisco Systems ASR5000 Intelligent Mobile Gateway ciscoflowAgent3000 OBJECT IDENTIFIER ::= { ciscoProducts 1539 } -- Cisco Integrated NetFlow Generation Agent ciscoTelePresenceMCU5310 OBJECT IDENTIFIER ::= { ciscoProducts 1540 } -- Cisco TelePresence MCU 5310 @@ -1640,6 +1640,7 @@ ciscoAIRAP3602 OBJECT IDENTIFIER ::= { ciscoProducts 1661 } -- ciscoAIRAP3601 OBJECT IDENTIFIER ::= { ciscoProducts 1662 } -- Cisco Aironet 3600 Series WLAN Access Point with one 10/100/1000TX port and single IEEE 802.11n radio port ciscoAIRAP1552 OBJECT IDENTIFIER ::= { ciscoProducts 1664 } -- Cisco Aironet 1550 Series Outdoor Mesh Access Points with dual radio ciscoAIRAP1553 OBJECT IDENTIFIER ::= { ciscoProducts 1665 } -- Cisco Aironet 1550 Series outdoor Mesh Access Points with three radio ports +ciscoNgsm3k16gepoeplus OBJECT IDENTIFIER ::= { ciscoProducts 1666 } -- EtherSwitch Next Generation Service Module Layer3 + PoEPlus + 16 10/100/1000 ciscoNexus1010X OBJECT IDENTIFIER ::= { ciscoProducts 1667 } -- Large Virtual service Appliance ciscoNexus1110S OBJECT IDENTIFIER ::= { ciscoProducts 1668 } -- Gen-2 Base Virtual service Appliance ciscoNexus1110X OBJECT IDENTIFIER ::= { ciscoProducts 1669 } -- Gen-2 Large Virtual service Appliance @@ -1649,6 +1650,8 @@ cisco866VAEWEK9 OBJECT IDENTIFIER ::= { ciscoProducts 1675 } -- cisco867VAEWAK9 OBJECT IDENTIFIER ::= { ciscoProducts 1676 } -- CISCO867VAE-W-A-K9 with 2 GE switch ports, 3 FE switch ports, 1 GE WAN port, 1 multi-mode VDSL2/ ADSL2/ADSL2+ Annex A WAN port, and FCC compliant Wireless LAN cisco867VAEWEK9 OBJECT IDENTIFIER ::= { ciscoProducts 1677 } -- CISCO867VAE-W-E-K9 with 2 GE switch ports, 3 FE switch ports, 1 GE WAN port, 1 multi-mode VDSL2/ ADSL2/ADSL2+ Annex A WAN port, and ETSI compliant Wireless LAN cisco867VAEPOEWAK9 OBJECT IDENTIFIER ::= { ciscoProducts 1678 } -- CISCO867VAE-POE-W-A-K9 with 2 GE switch ports, 3 FE switch ports with one port POE, 1 GE WAN port, 1 multi-mode VDSL2/ADSL2/ADSL2+ Annex A WAN port, and FCC compliant Wireless LAN +ciscoSmES3x24P OBJECT IDENTIFIER ::= { ciscoProducts 1679 } -- EtherSwitch Service Module Layer3 24 Gigabit Ethernet port,POE+, MACSec PHY +ciscoSmDES3x48P OBJECT IDENTIFIER ::= { ciscoProducts 1680 } -- EtherSwitch Double Wide Service Module Layer3 48 Gigabit Ethernet port, 2 SFP port, POE+, MACSec PHY ciscoOeKWaas OBJECT IDENTIFIER ::= { ciscoProducts 1681 } -- Wide Area Application Engine Virtualized Wide Area Application Services instance running on the KVM hypervisor container (KWAAS) ciscoUcsC220 OBJECT IDENTIFIER ::= { ciscoProducts 1682 } -- This one-rack unit (1RU) server offers superior performance and density over a wide range of business workloads, from web serving to distributed database ciscoUcsC240 OBJECT IDENTIFIER ::= { ciscoProducts 1683 } -- This 2RU server is designed for both performance and expandability over a wide range of storage-intensive infrastructure workloads, from big data to collaboration @@ -1656,6 +1659,7 @@ ciscoUcsC22 OBJECT IDENTIFIER ::= { ciscoProducts 1684 } -- ciscoUcsC24 OBJECT IDENTIFIER ::= { ciscoProducts 1685 } -- This 2RU, 2-socket rack server is designed for both outstanding economics and internal expandability over a range of storage-intensive infrastructure workloads, from IT and web infrastructure to big data ciscoCDScde2202s4 OBJECT IDENTIFIER ::= { ciscoProducts 1686 } -- Cisco Content Delivery System Model CDE-220-2S4 ciscoCDScde4604r1 OBJECT IDENTIFIER ::= { ciscoProducts 1687 } -- Cisco Content Delivery System Model CDE-460-4R1 +ciscoASR1002XC OBJECT IDENTIFIER ::= { ciscoProducts 1688 } -- Cisco Aggregation Services Router 1000 Series, ASR1002-XC Chassis catWsC2960x48fpdL OBJECT IDENTIFIER ::= { ciscoProducts 1690 } -- Catalyst 2960X 48 Gig Downlinks, 2 SFP+ uplink, 2 x 10G stacking module, POE+ support for 740W catWsC2960x48lpdL OBJECT IDENTIFIER ::= { ciscoProducts 1691 } -- Catalyst 2960X 48 Gig Downlinks, 2 SFP+ uplink, 2 x 10G stacking module, POE+ support for 370W catWsC2960x48tdL OBJECT IDENTIFIER ::= { ciscoProducts 1692 } -- Catalyst 2960X 48 Gig Downlinks, 2 SFP+ uplink, 2 x 10G stacking module @@ -1733,13 +1737,13 @@ ciscoWsC2960XR48LpsI OBJECT IDENTIFIER ::= { ciscoProducts 1803 } -- ciscoWsC2960XR48TsI OBJECT IDENTIFIER ::= { ciscoProducts 1804 } -- Catalyst 2960XR 48 Gig Downlinks and 4 SFP uplinks IP Lite Stackable ciscoWsC2960XR24PsI OBJECT IDENTIFIER ::= { ciscoProducts 1805 } -- Catalyst 2960XR 24 Gig Downlinks and 4 SFP uplinks IP Lite Stackable with POE support for 370W ciscoWsC2960XR24TsI OBJECT IDENTIFIER ::= { ciscoProducts 1806 } -- Catalyst 2960XR 24 Gig Downlinks and 4 SFP uplinks IP Lite Stackable +ciscoUCSC460M4Rackserver OBJECT IDENTIFIER ::= { ciscoProducts 1817 } -- 4-Socket 4-RU Cisco UCS Rack Server ciscoA901S4SGFD OBJECT IDENTIFIER ::= { ciscoProducts 1818 } -- Agora platform - 4 external Ports (4 SFP) + 1 Gland Interface, DC PSU ciscoA901S3SGFD OBJECT IDENTIFIER ::= { ciscoProducts 1819 } -- Agora platform - 3 external Ports (3 SFP+1Cu) + 1 Gland Interface, DC PSU ciscoA901S2SGFD OBJECT IDENTIFIER ::= { ciscoProducts 1820 } -- Agora platform - 3 external Ports (2 SFP+2Cu) + 1 Gland Interface, DC PSU ciscoA901S3SGFAH OBJECT IDENTIFIER ::= { ciscoProducts 1821 } -- Agora platform - AC, 3 External Ports (3SFP) + 1 Gland Interface, AC PSU, 1sec holdover for 1 PoE+ ciscoA901S2SGFAH OBJECT IDENTIFIER ::= { ciscoProducts 1822 } -- Agora platform - AC, 3 External Ports (2 SFP+1 Cu) + 1 Gland Interface, AC PSU, 1sec holdover for 1 PoE+ ciscoIE2000U4STSG OBJECT IDENTIFIER ::= { ciscoProducts 1839 } -- Cisco Industrial Ethernet 2000U Switch, 4 10/100 SFP + 2 1000 SFP -ciscoIE2000U16TCGP OBJECT IDENTIFIER ::= { ciscoProducts 1840 } -- Cisco Industrial Ethernet 2000U Switch, 16 10/100 T (4 PoE) + 2 1000 T/SFP until Jun 2013, contact kavenkat ciscoIE20008T67B OBJECT IDENTIFIER ::= { ciscoProducts 1841 } -- Cisco IE2000 IP67 Variant Switch with 8 port 10/100 downlink, LAN Base Image ciscoIE200016T67B OBJECT IDENTIFIER ::= { ciscoProducts 1842 } -- Cisco IE2000 IP67 Variant Switch with 16 port 10/100 downlink, LAN Base Image ciscoIE200024T67B OBJECT IDENTIFIER ::= { ciscoProducts 1843 } -- Cisco IE2000 IP67 Variant Switch with 24 port 10/100 downlink, LAN Base Image @@ -1760,6 +1764,7 @@ ciscoC888K9 OBJECT IDENTIFIER ::= { ciscoProducts 1857 } -- ciscoC891FK9 OBJECT IDENTIFIER ::= { ciscoProducts 1858 } -- C891F-K9 router with 1 Giga Ethernet Primary WAN, 1 SFP (Small Form-factor Pluggable) Giga Ethernet Primary WAN, 1 Fast Ethernet WAN, 1 V.92, 1 ISDN BRI S/T interface, 8 Giga Ethernet LAN, 4 PoE Optional, 1 USB 2.0 port, 1 Console/Aux port, 256MB flash memory and 1GB DRAM ciscoC891FwAK9 OBJECT IDENTIFIER ::= { ciscoProducts 1859 } -- C891FW-A-K9 router with 1 Giga Ethernet Primary WAN, 1 SFP (Small Form-factor Pluggable) Giga Ethernet Primary WAN, 1 Fast Ethernet WAN, 1 V.92, 1 ISDN BRI S/T interface, 1 Dual 2.4/5GHz with FCC compliant Wireless LAN, 8 Giga Ethernet LAN, 4 PoE Optional, 1 USB 2.0 port, 1 Console/Aux port, 256MB flash memory and 1GB DRAM ciscoC891FwEK9 OBJECT IDENTIFIER ::= { ciscoProducts 1860 } -- C891FW-E-K9 router with 1 Giga Ethernet Primary WAN, 1 SFP (Small Form-factor Pluggable) Giga Ethernet Primary WAN, 1 Fast Ethernet WAN, 1 V.92, 1 ISDN BRI S/T interface, 1 Dual 2.4/5GHz with EU or ETSI compliant Wireless LAN, 8 Giga Ethernet LAN, 4 PoE Optional, 1 USB 2.0 port, 1 Console/Aux port, 256MB flash memory and 1GB DRAM +ciscoASR1001X OBJECT IDENTIFIER ::= { ciscoProducts 1861 } -- Cisco Aggregation Services Router 1000 Series, ASR1001-X Chassis cisco1783WAP5100xK9 OBJECT IDENTIFIER ::= { ciscoProducts 1862 } -- Cisco Rockwell Industrial Automation Wireless AP 5100, one 10/100/1000 BASE-T, Dual-band autonomous 802.11a/g/n ciscoCDScde2502s5 OBJECT IDENTIFIER ::= { ciscoProducts 1863 } -- Cisco Content Delivery System Model CDE-250-2S5 ciscoUcsE140S OBJECT IDENTIFIER ::= { ciscoProducts 1864 } -- UCS E-Series Server 4-Core Ivy Bridge Single wide Service module (UCS-E140S-M2/K9) @@ -1771,6 +1776,7 @@ ciscoIE2000U4TSG OBJECT IDENTIFIER ::= { ciscoProducts 1869 } -- ciscoIE2000U8TCG OBJECT IDENTIFIER ::= { ciscoProducts 1870 } -- Cisco Industrial Ethernet 2000U Switch, 8 10/100 T + 2 1000 T/SFP ciscoIE2000U16TCG OBJECT IDENTIFIER ::= { ciscoProducts 1871 } -- Cisco Industrial Ethernet 2000U Switch, 16 10/100 T + 2 100 T + 2 1000 T/SFP ciscoIE2000U16TCGX OBJECT IDENTIFIER ::= { ciscoProducts 1872 } -- Cisco Conformal coating Industrial Ethernet 2000U Switch, 16 10/100 T + 2 100 T + 2 1000 T/SFP +ciscoAIRAP3702 OBJECT IDENTIFIER ::= { ciscoProducts 1873 } -- Cisco Aironet 3700 Series (IEEE 802.11ac) Access Point ciscoAIRAP702 OBJECT IDENTIFIER ::= { ciscoProducts 1874 } -- Cisco Aironet 702 Series (IEEE 802.11n) Access Point ciscoAIRAP1532 OBJECT IDENTIFIER ::= { ciscoProducts 1875 } -- Cisco Aironet 1530 Series (IEEE 802.11n) Access Point ciscoEsxNAM OBJECT IDENTIFIER ::= { ciscoProducts 1876 } -- Network Analysis Module running on ESX Hypervisor @@ -1782,14 +1788,19 @@ ciscoC365048PQ OBJECT IDENTIFIER ::= { ciscoProducts 1881 } -- ciscoC365048TQ OBJECT IDENTIFIER ::= { ciscoProducts 1882 } -- Cisco Catalyst 3650 48 Port Data 4x10G Uplink ciscoASR902 OBJECT IDENTIFIER ::= { ciscoProducts 1897 } -- Cisco Aggregation Services Router 900 Series with 2RU Chassis ciscoME1200 OBJECT IDENTIFIER ::= { ciscoProducts 1899 } -- Cisco ME 1200 Carrier Ethernet Access Demarcation Device +ciscoVASA OBJECT IDENTIFIER ::= { ciscoProducts 1902 } -- Cisco Virtual Adaptive Security Appliance +ciscoVASASy OBJECT IDENTIFIER ::= { ciscoProducts 1903 } -- Cisco Virtual Adaptive Security Appliance System Context +ciscoVASASc OBJECT IDENTIFIER ::= { ciscoProducts 1904 } -- Cisco Virtual Adaptive Security Appliance Security Context ciscoN9Kc9508 OBJECT IDENTIFIER ::= { ciscoProducts 1915 } -- Nexus 9500 series chassis with 8 slots ciscoWapAP702 OBJECT IDENTIFIER ::= { ciscoProducts 1916 } -- Wireless Access Point 700 ciscoWapAP2602 OBJECT IDENTIFIER ::= { ciscoProducts 1917 } -- Wireless Access Point 2600 ciscoWapAP1602 OBJECT IDENTIFIER ::= { ciscoProducts 1918 } -- Wireless Access Point 1600 ciscoN9KC93128TX OBJECT IDENTIFIER ::= { ciscoProducts 1923 } -- 3RU TOR, 96x10GT+8x40G QSFP +ciscoN9KC9396TX OBJECT IDENTIFIER ::= { ciscoProducts 1924 } -- 2RU TOR, 48x10GT+12x40G QSFP ciscoN9KC9396PX OBJECT IDENTIFIER ::= { ciscoProducts 1925 } -- 2RU TOR, 48x10GF+12x40G QSFP ciscoUcsEN120S OBJECT IDENTIFIER ::= { ciscoProducts 1931 } -- UCS E-Series Network compute engine 2-Core Service module (UCS-EN120S-M2/K9) ciscoC68xxVirtualSwitch OBJECT IDENTIFIER ::= { ciscoProducts 1934 } -- 68xx Virtual Switch +ciscoISR4431 OBJECT IDENTIFIER ::= { ciscoProducts 1935 } -- Cisco ISR 4431 Router Chassis ciscoC6880x OBJECT IDENTIFIER ::= { ciscoProducts 1936 } -- Catalyst 6880 chassis ciscoCPT50 OBJECT IDENTIFIER ::= { ciscoProducts 1937 } -- Cisco Carrier Packet Transport (CPT) 50 ciscoCSE340WG32K9 OBJECT IDENTIFIER ::= { ciscoProducts 1940 } -- Cisco Edge 340 Digital Media Player general model,equipped with 32G SSD, WiFi chip, support 2.4G @@ -1827,6 +1838,7 @@ ciscoitpAxpSmSre910 OBJECT IDENTIFIER ::= { ciscoProducts 19 ciscoN9Kc9516 OBJECT IDENTIFIER ::= { ciscoProducts 1996 } -- Nexus 9500 series chassis with 16 slots ciscoN9Kc9504 OBJECT IDENTIFIER ::= { ciscoProducts 1997 } -- Nexus 9500 series chassis with 4 slots ciscoDoorCGR1240 OBJECT IDENTIFIER ::= { ciscoProducts 1998 } -- Cisco Connected Grid Router CGR1240 physical door entity +ciscoISR4351 OBJECT IDENTIFIER ::= { ciscoProducts 1999 } -- Cisco ISR 4351 Router ciscoWRP500 OBJECT IDENTIFIER ::= { ciscoProducts 2000 } -- WRP500 is targeted for small business network environments from a Hosted Service Provider cisco897VABK9 OBJECT IDENTIFIER ::= { ciscoProducts 2008 } -- C897VAB-K9 router with 1 VDSL2 withbonding/ADSL2+ WAN , 1 Giga Ethernet WAN, 1 SFP (Small Form-factor Pluggable) Giga Ethernet Primary WAN, 8 Giga Ethernet LAN,4 PoE Optional, 1 USB 2.0 port, 1 Console/Aux port, 256MB flash memory and 1GB DRAM cisco819HWDCK9 OBJECT IDENTIFIER ::= { ciscoProducts 2023 } -- C819HWD-C-K9 Hardened Router with 1 Gigabit Ethernet WAN, 4 Fast Ethernet LAN, 1 Serial, CCC Mark compliant Wireless LAN, 1 Console/Aux ports, 1GB flash memory and 1GB DRAM @@ -1837,6 +1849,32 @@ ciscoIOG910GK9 OBJECT IDENTIFIER ::= { ciscoProducts 2064 } ciscoIOG910K9 OBJECT IDENTIFIER ::= { ciscoProducts 2065 } -- Programmable IoT Sensor Gateway, 1 Combo (GE/SFP), 1 open slot for 802.15.4 module, 1 slot for external storage cat36xxstack OBJECT IDENTIFIER ::= { ciscoProducts 2066 } -- A stack of any catalyst36xx stack-able ethernet switches with unified identity (as a single unified switch), control and management cat57xxstack OBJECT IDENTIFIER ::= { ciscoProducts 2067 } -- A stack of any Wireless LAN 57xx stack-able controllers with unified identity (as a single unified switch), control and management +ciscoISR4331 OBJECT IDENTIFIER ::= { ciscoProducts 2068 } -- Cisco ISR 4331 Router +ciscoIE40004TC4GE OBJECT IDENTIFIER ::= { ciscoProducts 2069 } -- CISCO IE4000 with 4 FE Combo DL ports, 4 GE combo UL ports, w/FPGA +ciscoIE40008T4GE OBJECT IDENTIFIER ::= { ciscoProducts 2070 } -- CISCO IE4000 with 8 FE Copper DL ports, 4 GE combo UL ports, w/FPGA +ciscoIE40008S4GE OBJECT IDENTIFIER ::= { ciscoProducts 2071 } -- CISCO IE4000 with 8 FE Fiber DL ports, 4 GE combo UL ports, w/FPGA +ciscoIE40004T4P4GE OBJECT IDENTIFIER ::= { ciscoProducts 2072 } -- CISCO IE4000 with 4 FE Copper DL ports + 4 FE Copper DL ports with POE, 4 GE combo UL ports, w/FPGA +ciscoIE400016T4GE OBJECT IDENTIFIER ::= { ciscoProducts 2073 } -- CISCO IE4000 with 16 FE Copper DL ports, 4 GE combo UL ports, w/FPGA +ciscoIE40004S8P4GE OBJECT IDENTIFIER ::= { ciscoProducts 2074 } -- CISCO IE4000 with 4 FE Fiber DL ports + 8 FE Copper DL ports with POE, 4 GE combo UL ports, w/FPGA +ciscoIE40008GT4GE OBJECT IDENTIFIER ::= { ciscoProducts 2075 } -- CISCO IE4000 with 8 GE Copper DL ports, 4 GE combo UL ports, w/FPGA +ciscoIE40008GS4GE OBJECT IDENTIFIER ::= { ciscoProducts 2076 } -- CISCO IE4000 with 8 GE Fiber DL ports, 4 GE combo UL ports, w/FPGA +ciscoIE40004GC4GP4GE OBJECT IDENTIFIER ::= { ciscoProducts 2077 } -- CISCO IE4000 with 4 GE Combo DL ports + 4 GE Copper DL ports with POE, 4 GE combo UL ports, w/FPGA +ciscoIE400016GT4GE OBJECT IDENTIFIER ::= { ciscoProducts 2078 } -- CISCO IE4000 with 16 GE Copper DL ports, 4 GE combo UL ports, w/FPGA +ciscoIE40008GT8GP4GE OBJECT IDENTIFIER ::= { ciscoProducts 2079 } -- CISCO IE4000 with 8 GE Copper DL ports + 8 GE Copper DL ports with POE, 4 GE combo UL ports, w/FPGA +ciscoIE40004GS8GP4GE OBJECT IDENTIFIER ::= { ciscoProducts 2080 } -- CISCO IE4000 with 4 GE Fiber DL ports + 8 GE Copper DL ports with POE, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS4C4CGN OBJECT IDENTIFIER ::= { ciscoProducts 2081 } -- CISCO IE4000 with 4 FE Combo DL ports, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS8T4CGN OBJECT IDENTIFIER ::= { ciscoProducts 2082 } -- CISCO IE4000 with 8 FE Copper DL ports, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS8S4CGN OBJECT IDENTIFIER ::= { ciscoProducts 2083 } -- CISCO IE4000 with 8 FE Fiber DL ports, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS4T4E4CGN OBJECT IDENTIFIER ::= { ciscoProducts 2084 } -- CISCO IE4000 with 4 FE Copper DL ports + 4 FE Copper DL ports with POE, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS16T4CGN OBJECT IDENTIFIER ::= { ciscoProducts 2085 } -- CISCO IE4000 with 16 FE Copper DL ports, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS4S8E4CGN OBJECT IDENTIFIER ::= { ciscoProducts 2086 } -- CISCO IE4000 with 4 FE Fiber DL ports + 8 FE Copper DL ports with POE, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS8TG4CGN OBJECT IDENTIFIER ::= { ciscoProducts 2087 } -- CISCO IE4000 with 8 GE Copper DL ports, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS8SG4CGN OBJECT IDENTIFIER ::= { ciscoProducts 2088 } -- CISCO IE4000 with 8 GE Fiber DL ports, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS4EG8CGN OBJECT IDENTIFIER ::= { ciscoProducts 2089 } -- CISCO IE4000 with 4 GE Combo DL ports + 4 GE Copper DL ports with POE, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS16TG4CGN OBJECT IDENTIFIER ::= { ciscoProducts 2090 } -- CISCO IE4000 with 16 GE Copper DL ports, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS8TG8EG4CGN OBJECT IDENTIFIER ::= { ciscoProducts 2091 } -- CISCO IE4000 with 8 GE Copper DL ports + 8 GE Copper DL ports with POE, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS4SG8EG4CGN OBJECT IDENTIFIER ::= { ciscoProducts 2092 } -- CISCO IE4000 with 4 GE Fiber DL ports + 8 GE Copper DL ports with POE, 4 GE combo UL ports, w/FPGA +ciscoISR4321 OBJECT IDENTIFIER ::= { ciscoProducts 2093 } -- Cisco ISR 4321 Router ciscoCSE340G32K9 OBJECT IDENTIFIER ::= { ciscoProducts 2094 } -- Cisco Edge 340 Digital Media Player none wifi, general model, equipped with 32G SSD ciscoCSE340M32K9 OBJECT IDENTIFIER ::= { ciscoProducts 2095 } -- Cisco Edge 340 Digital Media Player none wifi, DMP model, equipped with 32G SSD ciscoSCE10000 OBJECT IDENTIFIER ::= { ciscoProducts 2096 } -- Cisco service control engine 10000 @@ -1848,19 +1886,42 @@ ciscoASR92024TZM OBJECT IDENTIFIER ::= { ciscoProducts 2101 } ciscoASR92024SZM OBJECT IDENTIFIER ::= { ciscoProducts 2102 } -- Cisco ASR920 Series - 24GE Fiber and 4-10GE - Modular PSU ciscoWallander1x1GESKU OBJECT IDENTIFIER ::= { ciscoProducts 2112 } -- This is a giga-bit ethernet card which can be plugged into host such like ISR4451, this will provide one giga-bit eth interface (both RJ45 and SFP are supported). ciscoWallander2x1GESKU OBJECT IDENTIFIER ::= { ciscoProducts 2113 } -- This is a giga-bit ethernet card which can be plugged into host such like ISR4451, this will provide two giga-bit eth interface (both RJ45 and SFP are supported). +ciscoASA5506 OBJECT IDENTIFIER ::= { ciscoProducts 2114 } -- ASA 5506 Adaptive Security Appliance +ciscoASA5506sc OBJECT IDENTIFIER ::= { ciscoProducts 2115 } -- ASA 5506 Adaptive Security Appliance Security Context +ciscoASA5506sy OBJECT IDENTIFIER ::= { ciscoProducts 2116 } -- ASA 5506 Adaptive Security Appliance System Context +ciscoASA5506K7 OBJECT IDENTIFIER ::= { ciscoProducts 2123 } -- ASA 5506 Adaptive Security Appliance with No Payload Encryption +ciscoASA5506K7sc OBJECT IDENTIFIER ::= { ciscoProducts 2124 } -- ASA 5506 Adaptive Security Appliance Security Context with No Payload Encryption +ciscoASA5506K7sy OBJECT IDENTIFIER ::= { ciscoProducts 2125 } -- ASA 5506 Adaptive Security Appliance System Context with No Payload Encryption +ciscoAIRAP1702 OBJECT IDENTIFIER ::= { ciscoProducts 2129 } -- Cisco Aironet 1700 Series (IEEE 802.11ac) Access Point +catwsC3560CX12pdS OBJECT IDENTIFIER ::= { ciscoProducts 2132 } -- Smirnoff catalyst 3560CX 12x GE downlink, PoE+, 2x CU + 2x 10G SFP+ uplinks +catwsC3560CX12tcS OBJECT IDENTIFIER ::= { ciscoProducts 2133 } -- Smirnoff catalyst 3560CX 12x GE downlink, 2x Copper + 2x SFP uplinks +catwsC3560CX12pcS OBJECT IDENTIFIER ::= { ciscoProducts 2134 } -- Smirnoff catalyst 3560CX 12x GE downlink, PoE+, 2x copper + 2x SFP uplink +catwsC3560CX8tcS OBJECT IDENTIFIER ::= { ciscoProducts 2135 } -- Smirnoff Catalyst 3560CX 8x GE downlink, 2x Copper + 2x SFP uplink +catwsC3560CX8pcS OBJECT IDENTIFIER ::= { ciscoProducts 2136 } -- Smirnoff Catalyst 3560CX 8x GE downlink, PoE+, 2x Copper + 2x SFP uplink +catwsC2960CX8tcL OBJECT IDENTIFIER ::= { ciscoProducts 2137 } -- Smirnoff catalyst 2960CX 8 Gig Downlinks, 2 Copper, 2 SFP uplink +cisco2911TK9 OBJECT IDENTIFIER ::= { ciscoProducts 2138 } -- CISCO2911-T/K9 with 3 GE, 4 EHWIC, 1 SM , 256 MB CF, 512 MB DRAM, IPB, extended temperature range from -5 to 60 C ciscoSNS3495K9 OBJECT IDENTIFIER ::= { ciscoProducts 2139 } -- Cisco Secure Network Server platform SNS-3495 appliance ciscoSNS3415K9 OBJECT IDENTIFIER ::= { ciscoProducts 2140 } -- Cisco Secure Network Server platform SNS-3415 appliance +ciscoAIRAP702w OBJECT IDENTIFIER ::= { ciscoProducts 2146 } -- Cisco Aironet 702w (IEEE 802.11n) Series Access Points +cisco891x24XK9 OBJECT IDENTIFIER ::= { ciscoProducts 2148 } -- C891-24X Router series with 2 Giga Ethernet WAN Xor'ed with SFP (Small Form-factor Pluggable), 24 Giga Ethernet LAN with 8 PoE 1 USB 2.0 port, 1 Console/Aux port, 256MB flash memory and 512MB/1GB DRAM ciscoASR9204SZD OBJECT IDENTIFIER ::= { ciscoProducts 2155 } -- Cisco ASR920 Series - 2GE and 4-10GE -DC model ciscoASR9208SZ0A OBJECT IDENTIFIER ::= { ciscoProducts 2156 } -- Cisco ASR920 Series - 8GE and 4-10GE - Outdoor AC model ciscoASR92012CZA OBJECT IDENTIFIER ::= { ciscoProducts 2157 } -- Cisco ASR920 Series - 12GE and 2-10GE - AC model ciscoASR92012CZD OBJECT IDENTIFIER ::= { ciscoProducts 2158 } -- Cisco ASR920 Series - 12GE and 2-10GE - DC model ciscoASR9204SZA OBJECT IDENTIFIER ::= { ciscoProducts 2159 } -- Cisco ASR920 Series - 2GE and 4-10GE -AC model ciscoASR9208SZ0D OBJECT IDENTIFIER ::= { ciscoProducts 2160 } -- Cisco ASR920 Series - 8GE and 4-10GE - Outdoor DC model -ciscoC3850E12XS OBJECT IDENTIFIER ::= { ciscoProducts 2162 } -- Cisco Catalyst 3850E 12 Port 10G Fiber Switch -ciscoC3850E24XS OBJECT IDENTIFIER ::= { ciscoProducts 2163 } -- Cisco Catalyst 3850E 24 Port 10G Fiber Switch -ciscoC3850E48XS OBJECT IDENTIFIER ::= { ciscoProducts 2164 } -- Cisco Catalyst 3850E 48 Port 10G Fiber Switch +ciscoTSCodecG3 OBJECT IDENTIFIER ::= { ciscoProducts 2161 } -- Cisco Telepresence Generation 3 Codec +ciscoC385012XS OBJECT IDENTIFIER ::= { ciscoProducts 2162 } -- Cisco Catalyst 3850 12 Port 10G Fiber Switch +ciscoC385024XS OBJECT IDENTIFIER ::= { ciscoProducts 2163 } -- Cisco Catalyst 3850 24 Port 10G Fiber Switch +ciscoC385048XS OBJECT IDENTIFIER ::= { ciscoProducts 2164 } -- Cisco Catalyst 3850 48 Port 10G Fiber Switch ciscoRAIE1783ZMS4T4E2TGN OBJECT IDENTIFIER ::= { ciscoProducts 2168 } -- Cisco IE2000 IP67 Variant with 4 port 10/100 downlink, 4 port POE/POE+ downlink, 2 10/100/1000 uplink, w/FPGA, LAN Base Image, PTP and NAT Support ciscoRAIE1783ZMS8T8E2TGN OBJECT IDENTIFIER ::= { ciscoProducts 2169 } -- Cisco IE2000 IP67 Variant with 8 port 10/100 downlink, 8 port POE/POE+ downlink, 2 10/100/1000 uplink, w/FPGA, LAN Base Image, PTP and NAT Support +ciscoRAIE1783HMS8TG4CGR OBJECT IDENTIFIER ::= { ciscoProducts 2172 } -- CISCO IE4000 with 8 GE Copper DL ports, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS8SG4CGR OBJECT IDENTIFIER ::= { ciscoProducts 2173 } -- CISCO IE4000 with 8 GE Fiber DL ports, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS4EG8CGR OBJECT IDENTIFIER ::= { ciscoProducts 2174 } -- CISCO IE4000 with 4 GE Combo DL ports + 4 GE Copper DL ports with POE, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS16TG4CGR OBJECT IDENTIFIER ::= { ciscoProducts 2175 } -- CISCO IE4000 with 16 GE Copper DL ports, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS8TG8EG4CGR OBJECT IDENTIFIER ::= { ciscoProducts 2176 } -- CISCO IE4000 with 8 GE Copper DL ports + 8 GE Copper DL ports with POE, 4 GE combo UL ports, w/FPGA +ciscoRAIE1783HMS4SG8EG4CGR OBJECT IDENTIFIER ::= { ciscoProducts 2177 } -- CISCO IE4000 with 4 GE Fiber DL ports + 8 GE Copper DL ports with POE, 4 GE combo UL ports, w/FPGA ciscoUCSC220M4 OBJECT IDENTIFIER ::= { ciscoProducts 2178 } -- Cisco UCS C220 M4 Rack server ciscoUCSC240M4 OBJECT IDENTIFIER ::= { ciscoProducts 2179 } -- Cisco UCS C240 M4 Rack server ciscoUCSC3160 OBJECT IDENTIFIER ::= { ciscoProducts 2180 } -- Cisco UCS C3160 Rack server @@ -1908,7 +1969,10 @@ ciscoFpSsl2000K9 OBJECT IDENTIFIER ::= { ciscoProducts 2225 } -- Ci ciscoFpSsl8200K9 OBJECT IDENTIFIER ::= { ciscoProducts 2226 } -- Cisco FirePOWER SSL8200 Appliance, 2U ciscoFp7010K9 OBJECT IDENTIFIER ::= { ciscoProducts 2227 } -- Cisco FirePOWER 7010 Appliance, 1U ciscoFp7020K9 OBJECT IDENTIFIER ::= { ciscoProducts 2228 } -- Cisco FirePOWER 7020 Appliance, 1U - +cisco841Mx4XK9 OBJECT IDENTIFIER ::= { ciscoProducts 2229 } -- C841M-4X/K9 router with 4GE LAN, 2GE WAN, 2 WIM slots +cisco841Mx8XK9 OBJECT IDENTIFIER ::= { ciscoProducts 2230 } -- C841M-8X/K9 router with 8GE LAN, 2GE WAN, 2 WIM slots +ciscoIR829GWLTEMAAK9 OBJECT IDENTIFIER ::= { ciscoProducts 2248 } -- IR829 Hardened WAN GE 4G LTE secure platform multi-mode Sprint LTE/DoRa with 802.11n, PoE, FCC compliant +ciscoPwsX474812X48uE OBJECT IDENTIFIER ::= { ciscoProducts 2249 } -- Switch 4500E 100/1000/2500/5000/10GBaseT (RJ45)+V E Series with 48 10GbaseT END diff --git a/mibs/OLD-CISCO-CHASSIS-MIB-V1SMI b/mibs/OLD-CISCO-CHASSIS-MIB-V1SMI index 955c9596f7..fd0bb3dd3b 100644 --- a/mibs/OLD-CISCO-CHASSIS-MIB-V1SMI +++ b/mibs/OLD-CISCO-CHASSIS-MIB-V1SMI @@ -1,4 +1,4 @@ --- MIB file created 11-Nov-2009 11:09:10, by +-- MIB file created 04-May-2010 14:00:22, by -- SMICng version 2.2.11-beta(PRO)(Solaris), January 20, 2001. Enterprise key cisco.com OLD-CISCO-CHASSIS-MIB DEFINITIONS ::= BEGIN @@ -587,6 +587,8 @@ chassisType OBJECT-TYPE csrp546(779), csrp547(780), cvs510-fxo(781), + c887-gvdsl2(782), + c887-srstvdsl2(783), c59xx(786), cat2960-24-lcs(787), cat2960-24-pcs(788), @@ -596,9 +598,18 @@ chassisType OBJECT-TYPE cn4kibmeth(793), craie1783-rms06t(796), craie1783-rms10t(797), + cesw-540-8p-k9(798), + cesw-520-8p-k9(799), cn7kc7009(815), cn4kibm-cisco-eth(816), - cmwr-2941-dca(817) + cmwr-2941-dca(817), + c1841ck9(832), + c2801ck9(833), + c2811ck9(834), + c2821ck9(835), + c3825ck9(837), + c3845ck9(838), + c1906ck9(859) } ACCESS read-only STATUS deprecated @@ -1327,6 +1338,8 @@ cardType OBJECT-TYPE ubr-mc16u-e(1041), ubr-mc28u-e(1042), ubr-dtcc(1043), + ubr-mc88v(1045), + ubr-mc2020(1046), gsr-8fe-tx(1050), gsr-8fe-fx(1051), ssrp-oc48-sm-sr(1052), @@ -1471,6 +1484,15 @@ cardType OBJECT-TYPE cpu-1941w-2ge(1260), cpu-3825nv-2ge(1261), cpu-3845nv-2ge(1262), + cpu-3900SPE200-4ge(1269), + cpu-3900spe250-4ge(1274), + cpu-c1841c-2fe-k9(1277), + cpu-c2801c-2fe-k9(1278), + cpu-c2811c-2fe-k9(1279), + cpu-c2821c-2ge-k9(1280), + cpu-c3825c-2ge-k9(1282), + cpu-c3845c-2ge-k9(1283), + cpu-1906c-k9(1287), pos-1oc12(1300), p6-ct3(1301), ge(1302), @@ -1482,6 +1504,8 @@ cardType OBJECT-TYPE srp-oc48-sr(1310), srp-oc48-ir(1311), atm-4oc3(1313), + srp-pos-1oc48-sm-sr(1315), + srp-pos-1oc48-sm-lr(1316), flashcard-48mb(1317), flashcard-128mb(1318), p24-ct1e1(1319), @@ -2038,6 +2062,11 @@ cardType OBJECT-TYPE pvdm3-256(4374), nm-2838(4375), pano-2838(4376), + vwic3-mft4-t1e1(4379), + vwic3-mft1-t1e1(4380), + vwic3-mft1-g703(4381), + vwic3-mft2-t1e1(4382), + vwic3-mft2-g703(4383), rsp720Base(4400), rsp32GEBase(4401), rsp3210GEBase(4402), @@ -2112,6 +2141,7 @@ cardType OBJECT-TYPE hwic-1ser(4559), hwic-2ser(4560), internal-service-module-aim(4561), + sm-1nm(4563), hwic-4ce1t1-pri(4576), dwdm-3268-sfp(4600), dwdm-3425-sfp(4601), @@ -2221,8 +2251,22 @@ cardType OBJECT-TYPE pwr-cat-2960ac-235w-12v(4779), pwr-cat-2960ac-525w-12v(4780), pwr-c1941pwr-ac(4781), + pwr-c7225-ac(4787), mds-ds-x9232x256-k9(4800), - mds-ds13-slot-fabric-evia3(4801) + mds-ds13-slot-fabric-evia3(4801), + mds-ds-x9530-sf2a-k9(4819), + hwic-2t-c(4826), + hwic-1t-c(4827), + hwic-9fes-c(4828), + hwic-4fes-c(4829), + vwic2-mft1-g703-c(4830), + vwic2-mft2-g703-c(4831), + nm-16eswitch-c(4832), + harddisk-idc(4835), + vmss-sm-sre700K9(4840), + vmss-sm-sre900K9(4841), + iss-sm-sre700K9(4842), + iss-sm-sre900K9(4843) } ACCESS read-only STATUS deprecated From 3dcd779d60ae8d8b2cba338b9dfa7167a4ba4eee Mon Sep 17 00:00:00 2001 From: laf Date: Wed, 15 Apr 2015 10:40:53 +0100 Subject: [PATCH 12/59] changed to router --- includes/definitions.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/definitions.inc.php b/includes/definitions.inc.php index cad2ace71d..7ae2242e90 100644 --- a/includes/definitions.inc.php +++ b/includes/definitions.inc.php @@ -141,7 +141,7 @@ $config['os'][$os]['over'][2]['graph'] = "device_mempool"; $config['os'][$os]['over'][2]['text'] = "Memory Usage"; $os = "procera"; -$onfig['os'][$os]['type'] = "server"; +$onfig['os'][$os]['type'] = "network"; $config['os'][$os]['group'] = "unix"; $config['os'][$os]['text'] = "Procera Networks"; $config['os'][$os]['icon'] = "linux"; From 0fd0c3d11d689dc49146e28009bc8d1b6cf05617 Mon Sep 17 00:00:00 2001 From: laf Date: Wed, 15 Apr 2015 11:55:04 +0100 Subject: [PATCH 13/59] update to hardware --- includes/polling/os/cisco.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/polling/os/cisco.inc.php b/includes/polling/os/cisco.inc.php index 82b444fdaa..9990a50815 100644 --- a/includes/polling/os/cisco.inc.php +++ b/includes/polling/os/cisco.inc.php @@ -24,7 +24,7 @@ if ($data[1]['entPhysicalContainedIn'] == "0") $version = $data[1]['entPhysicalSoftwareRev']; } - if (!empty($data[1]['entPhysicalName'])) + if (!empty($data[1]['entPhysicalName']) && $data[1]['entPhysicalName'] != 'Switch System') { $hardware = $data[1]['entPhysicalName']; } From 73fb0ca7ff47c838ab83dbc01c1e8fdeedd91068 Mon Sep 17 00:00:00 2001 From: laf Date: Wed, 15 Apr 2015 12:35:20 +0100 Subject: [PATCH 14/59] Updated alert_log query to get alerts based on minute interval --- html/includes/print-graph-alerts.inc.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/html/includes/print-graph-alerts.inc.php b/html/includes/print-graph-alerts.inc.php index ac4a713f0a..0ba38ac339 100644 --- a/html/includes/print-graph-alerts.inc.php +++ b/html/includes/print-graph-alerts.inc.php @@ -19,11 +19,11 @@ if (isset($device['device_id']) && $device['device_id'] > 0) { } if ($_SESSION['userlevel'] >= '5') { - $query = "SELECT DATE(time_logged) Date, COUNT(alert_log.device_id) totalCount, alert_rules.severity Severity FROM alert_log,alert_rules WHERE alert_log.rule_id=alert_rules.id $sql GROUP BY DATE(time_logged),alert_rules.severity"; + $query = "SELECT DATE_FORMAT(time_logged, '%Y-%m-%d %H:%i') Date, COUNT(alert_log.rule_id) totalCount, alert_rules.severity Severity FROM alert_log,alert_rules WHERE alert_log.rule_id=alert_rules.id $sql GROUP BY DATE_FORMAT(time_logged, '%Y-%m-%d %H:%i'),alert_rules.severity"; } if ($_SESSION['userlevel'] < '5') { - $query = "SELECT DATE(time_logged) Date, COUNT(alert_log.device_id) totalCount, alert_rules.severity Severity FROM alert_log,alert_rules,devices_perms WHERE alert_log.rule_id=alert_rules.id $sql AND alert_log.device_id = devices_perms.device_id AND devices_perms.user_id = " . $_SESSION['user_id'] . " GROUP BY DATE(time_logged),alert_rules.severity"; + $query = "SELECT DATE_FORMAT(time_logged, '%Y-%m-%d %H:%i') Date, COUNT(alert_log.device_id) totalCount, alert_rules.severity Severity FROM alert_log,alert_rules,devices_perms WHERE alert_log.rule_id=alert_rules.id $sql AND alert_log.device_id = devices_perms.device_id AND devices_perms.user_id = " . $_SESSION['user_id'] . " GROUP BY DATE_FORMAT(time_logged, '%Y-%m-%d %H:%i'),alert_rules.severity"; } ?> @@ -97,4 +97,4 @@ echo $milisec_diff; }; var graph2d = new vis.Graph2d(container, items, groups, options); - \ No newline at end of file + From 14e8195b26bdda2bf34817da9e80e16f5c40c1ae Mon Sep 17 00:00:00 2001 From: laf Date: Wed, 15 Apr 2015 12:55:34 +0100 Subject: [PATCH 15/59] Changed to exlcude ok state + user configurable for resolution --- html/includes/print-graph-alerts.inc.php | 6 +++--- includes/defaults.inc.php | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/html/includes/print-graph-alerts.inc.php b/html/includes/print-graph-alerts.inc.php index 0ba38ac339..1bc27fcbf7 100644 --- a/html/includes/print-graph-alerts.inc.php +++ b/html/includes/print-graph-alerts.inc.php @@ -19,11 +19,11 @@ if (isset($device['device_id']) && $device['device_id'] > 0) { } if ($_SESSION['userlevel'] >= '5') { - $query = "SELECT DATE_FORMAT(time_logged, '%Y-%m-%d %H:%i') Date, COUNT(alert_log.rule_id) totalCount, alert_rules.severity Severity FROM alert_log,alert_rules WHERE alert_log.rule_id=alert_rules.id $sql GROUP BY DATE_FORMAT(time_logged, '%Y-%m-%d %H:%i'),alert_rules.severity"; + $query = "SELECT DATE_FORMAT(time_logged, '".$config['alert_graph_date_format']."') Date, COUNT(alert_log.rule_id) totalCount, alert_rules.severity Severity FROM alert_log,alert_rules WHERE alert_log.rule_id=alert_rules.id AND `alert_log`.`state` != 0 $sql GROUP BY DATE_FORMAT(time_logged, '".$config['alert_graph_date_format']."'),alert_rules.severity"; } if ($_SESSION['userlevel'] < '5') { - $query = "SELECT DATE_FORMAT(time_logged, '%Y-%m-%d %H:%i') Date, COUNT(alert_log.device_id) totalCount, alert_rules.severity Severity FROM alert_log,alert_rules,devices_perms WHERE alert_log.rule_id=alert_rules.id $sql AND alert_log.device_id = devices_perms.device_id AND devices_perms.user_id = " . $_SESSION['user_id'] . " GROUP BY DATE_FORMAT(time_logged, '%Y-%m-%d %H:%i'),alert_rules.severity"; + $query = "SELECT DATE_FORMAT(time_logged, '".$config['alert_graph_date_format']."') Date, COUNT(alert_log.device_id) totalCount, alert_rules.severity Severity FROM alert_log,alert_rules,devices_perms WHERE alert_log.rule_id=alert_rules.id AND `alert_log`.`state` != 0 $sql AND alert_log.device_id = devices_perms.device_id AND devices_perms.user_id = " . $_SESSION['user_id'] . " GROUP BY DATE_FORMAT(time_logged, '".$config['alert_graph_date_format']."'),alert_rules.severity"; } ?> @@ -86,7 +86,7 @@ echo $max_count; ?> } } }, - zoomMin: 2073600000, //24hrs + zoomMin: , //24hrs zoomMax: From 384c037613388b40c5c88b19a8f628469acb4699 Mon Sep 17 00:00:00 2001 From: laf Date: Wed, 15 Apr 2015 13:01:35 +0100 Subject: [PATCH 16/59] Removed php echo - not needed --- html/includes/print-graph-alerts.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/includes/print-graph-alerts.inc.php b/html/includes/print-graph-alerts.inc.php index 1bc27fcbf7..6479d7a7dc 100644 --- a/html/includes/print-graph-alerts.inc.php +++ b/html/includes/print-graph-alerts.inc.php @@ -86,7 +86,7 @@ echo $max_count; ?> } } }, - zoomMin: , //24hrs + zoomMin: 86400, //24hrs zoomMax: Date: Wed, 15 Apr 2015 13:12:27 +0100 Subject: [PATCH 17/59] removed update to cisco polling :/ --- includes/polling/os/cisco.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/polling/os/cisco.inc.php b/includes/polling/os/cisco.inc.php index 9990a50815..82b444fdaa 100644 --- a/includes/polling/os/cisco.inc.php +++ b/includes/polling/os/cisco.inc.php @@ -24,7 +24,7 @@ if ($data[1]['entPhysicalContainedIn'] == "0") $version = $data[1]['entPhysicalSoftwareRev']; } - if (!empty($data[1]['entPhysicalName']) && $data[1]['entPhysicalName'] != 'Switch System') + if (!empty($data[1]['entPhysicalName'])) { $hardware = $data[1]['entPhysicalName']; } From 7bd96c2de7ad24791a6b13ec4686ada9fd06a553 Mon Sep 17 00:00:00 2001 From: Mike Rostermund Date: Wed, 15 Apr 2015 06:31:26 -0700 Subject: [PATCH 18/59] Fixes non-working links from /health/processor/ when clicking on either processor name or graphs/bars --- html/pages/health/processor.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/pages/health/processor.inc.php b/html/pages/health/processor.inc.php index 9c4af2070f..7bed561ba6 100644 --- a/html/pages/health/processor.inc.php +++ b/html/pages/health/processor.inc.php @@ -25,7 +25,7 @@ foreach (dbFetchRows("SELECT * FROM `processors` AS P, `devices` AS D WHERE D.de $text_descr = str_replace("Sub-Module", "Module ", $text_descr); $text_descr = str_replace("DFC Card", "DFC", $text_descr); - $proc_url = "device/".$device['device_id']."/health/processor/"; + $proc_url = "device/device=".$device['device_id']."/tab=health/metric=processor/"; $mini_url = "graph.php?id=".$proc['processor_id']."&type=".$graph_type."&from=".$config['time']['day']."&to=".$config['time']['now']."&width=80&height=20&bg=f4f4f400"; From 0a25664d824889d7572da985612696e42ba4266a Mon Sep 17 00:00:00 2001 From: Mike Rostermund Date: Wed, 15 Apr 2015 07:13:42 -0700 Subject: [PATCH 19/59] Hide divider if there are no active plugins --- html/includes/print-menubar.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/html/includes/print-menubar.php b/html/includes/print-menubar.php index 6ac12cb7b8..4c4f2b4fe2 100644 --- a/html/includes/print-menubar.php +++ b/html/includes/print-menubar.php @@ -433,8 +433,12 @@ Plugins::call('menu'); if ($_SESSION['userlevel'] >= '10') { - echo(' + if (dbFetchCell("SELECT COUNT(*) from `plugins` WHERE plugin_active = '1'" > 0) { + echo(' + '); + } + echo('
  • Plugin Admin
  • '); } From 28746524736773632465062edbd0c472662b39cd Mon Sep 17 00:00:00 2001 From: laf Date: Wed, 15 Apr 2015 15:35:32 +0100 Subject: [PATCH 20/59] missing c --- includes/definitions.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/definitions.inc.php b/includes/definitions.inc.php index 7ae2242e90..5ba98b66c9 100644 --- a/includes/definitions.inc.php +++ b/includes/definitions.inc.php @@ -141,7 +141,7 @@ $config['os'][$os]['over'][2]['graph'] = "device_mempool"; $config['os'][$os]['over'][2]['text'] = "Memory Usage"; $os = "procera"; -$onfig['os'][$os]['type'] = "network"; +$config['os'][$os]['type'] = "network"; $config['os'][$os]['group'] = "unix"; $config['os'][$os]['text'] = "Procera Networks"; $config['os'][$os]['icon'] = "linux"; From a5ce950161a2235ed36514d7a34ba3b3eee7040a Mon Sep 17 00:00:00 2001 From: Daniel Preussker Date: Wed, 15 Apr 2015 15:35:36 +0000 Subject: [PATCH 21/59] Revert "Hide divider if there are no active plugins" --- html/includes/print-menubar.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/html/includes/print-menubar.php b/html/includes/print-menubar.php index 4c4f2b4fe2..6ac12cb7b8 100644 --- a/html/includes/print-menubar.php +++ b/html/includes/print-menubar.php @@ -433,12 +433,8 @@ Plugins::call('menu'); if ($_SESSION['userlevel'] >= '10') { - if (dbFetchCell("SELECT COUNT(*) from `plugins` WHERE plugin_active = '1'" > 0) { - echo(' + echo(' - '); - } - echo('
  • Plugin Admin
  • '); } From d4cbc81b67e23aa211ffdb49d04059d5c75fd423 Mon Sep 17 00:00:00 2001 From: Alan Gregory Date: Wed, 15 Apr 2015 16:09:18 -0300 Subject: [PATCH 22/59] Datacom basic support added --- html/images/os/datacom.png | Bin 0 -> 4271 bytes includes/definitions.inc.php | 5 + includes/discovery/os/datacom.inc.php | 6 + includes/polling/os/datacom.inc.php | 6 + mibs/DATA-DMSWITCH.mib | 4671 +++++++++++++++++++++++++ mibs/DATACOM-REG.mib | 1209 +++++++ mibs/DATACOM-SMI.mib | 112 + 7 files changed, 6009 insertions(+) create mode 100644 html/images/os/datacom.png create mode 100644 includes/discovery/os/datacom.inc.php create mode 100644 includes/polling/os/datacom.inc.php create mode 100644 mibs/DATA-DMSWITCH.mib create mode 100644 mibs/DATACOM-REG.mib create mode 100644 mibs/DATACOM-SMI.mib diff --git a/html/images/os/datacom.png b/html/images/os/datacom.png new file mode 100644 index 0000000000000000000000000000000000000000..e4108d8aab74ff6f7606cd8ccf21656e217c7104 GIT binary patch literal 4271 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 literal 0 HcmV?d00001 diff --git a/includes/definitions.inc.php b/includes/definitions.inc.php index 137587cf6c..447285e4d2 100644 --- a/includes/definitions.inc.php +++ b/includes/definitions.inc.php @@ -1045,6 +1045,11 @@ $config['os'][$os]['text'] = "Cambium"; $config['os'][$os]['type'] = "wireless"; $config['os'][$os]['icon'] = "cambium"; +$os = "datacom"; +$config['os'][$os]['text'] = "Datacom"; +$config['os'][$os]['type'] = "network"; +$config['os'][$os]['icon'] = "datacom"; + foreach ($config['os'] as $this_os => $blah) { if (isset($config['os'][$this_os]['group'])) diff --git a/includes/discovery/os/datacom.inc.php b/includes/discovery/os/datacom.inc.php new file mode 100644 index 0000000000..2785f0b445 --- /dev/null +++ b/includes/discovery/os/datacom.inc.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/includes/polling/os/datacom.inc.php b/includes/polling/os/datacom.inc.php new file mode 100644 index 0000000000..2785f0b445 --- /dev/null +++ b/includes/polling/os/datacom.inc.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/mibs/DATA-DMSWITCH.mib b/mibs/DATA-DMSWITCH.mib new file mode 100644 index 0000000000..a9a7fff962 --- /dev/null +++ b/mibs/DATA-DMSWITCH.mib @@ -0,0 +1,4671 @@ +-- +-- DATACOM Telematica +-- Copyright 2014 by DATACOM (Teracom Telematica Ltda). All Rights Reserved. +-- This DATACOM SNMP MIB Specification is DATACOM proprietary intellectual property. +-- +-- This module will be extend, as required. The specification and other information +-- contained in this document can be modified without prior notice. The user should +-- consult DATACOM to determine whether any such changes have been done. +-- + + +DMswitch-MIB DEFINITIONS ::= BEGIN + +IMPORTS + + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, Integer32, Counter32,IpAddress, + NOTIFICATION-TYPE, enterprises + FROM SNMPv2-SMI + DisplayString, RowStatus, TruthValue, MacAddress + FROM SNMPv2-TC + PortList + FROM Q-BRIDGE-MIB + InterfaceIndex + FROM IF-MIB + EnabledStatus + FROM P-BRIDGE-MIB + datacomAccessDevicesMIBs + FROM DATACOM-SMI; + + +dmSwitchMIB MODULE-IDENTITY + LAST-UPDATED "201407180000Z" + ORGANIZATION "DATACOM" + CONTACT-INFO + "DATACOM +-- +-- Postal: DATACOM +-- Rua América, 1000 +-- Eldorado do Sul - RS +-- Brasil +-- CEP: 92990-000 +-- +-- Tel: +55 51 3933 3000 +-- Fax: +55 51 3933 3003 + +-- + e-mail: datacom@datacom.ind.br" + DESCRIPTION + "The MIB module for DMswitch." +-- DESCRIPTION +-- "Conformance issues" + ::= { datacomAccessDevicesMIBs 201 } + + +dmSwitchMIBObjects OBJECT IDENTIFIER ::= { dmSwitchMIB 1 } +dmSwitchNotifications OBJECT IDENTIFIER ::= { dmSwitchMIB 2 } +dmSwitchConformance OBJECT IDENTIFIER ::= { dmSwitchMIB 3 } + +--supported groups +switchMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 1 } +portMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 2 } +trunkMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 3 } +lacpMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 4 } +staMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 5 } +tftpMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 6 } +restartMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 7 } +mirrorMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 8 } +igmpSnoopMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 9 } +ipMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 10 } +bcastStormMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 11 } +vlanMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 12 } +priorityMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 13 } +trapDestMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 14 } +rateLimitMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 16 } +securityMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 17 } +sysLogMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 19 } +sysTimeMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 20 } +fileMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 21 } +countMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 22 } +filterCounterMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 23 } +eapsMgt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 24 } +cfmProbeMgmt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 25 } +cpumonMgmt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 26 } +queuePortMgmt OBJECT IDENTIFIER ::= { dmSwitchMIBObjects 27 } + +-- ------------------------------------------------------------- +-- Textual Conventions +-- ------------------------------------------------------------- + +ValidStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A simple status value for the object to create and destroy + a table entry. This is a simplified variant of RowStatus as it + supports only two values. Setting it to valid(1) creates an entry. + Setting it to invalid(2) destroys an entry." + SYNTAX INTEGER { valid(1), invalid(2) } + +--sshv2 only start +KeySegment ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The total length of the key is 1024 characters, + it is divided into 8 parts and stored in 8 separated mib + variables as below: + + Key1: part 1 of the key (1-128) + Key2: part 2 of the key (129-256) + Key3: part 3 of the key (257-384) + Key4: part 4 of the key (385-512) + Key5: part 5 of the key (513-640) + Key6: part 6 of the key (641-768) + Key7: part 7 of the key (769-896) + Key8: part 8 of the key (897-1024) + + Please note that if the key string is less then 1024 characters, + the remaining part of the string will be filled by a zero-length string. + For example, if the length of the key is 129, + we will get a string of length 128 in Key1, and + a string of length 1 in Key2, + moreover, Key3 to Key8 will all be zero-length strings." + SYNTAX DisplayString(SIZE(0..128)) +--sshv2 only end + +StaPathCostMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The path cost mode of a spanning tree algorithm, short(1) indicates + that we retrieve/configure the spanning tree path cost as a 16 bit + value and long(2) indicates that we retrieve/configure the spanning + tree path cost as a 32 bit value." + SYNTAX INTEGER { short(1), long(2) } + +-- +-- switchMgt +-- + +switchNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of switches present on this system." + ::= { switchMgt 1 } + +switchInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF SwitchInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of descriptive and status information about + switches in this system." + ::= { switchMgt 2 } + +switchInfoEntry OBJECT-TYPE + SYNTAX SwitchInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about a single switch in this system." + INDEX { swUnitIndex } + ::= { switchInfoTable 1 } + +SwitchInfoEntry ::= SEQUENCE +{ + swUnitIndex Integer32, + swHardwareVer INTEGER, + swBootLoaderVer DisplayString, + swFirmwareVer DisplayString, + swPortNumber Integer32, + swPowerStatus INTEGER, + swRoleInSystem INTEGER, + swSerialNumber DisplayString, + swProdName DisplayString, + swProdModelId INTEGER, + swFirmwareReleaseDate DisplayString, + swTemperature INTEGER, + swG704IntfNumber Integer32, + swE1cIntfNumber Integer32, + swBundleIntfNumber Integer32, + swPtpIntfNumber Integer32, + swSdhIntfNumber Integer32, + swVC4Number Integer32, + swVC12Number Integer32 +} + +swUnitIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This object identifies the switch within the system + for which this entry contains information. This + value can never be greater than switchNumber." + ::= { switchInfoEntry 1 } + +swHardwareVer OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hardware version of the main board." + ::= { switchInfoEntry 2 } + +swBootLoaderVer OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Loader version of the main board." + ::= { switchInfoEntry 3 } + +swFirmwareVer OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Operation code version of the main board." + ::= { switchInfoEntry 4 } + +swPortNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total port number of this switch + (including expansion slot)." + ::= { switchInfoEntry 5 } + +swPowerStatus OBJECT-TYPE + SYNTAX INTEGER + { + internalPower(1), + redundantPower(2), + internalAndRedundantPower(3), + externalPower(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Indicates the switch using internalPower(1), + redundantPower(2), internalAndRedundantPower(3) or externalPower(4)" + ::= { switchInfoEntry 6 } + +swRoleInSystem OBJECT-TYPE + SYNTAX INTEGER + { + master(1), + backupMaster(2), + slave(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Indicates the switch is master(1), backupMaster(2) + or slave(3) in this system." + ::= { switchInfoEntry 7 } + +swSerialNumber OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..80)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Serial number of the switch." + ::= { switchInfoEntry 8 } + +swProdName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..127)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { switchInfoEntry 9 } + +swProdModelId OBJECT-TYPE + SYNTAX INTEGER + { + dmSwitch2204G1(1), + dmSwitch2304G1(2), + dmSwitch3224F1(3), + dmSwitch3324F1(4), + dmSwitch3224F2(5), + dmSwitch3324F2(6), + dmSwitch3224F3(7), + dmSwitch3324F3(8), + mpu192(9), + mpu384(10), + eth12gx(11), + eth24gx(12), + eth1x10gx(13), + eth2x10gx(14), + eth12gxEth1x10gx(15), + eth24gt(16), + eth48gt(17), + eth24gxEth2x10gx(20), + eth48gx(21), + eth4x10gxhseries(22), + eth24gxEth2x10gxhseries(23), + eth48gxhseries(24), + eth24gxhseries(25), + eth2x10gxhseries(26), + eth10gx32xe1(27), + eth10gx4xstm1(28), + eth10gx2xstm4(29), + mpu512(30), + eth24gxlseries(31), + eth24gx4gx(32), + eth24gx2xx(33), + eth24gxs(34), + eth24gx2xxs(35), + eth24gx4xx(36), + eth20gt4gc(37), + eth20gt4gc2xx(38), + eth20gt4gcs(39), + eth20gt4gc2xxs(40), + eth20gt4gc4xx(41), + eth44gt4gc(42), + eth44gt4gc2xx(43), + eth44gt4gcs(44), + eth44gt4gc2xxs(45), + eth44gt4gc4xx(46), + eth44gt4gc2xs(47), + eth44gt4gc2xss(48), + eth44gt4gc4xs(49), + eth24gthseries(50), + eth48gthseries(51), + eth20gt4gc2xss(52), + eth20gx32xe1hseries(53), + eth20gx2x10gx32xe1hseries(54), + eth16gx2x10gx4xstm1hseries(55), + eth16gx4xstm1hseries(56), + eth24gx2x10gxeseries(57), + eth24gxeseries(58), + eth4x10gxeseries(59), + eth48gteseries(60), + mpu960(61), + eth44gt4gcsmplsdc(62), + eth44gt4gc2xxsmplsdc(63), + eth44gt4gc4xxmplsdc(64), + eth24gx2x10gxhseriesII(65), + eth20gt4gc2xssl3(66), + eth20gp4gc2xssl3(67), + eth20gt4gc4xsl3(68), + eth20gp4gc4xsl3(69), + eth44gt4gc2xssl3(70), + eth44gp4gc2xssl3(71), + eth44gt4gc4xsl3(72), + eth44gp4gc4xsl3(73) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Product model identifier." + ::= { switchInfoEntry 10 } + +swFirmwareReleaseDate OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Release date of the firmware." + ::= { switchInfoEntry 11 } + +swTemperature OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Temperature of the switch." + ::= { switchInfoEntry 12 } + +swG704IntfNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of G704 interfaces of this switch." + ::= { switchInfoEntry 13 } + +swE1cIntfNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of E1c interfaces of this switch." + ::= { switchInfoEntry 14 } + +swBundleIntfNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Bundle interfaces of this switch." + ::= { switchInfoEntry 15 } + +swPtpIntfNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of PTP interfaces of this switch." + ::= { switchInfoEntry 16 } + +swSdhIntfNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of SDH interfaces of this switch." + ::= { switchInfoEntry 17 } + +swVC4Number OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of VC4 interfaces of this switch." + ::= { switchInfoEntry 18 } + +swVC12Number OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of VC12 interfaces of this switch." + ::= { switchInfoEntry 19 } + +switchProductId OBJECT IDENTIFIER ::= { switchMgt 3 } + + +swProdManufacturer OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..127)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { switchProductId 2 } + +swProdDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..127)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { switchProductId 3 } + +swProdUrl OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..127)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { switchProductId 5 } + +swIdentifier OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A unique identifier of which switch in the chassis is currently + being looked at." + ::= { switchProductId 6 } + +swVendorId OBJECT-TYPE + SYNTAX INTEGER { + datacom (1), + ieru (2), + asga (3), + parks (4), + digitel (5), + none (6), + elebra (7), + osp (9), + objectNonexistentInModel (2000000254), + infNotAvailable (2000000255) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION " Vendor information. The value 0 + indicates a vendor not defined. " + ::= { switchProductId 7 } + +switchIndivPowerTable OBJECT-TYPE + SYNTAX SEQUENCE OF SwitchIndivPowerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table about status of individual powers." + ::= { switchMgt 4 } + +switchIndivPowerEntry OBJECT-TYPE + SYNTAX SwitchIndivPowerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table about status of individual powers." + INDEX { swIndivPowerUnitIndex, swIndivPowerIndex } + ::= { switchIndivPowerTable 1 } + +SwitchIndivPowerEntry ::= SEQUENCE +{ + swIndivPowerUnitIndex Integer32, + swIndivPowerIndex INTEGER, + swIndivPowerStatus INTEGER +} + +swIndivPowerUnitIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This is defined as swUnitIndex." + ::= { switchIndivPowerEntry 1 } + +swIndivPowerIndex OBJECT-TYPE + SYNTAX INTEGER (1..2) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "1 means internal power. 2 means external power." + ::= { switchIndivPowerEntry 2 } + +swIndivPowerStatus OBJECT-TYPE + SYNTAX INTEGER + { + red(1), + green(2), + notPresent(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "notPresent(3) means not present. green(2) means + up. red(1) means down." + ::= { switchIndivPowerEntry 3 } + +switchIndivFanTable OBJECT-TYPE + SYNTAX SEQUENCE OF SwitchIndivFanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table about status of individual fans." + ::= { switchMgt 5 } + +switchIndivFanEntry OBJECT-TYPE + SYNTAX SwitchIndivFanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table about status of individual fans." + INDEX { swIndivFanUnitIndex, swIndivFanIndex } + ::= { switchIndivFanTable 1 } + +SwitchIndivFanEntry ::= SEQUENCE +{ + swIndivFanUnitIndex Integer32, + swIndivFanIndex INTEGER, + swIndivFanStatus INTEGER +} + +swIndivFanUnitIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This is defined as swUnitIndex." + ::= { switchIndivFanEntry 1 } + +swIndivFanIndex OBJECT-TYPE + SYNTAX INTEGER (1..2) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { switchIndivFanEntry 2 } + +swIndivFanStatus OBJECT-TYPE + SYNTAX INTEGER + { + red(1), + green(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "red(1) means down. green(2) means + up. " + ::= { switchIndivFanEntry 3 } + +switchIndivAlarmTable OBJECT-TYPE + SYNTAX SEQUENCE OF SwitchIndivAlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table about status of individual alarms." + ::= { switchMgt 6 } + +switchIndivAlarmEntry OBJECT-TYPE + SYNTAX SwitchIndivAlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table about status of individual alarms." + INDEX { swIndivAlarmUnitIndex, swIndivAlarmIndex } + ::= { switchIndivAlarmTable 1 } + +SwitchIndivAlarmEntry ::= SEQUENCE +{ + swIndivAlarmUnitIndex Integer32, + swIndivAlarmIndex INTEGER, + swIndivAlarmStatus INTEGER +} + +swIndivAlarmUnitIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This is defined as swUnitIndex." + ::= { switchIndivAlarmEntry 1 } + +swIndivAlarmIndex OBJECT-TYPE + SYNTAX INTEGER (1..3) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { switchIndivAlarmEntry 2 } + +swIndivAlarmStatus OBJECT-TYPE + SYNTAX INTEGER + { + deactivated(1), + activated(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { switchIndivAlarmEntry 3 } + +switchResObj OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION "" + ::= { switchMgt 7 } + +swHashConfig OBJECT-TYPE + SYNTAX DisplayString (SIZE(16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { switchMgt 8 } + +swHashStatus OBJECT-TYPE + SYNTAX DisplayString (SIZE(16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { switchMgt 9 } + +swCpuUsage OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The CPU usage (in hundredths of a percent) at the last minute." + ::= { switchMgt 10 } + +swMemUsage OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The memory usage (percentage)." + ::= { switchMgt 11 } + +switchMacAddrUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF SwitchMacAddrUsageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table about the total of used MAC addresses entries." + ::= { switchMgt 12 } + +switchMacAddrUsageEntry OBJECT-TYPE + SYNTAX SwitchMacAddrUsageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table about the total of used MAC addresses entries." + INDEX { swMacAddrUnitIndex } + ::= { switchMacAddrUsageTable 1 } + +SwitchMacAddrUsageEntry ::= SEQUENCE +{ + swMacAddrUnitIndex Integer32, + swMacAddrUsageValue Integer32 +} + +swMacAddrUnitIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This is defined as swUnitIndex." + ::= { switchMacAddrUsageEntry 1 } + +swMacAddrUsageValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total of used MAC addresses entries." + ::= { switchMacAddrUsageEntry 2 } + +swSlotNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of interface board slots present on the device." + ::= { switchMgt 13 } + +switchMpuTable OBJECT-TYPE + SYNTAX SEQUENCE OF SwitchMpuEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of descriptive and status information about + MPUs in this system." + ::= { switchMgt 14 } + +switchMpuEntry OBJECT-TYPE + SYNTAX SwitchMpuEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about a single MPU in this system." + INDEX { swMpuIndex } + ::= { switchMpuTable 1 } + +SwitchMpuEntry ::= SEQUENCE +{ + swMpuIndex Integer32, + swMpuBootLoaderVer DisplayString, + swMpuRoleInSystem INTEGER, + swMpuSerialNumber DisplayString, + swMpuModelId INTEGER +} + +swMpuIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object identifies the MPU within the system + for which this entry contains information." + ::= { switchMpuEntry 1 } + +swMpuBootLoaderVer OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Loader version of the main board." + ::= { switchMpuEntry 2 } + +swMpuRoleInSystem OBJECT-TYPE + SYNTAX INTEGER + { + active(1), + standby(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Indicates the MPU is active(1) or standby(2) in this system." + ::= { switchMpuEntry 3 } + +swMpuSerialNumber OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..80)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Serial number of the MPU." + ::= { switchMpuEntry 4 } + +swMpuModelId OBJECT-TYPE + SYNTAX INTEGER + { + mpu192(9), + mpu384(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "MPU model identifier." + ::= { switchMpuEntry 5 } + +swHashHardware OBJECT-TYPE + SYNTAX DisplayString (SIZE(16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { switchMgt 15 } + +switchIndivAlarmOutTable OBJECT-TYPE + SYNTAX SEQUENCE OF SwitchIndivAlarmOutEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table about status of output alarms." + ::= { switchMgt 16 } + +swChassisModel OBJECT-TYPE + SYNTAX INTEGER { + dmSwitch3000(1), + dmSwitch4001(2), + dmSwitch4001L(3), + dmSwitch4001S(4), + dmSwitch4004(5), + dmSwitch4008(6), + dmSwitch4008HighSpeed(7), + dmSwitch4001NewFan(8), + dmSwitch4100(9), + objectNonexistentInModel (2000000254), + infNotAvailable (2000000255) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Chassis model for equipment" + ::= { switchMgt 17 } + +switchSessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF SwitchIndivAlarmOutEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table about CLI sessions informations." + ::= { switchMgt 18 } + +switchSessionEntry OBJECT-TYPE + SYNTAX SwitchSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about a single switch in this system." + INDEX { swSessionUnitIndex } + ::= { switchSessionTable 1 } + +SwitchSessionEntry ::= SEQUENCE +{ + swSessionUnitIndex INTEGER, + swSessionName DisplayString, + swSessionUptime DisplayString, + swSessionPid INTEGER, + swSessionSrcIP DisplayString +} + +swSessionUnitIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This is defined as swUnitIndex." + ::= { switchSessionEntry 1 } + +swSessionName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Session username." + ::= { switchSessionEntry 2 } + +swSessionUptime OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Login time and date (uptime)." + ::= { switchSessionEntry 3 } + +swSessionPid OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CLI Session Process ID." + ::= { switchSessionEntry 4 } + +swSessionSrcIP OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "IP from process that called CLI - telnet, ssh or inetd." + ::= { switchSessionEntry 5 } + +switchIndivAlarmOutEntry OBJECT-TYPE + SYNTAX SwitchIndivAlarmOutEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table about status of output alarms." + INDEX { swIndivAlarmOutUnitIndex } + ::= { switchIndivAlarmOutTable 1 } + +SwitchIndivAlarmOutEntry ::= SEQUENCE +{ + swIndivAlarmOutUnitIndex Integer32, + swIndivAlarmOutStatus INTEGER +} + +swIndivAlarmOutUnitIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This is defined as swUnitIndex." + ::= { switchIndivAlarmOutEntry 1 } + +swIndivAlarmOutStatus OBJECT-TYPE + SYNTAX INTEGER + { + deactivated(1), + activated(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Indicates current alarm output status, as configured in external-alarm-output." + ::= { switchIndivAlarmOutEntry 2 } + + +-- +-- portMgt +-- + +portTable OBJECT-TYPE + SYNTAX SEQUENCE OF PortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of descriptive and status information about + configuration of each switch port (including expansion slot) + in this system. This table also contains information + about each trunk (similar to Cisco's EtherChannel)." + ::= { portMgt 1 } + +portEntry OBJECT-TYPE + SYNTAX PortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about configuration in one switch port of the switch." + INDEX { portIndex } + ::= { portTable 1 } + +PortEntry ::= SEQUENCE +{ + portIndex Integer32, + portName DisplayString, + portType INTEGER, + portSpeedDpxCfg INTEGER, + portFlowCtrlCfg INTEGER, + portCapabilities BITS, + portAutonegotiation INTEGER, + portSpeedDpxStatus INTEGER, + portFlowCtrlStatus INTEGER, + portTrunkIndex Integer32, + portMdiStatus INTEGER +} + +portIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This is defined as ifIndex in the IF-MIB." + ::= { portEntry 1 } + +portName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..64)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Indicates the port name. This is same as + ifAlias in the IF-MIB (RFC2863 or later)." + ::= { portEntry 2 } + +portType OBJECT-TYPE + SYNTAX INTEGER + { + other(1), + hundredBaseTX(2), + hundredBaseFX(3), + thousandBaseSX(4), + thousandBaseLX(5), + thousandBaseT(6), + thousandBaseGBIC(7), + thousandBaseSfp(8), + hundredBaseFxScSingleMode(9), + hundredBaseFxScMultiMode(10), + tenG(11) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Indicates the port type." + ::= { portEntry 3 } + +portSpeedDpxCfg OBJECT-TYPE + SYNTAX INTEGER + { + reserved(1), + halfDuplex10(2), + fullDuplex10(3), + halfDuplex100(4), + fullDuplex100(5), + halfDuplex1000(6), + fullDuplex1000(7), + fullDuplex10000(8) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Set the port speed and duplex mode as follows: + halfDuplex10(2) - 10Mbps and half duplex mode + fullDuplex10(3) - 10Mbps and full duplex mode + halfDuplex100(4) - 100Mbps and half duplex mode + fullDuplex100(5) - 100Mbps and full duplex mode + halfDuplex1000(6) - 1000Mbps and half duplex mode + fullDuplex1000(7) - 1000Mbps and full duplex mode + fullDuplex10000(8) - 10000Mbps and full duplex mode + hundredBaseTX port can be set as + halfDuplex10(2) + fullDuplex10(3) + halfDuplex100(4) + fullDuplex100(5) + hundredBaseFX port can be set as + halfDuplex100(4) + fullDuplex100(5) + thousandBaseSX port can be set as + halfDuplex1000(6) + fullDuplex1000(7) + The actual operating speed and duplex of the port + is given by portSpeedDpxStatus." + DEFVAL { halfDuplex10 } + ::= { portEntry 4 } + +portFlowCtrlCfg OBJECT-TYPE + SYNTAX INTEGER + { + enabled(1), + disabled(2), + backPressure(3), + dot3xFlowControlRxTx(4), + dot3xFlowControlRx(5), + dot3xFlowControlTx(6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "(1) Flow control mechanism is enabled. + If the port type is hundredBaseTX or thousandBaseSX: + When the port is operating in halfDuplex mode, the + port uses backPressure flow control mechanism. When + the port is operating in fullDuplex mode, the port + uses IEEE 802.3x flow control mechanism. + If the port type is hundredBaseFX: + When the port is operating in halfDuplex mode, the + port uses backPressure flow control mechanism. When + the port is operating in fullDuplex mode, Flow + control mechanism will not function. + (2) Flow control mechanism is disabled. + (3) Flow control mechanism is backPressure. + when the port is in fullDuplex mode.This flow control + mechanism will not function. + (4) Flow control mechanism is IEEE 802.3x flow control. + when the port is in halfDuplex mode.This flow control + mechanism will not function. + hundredBaseTX and thousandBaseSX port can be set as: + enabled(1), + disabled(2), + backPressure(3), + dot3xFlowControl(4). + hundredBaseFX port can be set as: + enabled(1), + disabled(2), + backPressure(3). + The actual flow control mechanism is used given by + portFlowCtrlStatus." + DEFVAL { enabled } + ::= { portEntry 5 } + +portCapabilities OBJECT-TYPE + SYNTAX BITS + { + portCap10half(0), + portCap10full(1), + portCap100half(2), + portCap100full(3), + portCap1000half(4), + portCap1000full(5), + portCap10000full(6), + dot3xFlowControlRxTx(7), + dot3xFlowControlRx(8), + dot3xFlowControlTx(9) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Port capabilities." + ::= { portEntry 6 } + +portAutonegotiation OBJECT-TYPE + SYNTAX INTEGER + { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Whether autonegotiation is enabled." + ::= { portEntry 7 } + +portSpeedDpxStatus OBJECT-TYPE + SYNTAX INTEGER + { + error(1), + halfDuplex10(2), + fullDuplex10(3), + halfDuplex100(4), + fullDuplex100(5), + halfDuplex1000(6), + fullDuplex1000(7), + fullDuplex10000(8), + down(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The operating speed and duplex mode of the + switched port. If this index is a trunk, + the speed is the speed of its individual members. + If this index is a trunk and the result + is inconsistent among its member ports, this value is + error(1)." + ::= { portEntry 8 } + +portFlowCtrlStatus OBJECT-TYPE + SYNTAX INTEGER + { + error(1), + backPressure(2), + dot3xFlowControlRxTx(3), + dot3xFlowControlRx(4), + dot3xFlowControlTx(5), + disable(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "(2) BackPressure flow control machanism is used. + (3) IEEE 802.3 flow control machanism is used. + (4) Flow control mechanism is disabled. + If this index is a trunk and the result + is inconsistent among its member ports, this value is + error(1)." + ::= { portEntry 9 } + +portMdiStatus OBJECT-TYPE + SYNTAX INTEGER + { + auto(1), + normal(2), + xover(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { portEntry 10 } + +portTrunkIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The trunk to which this port belongs. A value of 0 + means that this port does not belong to any trunk. + A value greater than zero means that this port + belongs to trunk at trunkIndex, defined by the + corresponding trunkPorts." + ::= { portEntry 11 } + +-- +-- trunkMgt +-- + +trunkMaxId OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number for a trunk identifier." + ::= { trunkMgt 1 } + +trunkValidNumber OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid trunks." + ::= { trunkMgt 2 } + +trunkTable OBJECT-TYPE + SYNTAX SEQUENCE OF TrunkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of descriptive and status information about + configuration of each trunk, + similar to Cisco EtherChannel." + ::= { trunkMgt 3 } + +trunkEntry OBJECT-TYPE + SYNTAX TrunkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about configuration in one trunk of the switch." + INDEX { trunkIndex } + ::= { trunkTable 1 } + +TrunkEntry ::= SEQUENCE +{ + trunkIndex Integer32, + trunkPorts PortList, + trunkCreation INTEGER, + trunkStatus INTEGER +} + +trunkIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This object identifies the trunk within the switch + for which this entry contains information." + ::= { trunkEntry 1 } + +trunkPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The complete set of ports currently associated with + this trunk." + ::= { trunkEntry 2 } + +trunkCreation OBJECT-TYPE + SYNTAX INTEGER + { + static(1), + lacp(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value of static(1) means a statically configured trunk. + A value of lacp(2) means an LACP-configured trunk." + ::= { trunkEntry 3 } + +trunkStatus OBJECT-TYPE + SYNTAX INTEGER + { + valid(1), + invalid(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Writing this to valid(1) creates an entry. + Writing this to invalid(2) destroys an entry." + ::= { trunkEntry 4 } + +--- +--- lacpMgt +--- + +lacpPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF LacpPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table for LACP port configuration." + ::= { lacpMgt 1 } + +lacpPortEntry OBJECT-TYPE + SYNTAX LacpPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Entry for LACP port configuration." + INDEX { lacpPortIndex } + ::= { lacpPortTable 1 } + +LacpPortEntry ::= SEQUENCE +{ + lacpPortIndex Integer32, + lacpPortStatus INTEGER +} + +lacpPortIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This is defined as ifIndex in the IF-MIB." + ::= { lacpPortEntry 1 } + +lacpPortStatus OBJECT-TYPE + SYNTAX INTEGER + { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Whether 802.3ad LACP is enabled." + ::= { lacpPortEntry 2 } + +-- +-- staMgt +-- + +-- Management for Spanning Tree Algorithm (STA). +-- This has variables not already defined in the implemented +-- standard MIB(s). + +-- for 1d(STP) start +staSystemStatus OBJECT-TYPE + SYNTAX EnabledStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Global spanning tree status. + (1) Spanning tree protocol is enabled. + (2) Spanning tree protocol is disabled." + DEFVAL { enabled } + ::= { staMgt 1 } +-- for 1d(STP) end + +staPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF StaPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The table manages port settings for Spanning Tree + Protocol 802.1d, 802.1w or 802.1s depending on the + value specified by staProtocolType." + REFERENCE "IEEE 802.1d, IEEE 802.1w, IEEE 802.1s." + ::= { staMgt 2 } + +staPortEntry OBJECT-TYPE + SYNTAX StaPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The conceptual entry of staPortTable." + INDEX { staPortIndex } + ::= { staPortTable 1 } + +StaPortEntry ::= SEQUENCE +{ + staPortIndex Integer32, +-- for 1w(RSTP) start + staPortAdminEdgePort TruthValue, + staPortOperEdgePort TruthValue, + staPortAdminPointToPoint INTEGER, + staPortOperPointToPoint TruthValue, + staPortLongPathCost Integer32, + staPortSystemStatus EnabledStatus +-- for 1w(RSTP) end +} + +staPortIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The port and the trunk (excluding trunk member ports) + interface of the staPortTable. The interface identified + by a particular value of this index is the same interface + as identified by the same value of dot1dStpPort in the + BRIDGE-MIB." + ::= { staPortEntry 1 } + +-- for 1w(RSTP) start +staPortAdminEdgePort OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative value of the edge port parameter. A + value of true(1) indicates that this port should be + assumed as an edge-port and a value of false(2) indicates + that this port should be assumed as a non-edge-port." + REFERENCE + "IEEE 802.1t clause 14.8.2, 18.3.3" + ::= { staPortEntry 2 } + +staPortOperEdgePort OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational value of the edge port parameter. The object is + initialized to the value of staPortAdminEdgePort and is set false + when a BPDU is received." + REFERENCE + "IEEE 802.1t clause 14.8.2, 18.3.4" + ::= { staPortEntry 3 } + +staPortAdminPointToPoint OBJECT-TYPE + SYNTAX INTEGER + { + forceTrue(0), + forceFalse(1), + auto(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative point-to-point status of the LAN segment + attached to this port. A value of forceTrue(0) indicates that + this port should always be treated as if it is connected to + a point-to-point link. A value of forceFalse(1) indicates + that this port should be treated as having a shared media + connection. A value of auto(2) indicates that this port is + considered to have a point-to-point link if it is an Aggregator + and all of its members are aggregatable, or if the MAC entity + is configured for full duplex operation, either through + auto-negotiation or by management means." + REFERENCE + "IEEE 802.1w clause 6.4.3, 6.5, 14.8.2" + ::= { staPortEntry 4 } + +staPortOperPointToPoint OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational point-to-point status of the LAN segment + attached to this port. This indicates whether a port is + considered to have a point-to-point connection or not. + The value is determined by management or by auto-detection, + as described in the staPortAdminPointToPoint object." + REFERENCE + "IEEE 802.1w clause 6.4.3, 6.5, 14.8.2" + ::= { staPortEntry 5 } + +staPortLongPathCost OBJECT-TYPE + SYNTAX Integer32(1..200000000) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The contribution of this port to the path cost (in 32 + bits value) of paths towards the spanning tree root which + include this port. + + This object is used to configure the spanning tree port + path cost in the 32-bit value range when the + staPathCostMethod is long(2). + + If the staPathCostMethod is short(1), this mib object is not + instantiated." + ::= { staPortEntry 6 } + +staPortSystemStatus OBJECT-TYPE + SYNTAX EnabledStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Per-port spanning tree status. + (1) Spanning tree protocol is enabled. + (2) Spanning tree protocol is disabled." + DEFVAL { enabled } + ::= { staPortEntry 7 } + +staProtocolType OBJECT-TYPE + SYNTAX INTEGER { + stp(1), + rstp(2), + mstp(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "The version of Spanning Tree Protocol the bridge is currently + running. The value 'stp(1)' indicates the Spanning Tree + Protocol is as specified in IEEE 802.1D,'rstp(2)' indicates that + the Rapid Spanning Tree Protocol is as specified in IEEE + 802.1w, and the value 'mstp(3)' indicates that the Multiple Spanning + Tree Protocol is as specified in IEEE 802.1s. New values may + be defined in the future as new or updated versions of the + protocol become available." + REFERENCE + "IEEE 802.1w clause 14.8.1, 17.12, 17.16.1" + ::= { staMgt 3 } +-- for 1w(RSTP) end + +-- +-- tftpMgt +-- + +tftpFile OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..127)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The file name for TFTP transfer when a + transfer is next requested via this MIB. This value is set to + the zero length string when no file name has been specified." + ::= { tftpMgt 1 } + +tftpFlashConfig OBJECT-TYPE + SYNTAX INTEGER (1..4) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Number of flash config partition for to be used when the chosen action + is the downloadToFlashConfig or the uploadFromFlashConfig. This values is + set to the zero when no flash config has been specified." + ::= { tftpMgt 2 } + +tftpServer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The IP address of the TFTP server for transfer + when a download or upload is next requested via this MIB. + This value is set to `0.0.0.0' when no IP address has been + specified." + ::= { tftpMgt 3 } + +tftpAction OBJECT-TYPE + SYNTAX INTEGER { + downloadToFlashConfig(1), + downloadToRunningConfig(2), + downloadToStartupConfig(3), + downloadToFirmware(4), + uploadFromFlashConfig(5), + uploadFromRunningConfig(6), + uploadFromStartupConfig(7), + notDownloading(8) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When this object is set to downloadToFlashConfig(1), + the device will begin download of the file specified + by tftpFile from the server specified by tftpServer to + flash-config(specified by tftpFlashConfig) in the device + using the TFTP protocol. + When this object is set to downloadToRunningConfig(2), + the device will begin download of the file specified + by tftpFile from the server specified by tftpServer to + running-config in the device using the TFTP protocol. + When this object is set to downloadToStartupConfig(3), + the device will begin download of the file specified + by tftpFile from the server specified by tftpServer to + Startup-config in the device using the TFTP protocol. + When this object is set to downloadToFirmware(4), + the device will begin download of the file specified + by tftpFile from the server specified by tftpServer to + firmware in the device using the TFTP protocol. + When this object is set to uploadFromFlashConfig(5), + the device will begin upload of the + flash-config(specified by tftpFlashConfig) in the device + to tftpFile in the server specified by tftpServer. + When this object is set to uploadFromRunningConfig(6), + the device will begin upload of the running-config in + the device to tftpFile in the server specified by tftpServer. + When this object is set to uploadFromStartupConfig(7), + the device will begin upload of the startup-config in + the device to tftpFile in the server specified by + tftpServer. + When the device is not downloading, this object will have + a value of notDownloading(8)." + ::= { tftpMgt 4 } + + +-- +-- restartMgt +-- + +restartFirmware OBJECT-TYPE + SYNTAX INTEGER (1..2) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Number of firmware flash index for start-up." + ::= { restartMgt 1 } + +restartConfig OBJECT-TYPE + SYNTAX INTEGER (1..4) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Number of configuration flash index for start-up." + ::= { restartMgt 2 } + +restartControl OBJECT-TYPE + SYNTAX INTEGER { + running(1), + warmBoot(2), + coldBoot(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to warmBoot(2) causes the device to + restart the application software with current configuration + parameters saved in non-volatile memory. Setting this + object to coldBoot(3) causes the device to reinitialize + configuration parameters in non-volatile memory to default + values and restart the application software. When the device + is running normally, this variable has a value of + running(1)." + ::= { restartMgt 3 } + +-- +-- mirrorMgt +-- + +mirrorDestinationPort OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Destination port for mirrored packets. This is defined + as ifIndex in the IF-MIB." + ::= { mirrorMgt 1 } + +mirrorTable OBJECT-TYPE + SYNTAX SEQUENCE OF MirrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of descriptive and status information about + switches in this system." + ::= { mirrorMgt 2 } + +mirrorEntry OBJECT-TYPE + SYNTAX MirrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about a single switch in this system. " + INDEX { mirrorSourcePort } + ::= { mirrorTable 1 } + +MirrorEntry ::= SEQUENCE +{ + mirrorSourcePort Integer32, + mirrorType INTEGER +} + +mirrorSourcePort OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Source port for mirrored packets. This is defined as + ifIndex in the IF-MIB." + ::= { mirrorEntry 1 } + +mirrorType OBJECT-TYPE + SYNTAX INTEGER + { + rx(1), + tx(2), + all(3), + disable(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION "If this value is rx(1), receive packets will + be mirrored. If this value is tx(2), transmit + packets will be mirrored. If this value is all(3), + all packts will be mirrored" + ::= { mirrorEntry 2 } + + +-- +-- igmpSnoopMgt +-- + +igmpSnoopStatus OBJECT-TYPE + SYNTAX INTEGER + { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Parameter to enable or disable IGMP snooping on the device. + When enabled, the device will examine IGMP packets and set + up filters for IGMP ports. " + DEFVAL { enabled } + ::= { igmpSnoopMgt 1 } + +igmpSnoopQuerier OBJECT-TYPE + SYNTAX INTEGER + { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Whether to act as querier." + DEFVAL { enabled } + ::= { igmpSnoopMgt 2 } + +igmpSnoopQueryCount OBJECT-TYPE + SYNTAX INTEGER (2..10) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Maximum number of queries that have not been heard on the + system before the system starts taking action to solicit + reports." + DEFVAL { 2 } + ::= { igmpSnoopMgt 3 } + + +igmpSnoopQueryInterval OBJECT-TYPE + SYNTAX INTEGER (60..125) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Query interval." + DEFVAL { 125 } + ::= { igmpSnoopMgt 4 } + +igmpSnoopQueryMaxResponseTime OBJECT-TYPE + SYNTAX INTEGER (5..25) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Timeout value (seconds) between IGMP reports received on a port + for an IP Multicast Address that can pass before the system + sends an IGMP Query out the port and removes it from the + list." + DEFVAL { 10 } + ::= { igmpSnoopMgt 5 } + +igmpSnoopQueryTimeout OBJECT-TYPE + SYNTAX INTEGER (300..500) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Query time-out." + DEFVAL { 300 } + ::= { igmpSnoopMgt 6 } + +igmpSnoopVersion OBJECT-TYPE + SYNTAX INTEGER (1..2) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Version." + DEFVAL { 2 } + ::= { igmpSnoopMgt 7 } + +igmpSnoopRouterCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF IgmpSnoopRouterCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table for current router ports." + ::= { igmpSnoopMgt 8 } + +igmpSnoopRouterCurrentEntry OBJECT-TYPE + SYNTAX IgmpSnoopRouterCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry for current router ports." + INDEX { igmpSnoopRouterCurrentVlanIndex } + ::= { +igmpSnoopRouterCurrentTable 1 } + +IgmpSnoopRouterCurrentEntry ::= + SEQUENCE { + igmpSnoopRouterCurrentVlanIndex + Unsigned32, + igmpSnoopRouterCurrentPorts + PortList + } + +igmpSnoopRouterCurrentVlanIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is defined as dot1qVlanIndex in the Q-BRIDGE-MIB." + ::= { igmpSnoopRouterCurrentEntry 1 } + +igmpSnoopRouterCurrentPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The set of ports which are current router ports. + Within this list, some router ports are static router ports. + Please refer to igmpSnoopRouterStaticTable." + ::= { igmpSnoopRouterCurrentEntry 2 } + +igmpSnoopRouterStaticTable OBJECT-TYPE + SYNTAX SEQUENCE OF IgmpSnoopRouterStaticEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table for static router ports." + ::= { igmpSnoopMgt 9 } + +igmpSnoopRouterStaticEntry OBJECT-TYPE + SYNTAX IgmpSnoopRouterStaticEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry for static router ports." + INDEX { igmpSnoopRouterStaticVlanIndex } + ::= { +igmpSnoopRouterStaticTable 1 } + +IgmpSnoopRouterStaticEntry ::= + SEQUENCE { + igmpSnoopRouterStaticVlanIndex + Unsigned32, + igmpSnoopRouterStaticPorts + PortList + } + +igmpSnoopRouterStaticVlanIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is defined as dot1qVlanIndex in the Q-BRIDGE-MIB." + ::= { igmpSnoopRouterStaticEntry 1 } + +igmpSnoopRouterStaticPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of ports which are static router ports." + ::= { igmpSnoopRouterStaticEntry 2 } + +igmpSnoopMulticastCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF IgmpSnoopMulticastCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table for current multicast addresses." + ::= { igmpSnoopMgt 10 } + +igmpSnoopMulticastCurrentEntry OBJECT-TYPE + SYNTAX IgmpSnoopMulticastCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry for current multicast addresses." + INDEX { igmpSnoopMulticastCurrentVlanIndex, + igmpSnoopMulticastCurrentIpAddress } + ::= { +igmpSnoopMulticastCurrentTable 1 } + +IgmpSnoopMulticastCurrentEntry ::= + SEQUENCE { + igmpSnoopMulticastCurrentVlanIndex + Unsigned32, + igmpSnoopMulticastCurrentIpAddress + IpAddress, + igmpSnoopMulticastCurrentPorts + PortList + } + +igmpSnoopMulticastCurrentVlanIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is defined as dot1qVlanIndex in the Q-BRIDGE-MIB." + ::= { igmpSnoopMulticastCurrentEntry 1 } + +igmpSnoopMulticastCurrentIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IP address of multicast group." + ::= { igmpSnoopMulticastCurrentEntry 2 } + +igmpSnoopMulticastCurrentPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The set of ports which are members." + ::= { igmpSnoopMulticastCurrentEntry 3 } + +igmpSnoopMulticastStaticTable OBJECT-TYPE + SYNTAX SEQUENCE OF IgmpSnoopMulticastStaticEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table for static multicast addresses." + ::= { igmpSnoopMgt 11 } + +igmpSnoopMulticastStaticEntry OBJECT-TYPE + SYNTAX IgmpSnoopMulticastStaticEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry for static multicast addresses." + INDEX { igmpSnoopMulticastStaticVlanIndex, + igmpSnoopMulticastStaticIpAddress } + ::= { +igmpSnoopMulticastStaticTable 1 } + +IgmpSnoopMulticastStaticEntry ::= + SEQUENCE { + igmpSnoopMulticastStaticVlanIndex + Unsigned32, + igmpSnoopMulticastStaticIpAddress + IpAddress, + igmpSnoopMulticastStaticPorts + PortList + } + +igmpSnoopMulticastStaticVlanIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is defined as dot1qVlanIndex in the Q-BRIDGE-MIB." + ::= { igmpSnoopMulticastStaticEntry 1 } + +igmpSnoopMulticastStaticIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IP address of multicast group." + ::= { igmpSnoopMulticastStaticEntry 2 } + +igmpSnoopMulticastStaticPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of ports which are static members." + ::= { igmpSnoopMulticastStaticEntry 3 } + + +-- +-- The Probe Configuration Group +-- +-- This group controls the configuration of various operating +-- parameters of the probe. + + ipAddressMode OBJECT-TYPE + SYNTAX INTEGER + { + static(1), + dhcp(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "" + ::= { ipMgt 1 } + +ipDefaultGateway OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The IP Address of the default gateway. If this value is + undefined or unknown, it shall have the value 0.0.0.0." + ::= { ipMgt 2 } + +ipPrimaryDnsServer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The IP Address of the primary DNS server. If this value is + undefined or unknown, it shall have the value 0.0.0.0." + ::= { ipMgt 3 } + +ipSecondaryDnsServer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The IP Address of the secondary DNS server. If this value is + undefined or unknown, it shall have the value 0.0.0.0." + ::= { ipMgt 4 } + +ipHttpState OBJECT-TYPE + SYNTAX INTEGER + { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Whether HTTP is enabled." + ::= { ipMgt 5 } + +ipHttpPort OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port number for HTTP." + ::= { ipMgt 6 } + +ipHttpsState OBJECT-TYPE + SYNTAX INTEGER + { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Whether HTTPS is enabled." + ::= { ipMgt 7 } + +ipHttpsPort OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port number for HTTPS." + ::= { ipMgt 8 } + +ipTelnetState OBJECT-TYPE + SYNTAX INTEGER + { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Whether telnet is enabled." + ::= { ipMgt 9 } + +-- +-- bcastStormMgt +-- + +bcastStormTable OBJECT-TYPE + SYNTAX SEQUENCE OF BcastStormEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of descriptive and status information about + configuration of each switch ports(including expansion slot) + in this system." + ::= { bcastStormMgt 1 } + +bcastStormEntry OBJECT-TYPE + SYNTAX BcastStormEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about configuration in one switch port of the switch." + INDEX { bcastStormIfIndex } + ::= { bcastStormTable 1 } + +BcastStormEntry ::= SEQUENCE +{ + bcastStormIfIndex Integer32, + bcastStormStatus INTEGER, + bcastStormPacketRate INTEGER +} + +bcastStormIfIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This is defined as ifIndex in the IF-MIB." + ::= { bcastStormEntry 1 } + +bcastStormStatus OBJECT-TYPE + SYNTAX INTEGER + { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Whether broadcast storm protection is enabled." + ::= { bcastStormEntry 2 } + +bcastStormPacketRate OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Broadcast storm threshold as packets per second." + ::= { bcastStormEntry 3 } + +-- +-- vlanMgt +-- + +vlanTable OBJECT-TYPE + SYNTAX SEQUENCE OF VlanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table for VLAN configuration." + ::= { vlanMgt 1 } + +vlanEntry OBJECT-TYPE + SYNTAX VlanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Entry for VLAN configuration." + INDEX { vlanIndex } + ::= { vlanTable 1 } + +VlanEntry ::= SEQUENCE +{ + vlanIndex Unsigned32, + vlanAddressMethod INTEGER +} + +vlanIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Same is dot1qVlanIndex in the Q-BRIDGE-MIB. + This table has only one entry - the entry for + the VLAN of the management interface." + ::= { vlanEntry 1 } + +vlanAddressMethod OBJECT-TYPE + SYNTAX INTEGER + { + user(1), + dhcp(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Method to get the IP address." + ::= { vlanEntry 2 } + +-- +-- priorityMgt +-- + +prioWrrTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrioWrrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table for weighted round robin (WRR)." + ::= { priorityMgt 1 } + +prioWrrEntry OBJECT-TYPE + SYNTAX PrioWrrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Entry for weighted round robin (WRR)." + INDEX { prioWrrTrafficClass } + ::= { prioWrrTable 1 } + +PrioWrrEntry ::= SEQUENCE +{ + prioWrrTrafficClass INTEGER, + prioWrrWeight INTEGER +} + +prioWrrTrafficClass OBJECT-TYPE + SYNTAX INTEGER (0..7) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Traffic class for this entry, as defined in + dot1dTrafficClass in the Q-BRIDGE-MIB. The actual + maximum depends on the hardware, and is + equal to dot1dPortNumTrafficClasses-1." + ::= { prioWrrEntry 1 } + +prioWrrWeight OBJECT-TYPE + SYNTAX INTEGER (1..31) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Weight for this entry." + ::= { prioWrrEntry 2 } + +prioQueueMode OBJECT-TYPE + SYNTAX INTEGER { + wrr(1), + strict(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "The global status for the prioQueue. + wrr(1),strict(2)" + ::= { priorityMgt 2 } + +-- +-- trapDestMgt +-- + +trapDestTable OBJECT-TYPE + SYNTAX SEQUENCE OF TrapDestEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of trap destination entries." + ::= { trapDestMgt 1 } + +trapDestEntry OBJECT-TYPE + SYNTAX TrapDestEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry includes a destination IP address to which to send + traps for this community." + INDEX { trapDestAddress } + ::= { trapDestTable 1 } + +TrapDestEntry ::= SEQUENCE { + trapDestAddress IpAddress, + trapDestCommunity OCTET STRING, + trapDestStatus INTEGER, + trapDestVersion INTEGER +} + +trapDestAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address to send traps." + ::= { trapDestEntry 1 } + +trapDestCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..31)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A community to which this destination address belongs." + ::= { trapDestEntry 2 } + +trapDestStatus OBJECT-TYPE + SYNTAX INTEGER + { + valid(1), + invalid(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Writing this to valid(1) creates an entry. + Writing this to invalid(2) destroys an entry." + ::= { trapDestEntry 3 } + +trapDestVersion OBJECT-TYPE + SYNTAX INTEGER + { + version1(1), + version2(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variables represent the version of the Trap we wish to send to trap Receiver, + if the value is 1, mean we wish to send Version 1 trap, if the value is 2, + mean we wish to send version 2 trap." + ::= { trapDestEntry 4} + +-- trapVar is for binding variables for traps, there is no value when +-- no trap is sent. +trapVar OBJECT IDENTIFIER ::= { trapDestMgt 2 } + +trapForbiddenAccessMode OBJECT-TYPE + SYNTAX INTEGER + { + web(1), + snmp(2), + telnet(3), + ssh(4) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicated the ipfilter reject mode. + web(1), + snmp(2), + telnet(3), + ssh(4)." + ::= { trapVar 1 } + +trapForbiddenAccessIp OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the IP address that rejected by the ipfilter." + ::= { trapVar 2 } + +trapLoginUserName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the name used by user to logging." + ::= { trapVar 3 } + +trapConfigSavePartition OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the partition witch the config was saved." + ::= { trapVar 4 } + +trapSfpPresenceStatus OBJECT-TYPE + SYNTAX INTEGER + { + absentee(1), + present(2) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the presence status of a sfp connector." + ::= { trapVar 5 } + +trapInfAlarmVal OBJECT-TYPE + SYNTAX INTEGER + { + deactivated(1), + activated(2), + unstable(3) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the alarm value. + deactivated(1), + actived(2), + unstable(3)." + ::= { trapVar 6 } + +trapDuplicatedIpVlan OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the vlan witch the duplicated ip was detected." + ::= { trapVar 7 } + +trapDuplicatedIpAddress OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the duplicated ip address." + ::= { trapVar 8 } + +trapDuplicatedIpMacAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the mac address of the device that has the duplicated ip." + ::= { trapVar 9 } + +trapEapsDomainName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the eaps domain name." + ::= { trapVar 10 } + +trapEapsDomainId OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the eaps domain identifier." + ::= { trapVar 11 } + +trapEapsStatus OBJECT-TYPE + SYNTAX INTEGER + { + idle(0), + complete(1), + failed(2), + links-up(3), + links-down(4), + pre-forwarding(5) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the eaps status. + idle(0), + complete(1), + failed(2), + links-up(3), + links-down(4), + pre-forwarding(5)." + ::= { trapVar 12 } + +trapTemperature OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the temperature in degrees Celsius." + ::= { trapVar 13 } + +trapFuseId OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the fuse indentifier." + ::= { trapVar 14 } + +trapFuseStatus OBJECT-TYPE + SYNTAX INTEGER + { + normal(1), + failed(2) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the fuse status. + normal(1), + failed(2)." + ::= { trapVar 15 } + +trapFansBoardPresenceStatus OBJECT-TYPE + SYNTAX INTEGER + { + absentee(1), + present(2) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the presence status of the fans board." + ::= { trapVar 16 } + +trapStandbyMpuPresenceStatus OBJECT-TYPE + SYNTAX INTEGER + { + absentee(1), + present(2) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the presence status of the standby MPU." + ::= { trapVar 17 } + +trapMacAddressMove OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the MAC address of the device that has moved." + ::= { trapVar 18 } + +trapMemFree OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the total memory free(in Kbytes)." + ::= { trapVar 19 } + +trapBootloaderNew OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the installed bootloader version." + ::= { trapVar 20 } + +trapDevNo OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the Dev no of equipment." + ::= { trapVar 21 } + +trapDevLocalId OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the Serial number of remote equipment." + ::= { trapVar 22 } + +trapCesopTdmStatus OBJECT-TYPE + SYNTAX INTEGER + { + ok(0), + los(1), + ais(2), + lof(3) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of TDM interface." + ::= { trapVar 23 } + +trapCesopTdmRemoteStatus OBJECT-TYPE + SYNTAX INTEGER + { + ok(0), + ralm(5) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of remote TDM interface." + ::= { trapVar 24 } + +trapCesopTdmCasStatus OBJECT-TYPE + SYNTAX INTEGER + { + ok(0), + lom(4) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of CAS TDM interface." + ::= { trapVar 25 } + +trapCesopTdmCrcStatus OBJECT-TYPE + SYNTAX INTEGER + { + ok(0), + crc(6) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of CRC TDM interface." + ::= { trapVar 26 } + +trapCesopBundleLocalTdmStatus OBJECT-TYPE + SYNTAX INTEGER + { + ok(0), + fail(1), + rdi(2) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of Local TDM in bundle interface." + ::= { trapVar 27 } + +trapCesopBundleRemoteTdmStatus OBJECT-TYPE + SYNTAX INTEGER + { + ok(0), + fail(1), + rdi(2) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of Remote TDM in bundle interface." + ::= { trapVar 28 } + +trapCesopBundleLocalStatus OBJECT-TYPE + SYNTAX INTEGER + { + ok(0), + fail(1) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of Local bundle interface." + ::= { trapVar 29 } + +trapCesopBundleRemoteStatus OBJECT-TYPE + SYNTAX INTEGER + { + ok(0), + fail(1) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of Remote bundle interface." + ::= { trapVar 30 } + +trapCesopBundlePktMismatchStatus OBJECT-TYPE + SYNTAX INTEGER + { + ok(0), + mismatch(3) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of packet mismatch in bundle interface." + ::= { trapVar 31 } + +trapCesopBundleNextHopStatus OBJECT-TYPE + SYNTAX INTEGER + { + up(0), + down(4) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of Next Hop in bundle interface." + ::= { trapVar 32 } + +trapCesopClockAdapLinkQuality OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the Adaptative link quality of clock interface." + ::= { trapVar 33 } + +trapCesopClockSourceStatus OBJECT-TYPE + SYNTAX INTEGER + { + ok(0), + out-of-limits(1) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of Clock Source interface." + ::= { trapVar 34 } + +trapBroadcastStormControlStatus OBJECT-TYPE + SYNTAX INTEGER + { + ok(1), + out-of-limits(2) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of broadcsat storm control at this +interface." + ::= { trapVar 35 } + + +trapBroadcastStormControlPPS OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, indicating the current average count of + broadcast packets per second at this interface." + ::= { trapVar 36 } + +trapMulticastStormControlStatus OBJECT-TYPE + SYNTAX INTEGER + { + ok(1), + out-of-limits(2) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of multicsat storm control at this +interface." + ::= { trapVar 37 } + +trapMulticastStormControlPPS OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the current average count of multicast packets per second at this interface." + ::= { trapVar 38 } + +trapStatusLDP OBJECT-TYPE + SYNTAX INTEGER + { + up(1), + down(2), + delete(3) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + + indicating the status of condition the protocol LDP." + ::= { trapVar 39 } + +trapIdLDP OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + + indicating the entity identification the protocol LDP." + ::= { trapVar 40 } + +trapStatusTunnelRSVP OBJECT-TYPE + SYNTAX INTEGER + { + up(1), + down(2), + deleted(3), + rerouted(4) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of condition tunnel on protocol RSVP." + ::= { trapVar 41 } + +trapIdTunnelRSVP OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the entity identification the tunnel on protocol RSVP." + ::= { trapVar 42 } + +trapPanelStatus OBJECT-TYPE + SYNTAX INTEGER + { + closed(1), + open(2) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the panel status. + closed(1), + open(2)" + ::= { trapVar 43 } + + +trapLSTGroup OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the Link-state Tracking Group." + ::= { trapVar 44 } + +trapMemL3Free OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the total L3 memory free(in Kbytes)." + ::= { trapVar 45 } + +trapActiveMpuNsfId OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the active mpu nsf-id." + ::= { trapVar 46 } + +trapStandByMpuNsfId OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the standby mpu nsf-id." + ::= { trapVar 47 } + +trapErpsDomainName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the erps domain name." + ::= { trapVar 48 } + +trapErpsDomainId OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the erps domain identifier." + ::= { trapVar 49 } + +trapErpsStatus OBJECT-TYPE + SYNTAX INTEGER + { + init(1), + idle(2), + protection(3) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the erps status. + init(1), + idle(2), + protection(3)." + ::= { trapVar 50 } + +trapCfmMdName OBJECT-TYPE + SYNTAX DisplayString(SIZE(1..42)) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the Maintenance Domain (MD) name that originated + the trap." + ::= { trapVar 51 } + +trapCfmMaName OBJECT-TYPE + SYNTAX DisplayString(SIZE(1..44)) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the Maintenance Association (MA) name that originated + the trap." + ::= { trapVar 52 } + +trapCfmMepId OBJECT-TYPE + SYNTAX INTEGER (1..8192) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the Maintenance End Point ID (MEPID) that + originated the trap." + ::= { trapVar 53 } + +trapCfmVlan OBJECT-TYPE + SYNTAX INTEGER (1..4094) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the VLAN that originated the trap." + ::= { trapVar 54 } + +trapCfmDefect OBJECT-TYPE + SYNTAX INTEGER + { + defNone(0), + defRDICCM(1), + defMACstatus(2), + defRemoteCCM(3), + defErrorCCM(4), + defXconCCM(5) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the defect condition being notified . + defNone(0), + defRDICCM(1), + defMACstatus(2), + defRemoteCCM(3), + defErrorCCM(4), + defXconCCM(5)." + ::= { trapVar 55 } + +trapEvcName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the EVC name." + ::= { trapVar 56 } + +trapEvcStatus OBJECT-TYPE + SYNTAX INTEGER + { + notActive(0), + newAndNotActive(1), + active(2), + newAndActive(3), + partiallyActive(4), + newAndPartiallyActive(5) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of EVC being notified, + notActive(0), + newAndNotActive(1), + active(2), + newAndActive(3), + partiallyActive(4), + newAndPartiallyActive(5)." + ::= { trapVar 57 } + +trapSyncSystemClockStatus OBJECT-TYPE + SYNTAX INTEGER + { + freerun(1), + holdover(2), + acquiring(3), + locked(4) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of system clock" + ::= { trapVar 58 } + +trapCesopG704ClockSourceStatus OBJECT-TYPE + SYNTAX INTEGER + { + dontcare(7), + locked(9), + fail(10) + } + + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the status of g704 clock source." + ::= { trapVar 59 } + +trapSystemWarningsUnits OBJECT-TYPE + SYNTAX INTEGER + { + sysWarUnitsHsEnNoError(1), + sysWarUnitsHsEnWES(2), + sysWarUnitsHsEnWHSDis(3), + sysWarUnitsHsEnWDifMod(4) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable is for trap var binding, + indicating the system warnings units." + ::= { trapVar 60 } + +trapSensorGroup OBJECT-TYPE + SYNTAX INTEGER { + boardSensors(1), + chipsetSensors(2) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION "This variable indicates the sensor's type informed in notification." + ::= { trapVar 61 } + +-- +-- rateLimitMgt +-- + +rateLimitPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF RateLimitPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table for rate limit of each port." + ::= { rateLimitMgt 1 } + +rateLimitPortEntry OBJECT-TYPE + SYNTAX RateLimitPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Entry for rate limit of each port." + INDEX { rlPortIndex } + ::= { rateLimitPortTable 1 } + + +RateLimitPortEntry ::= SEQUENCE +{ + rlPortIndex Integer32, + rlPortInputStatus EnabledStatus, + rlPortOutputStatus EnabledStatus, + rlPortInputRate Integer32, + rlPortInputBurst Integer32, + rlPortOutputRate Integer32, + rlPortOutputBurst Integer32 +} + +rlPortIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The port and the trunk (including trunk member) interface of + the portTable. The interface identified by a particular value + of this index is the same interface as identified by the same + value of ifIndex in the IF-MIB." + ::= { rateLimitPortEntry 1 } + +rlPortInputStatus OBJECT-TYPE + SYNTAX INTEGER + { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Whether input rate limit is enabled for this port." + ::= { rateLimitPortEntry 2 } + +rlPortOutputStatus OBJECT-TYPE + SYNTAX INTEGER + { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Whether output rate limit is enabled for this port." + ::= { rateLimitPortEntry 3 } + +--same as rlPortInputLimit, special for LEO_X 's chip +rlPortInputRate OBJECT-TYPE + SYNTAX Integer32(64..1000000) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Rate-limit in kilobits per second. Must be multiple of 64." + ::= { rateLimitPortEntry 4 } + +rlPortInputBurst OBJECT-TYPE + SYNTAX Integer32(32..4096) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Maximum burst size in kilobits. Must be power of 2." + ::= { rateLimitPortEntry 5 } + +--same as rlPortOutputLimit, special for LEO_X 's chip +rlPortOutputRate OBJECT-TYPE + SYNTAX Integer32(64..1000000) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Rate-limit in kilobits per second. Must be multiple of 64." + ::= { rateLimitPortEntry 6 } + +rlPortOutputBurst OBJECT-TYPE + SYNTAX Integer32(32..4096) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Maximum burst size in kilobits. Must be power of 2." + ::= { rateLimitPortEntry 7 } + + +-- +-- securityMgt +-- + +radiusMgt OBJECT IDENTIFIER ::= { securityMgt 1 } +sshMgt OBJECT IDENTIFIER ::= { securityMgt 2 } +ipFilterMgt OBJECT IDENTIFIER ::= { securityMgt 3 } + + +-- radiusMgt +radiusServerPortNumber OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "IP port number of RADIUS server." + ::= { radiusMgt 2 } +radiusServerKey OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Key for RADIUS. This variable can only be written. + When this variable is read, it always returns a + zero-length string. when this variable is written, + it's max length is 48 characters." + ::= { radiusMgt 3 } + +radiusServerRetransmit OBJECT-TYPE + SYNTAX INTEGER (1..30) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Maximum number of retransmissions for RADIUS." + ::= { radiusMgt 4 } + +radiusServerTimeout OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Timeout for RADIUS." + ::= { radiusMgt 5 } + +radiusMultipleServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusMultipleServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The table for multiple RADIUS server." + ::= { radiusMgt 7 } + +radiusMultipleServerEntry OBJECT-TYPE + SYNTAX RadiusMultipleServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The conceptual row for radiusMultipleServerTable." + INDEX { radiusMultipleServerIndex } + ::= { radiusMultipleServerTable 1 } + +RadiusMultipleServerEntry ::= SEQUENCE +{ + radiusMultipleServerIndex Integer32, + radiusMultipleServerAddress IpAddress, + radiusMultipleServerPortNumber Integer32, + radiusMultipleServerKey DisplayString, + radiusMultipleServerRetransmit INTEGER, + radiusMultipleServerTimeout INTEGER, + radiusMultipleServerStatus ValidStatus +} + +radiusMultipleServerIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The RADIUS multiple server index." + ::= { radiusMultipleServerEntry 1 } + +radiusMultipleServerAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION "IP address of a multiple RADIUS server. + IP address will be set to system default value(e.g. 10.1.0.1) + after creates an entry first by setting radiusMultipleServerStatus to valid. + " + ::= { radiusMultipleServerEntry 2 } + +radiusMultipleServerPortNumber OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "IP port number of a multiple RADIUS server." + ::= { radiusMultipleServerEntry 3 } + +radiusMultipleServerKey OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Key for RADIUS. This variable can only be written. + When this variable is read, it always returns a + zero-length string. when this variable is written, + it's max length is 48 characters." + ::= { radiusMultipleServerEntry 4 } + +radiusMultipleServerRetransmit OBJECT-TYPE + SYNTAX INTEGER (1..30) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Maximum number of retransmissions for RADIUS." + ::= { radiusMultipleServerEntry 5 } + +radiusMultipleServerTimeout OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Timeout for RADIUS." + ::= { radiusMultipleServerEntry 6} + +radiusMultipleServerStatus OBJECT-TYPE + SYNTAX ValidStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Setting this to valid(1) creates an entry. + Setting this to invalid(2) destroys an entry." + ::= { radiusMultipleServerEntry 8 } +-- +-- sshMgt +-- + +-- Management for Secure Shell Configuration + +sshServerStatus OBJECT-TYPE + SYNTAX EnabledStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION "The status of Secure Shell Server. Set this value to + enabled(1) to enable SSH server, set this value to + disabled(2) to disable the SSH server." + ::= { sshMgt 1 } + +sshServerMajorVersion OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The major version of the SSH Server." + ::= { sshMgt 2 } + +sshServerMinorVersion OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The minor version of the SSH Server." + ::= { sshMgt 3 } + +sshTimeout OBJECT-TYPE + SYNTAX INTEGER(1..120) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION "The time interval that the router waits for the SSH + client to respond. The range is 1-120." + ::= { sshMgt 4 } + +sshKeySize OBJECT-TYPE + SYNTAX INTEGER(512..896) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "The SSH server key size." + ::= { sshMgt 5 } + +sshRsaHostKey OBJECT-TYPE + SYNTAX KeySegment + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The RSA host key." + ::= { sshMgt 6 } + +sshDsaHostKey OBJECT-TYPE + SYNTAX KeySegment + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The DSA host key." + ::= { sshMgt 7 } + +sshHostKeyGenAction OBJECT-TYPE + SYNTAX INTEGER + { + noGen(1), + genRsaKey(2), + genDsaKey(3), + genBothKeys(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "This variable is for host key generating. + + For the set behavior: + Set it to genRsaKey(2) to generate the RSA host key, + and to genDsaKey(3) to generate the DSA host key, + if genBothKeys(4) is set, both RSA and DSA host key are + generated. + + For the get behavior: + You will get genRsaKey(2), genDsaKey(3) or + genBothKeys(4) when the key gen action is in progress. + otherwise, you will get noGen(1)." + ::= { sshMgt 8 } + +sshHostKeyDelAction OBJECT-TYPE + SYNTAX INTEGER + { + noDel(1), + delRsaKey(2), + delDsaKey(3), + delBothKeys(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "To delete the host key. + + For the set behavior: + Set it to delRsaKey(2) to delete the RSA host key, + to delDsaKey(3) to delete the DSA host key, + or to delBothKeys(4) to delete both RSA and DSA host key. + + For the get behavior: + You will get delRsaKey(2), delDsaKey(3) or delBothKeys(4) + when the delete operation is in progress. + Otherwise, you will get noDel(1)." + ::= { sshMgt 9 } + + +-- +-- ipFilterMgt +-- + +--ipFilterSnmpTable +ipFilterSnmpTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpFilterSnmpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of IP address entries." + ::= { ipFilterMgt 1 } + +ipFilterSnmpEntry OBJECT-TYPE + SYNTAX IpFilterSnmpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry includes an IP address range which the system + will allow to connect to this device through SNMP." + INDEX { ipFilterSnmpAddress, ipFilterSnmpMask } + ::= { ipFilterSnmpTable 1 } + +IpFilterSnmpEntry ::= SEQUENCE { + ipFilterSnmpAddress IpAddress, + ipFilterSnmpMask IpAddress, + ipFilterSnmpStatus ValidStatus + } + +ipFilterSnmpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The start IP address." + ::= { ipFilterSnmpEntry 1 } + +ipFilterSnmpMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The IP mask." + ::= { ipFilterSnmpEntry 2 } + +ipFilterSnmpStatus OBJECT-TYPE + SYNTAX ValidStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Setting this to valid(1) creates an entry. + Setting this to invalid(2) destroys an entry." + ::= { ipFilterSnmpEntry 3 } + +--ipFilterHTTPTable +ipFilterHTTPTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpFilterHTTPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of IP address entries." + ::= { ipFilterMgt 2 } + +ipFilterHTTPEntry OBJECT-TYPE + SYNTAX IpFilterHTTPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry includes an IP address range which the system + will allow to connect to this device through SNMP." + INDEX { ipFilterHTTPAddress,ipFilterHTTPMask } + ::= { ipFilterHTTPTable 1 } + +IpFilterHTTPEntry ::= SEQUENCE { + ipFilterHTTPAddress IpAddress, + ipFilterHTTPMask IpAddress, + ipFilterHTTPStatus ValidStatus +} + +ipFilterHTTPAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The start IP address." + ::= { ipFilterHTTPEntry 1 } + +ipFilterHTTPMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The IP mask." + ::= { ipFilterHTTPEntry 2 } + +ipFilterHTTPStatus OBJECT-TYPE + SYNTAX ValidStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Setting this to valid(1) creates an entry. + Setting this to invalid(2) destroys an entry." + ::= { ipFilterHTTPEntry 3 } + +--ipFilterTelnetTable +ipFilterTelnetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpFilterTelnetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of IP address entries." + ::= { ipFilterMgt 3 } + +ipFilterTelnetEntry OBJECT-TYPE + SYNTAX IpFilterTelnetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry includes an IP address range which the system + will allow them to connect to this device through SNMP." + INDEX { ipFilterTelnetAddress,ipFilterTelnetMask } + ::= { ipFilterTelnetTable 1 } + +IpFilterTelnetEntry ::= SEQUENCE { + ipFilterTelnetAddress IpAddress, + ipFilterTelnetMask IpAddress, + ipFilterTelnetStatus ValidStatus +} + +ipFilterTelnetAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The start IP address." + ::= { ipFilterTelnetEntry 1 } + +ipFilterTelnetMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The IP mask." + ::= { ipFilterTelnetEntry 2 } + +ipFilterTelnetStatus OBJECT-TYPE + SYNTAX ValidStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Setting this to valid(1) creates an entry. + Setting this to invalid(2) destroys an entry." + ::= { ipFilterTelnetEntry 3 } + +--ipFilterSSHTable +ipFilterSSHTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpFilterSSHEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of IP address entries." + ::= { ipFilterMgt 4 } + +ipFilterSSHEntry OBJECT-TYPE + SYNTAX IpFilterSSHEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry includes an IP address range which the system + will allow them to connect to this device through SNMP." + INDEX { ipFilterSSHAddress,ipFilterSSHMask } + ::= { ipFilterSSHTable 1 } + +IpFilterSSHEntry ::= SEQUENCE { + ipFilterSSHAddress IpAddress, + ipFilterSSHMask IpAddress, + ipFilterSSHStatus ValidStatus +} + +ipFilterSSHAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The start IP address." + ::= { ipFilterSSHEntry 1 } + +ipFilterSSHMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The IP mask." + ::= { ipFilterSSHEntry 2 } + +ipFilterSSHStatus OBJECT-TYPE + SYNTAX ValidStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Setting this to valid(1) creates an entry. + Setting this to invalid(2) destroys an entry." + ::= { ipFilterSSHEntry 3 } + +-- +-- sysLogMgt +-- + +sysLogStatus OBJECT-TYPE + SYNTAX INTEGER + { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Whether system log is enabled." + ::= { sysLogMgt 1 } + +sysLogHistoryFlashLevel OBJECT-TYPE + SYNTAX INTEGER (0..7) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Severity level for logging to flash." + ::= { sysLogMgt 2 } + +sysLogHistoryRamLevel OBJECT-TYPE + SYNTAX INTEGER (0..7) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Severity level for logging to RAM." + ::= { sysLogMgt 3 } + +remoteLogMgt OBJECT IDENTIFIER ::= { sysLogMgt 6 } + +remoteLogStatus OBJECT-TYPE + SYNTAX EnabledStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Whether the remote log system is enabled." + ::= { remoteLogMgt 1 } + +remoteLogLevel OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Severity level for remote log." + ::= { remoteLogMgt 2 } + +remoteLogFacilityType OBJECT-TYPE + SYNTAX INTEGER + { + localUse0(16), + localUse1(17), + localUse2(18), + localUse3(19), + localUse4(20), + localUse5(21), + localUse6(22), + localUse7(23) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION " The FacilityType for remote log." + ::= { remoteLogMgt 3 } + +remoteLogServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF RemoteLogServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A Table for storing the remote log Server list." + ::= { remoteLogMgt 4 } + +remoteLogServerEntry OBJECT-TYPE + SYNTAX RemoteLogServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A conceptually row for remoteLogServerTable." + INDEX { remoteLogServerIp } + ::= { remoteLogServerTable 1 } + +RemoteLogServerEntry ::= SEQUENCE +{ + remoteLogServerIp IpAddress, + remoteLogServerStatus ValidStatus +} + +remoteLogServerIp OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The IP address of the remote log Server." + ::= { remoteLogServerEntry 1 } + +remoteLogServerStatus OBJECT-TYPE + SYNTAX ValidStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Setting this to valid(1) creates an entry. + Setting this to invalid(2) destroys an entry." + ::= { remoteLogServerEntry 2 } + + +-- +-- sysTimeMgt +-- + +sntpMgt OBJECT IDENTIFIER ::= { sysTimeMgt 1 } + +sntpStatus OBJECT-TYPE + SYNTAX INTEGER + { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Set enabled(1) to enable the SNTP, set disabled(2) to disable + the SNTP." + ::= { sntpMgt 1 } + +sntpPollInterval OBJECT-TYPE + SYNTAX Integer32(16..16384) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Polling interval." + ::= { sntpMgt 2 } + +sntpServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF SntpServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table for SNTP servers" + ::= { sntpMgt 3 } + +sntpServerEntry OBJECT-TYPE + SYNTAX SntpServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Entry for SNTP servers." + INDEX { sntpServerIp } + ::= { sntpServerTable 1 } + +SntpServerEntry ::= SEQUENCE +{ + sntpServerIp IpAddress, + sntpServerStatus ValidStatus + +} + +sntpServerIp OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The IP address of a server." + ::= { sntpServerEntry 1 } + +sntpServerStatus OBJECT-TYPE + SYNTAX ValidStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Setting this to valid(1) creates an entry. + Setting this to invalid(2) destroys an entry." + ::= { sntpServerEntry 2 } + + +sysCurrentTime OBJECT-TYPE + SYNTAX DisplayString(SIZE(20)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "It is a text string in the following form, based on Unix: + 'Mmm _d hh:mm:ss yyyy'. 'Mmm' is the first three letters + of the English name of the month. '_d' is the day of month. + A single-digit day is preceded by the space. 'hh:mm:ss' is + a 24-hour representations of hours, minutes, and seconds. + A single-digit hour is preceded by a zero. 'yyyy' is the + four-digit year. An example is: 'Jan 1 02:03:04 2002'." + ::= { sysTimeMgt 2 } + +sysTimeZone OBJECT-TYPE + SYNTAX DisplayString(SIZE(6)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "It is a text string in the following form: '[s]hh:mm'. + '[s]' is a plus-or-minus sign. For UTC, this is omitted. + For a positive offset, this is '+'. For a negative offset, + this is '-'. 'hh:mm' in the hour and minute offset from UTC. + A single-digit hour is preceded by a zero." + ::= { sysTimeMgt 3 } + +sysTimeZoneName OBJECT-TYPE + SYNTAX DisplayString(SIZE(0..30)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION "The name of the time zone." + ::= { sysTimeMgt 4 } + +-- +-- fileMgt +-- + +-- This mangement performs the display and delete operation. + + +fileInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF FileInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table contain the information of the file system; + we can also perform the delete, set startup file operation." + + ::= { fileMgt 1 } + +fileInfoEntry OBJECT-TYPE + SYNTAX FileInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A conceptually row for fileInfoTable." + INDEX {fileInfoUnitID, fileInfoFileIndex} + ::= { fileInfoTable 1 } + +FileInfoEntry ::= SEQUENCE + { + fileInfoUnitID Integer32, + fileInfoFileIndex Integer32, + fileInfoFlashId Integer32, + fileInfoFileName DisplayString, + fileInfoFileType INTEGER, + fileInfoIsStartUp TruthValue, + fileInfoFileSize Integer32, + fileInfoCreationTime DisplayString, + fileInfoDelete INTEGER + } + +fileInfoUnitID OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The switch unit in a stacking system, in a + non-stacking system, this value is always 1." + ::= { fileInfoEntry 1 } + +fileInfoFileIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "" + ::= { fileInfoEntry 2 } + +fileInfoFlashId OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { fileInfoEntry 3 } + +fileInfoFileName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The file Name of the file System in the device." + ::= { fileInfoEntry 4 } + +fileInfoFileType OBJECT-TYPE + SYNTAX INTEGER + { + firmware(1), + config(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The file type of the file System in the device." + ::= { fileInfoEntry 5 } + +fileInfoIsStartUp OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION "This flag indicate whether this file is a startup file. Set this + object to true(1) to indicate that this is a startup file. Setting this + object to false(2) is a invalid operation." + ::= { fileInfoEntry 6 } + +fileInfoFileSize OBJECT-TYPE + SYNTAX Integer32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The sizes (in bytes) of the file." + ::= { fileInfoEntry 7 } + +fileInfoCreationTime OBJECT-TYPE + SYNTAX DisplayString(SIZE(20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The creation time of the file, This is a text string in the + following form, based on Unix: 'Mmm _d hh:mm:ss yyyy'. 'Mmm' + are the first three letters of the English name of the month. + '_d' is the day of month. A single-digit day is preceded by + a space. 'hh:mm:ss' is a 24-hour representations of hours, + minutes, and seconds. A single-digit hour is preceded by a + zero. 'yyyy' is the four-digit year. An example is: + 'Jan 1 02:03:04 2002'." + ::= { fileInfoEntry 8 } + +fileInfoDelete OBJECT-TYPE + SYNTAX INTEGER + { + noDelete(1), + delete(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Write this object to delete(2) to delete a file, when + read, this always return noDelete(1)." + ::= { fileInfoEntry 9 } + +-- +-- trap definitions +-- + + dmSwitchTraps OBJECT IDENTIFIER ::= { dmSwitchNotifications 1 } + dmSwitchTrapsPrefix OBJECT IDENTIFIER ::= { dmSwitchTraps 0 } + + swLoginFailTrap NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapLoginUserName } + STATUS current + DESCRIPTION "This trap is sent when an user try logging with a + incorrect username or password." + ::= { dmSwitchTrapsPrefix 40001 } + + swLoginSucessTrap NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapLoginUserName } + STATUS current + DESCRIPTION "This trap is sent when an user get logging." + ::= { dmSwitchTrapsPrefix 40002 } + + swStackAttachTrap NOTIFICATION-TYPE + OBJECTS { swUnitIndex, swSerialNumber } + STATUS current + DESCRIPTION "This trap is sent when a device is attached in stack." + ::= { dmSwitchTrapsPrefix 40003 } + + swStackDetachTrap NOTIFICATION-TYPE + OBJECTS { swUnitIndex, swSerialNumber } + STATUS current + DESCRIPTION "This trap is sent when a device is detached from stack." + ::= { dmSwitchTrapsPrefix 40004 } + + swForbiddenAccessTrap NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapForbiddenAccessMode, trapForbiddenAccessIp } + STATUS current + DESCRIPTION "This trap is sent when an incorrect IP address is rejected by + the ipfilter." + ::= { dmSwitchTrapsPrefix 40005 } + + swSfpPresenceTrap NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId, trapSfpPresenceStatus } + STATUS current + DESCRIPTION "This trap is sent when a sfp conector is taken off or placed." + ::= { dmSwitchTrapsPrefix 40006 } + + swConfigChangeTrap NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when the device's config change." + ::= { dmSwitchTrapsPrefix 40007 } + + swConfigSaveTrap NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapConfigSavePartition } + STATUS current + DESCRIPTION "This trap is sent when the device's config is saved." + ::= { dmSwitchTrapsPrefix 40008 } + + swFanStatusChangeTrap NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, swIndivFanUnitIndex, swIndivFanIndex, swIndivFanStatus } + STATUS current + DESCRIPTION "This trap is sent when the status of one fan changes." + ::= { dmSwitchTrapsPrefix 40009 } + + swTrapsLostTrap NOTIFICATION-TYPE + STATUS current + DESCRIPTION "This trap is sent when one or more traps are discarded." + ::= { dmSwitchTrapsPrefix 40010 } + + swPowerStatusChangeTrap NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, swIndivPowerUnitIndex, swIndivPowerIndex, swIndivPowerStatus } + STATUS current + DESCRIPTION "This trap is sent when the status of one PSU changes." + ::= { dmSwitchTrapsPrefix 40011 } + + swAlarmTrap NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, swIndivAlarmUnitIndex, swIndivAlarmIndex, swIndivAlarmStatus } + STATUS current + DESCRIPTION "This trap is sent when the status of one alarm changes." + ::= { dmSwitchTrapsPrefix 40012 } + + swDuplicatedIp NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapDuplicatedIpVlan,trapDuplicatedIpAddress,trapDuplicatedIpMacAddress } + STATUS current + DESCRIPTION "This trap is sent when a duplicate ip is detected." + ::= { dmSwitchTrapsPrefix 40013 } + + swLoopbackOnPortDetected NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, portIndex } + STATUS current + DESCRIPTION "This trap is sent when a loopback on port is detected." + ::= { dmSwitchTrapsPrefix 40014 } + + swLoopbackOnPortNoMoreDetected NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, portIndex } + STATUS current + DESCRIPTION "This trap is sent when a loopback on port is no more detected." + ::= { dmSwitchTrapsPrefix 40015 } + + swUnidirLinkDetected NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, portIndex } + STATUS current + DESCRIPTION "This trap is sent when a unidirectional link on port is detected." + ::= { dmSwitchTrapsPrefix 40016 } + + swUnidirLinkRecovered NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, portIndex } + STATUS current + DESCRIPTION "This trap is sent when a unidirectional link on port is recovered." + ::= { dmSwitchTrapsPrefix 40017 } + + swCriticalEventDetected NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when a critical event on port is detected." + ::= { dmSwitchTrapsPrefix 40018 } + + swCriticalEventRecovered NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when a critical event on port is recovered." + ::= { dmSwitchTrapsPrefix 40019 } + + swLinkFlapDetected NOTIFICATION-TYPE + OBJECTS { portIndex } + STATUS current + DESCRIPTION "This trap is sent when a link-flap on port is detected." + ::= { dmSwitchTrapsPrefix 40020 } + + swLinkFlapNoMoreDetected NOTIFICATION-TYPE + OBJECTS { portIndex } + STATUS current + DESCRIPTION "This trap is sent when a link-flap on port is no more detected." + ::= { dmSwitchTrapsPrefix 40021 } + + swEapsStatusChange NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapEapsDomainId, trapEapsDomainName, trapEapsStatus } + STATUS current + DESCRIPTION "This trap is sent when the eaps status change." + ::= { dmSwitchTrapsPrefix 40022 } + + swPortSecurityViolation NOTIFICATION-TYPE + OBJECTS { portIndex } + STATUS current + DESCRIPTION "This trap is sent when a port-security violation happens." + ::= { dmSwitchTrapsPrefix 40023 } + + swHighTemperatureDetected NOTIFICATION-TYPE + OBJECTS { swUnitIndex, trapDevNo, trapDevLocalId, trapTemperature } + STATUS current + DESCRIPTION "This trap is sent when a high temperature is detected." + ::= { dmSwitchTrapsPrefix 40024 } + + swHighTemperatureNoMoreDetected NOTIFICATION-TYPE + OBJECTS { swUnitIndex, trapDevNo, trapDevLocalId, trapTemperature } + STATUS current + DESCRIPTION "This trap is sent when a high temperature is no more detected." + ::= { dmSwitchTrapsPrefix 40025 } + + swFuseStatusChange NOTIFICATION-TYPE + OBJECTS { swUnitIndex, trapFuseId, trapFuseStatus } + STATUS current + DESCRIPTION "This trap is sent when the status of on fuse changes." + ::= { dmSwitchTrapsPrefix 40026 } + + swFansBoardPresenceTrap NOTIFICATION-TYPE + OBJECTS { trapFansBoardPresenceStatus } + STATUS current + DESCRIPTION "This trap is sent when the fans board is taken off or placed." + ::= { dmSwitchTrapsPrefix 40027 } + + swStandbyMpuTrap NOTIFICATION-TYPE + OBJECTS { swMpuIndex, swMpuSerialNumber, swMpuModelId, trapStandbyMpuPresenceStatus } + STATUS current + DESCRIPTION "This trap is sent when the standby MPU is taken off or placed." + ::= { dmSwitchTrapsPrefix 40028 } + + swNonHomologSfpTrap NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when a non-homologated SFP is placed." + ::= { dmSwitchTrapsPrefix 40029 } + + swHighCpuUsageDetected NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when the CPU utilization is greater than 90%." + ::= { dmSwitchTrapsPrefix 40030 } + + swHighCpuUsageNoMoreDetected NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when the CPU utilization is lower than 90%." + ::= { dmSwitchTrapsPrefix 40031 } + + swDuplicatedMac NOTIFICATION-TYPE + OBJECTS { trapMacAddressMove } + STATUS current + DESCRIPTION "This trap is sent when a MAC address move is detected." + ::= { dmSwitchTrapsPrefix 40032 } + + swHighMemoryUsageDetected NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapMemFree } + STATUS current + DESCRIPTION "This trap is sent when the memory utilization is critical." + ::= { dmSwitchTrapsPrefix 40033 } + + swHighMemoryUsageNoMoreDetected NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapMemFree } + STATUS current + DESCRIPTION "This trap is sent when the memory utilization is normal." + ::= { dmSwitchTrapsPrefix 40034 } + + swNewBootloaderVersion NOTIFICATION-TYPE + OBJECTS { swUnitIndex, trapBootloaderNew } + STATUS current + DESCRIPTION "This trap is sent when a new bootloader version is saved." + ::= { dmSwitchTrapsPrefix 40035 } + + swCesopTdmStatusTrap NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId, trapCesopTdmStatus } + STATUS current + DESCRIPTION "This trap is sent when TDM status change." + ::= { dmSwitchTrapsPrefix 40036 } + + swCesopTdmRemoteStatusTrap NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId, trapCesopTdmRemoteStatus } + STATUS current + DESCRIPTION "This trap is sent when TDM Remote status change (RALM)." + ::= { dmSwitchTrapsPrefix 40037 } + + swCesopTdmCasStatusTrap NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId, trapCesopTdmCasStatus } + STATUS current + DESCRIPTION "This trap is sent when TDM Cas status change (LOM)." + ::= { dmSwitchTrapsPrefix 40038 } + + swCesopTdmCrcStatusTrap NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId, trapCesopTdmCrcStatus } + STATUS current + DESCRIPTION "This trap is sent when TDM CRC status change (CRC)." + ::= { dmSwitchTrapsPrefix 40039 } + + swCesopBundleLocalTdmStatusTrap NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId, trapCesopBundleLocalTdmStatus } + STATUS current + DESCRIPTION "This trap is sent when Bundle Local TDM status change." + ::= { dmSwitchTrapsPrefix 40040 } + + swCesopBundleRemoteTdmStatusTrap NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId, trapCesopBundleRemoteTdmStatus } + STATUS current + DESCRIPTION "This trap is sent when Bundle Remote TDM status change." + ::= { dmSwitchTrapsPrefix 40041 } + + swCesopBundleLocalStatusTrap NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId, trapCesopBundleLocalStatus } + STATUS current + DESCRIPTION "This trap is sent when Bundle Local status change." + ::= { dmSwitchTrapsPrefix 40042 } + + swCesopBundleRemoteStatusTrap NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId, trapCesopBundleRemoteStatus } + STATUS current + DESCRIPTION "This trap is sent when Bundle Remote status change." + ::= { dmSwitchTrapsPrefix 40043 } + + swCesopBundlePktMismatchTrap NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId, trapCesopBundlePktMismatchStatus } + STATUS current + DESCRIPTION "This trap is sent when Packet mismatch status chanege in Bundle Interface." + ::= { dmSwitchTrapsPrefix 40044 } + + swCesopBundleNextHopTrap NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId, trapCesopBundleNextHopStatus } + STATUS current + DESCRIPTION "This trap is sent when Packet mismatch status chanege in Bundle Interface." + ::= { dmSwitchTrapsPrefix 40045 } + + swCesopClockAdapLinkQualityTrap NOTIFICATION-TYPE + OBJECTS { swUnitIndex, trapDevNo, trapDevLocalId, trapCesopClockAdapLinkQuality } + STATUS current + DESCRIPTION "This trap is sent when Adaptative link quality change in clock source interface." + ::= { dmSwitchTrapsPrefix 40046 } + + swCesopClockSourceTrap NOTIFICATION-TYPE + OBJECTS { swUnitIndex, trapDevNo, trapDevLocalId, trapCesopClockSourceStatus } + STATUS current + DESCRIPTION "This trap is sent when Source clock status change." + ::= { dmSwitchTrapsPrefix 40047 } + + swRemoteDeviceReady NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when a remote device becomes ready to be managed." + ::= { dmSwitchTrapsPrefix 40048 } + + swRemoteDeviceLost NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when a remote device is no longer manageable." + ::= { dmSwitchTrapsPrefix 40049 } + + swRemoteDeviceConfigFail NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when the configuration sent to a remote device is rejected." + ::= { dmSwitchTrapsPrefix 40050 } + + swRemoteDeviceConfigForced NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when a remote device configuration is forced." + ::= { dmSwitchTrapsPrefix 40051 } + + swFanFuseStatusChange NOTIFICATION-TYPE + OBJECTS { swUnitIndex, trapFuseId, trapFuseStatus } + STATUS current + DESCRIPTION "This trap is sent when the fan board fuse change its status." + ::= { dmSwitchTrapsPrefix 40052 } + + swDyingGaspPackReceived NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent every time an OAM:Dying Gasp package is received on port" + ::= { dmSwitchTrapsPrefix 40053 } + + swBroadcastStormCheckChange NOTIFICATION-TYPE + OBJECTS { + trapDevNo, + trapDevLocalId, + portIndex, + trapBroadcastStormControlStatus, + trapBroadcastStormControlPPS + + } + STATUS current + DESCRIPTION "This trap is sent when a broadcast storm threshold is hit or recovers." + ::= { dmSwitchTrapsPrefix 40054 } + + swMulticastStormCheckChange NOTIFICATION-TYPE + OBJECTS { + trapDevNo, + trapDevLocalId, + portIndex, + trapMulticastStormControlStatus, + trapMulticastStormControlPPS + } + STATUS current + DESCRIPTION "This trap is sent when a multicast storm threshold is hit or recovers." + ::= { dmSwitchTrapsPrefix 40055 } + + swBpduProtectLimit NOTIFICATION-TYPE + OBJECTS { + portIndex, + trapDevNo, + trapDevLocalId + } + STATUS current + DESCRIPTION "This trap is sent when a BPDU limit has reached." + ::= { dmSwitchTrapsPrefix 40056 } + + + swChangeStatusLDP NOTIFICATION-TYPE + OBJECTS { + trapDevNo, + trapDevLocalId, + trapStatusLDP, + trapIdLDP + } + STATUS current + DESCRIPTION "This trap is sent when occurs one change on status the + protocol LDP." + ::= { dmSwitchTrapsPrefix 40057 } + + swChangeStatusTunnelRSVP NOTIFICATION-TYPE + OBJECTS { + trapDevNo, + trapDevLocalId, + trapStatusTunnelRSVP, + trapIdTunnelRSVP + } + STATUS current + DESCRIPTION "This trap is sent when occurs one change on status the + tunnels of protocol RSVP." + ::= { dmSwitchTrapsPrefix 40058 } + + + swBpduProtect NOTIFICATION-TYPE + OBJECTS { + portIndex, + trapDevNo, + trapDevLocalId + } + STATUS current + DESCRIPTION "This trap is sent when a BPDU protect block time expired." + ::= { dmSwitchTrapsPrefix 40059 } + + swRouteTableFull NOTIFICATION-TYPE + OBJECTS { + trapDevNo, + trapDevLocalId + } + STATUS current + DESCRIPTION "This trap is sent when L3 Routing Table reaches its limits." + ::= { dmSwitchTrapsPrefix 40060 } + + swPanelStatusTrap NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapPanelStatus } + STATUS current + DESCRIPTION "This trap is sent when the Panel status change." + ::= { dmSwitchTrapsPrefix 40061 } + + + swLSTGroupLinkStatusDown NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapLSTGroup } + STATUS current + DESCRIPTION "This trap is sent when a link-state tracking group is down" + ::= { dmSwitchTrapsPrefix 40062 } + + swLSTGroupLinkStatusUp NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapLSTGroup } + STATUS current + DESCRIPTION "This trap is sent when a link-state tracking group is up" + ::= { dmSwitchTrapsPrefix 40063 } + + swHighCpuL3UsageDetected NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when the CPU L3 utilization is greater + than 90%." + ::= { dmSwitchTrapsPrefix 40064 } + + swHighCpuL3UsageNoMoreDetected NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when the CPU L3 utilization is lower + than 90%." + ::= { dmSwitchTrapsPrefix 40065 } + + swHighMemoryL3UsageDetected NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapMemL3Free } + STATUS current + DESCRIPTION "This trap is sent when the L3 memory utilization is critical." + ::= { dmSwitchTrapsPrefix 40066 } + + swHighMemoryL3UsageNoMoreDetected NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapMemL3Free } + STATUS current + DESCRIPTION "This trap is sent when the L3 memory utilization is normal." + ::= { dmSwitchTrapsPrefix 40067 } + + swMpuNsfIdDiffers NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapActiveMpuNsfId, trapStandByMpuNsfId } + STATUS current + DESCRIPTION "This trap is sent when the active and standby mpu nsf-id differs." + ::= { dmSwitchTrapsPrefix 40068 } + + swErpsStatusChange NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapErpsDomainId, trapErpsDomainName, trapErpsStatus } + STATUS current + DESCRIPTION "This trap is sent when the erps status change." + ::= { dmSwitchTrapsPrefix 40069 } + + swCfmDefect NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapCfmMdName, trapCfmMaName, trapCfmMepId, trapCfmVlan, trapCfmDefect } + STATUS current + DESCRIPTION "This trap is sent when some CFM MEP enters or leave an error state." + ::= { dmSwitchTrapsPrefix 40070 } + + swLldpRemoteChange NOTIFICATION-TYPE + OBJECTS { portIndex, trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when LLDP remote table changes." + ::= { dmSwitchTrapsPrefix 40071 } + + swPoeOverCurrent NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, portIndex } + STATUS current + DESCRIPTION "This trap is sent when a Power over Ethernet enabled port was shut down due an overcurrent." + ::= { dmSwitchTrapsPrefix 40072 } + + swPoePowerRestriction NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, portIndex } + STATUS current + DESCRIPTION "This trap is sent when an Power over Ethernet enabled port was shut down because the connected device announced an power consumption over the configured for the port." + ::= { dmSwitchTrapsPrefix 40073 } + + swCoreDump NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when an application terminate abnormally and generates a core dump." + ::= { dmSwitchTrapsPrefix 40074 } + + swElmiEvcStatus NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, portIndex, trapEvcName, trapEvcStatus } + STATUS current + DESCRIPTION "This trap is sent when an EVC changes its state." + ::= { dmSwitchTrapsPrefix 40075 } + + swSyncSystemClockSwitchHier NOTIFICATION-TYPE + OBJECTS { swUnitIndex, trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when system changes active clock synchronize hierarchy " + ::= { dmSwitchTrapsPrefix 40076 } + + swSyncSystemClockStatus NOTIFICATION-TYPE + OBJECTS { swUnitIndex, trapDevNo, trapDevLocalId, trapSyncSystemClockStatus } + STATUS current + DESCRIPTION "This trap is sent when system clock changes its status " + ::= { dmSwitchTrapsPrefix 40077 } + + swHostTableFull NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId } + STATUS current + DESCRIPTION "This trap is sent when L3 Host Table reaches its limits." + ::= { dmSwitchTrapsPrefix 40078 } + + swSyncG704ClockStatus NOTIFICATION-TYPE + OBJECTS {trapDevNo, trapDevLocalId, portIndex, trapCesopG704ClockSourceStatus } + STATUS current + DESCRIPTION "This trap is sent when g704 clock source changes its status." + ::= { dmSwitchTrapsPrefix 40079 } + + swSystemWarningsUnits NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, trapSystemWarningsUnits } + STATUS current + DESCRIPTION "This trap is sent when warnings in the system units are found." + ::= { dmSwitchTrapsPrefix 40080 } + + swRebootDueToOvertemp NOTIFICATION-TYPE + OBJECTS { trapDevNo, trapDevLocalId, swUnitIndex, portIndex, trapSensorGroup, trapTemperature} + STATUS current + DESCRIPTION "This trap is sent when the device reboots due to overheat." + ::= { dmSwitchTrapsPrefix 40081 } + +-- +-- countMgt +-- + +-- countHoldTable +countHoldPktsTable OBJECT-TYPE + SYNTAX SEQUENCE OF CountHoldPktsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of dropped packets counters by interface for QoS statistics." + ::= { countMgt 1 } + + +countHoldPktsEntry OBJECT-TYPE + SYNTAX CountHoldPktsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing the number of dropped packets in a single interface. " + INDEX { interfaceNumber } + ::= { countHoldPktsTable 1 } + +CountHoldPktsEntry ::= SEQUENCE +{ + interfaceNumber Integer32, + countHoldPkts Counter64 +} + +interfaceNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Interface Number from dropped packets." + ::= { countHoldPktsEntry 1 } + +countHoldPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Counter Hold shows the number of dropped packets in a single interface." + ::= { countHoldPktsEntry 2 } + +-- +-- filterCounterMgt +-- + +--- info + +filterCounterInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF FilterCounterInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table contain the description about counters, + so they can be used to measure performance from user-based + filters." + + ::= { filterCounterMgt 1 } + +filterCounterInfoEntry OBJECT-TYPE + SYNTAX FilterCounterInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A conceptually row for filterCounterInfoTable." + INDEX { filterCounterInfoIndex } + ::= { filterCounterInfoTable 1 } + +FilterCounterInfoEntry ::= SEQUENCE + { + filterCounterInfoIndex Integer32, + filterCounterInfoRemark DisplayString + } + +filterCounterInfoIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Index for counter, matches current CLI information" + ::= { filterCounterInfoEntry 1 } + +filterCounterInfoRemark OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Remark is a textual description, as configured by user." + ::= { filterCounterInfoEntry 2 } + + +--- values + +filterCounterValueTable OBJECT-TYPE + SYNTAX SEQUENCE OF FilterCounterValueEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table contains current values for filter counters." + ::= { filterCounterMgt 2 } + +filterCounterValueEntry OBJECT-TYPE + SYNTAX FilterCounterValueEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A conceptually row for filterCounterValueTable." + INDEX { filterCounterInfoIndex, filterCounterValueIndex } + ::= { filterCounterValueTable 1 } + +FilterCounterValueEntry ::= SEQUENCE + { + filterCounterValueIndex Integer32, + filterCounterValue Counter64 + } + +filterCounterValueIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Subcounters index identifies each internal counter that a + user-editable counter can have. Internal counters may differ from + equipament model to other." + ::= { filterCounterValueEntry 1 } + +filterCounterValue OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of data which matches internal subcounter. + It can be bytes or packets, according to equipment configuration. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times." + ::= { filterCounterValueEntry 2 } + + +-- +-- eapsMgt +-- + +eapsInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF EapsInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table contains EAPS information about all EAPS + domains on this device." + + ::= { eapsMgt 1 } + +eapsInfoEntry OBJECT-TYPE + SYNTAX EapsInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An individual entry of this table contains EAPS + information related to that EAPS domain." + INDEX { eapsInfoId } + ::= { eapsInfoTable 1 } + +EapsInfoEntry ::= SEQUENCE { + eapsInfoId INTEGER, + eapsInfoName DisplayString, + eapsInfoMode INTEGER, + eapsInfoState INTEGER + } + +eapsInfoId OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This indicates the mode of the EAPS Id." + ::= { eapsInfoEntry 1 } + +eapsInfoName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The EAPS domain name." + ::= { eapsInfoEntry 2 } + +eapsInfoMode OBJECT-TYPE + SYNTAX INTEGER { + invalid(0), + master(1), + transit(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This indicates the mode of the EAPS domain." + ::= { eapsInfoEntry 3 } + +eapsInfoState OBJECT-TYPE + SYNTAX INTEGER { + idle(0), + complete(1), + failed(2), + linksup(3), + linkdown(4), + preforwarding(5), + init(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This indicates the current EAPS state of this EAPS + domain." + ::= { eapsInfoEntry 4 } + +-- +-- cfmProbeMgmt +-- + +cfmProbeDmTable OBJECT-TYPE + SYNTAX SEQUENCE OF CfmProbeDmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table contains CFM delay measurements informationS." + + ::= { cfmProbeMgmt 1 } + +cfmProbeDmEntry OBJECT-TYPE + SYNTAX CfmProbeDmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An individual entry of this table contains CFM + delay measurements information related to that probe." + INDEX { cfmProbeDmIndex } + ::= { cfmProbeDmTable 1 } + +CfmProbeDmEntry ::= SEQUENCE { + cfmProbeDmIndex INTEGER, + cfmProbeDmAvgDelay Integer32, + cfmProbeDmAvgJitter Integer32, + cfmProbeDmLoss INTEGER + } + +cfmProbeDmIndex OBJECT-TYPE + SYNTAX INTEGER(1..32) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The index value used to identify the probe." + ::= { cfmProbeDmEntry 1 } + +cfmProbeDmAvgDelay OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The average delay in microseconds of CFM delay measurement." + ::= { cfmProbeDmEntry 2 } + +cfmProbeDmAvgJitter OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The average jitter in microseconds of CFM delay measurement." + ::= { cfmProbeDmEntry 3 } + +cfmProbeDmLoss OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The percentage of CFM frames lost on the indicate probe." + ::= { cfmProbeDmEntry 4 } + +-- +-- cpumonMgmt +-- + +cpuActiveUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF CpuActiveUsageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of cpu usage." + + ::= { cpumonMgmt 1 } + +cpuActiveUsageEntry OBJECT-TYPE + SYNTAX CpuUsageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of cpu usage." + INDEX { cpuActiveUsageIndex } + ::= { cpuActiveUsageTable 1 } + +CpuActiveUsageEntry ::= SEQUENCE { + cpuActiveUsageIndex Integer32, + cpuActiveUsageValue Integer32 + } + +cpuActiveUsageIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This object identifies the switch within the system + for which this entry contains information. This + value can never be greater than switchNumber." + ::= { cpuActiveUsageEntry 1 } + +cpuActiveUsageValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The CPU usage (in hundredths of a percent)." + ::= { cpuActiveUsageEntry 2 } + + +memActiveUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF MemActiveUsageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of memory usage." + + ::= { cpumonMgmt 2 } + +memActiveUsageEntry OBJECT-TYPE + SYNTAX MemActiveUsageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of memory usage." + INDEX { memActiveUsageIndex } + ::= { memActiveUsageTable 1 } + +MemActiveUsageEntry ::= SEQUENCE { + memActiveUsageIndex Integer32, + memActiveUsageValue Integer32 + } + +memActiveUsageIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This object identifies the switch within the system + for which this entry contains information. This + value can never be greater than switchNumber." + ::= { memActiveUsageEntry 1 } + +memActiveUsageValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The memory usage (percentage)." + ::= { memActiveUsageEntry 2 } + + +cpuStandbyUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF CpuStandbyUsageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of cpu usage." + + ::= { cpumonMgmt 3 } + +cpuStandbyUsageEntry OBJECT-TYPE + SYNTAX CpuUsageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of cpu usage." + INDEX { cpuStandbyUsageIndex } + ::= { cpuStandbyUsageTable 1 } + +CpuStandbyUsageEntry ::= SEQUENCE { + cpuStandbyUsageIndex Integer32, + cpuStandbyUsageValue Integer32 + } + +cpuStandbyUsageIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This object identifies the switch within the system + for which this entry contains information. This + value can never be greater than switchNumber." + ::= { cpuStandbyUsageEntry 1 } + +cpuStandbyUsageValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The CPU usage (in hundredths of a percent)." + ::= { cpuStandbyUsageEntry 2 } + + +memStandbyUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF MemStandbyUsageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of memory usage." + + ::= { cpumonMgmt 4 } + +memStandbyUsageEntry OBJECT-TYPE + SYNTAX MemStandbyUsageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of memory usage." + INDEX { memStandbyUsageIndex } + ::= { memStandbyUsageTable 1 } + +MemStandbyUsageEntry ::= SEQUENCE { + memStandbyUsageIndex Integer32, + memStandbyUsageValue Integer32 + } + +memStandbyUsageIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This object identifies the switch within the system + for which this entry contains information. This + value can never be greater than switchNumber." + ::= { memStandbyUsageEntry 1 } + +memStandbyUsageValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The memory usage (percentage)." + ::= { memStandbyUsageEntry 2 } +END \ No newline at end of file diff --git a/mibs/DATACOM-REG.mib b/mibs/DATACOM-REG.mib new file mode 100644 index 0000000000..351e74fdb1 --- /dev/null +++ b/mibs/DATACOM-REG.mib @@ -0,0 +1,1209 @@ +-- +-- DATACOM Telematica +-- Copyright 1999-2011 by DATACOM (Teracom Telematica Ltda). All Rights Reserved. +-- This DATACOM SNMP MIB Specification is Datacom proprietary intellectual property. +-- +-- This module will be extend, as required. The specification and other information +-- contained in this document can be modified without prior notice. The user should +-- consult Datacom to determine whether any such changes have been done. +-- + +DATACOM-REG DEFINITIONS ::= BEGIN + +IMPORTS + datacomModules, datacomManagementCards, datacomModems, + datacomAccessDevices + FROM DATACOM-SMI; + + +datacomRegistrationModule OBJECT IDENTIFIER ::={ datacomModules 2 } +-- MODULE-IDENTITY +-- LAST-UPDATED "1112200000Z" +-- ORGANIZATION "DATACOM" +-- CONTACT-INFO +-- "DATACOM +-- +-- Postal: DATACOM +-- Av. França, 735 +-- Navegantes, POA, RS +-- CEP 90230-220 +-- BRAZIL +-- +-- Tel:+55(051)3358-0100 +-- Fax:+55(051)3358-0101 +-- +-- E-mail: datacom@datacom.ind.br " +-- DESCRIPTION +-- "The MIB module for DATACOM product registration." +-- + + +-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + +-- +-- Product or brand names used in these MIBs may be trade names or trademarks. +-- All such use has been in a editorial fashion without any intent to convey +-- endorsement of or other affiliation with this documentation. All such names +-- have been used only with the purpose of to identify products from these industries. +-- + + + +-- Management cards + +datacomModemManagCardDMG20 OBJECT IDENTIFIER ::={ datacomManagementCards 1 } +-- DESCRIPTION +-- " DATACOM DMG20 SNMP Management Card. " + +datacomDm705ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 3 } +-- DESCRIPTION +-- " DATACOM DM705 MUX SNMP Management Card. " + +datacomDm16E1ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 4 } +-- DESCRIPTION +-- " DATACOM DM16E1 MUX SNMP Management Card. " + +datacomDm4E1ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 5 } +-- DESCRIPTION +-- " DATACOM DM4E1 MUX SNMP Management Card. " + +datacomDm706CManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 6 } +-- DESCRIPTION +-- " DATACOM DM706C MUX SNMP Management Card. " + +datacomDmSTM1ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 7 } +-- DESCRIPTION +-- " DATACOM DmSTM-1 MUX SNMP Management Card. " + +datacomDm705CPU64ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 8 } +-- DESCRIPTION +-- " DATACOM DM705-CPU64 MUX SNMP Management Card. " + +datacomDm706CIPmuxE1RouterManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 9 } +-- DESCRIPTION +-- " DATACOM DM706C-IPmux-E1Router SNMP Management Card. " + +datacomDm706CIPmuxMultiPortRouterManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 10 } +-- DESCRIPTION +-- " DATACOM DM706C-IPmux-MultiPortRouter SNMP Management Card. " + +datacomDm706CMultiPortRouterManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 11 } +-- DESCRIPTION +-- " DATACOM DM706C-MultiPortRouter SNMP Management Card. " + +datacomDm706CE1RouterManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 12 } +-- DESCRIPTION +-- " DATACOM DM706C-E1Router SNMP Management Card. " + +datacomDmSwitch3224F1ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 13 } +-- DESCRIPTION +-- " DATACOM DMSwitch 3224F1 SNMP Management Card. " + +datacomDm300-8E1ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 14 } +-- DESCRIPTION +-- " DATACOM DM300-8E1 SNMP Management Card. " + +datacomDm300-8E1BInvMuxManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 15 } +-- DESCRIPTION +-- " DATACOM DM300-8E1B Inverse Mux SNMP Management Card. " + +datacomDm1801ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 16 } +-- DESCRIPTION +-- " DATACOM DM1801 SNMP Management Card. " + +datacomDmSwitch3224F2ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 17 } +-- DESCRIPTION +-- " DATACOM DMSwitch 3224F2 SNMP Management Card. " + +datacomDmSwitch3324F1ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 18 } +-- DESCRIPTION +-- " DATACOM DMSwitch 3324F1 SNMP Management Card. " + +datacomDmSwitch3324F2ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 19 } +-- DESCRIPTION +-- " DATACOM DMSwitch 3324F2 SNMP Management Card. " + +datacomDm881ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 20 } +-- DESCRIPTION +-- " DATACOM DM881 SNMP Management Card. " + +datacomDm814ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 21 } +-- DESCRIPTION +-- " DATACOM DM814 SNMP Management Card. " + +datacomDm830ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 22 } +-- DESCRIPTION +-- " DATACOM DM830 SNMP Management Card. " + +datacomDm300-MCManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 23 } +-- DESCRIPTION +-- " DATACOM DM300-MC SNMP Management Card. " + +datacomDm300-8E1BManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 24 } +-- DESCRIPTION +-- " DATACOM DM300-8E1B SNMP Management Card. " + +datacomDm991CRManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 25 } +-- DESCRIPTION +-- " DATACOM DM991CR SNMP Management Card. " + +datacomDm705CPU128ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 26 } +-- DESCRIPTION +-- " DATACOM DM705-CPU128 MUX SNMP Management Card. " + +datacomDm880ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 27 } +-- DESCRIPTION +-- " DATACOM DM880 SNMP Management Card. " + +datacomDmSwitch3224F3ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 28 } +-- DESCRIPTION +-- " DATACOM DMSwitch 3224F3 SNMP Management Card. " + +datacomDmSwitch3324F3ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 29 } +-- DESCRIPTION +-- " DATACOM DMSwitch 3324F3 SNMP Management Card. " + +datacomDm4000Mpu192ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 30 } +-- DESCRIPTION +-- " DATACOM DM4000 MPU192 SNMP Management Card. " + +datacomDm4000Eth24GxManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 31 } +-- DESCRIPTION +-- " DATACOM DM4000 ETH24GX SNMP Management Card. " + +datacomDmSwitch2204G1ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 32 } +-- DESCRIPTION +-- " DATACOM DmSwitch2204G1 SNMP Management Card. " + +datacomDmSwitch2304G1ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 33 } +-- DESCRIPTION +-- " DATACOM DmSwitch2304G1 SNMP Management Card. " + +datacomDm4000Eth12GxManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 34 } +-- DESCRIPTION +-- " DATACOM DM4000 ETH12GX SNMP Management Card. " + +datacomDm4000Eth2x10GxManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 35 } +-- DESCRIPTION +-- " DATACOM DM4000 ETH2x10GX SNMP Management Card. " + +datacomDm4000Eth1x10GxManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 36 } +-- DESCRIPTION +-- " DATACOM DM4000 ETH1x10GX SNMP Management Card. " + +datacomDm4000Eth12Gx1x10GxManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 37 } +-- DESCRIPTION +-- " DATACOM DM4000 ETH12GX+1x10GX SNMP Management Card. " + +datacomDm4000Eth48GtManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 38 } +-- DESCRIPTION +-- " DATACOM DM4000 ETH48GT SNMP Management Card. " + +datacomDm4000Eth24GtManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 39 } +-- DESCRIPTION +-- " DATACOM DM4000 ETH24GT SNMP Management Card. " + +datacomDm4000Mpu384ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 40 } +-- DESCRIPTION +-- " DATACOM DM4000 MPU384 SNMP Management Card. " + +datacomDm16E1InvMuxManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 41 } +-- DESCRIPTION +-- " DATACOM DM16E1 Inverse Mux SNMP Management Card. " + +datacomDm4E1InvMuxManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 42 } +-- DESCRIPTION +-- " DATACOM DM4E1 Inverse Mux SNMP Management Card. " + +datacomDm16E1sIIManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 43 } +-- DESCRIPTION +-- " DATACOM DM16E1sII Mux SNMP Management Card. " + +datacomDm4E1sIIManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 44 } +-- DESCRIPTION +-- " DATACOM DM4E1sII Mux SNMP Management Card. " + +datacomDm706CRManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 45 } +-- DESCRIPTION +-- " DATACOM DM706CR SNMP Management Card. " + +datacomDm991CSManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 46 } +-- DESCRIPTION +-- " DATACOM DM991CS SNMP Management Card. " + +datacomDm706CSManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 47 } +-- DESCRIPTION +-- " DATACOM DM706CS SNMP Management Card. " + +datacomDm706EManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 48 } +-- DESCRIPTION +-- " DATACOM DM706E SNMP Management Card. " + +datacomDm706M1ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 49 } +-- DESCRIPTION +-- " DATACOM DM706M1 SNMP Management Card. " + +datacomDm706M2ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 50 } +-- DESCRIPTION +-- " DATACOM DM706M2 SNMP Management Card. " + +datacomDm706M4ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 51 } +-- DESCRIPTION +-- " DATACOM DM706M4 SNMP Management Card. " + +datacomDm706Pabxm1ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 52 } +-- DESCRIPTION +-- " DATACOM DM706PABXM1 SNMP Management Card. " + +datacomDm706Pabxd1ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 53 } +-- DESCRIPTION +-- " DATACOM DM706PABXD1 SNMP Management Card. " + +datacomDm706Pabxm2ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 54 } +-- DESCRIPTION +-- " DATACOM DM706PABXM2 SNMP Management Card. " + +datacomDm706Pabxd2ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 55 } +-- DESCRIPTION +-- " DATACOM DM706PABXD2 SNMP Management Card. " + +datacomDm706PabxmManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 56 } +-- DESCRIPTION +-- " DATACOM DM706PABXM SNMP Management Card. " + +datacomDm706PabxdManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 57 } +-- DESCRIPTION +-- " DATACOM DM706PABXD SNMP Management Card. " + +datacomDm4000Eth24GXx2Xx10GXManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 58 } +-- DESCRIPTION +-- " DATACOM DM4000 ETH24GX+2x10GX SNMP Management Card. " + +datacomDm4000Eth48GXManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 59 } +-- DESCRIPTION +-- " DATACOM DM4000 ETH48GX SNMP Management Card. " + +datacomDm4000Eth4x10GXHSeriesManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 60 } +-- DESCRIPTION +-- " DATACOM DM4000 ETH4x10GX HSERIES SNMP Management Card. " + +datacomDmSwitch2104G1-EddManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 61 } +-- DESCRIPTION +-- " DATACOM DMSwitch 2104G1-EDD SNMP Management Card. " + +datacomDmSwitch2104G2-EddManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 62 } +-- DESCRIPTION +-- " DATACOM DMSwitch 2104G2-EDD SNMP Management Card. " + +datacomDm810ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 63 } +-- DESCRIPTION +-- " DATACOM DM810 SNMP Management Card. " + +datacomDm4000Eth24GX2x10GXHSeriesManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 64 } +-- DESCRIPTION +-- " DATACOM DM4000 ETH24GX+2x10GX HSERIES SNMP Management Card. " + +datacomDm4000Eth48GXHSeriesManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 65 } +-- DESCRIPTION +-- " DATACOM DM4000 ETH48GX HSERIES SNMP Management Card. " + +datacomDm4000Eth10GX32E1ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 66 } +-- DESCRIPTION +-- " DATACOM DM4000 ETH10GX+32E1 SNMP Management Card. " + +datacomDm4000EthSceqManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 67 } +-- DESCRIPTION +-- " DM4000 SCEQ - Ethernet commuter - Service Card Enhanced Queuing SNMP Management Card. " + +datacomDm4000Eth24GXHSeriesManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 68 } +-- DESCRIPTION +-- " DATACOM DM4000 ETH24GX HSERIES SNMP Management Card. " + +datacomDm705CPU34ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 69 } +-- DESCRIPTION +-- " DATACOM DM705-CPU34 MUX SNMP Management Card. " + +datacomDm4650ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 70 } +-- DESCRIPTION +-- " DATACOM IP - SAN SNMP Management Card. " + +datacomPabxManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 71 } +-- DESCRIPTION +-- " DATACOM PABX SNMP Management Card. " + +datacomDm4000Eth2x10GxHSeriesManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 72 } +-- DESCRIPTION +-- " DATACOM DM4000 ETH2x10GX HSERIES SNMP Management Card. " + +datacomDmSwitch2104G2Wri-EddManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 73 } +-- DESCRIPTION +-- " DATACOM DMSwitch 2104G2-EDD WRI SNMP Management Card. " + +datacomDm706EhkManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 74 } +-- DESCRIPTION +-- " DATACOM DM706E-HK SNMP Management Card. " + +datacomDmSwitch2104G1SeriesII-EddManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 75 } +-- DESCRIPTION +-- " DATACOM DMSwitch 2104G1-EDD Series-II SNMP Management Card." + +datacomDm2106-2GX-ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 76 } +-- DESCRIPTION +-- " DATACOM DM2106 2GX SNMP Management Card." + +datacomDm2106-4GX-ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 77 } +-- DESCRIPTION +-- " DATACOM DM2106 4GX SNMP Management Card." + +datacomDm2106-4GXx8E1-EddManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 78 } +-- DESCRIPTION +-- " DATACOM DM2106 4GX+8E1 SNMP Management Card." + +datacomDmSwitch2104G2-EDDxE1-EddManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 79 } +-- DESCRIPTION +-- " DATACOM DM2104 2GX+E1 SNMP Management Card." + +datacomDmSwitch2104G1-EDDSeriesII-EddManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 81 } +-- DESCRIPTION +-- " DATACOM DmSwitch 2104G1 - EDD Series II Management Card." +datacomDmSwitch2104G2-EDDxE1SeriesII-EddManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 82 } +-- DESCRIPTION +-- " DATACOM DmSwitch 2104G2 - EDD Series II Management Card." + +datacomDm4000Eth24GxLSeriesManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 83 } +-- DESCRIPTION +-- " ETH24GX LSeries SNMP Management Card. " + +datacomDm4000Mpu512ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 84 } +-- DESCRIPTION +-- " DATACOM DM4000 MPU512 SNMP Management Card. " + +datacomDmSwitch2104G2S3Wri-EddManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 85 } +-- DESCRIPTION +-- " DATACOM EDDs3 modelo DM2104G2 – EDD WRI SNMP Management Card. " + +--- +datacomDm4100Eth24GXx4GXManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 86 } +-- DESCRIPTION +-- " DATACOM DM4100 ETH24GX+4GX SNMP Management Card. " + +datacomDm4100Eth24GXx2XXManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 87 } +-- DESCRIPTION +-- " DATACOM DM4100 24GX+2XX SNMP Management Card." + +datacomDm4100Eth24GXxSManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 88 } +-- DESCRIPTION +-- " DATACOM DM4100 24GX+S SNMP Management Card." + +datacomDm4100Eth24GXx2XXxSManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 89 } +-- DESCRIPTION +-- " DATACOM DM4100 24GX+2XX+S SNMP Management Card." + +datacomDm4100Eth24GXx4XXManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 90 } +-- DESCRIPTION +-- " DATACOM DM4100 24GX+4XX SNMP Management Card." + +datacomDm4100Eth20GTx4GCManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 91 } +-- DESCRIPTION +-- " DATACOM DM4100 20GT+4GC SNMP Management Card." + +datacomDm4100Eth20GTx4GCx2XXManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 92 } +-- DESCRIPTION +-- " DATACOM DM4100 20GT+4GC+2XX SNMP Management Card." + +datacomDm4100Eth20GTx4GCxSManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 93 } +-- DESCRIPTION +-- " DATACOM DM4100 20GT+4GC+S SNMP Management Card." + +datacomDm4100Eth20GTx4GCx2XXxSManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 94 } +-- DESCRIPTION +-- " DATACOM DM4100 20GT+4GC+2XX+S SNMP Management Card." + +datacomDm4100Eth20GTx4GCx4XXManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 95 } +-- DESCRIPTION +-- " DATACOM DM4100 20GT+4GC+4XX SNMP Management Card." + +datacomDmSwitchEddE1S2ManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 96 } +-- DESCRIPTION +-- " DATACOM DmSwitch 2104G2 - EDD E1 (SERIES II) SNMP Management Card." + +datacomDm4100Eth44GPx4GCManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 97 } +-- DESCRIPTION +-- " DATACOM DmSwitch DM4100 ETH44GP+4GC SNMP Management Card." + +datacomDm4100Eth44GTx4GCx2XXManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 98 } +-- DESCRIPTION +-- " DATACOM DmSwitch DM4100 ETH44GT+4GC+2XX SNMP Management Card." + +datacomDm4100Eth44GTx4GCxSManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 99 } +-- DESCRIPTION +-- " DATACOM DmSwitch DM4100 ETH44GT+4GC+S SNMP Management Card." + +datacomDm4100Eth44GTx4GCx2XXxSManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 100 } +-- DESCRIPTION +-- " DATACOM DmSwitch DM4100 ETH44GT+4GC+2XX+S SNMP Management Card." + +datacomDm4100Eth44GTx4GCx4XXManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 101 } +-- DESCRIPTION +-- " DATACOM DmSwitch DM4100 ETH44GT+4GC+4XX SNMP Management Card." + +datacomDm4100Eth44GTx4GCx2XSManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 102 } +-- DESCRIPTION +-- " DATACOM DmSwitch DM4100 ETH44GT+4GC+2XS SNMP Management Card." + +datacomDm4100Eth44GTx4GCx2XSxSManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 103 } +-- DESCRIPTION +-- " DATACOM DmSwitch DM4100 ETH44GT+4GC+2XS+S SNMP Management Card." + +datacomDm4100Eth44GTx4GCx4XSManagCard OBJECT IDENTIFIER ::={ datacomManagementCards 104 } +-- DESCRIPTION +-- " DATACOM DmSwitch DM4100 ETH44GT+4GC+4XS SNMP Management Card." +-- Modems +-- +-- datacomModems 1 +dmModemNotRegistered OBJECT IDENTIFIER ::={ datacomModems 1 } + +-- +-- datacomModems 2 +dmModemDatacom OBJECT IDENTIFIER ::={ datacomModems 2 } + +-- +-- datacomModems 3 +-- Modens from PARKS S.A. COMUNICACOES DIGITAIS. +-- Trademarks from PARKS S.A. COMUNICACOES DIGITAIS. +dmModemParks OBJECT IDENTIFIER ::={ datacomModems 3 } + +dmModemParksUP128F2 OBJECT IDENTIFIER ::={ dmModemParks 1 } +-- DESCRIPTION +-- "Parks Modem model UP128-F2." + +dmModemParksUP128F4 OBJECT IDENTIFIER ::={ dmModemParks 2 } +-- DESCRIPTION +-- "Parks Modem model UP128-F4." + +dmModemParksUP64 OBJECT IDENTIFIER ::={ dmModemParks 3 } +-- DESCRIPTION +-- "Parks Modem model UP64." + +dmModemParksUP128 OBJECT IDENTIFIER ::={ dmModemParks 4 } +-- DESCRIPTION +-- "Parks Modem model UP128." + +dmModemParksUP256 OBJECT IDENTIFIER ::={ dmModemParks 5 } +-- DESCRIPTION +-- "Parks Modem model UP256." + +dmModemParksUP384 OBJECT IDENTIFIER ::={ dmModemParks 6 } +-- DESCRIPTION +-- "Parks Modem model UP384." + +dmModemParksUP512 OBJECT IDENTIFIER ::={ dmModemParks 7 } +-- DESCRIPTION +-- "Parks Modem model UP512." + +dmModemParksUP2048HDSL OBJECT IDENTIFIER ::={ dmModemParks 8 } +-- DESCRIPTION +-- "Parks Modem model UP2048-HDSL." + +dmModemParksUP3420 OBJECT IDENTIFIER ::={ dmModemParks 9 } +-- DESCRIPTION +-- "Parks Modem model UP3420." + +dmModemParksDuo2 OBJECT IDENTIFIER ::={ dmModemParks 10 } +-- DESCRIPTION +-- "Parks Modem model Duo2." + +dmModemParksUP64F2 OBJECT IDENTIFIER ::={ dmModemParks 11 } +-- DESCRIPTION +-- "Parks Modem model UP64-F2." + +dmModemParksUP64F4 OBJECT IDENTIFIER ::={ dmModemParks 12 } +-- DESCRIPTION +-- "Parks Modem model UP64-F4." + +dmModemParksPower512MSDSL OBJECT IDENTIFIER ::={ dmModemParks 13 } +-- DESCRIPTION +-- "Parks Modem model Power 512 MSDSL." + +dmModemParksFiber4E1 OBJECT IDENTIFIER ::={ dmModemParks 14 } +-- DESCRIPTION +-- "Parks Modem model Fiber 4E1." + +dmModemParksPower512MSDSL-S2 OBJECT IDENTIFIER ::={ dmModemParks 15 } +-- DESCRIPTION +-- "Parks Modem model Power 512 MSDSL-S2." + +dmModemParksPower2048MSDSL OBJECT IDENTIFIER ::={ dmModemParks 16 } +-- DESCRIPTION +-- "Parks Modem model Power 2048 MSDSL." + +dmModemParksPower2048HDSL OBJECT IDENTIFIER ::={ dmModemParks 17 } +-- DESCRIPTION +-- "Parks Modem model Power 2048 HDSL." + +dmModemParksFiber16E1 OBJECT IDENTIFIER ::={ dmModemParks 18 } +-- DESCRIPTION +-- "Parks Modem model Fiber 16E1." + +dmModemParksPower512MSDSL-2F-GVCE OBJECT IDENTIFIER ::={ dmModemParks 19 } +-- DESCRIPTION +-- "Parks Modem model Power 512 MSDSL 2F GVCE." + +dmModemParksPower512MSDSL-2F-GVC OBJECT IDENTIFIER ::={ dmModemParks 20 } +-- DESCRIPTION +-- "Parks Modem model Power 512 MSDSL 2F GVC." + +dmModemParksPower512MSDSL-2F-GV OBJECT IDENTIFIER ::={ dmModemParks 21 } +-- DESCRIPTION +-- "Parks Modem model Power 512 MSDSL 2F GV." + +dmModemParksPower512MSDSL-2F-VC OBJECT IDENTIFIER ::={ dmModemParks 22 } +-- DESCRIPTION +-- "Parks Modem model Power 512 MSDSL 2F VC." + +dmModemParksPower512MSDSL-2F-E OBJECT IDENTIFIER ::={ dmModemParks 23 } +-- DESCRIPTION +-- "Parks Modem model Power 512 MSDSL 2F E." + +dmModemParksPower512MSDSL-4F-GVCE OBJECT IDENTIFIER ::={ dmModemParks 24 } +-- DESCRIPTION +-- "Parks Modem model Power 512 MSDSL 4F GVCE." + +dmModemParksPower512MSDSL-4F-GVC OBJECT IDENTIFIER ::={ dmModemParks 25 } +-- DESCRIPTION +-- "Parks Modem model Power 512 MSDSL 4F GVC." + +dmModemParksPower512MSDSL-4F-GV OBJECT IDENTIFIER ::={ dmModemParks 26 } +-- DESCRIPTION +-- "Parks Modem model Power 512 MSDSL 4F GV." + +dmModemParksPower512MSDSL-4F-VC OBJECT IDENTIFIER ::={ dmModemParks 27 } +-- DESCRIPTION +-- "Parks Modem model Power 512 MSDSL 4F VC." + +dmModemParksPower512MSDSL-4F-E OBJECT IDENTIFIER ::={ dmModemParks 28 } +-- DESCRIPTION +-- "Parks Modem model Power 512 MSDSL 4F E." + +dmModemParksPower512MSDSL-2F-GV-DM OBJECT IDENTIFIER ::={ dmModemParks 29 } +-- DESCRIPTION +-- "Parks Modem model Power 512 MSDSL 2F GV-DM." + +dmModemParksPower512MSDSL-4F-GV-DM OBJECT IDENTIFIER ::={ dmModemParks 30 } +-- DESCRIPTION +-- "Parks Modem model Power 512 MSDSL 4F GV-DM." + +dmModemParksPower2048MSDSL-2F-GVCE OBJECT IDENTIFIER ::={ dmModemParks 31 } +-- DESCRIPTION +-- "Parks Modem model Power 2048 MSDSL 2F GVCE." + +dmModemParksPower2048MSDSL-2F-GV OBJECT IDENTIFIER ::={ dmModemParks 32 } +-- DESCRIPTION +-- "Parks Modem model Power 2048 MSDSL 2F GV." + +dmModemParksPower2048MSDSL-2F-GVC OBJECT IDENTIFIER ::={ dmModemParks 33 } +-- DESCRIPTION +-- "Parks Modem model Power 2048 MSDSL 2F GVC." + +dmModemParksPower2048MSDSL-2F-VC OBJECT IDENTIFIER ::={ dmModemParks 34 } +-- DESCRIPTION +-- "Parks Modem model Power 2048 MSDSL 2F VC." + +dmModemParksPower2048MSDSL-2F-E OBJECT IDENTIFIER ::={ dmModemParks 35 } +-- DESCRIPTION +-- "Parks Modem model Power 2048 MSDSL 2F E." + +dmModemParksPower2048MSDSL-4F-GVCE OBJECT IDENTIFIER ::={ dmModemParks 36 } +-- DESCRIPTION +-- "Parks Modem model Power 2048 MSDSL 4F GVCE." + +dmModemParksPower2048MSDSL-4F-GV OBJECT IDENTIFIER ::={ dmModemParks 37 } +-- DESCRIPTION +-- "Parks Modem model Power 2048 MSDSL 4F GV." + +dmModemParksPower2048MSDSL-4F-GVC OBJECT IDENTIFIER ::={ dmModemParks 38 } +-- DESCRIPTION +-- "Parks Modem model Power 2048 MSDSL 4F GVC." + +dmModemParksPower2048MSDSL-4F-VC OBJECT IDENTIFIER ::={ dmModemParks 39 } +-- DESCRIPTION +-- "Parks Modem model Power 2048 MSDSL 4F VC." + +dmModemParksPower2048MSDSL-4F-E OBJECT IDENTIFIER ::={ dmModemParks 40 } +-- DESCRIPTION +-- "Parks Modem model Power 2048 MSDSL 4F E." + +dmModemParksPower2048MSDSL-2F-GV-DM OBJECT IDENTIFIER ::={ dmModemParks 41 } +-- DESCRIPTION +-- "Parks Modem model Power 2048 MSDSL 2F GV-DM." + +dmModemParksPower2048MSDSL-4F-GV-DM OBJECT IDENTIFIER ::={ dmModemParks 42 } +-- DESCRIPTION +-- "Parks Modem model Power 2048 MSDSL 4F GV-DM." + + + + + +-- datacomModems 4 +-- Modens from DIGITEL S.A. INDUSTRIA ELETRONICA. +-- Trademarks from DIGITEL S.A. INDUSTRIA ELETRONICA. +dmModemDigitel OBJECT IDENTIFIER ::={ datacomModems 4 } + +dmModemDigitelDT32B OBJECT IDENTIFIER ::={ dmModemDigitel 1 } +-- DESCRIPTION +-- "Digitel Modem model DT32B." + +dmModemDigitelDT34 OBJECT IDENTIFIER ::={ dmModemDigitel 2 } +-- DESCRIPTION +-- "Digitel Modem modem DT34." + +dmModemDigitelDT64MI OBJECT IDENTIFIER ::={ dmModemDigitel 3 } +-- DESCRIPTION +-- "Digitel Modem modem DT64MI." + +dmModemDigitelDT128MI OBJECT IDENTIFIER ::={ dmModemDigitel 4 } +-- DESCRIPTION +-- "Digitel Modem modem DT128MI." + +dmModemDigitelDT256MI OBJECT IDENTIFIER ::={ dmModemDigitel 5 } +-- DESCRIPTION +-- "Digitel Modem modem DT256MI." + +dmModemDigitelDT2048 OBJECT IDENTIFIER ::={ dmModemDigitel 6 } +-- DESCRIPTION +-- "Digitel Modem modem DT2048." + +dmModemDigitelDT2048-MFO OBJECT IDENTIFIER ::={ dmModemDigitel 7 } +-- DESCRIPTION +-- "Digitel Modem modem DT2048-MFO." + +dmModemDigitelTRANSEND-THREE OBJECT IDENTIFIER ::={ dmModemDigitel 8 } +-- DESCRIPTION +-- "Digitel Modem modem TRANSEND-THREE." + +dmModemDigitelDT2048-HXR OBJECT IDENTIFIER ::={ dmModemDigitel 9 } +-- DESCRIPTION +-- "Digitel Modem modem DT2048-HXR." + +dmModemDigitelDT2048-HDSL OBJECT IDENTIFIER ::={ dmModemDigitel 10 } +-- DESCRIPTION +-- "Digitel Modem DT2048 HDSL." + +dmModemDigitelDT64MIa OBJECT IDENTIFIER ::={ dmModemDigitel 11 } +-- DESCRIPTION +-- "Digitel Modem DT64MIa." + +dmModemDigitelDT128MIa OBJECT IDENTIFIER ::={ dmModemDigitel 12 } +-- DESCRIPTION +-- "Digitel Modem DT128MIa." + +dmModemDigitelDT256MIa OBJECT IDENTIFIER ::={ dmModemDigitel 13 } +-- DESCRIPTION +-- "Digitel Modem DT256MIa." + +dmModemDigitelDT2048-HDSLex OBJECT IDENTIFIER ::={ dmModemDigitel 14 } +-- DESCRIPTION +-- "Digitel Modem DT2048 HDSL - second version." + +dmModemDigitelDT8192-4E1 OBJECT IDENTIFIER ::={ dmModemDigitel 15 } +-- DESCRIPTION +-- "Digitel Modem DT8192-4E1. " + +dmModemDigitelDT8192 OBJECT IDENTIFIER ::={ dmModemDigitel 16 } +-- DESCRIPTION +-- "Digitel Modem DT8192. " + +dmModemDigitelDT8192BK OBJECT IDENTIFIER ::={ dmModemDigitel 17 } +-- DESCRIPTION +-- "Digitel Modem DT8192-BK. " + +dmModemDigitelDT1024MI OBJECT IDENTIFIER ::={ dmModemDigitel 18 } +-- DESCRIPTION +-- "Digitel Modem DT1024MI. " + +dmModemDigitelDT2048-MX2 OBJECT IDENTIFIER ::={ dmModemDigitel 19 } +-- DESCRIPTION +-- "Digitel Modem DT2048-MX2. " + +dmModemDigitelDT256-MIDX OBJECT IDENTIFIER ::={ dmModemDigitel 20 } +-- DESCRIPTION +-- "Digitel Modem DT256MIDX. " + +dmModemDigitelDT2048-HDSL-B OBJECT IDENTIFIER ::={ dmModemDigitel 21 } +-- DESCRIPTION +-- "Digitel Modem DT2048 HDSL B. " + +dmModemDigitelDT2048-MFO-R OBJECT IDENTIFIER ::={ dmModemDigitel 22 } +-- DESCRIPTION +-- "Digitel Modem DT2048 MFO-R. " + +dmModemDigitelDT8192-4E1-R OBJECT IDENTIFIER ::={ dmModemDigitel 23 } +-- DESCRIPTION +-- "Digitel Modem DT8192 4E1-R. " + +dmModemDigitelDT8192-4E1-1-R OBJECT IDENTIFIER ::={ dmModemDigitel 24 } +-- DESCRIPTION +-- "Digitel Modem DT8192 4E1+1-R. " + +dmModemDigitelDT512-MIDX OBJECT IDENTIFIER ::={ dmModemDigitel 25 } +-- DESCRIPTION +-- "Digitel Modem DT512MIDX. " + +dmModemDigitelDT1024-MIDX OBJECT IDENTIFIER ::={ dmModemDigitel 26 } +-- DESCRIPTION +-- "Digitel Modem DT1024MIDX. " + +dmModemDigitelDT2048-MFO-2E1-R OBJECT IDENTIFIER ::={ dmModemDigitel 27 } +-- DESCRIPTION +-- "Digitel Modem DT2048-MFO 2E1-R. " + +dmModemDigitelDT2048-MFO-2E1-1-R OBJECT IDENTIFIER ::={ dmModemDigitel 28 } +-- DESCRIPTION +-- "Digitel Modem DT2048-MFO 2E1+1-R. " + +dmModemDigitelDT2048-DX4 OBJECT IDENTIFIER ::={ dmModemDigitel 29 } +-- DESCRIPTION +-- "Digitel Modem DT2048 DX/4. " + +dmModemDigitelDT2048-DX OBJECT IDENTIFIER ::={ dmModemDigitel 30 } +-- DESCRIPTION +-- "Digitel Modem DT2048 DX. " + +dmModemDigitelDT2048-DX-G703 OBJECT IDENTIFIER ::={ dmModemDigitel 31 } +-- DESCRIPTION +-- "Digitel Modem DT2048 DX G703. " + +dmModemDigitelDT2048-HDSL-G703 OBJECT IDENTIFIER ::={ dmModemDigitel 32 } +-- DESCRIPTION +-- "Digitel Modem DT2048 HDSL G703. " + +dmModemDigitelSHDSL-D OBJECT IDENTIFIER ::={ dmModemDigitel 33 } +-- DESCRIPTION +-- "Digitel Modem SHDSL-D. " + +dmModemDigitelSHDSL-S OBJECT IDENTIFIER ::={ dmModemDigitel 34 } +-- DESCRIPTION +-- "Digitel Modem SHDSL-S. " + +dmModemDigitelDT256-MIDX-B OBJECT IDENTIFIER ::={ dmModemDigitel 35 } +-- DESCRIPTION +-- "Digitel Modem DT256MIDX B. " + +dmModemDigitelDT512-MIDX-B OBJECT IDENTIFIER ::={ dmModemDigitel 36 } +-- DESCRIPTION +-- "Digitel Modem DT512MIDX B. " + +dmModemDigitelDT1024-MIDX-B OBJECT IDENTIFIER ::={ dmModemDigitel 37 } +-- DESCRIPTION +-- "Digitel Modem DT1024MIDX B. " + + + +-- datacomModems 5 +-- Modens from ELEBRA COMUNICACAO DE DADOS LTDA. +-- Trademarks from ELEBRA COMUNICACAO DE DADOS LTDA. +dmModemElebra OBJECT IDENTIFIER ::={ datacomModems 5 } + +dmModemElebraEC256K OBJECT IDENTIFIER ::={ dmModemElebra 1 } +-- DESCRIPTION +-- "Elebra Modem model EC256K." + +dmModemElebraEC128K OBJECT IDENTIFIER ::={ dmModemElebra 2 } +-- DESCRIPTION +-- "Elebra Modem model EC128K." + +dmModemElebraEC512K OBJECT IDENTIFIER ::={ dmModemElebra 3 } +-- DESCRIPTION +-- "Elebra Modem model EC512K." + +dmModemElebraEC3465K OBJECT IDENTIFIER ::={ dmModemElebra 4 } +-- DESCRIPTION +-- "Elebra Modem model EC256K." + + + + + +-- Access Devices +-- +-- datacomAccessDevices 1 +dmAcDevNotRegistered OBJECT IDENTIFIER ::={ datacomAccessDevices 1 } + +-- +-- datacomAccessDevices 2 +-- Interface converters from Datacom Telematica (Teracom Telematica Ltda.) +dmAdItfConverterDatacom OBJECT IDENTIFIER ::={ datacomAccessDevices 2 } + +dmAdItfConverterDatacomDM704S OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 1 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704S." + +dmAdItfConverterDatacomDM704SE OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 2 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704SE." + +dmAdItfConverterDatacomDM703-64S OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 3 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM703-64S." + +dmAdItfConverterDatacomDM703-64SE OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 4 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM703-64SE." + +dmAdItfConverterDatacomDM704S-a OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 5 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S version 1.2 and later." + +dmAdItfConverterDatacomDM703-2S OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 6 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM703-2S." + +dmAdItfConverterDatacomDM704SE2-V10 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 7 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-SE S2 V1.0 ." + +dmAdItfConverterDatacomDM704S2-V10 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 8 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V1.0 ." + +dmAdItfConverterDatacomDM704S2-V11 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 9 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V1.1 ." + +dmAdItfConverterDatacomDM704SE2-V20 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 10 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-SE S2 V2.0 ." + +dmAdItfConverterDatacomDM704S2-V12 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 11 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V1.2 ." + +dmAdItfConverterDatacomDM704S2-V13 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 12 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V1.3 ." + +dmAdItfConverterDatacomDM704S2-V20 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 13 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V2.0 ." + +dmAdItfConverterDatacomDM704S2-V21 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 14 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V2.1 ." + +dmAdItfConverterDatacomDM704S2-V22 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 15 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V2.2 ." + +dmAdItfConverterDatacomDM704S2-V23 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 16 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V2.3 ." + +dmAdItfConverterDatacomDM704SE2-V30 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 17 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-SE S2 V3.0 ." + +dmAdItfConverterDatacomDM704S2-V30 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 18 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V3.0 ." + +dmAdItfConverterDatacomDM704S2-V31 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 19 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V3.1 ." + +dmAdItfConverterDatacomDM704S2-V32 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 20 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V3.2 ." + +dmAdItfConverterDatacomDM704S2-V33 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 21 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V3.3 ." + +dmAdItfConverterDatacomDM704S2-V40 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 22 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V4.0 ." + +dmAdItfConverterDatacomDM704S2-V41 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 23 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V4.1 ." + +dmAdItfConverterDatacomDM704S2-V12B OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 24 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V1.2B ." + +dmAdItfConverterDatacomDM704S2-V21B OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 25 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V2.1B ." + +dmAdItfConverterDatacomDM704S2-V22B OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 26 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V2.2B ." + +dmAdItfConverterDatacomDM704S2-V42 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 27 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-S S2 V4.2 ." + +dmAdItfConverterDatacomDM704SE2-V40 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 28 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-SE S2 V4.0 ." + +dmAdItfConverterDatacomDM704SE2-V50 OBJECT IDENTIFIER ::={ dmAdItfConverterDatacom 29 } +-- DESCRIPTION +-- "DATACOM Interface Converter model DM704-SE S2 V5.0 ." + + +-- datacomAccessDevices 3 +-- Mux from Datacom Telematica (Teracom Telematica Ltda.) +dmAdMuxDatacom OBJECT IDENTIFIER ::={ datacomAccessDevices 3 } + +dmAdMuxDatacomMuxDM705 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 1 } +-- DESCRIPTION +-- "DATACOM Mux DM705." + +dmAdMuxDatacomMuxDM706C OBJECT IDENTIFIER ::={ dmAdMuxDatacom 2 } +-- DESCRIPTION +-- "DATACOM Mux DM706C." + +dmAdMuxDatacomMuxDM16E1 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 3 } +-- DESCRIPTION +-- "DATACOM Mux DM16E1." + +dmAdMuxDatacomMuxDM4E1 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 4 } +-- DESCRIPTION +-- "DATACOM Mux DM4E1." + +dmAdMuxDatacomMuxDM704S3 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 5 } +-- DESCRIPTION +-- "DATACOM Interface Converter DM704-S S3." + +dmAdMuxDatacomMuxDM704C3 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 6 } +-- DESCRIPTION +-- "DATACOM Interface Converter DM704-C S3." + +dmAdMuxDatacomMuxDM704SE4 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 10 } +-- DESCRIPTION +-- "DATACOM Interface Converter DM704SE S4." + +dmAdMuxDatacomMuxDM704CE4 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 11 } +-- DESCRIPTION +-- "DATACOM Interface Converter DM704CE S4." + +dmAdMuxDatacomMuxDM991C OBJECT IDENTIFIER ::={ dmAdMuxDatacom 21 } +-- DESCRIPTION +-- "DATACOM Modem DM991C (V.xx + E1)." + +dmAdMuxDatacomMuxDM4E1S OBJECT IDENTIFIER ::={ dmAdMuxDatacom 22 } +-- DESCRIPTION +-- "DATACOM Optical Modem DM4E1S." + +dmAdMuxDatacomMuxDM991CVxx OBJECT IDENTIFIER ::={ dmAdMuxDatacom 23 } +-- DESCRIPTION +-- "DATACOM Modem DM991C (V.xx)." + +dmAdMuxDatacomMuxDM991S OBJECT IDENTIFIER ::={ dmAdMuxDatacom 24 } +-- DESCRIPTION +-- "DATACOM Modem DM991S (V.xx + E1)." + +dmAdMuxDatacomMuxDM991SVxx OBJECT IDENTIFIER ::={ dmAdMuxDatacom 25 } +-- DESCRIPTION +-- "DATACOM Modem DM991S (V.xx)." + +dmAdMuxDatacomMuxDM706C-IPmux-E1Router OBJECT IDENTIFIER ::={ dmAdMuxDatacom 26 } +-- DESCRIPTION +-- "DATACOM Mux DM706C-IPmux-E1Router." + +dmAdMuxDatacomMuxDM706C-IPmux-MultiPortRouter OBJECT IDENTIFIER ::={ dmAdMuxDatacom 27 } +-- DESCRIPTION +-- "DATACOM Mux DM706C-IPmux-MultiPortRouter." + +dmAdMuxDatacomMuxDM706C-MultiPortRouter OBJECT IDENTIFIER ::={ dmAdMuxDatacom 28 } +-- DESCRIPTION +-- "DATACOM Mux DM706C-MultiPortRouter." + +dmAdMuxDatacomMuxDM706C-E1Router OBJECT IDENTIFIER ::={ dmAdMuxDatacom 29 } +-- DESCRIPTION +-- "DATACOM Mux DM706C-E1Router." + +dmAdMuxDatacomMuxDM991SE4 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 31 } +-- DESCRIPTION +-- "DATACOM Modem DM991SE S4." + +dmAdMuxDatacomMuxDM991CE4 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 32 } +-- DESCRIPTION +-- "DATACOM Modem DM991CE S4." + +dmAdMuxDatacomMuxDM991CR OBJECT IDENTIFIER ::={ dmAdMuxDatacom 33 } +-- DESCRIPTION +-- "DATACOM Modem Router DM991CR." + +dmAdMuxDatacomMuxDM706CR OBJECT IDENTIFIER ::={ dmAdMuxDatacom 34 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706CR." + +dmAdMuxDatacomMuxDM300-8E1B OBJECT IDENTIFIER ::={ dmAdMuxDatacom 35 } +-- DESCRIPTION +-- "DATACOM Mux DM300-8E1B." + +dmAdMuxDatacomMuxDM300-8E1 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 36 } +-- DESCRIPTION +-- "DATACOM Mux DM300-8E1." + +dmAdMuxDatacomMuxDM300-8E1BInvMux OBJECT IDENTIFIER ::={ dmAdMuxDatacom 37 } +-- DESCRIPTION +-- "DATACOM Mux DM300-8E1B Inverse Mux." + +dmAdMuxDatacomMuxDM1801 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 38 } +-- DESCRIPTION +-- "DATACOM Mux DM1801." + +dmAdMuxDatacomMuxDM300-MC OBJECT IDENTIFIER ::={ dmAdMuxDatacom 39 } +-- DESCRIPTION +-- "DATACOM Mux DM300-MC." + +dmAdMuxDatacomMuxDM991CS OBJECT IDENTIFIER ::={ dmAdMuxDatacom 40 } +-- DESCRIPTION +-- "DATACOM Modem Router DM991CS." + +dmAdMuxDatacomMuxDM706CS OBJECT IDENTIFIER ::={ dmAdMuxDatacom 41 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706CS." + +dmAdMuxDatacomMuxDM16E1sII OBJECT IDENTIFIER ::={ dmAdMuxDatacom 43 } +-- DESCRIPTION +-- "DATACOM Mux DM16E1sII." + +dmAdMuxDatacomMuxDM4E1sII OBJECT IDENTIFIER ::={ dmAdMuxDatacom 44 } +-- DESCRIPTION +-- "DATACOM Mux DM4E1sII." + +dmAdMuxDatacomMuxDM706PabxM1 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 45 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706 PABX M1." + +dmAdMuxDatacomMuxDM706PabxD1 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 46 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706 PABX D1." + +dmAdMuxDatacomMuxDM16E1InvMux OBJECT IDENTIFIER ::={ dmAdMuxDatacom 47 } +-- DESCRIPTION +-- "DATACOM Mux DM16E1 Inverse Mux." + +dmAdMuxDatacomMuxDM4E1InvMux OBJECT IDENTIFIER ::={ dmAdMuxDatacom 48 } +-- DESCRIPTION +-- "DATACOM Mux DM4E1 Inverse Mux." + +dmAdMuxDatacomMuxDM706PabxM2 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 49 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706 PABX M2." + +dmAdMuxDatacomMuxDM706PabxD2 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 50 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706 PABX D2." + +dmAdMuxDatacomMuxDM706E OBJECT IDENTIFIER ::={ dmAdMuxDatacom 51 } +-- DESCRIPTION +-- "DATACOM modem router DM706E." + +dmAdMuxDatacomMuxDM706M1 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 52 } +-- DESCRIPTION +-- "DATACOM modem router DM706M1." + +dmAdMuxDatacomMuxDM706M2 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 53 } +-- DESCRIPTION +-- "DATACOM modem router DM706M2." + +dmAdMuxDatacomMuxDM706M4 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 54 } +-- DESCRIPTION +-- "DATACOM modem router DM706M4." + +dmAdMuxDatacomMuxDM706PabxM OBJECT IDENTIFIER ::={ dmAdMuxDatacom 55 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706 PABX M." + +dmAdMuxDatacomMuxDM706PabxD OBJECT IDENTIFIER ::={ dmAdMuxDatacom 56 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706 PABX D." + +dmAdMuxDatacomMuxDM706Ehk OBJECT IDENTIFIER ::={ dmAdMuxDatacom 81 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706E-HK." + +dmAdMuxDatacomMuxDM706M1hk OBJECT IDENTIFIER ::={ dmAdMuxDatacom 82 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706M1-HK." + +dmAdMuxDatacomMuxDM706M2hk OBJECT IDENTIFIER ::={ dmAdMuxDatacom 83 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706M2-HK." + +dmAdMuxDatacomMuxDM706M4hk OBJECT IDENTIFIER ::={ dmAdMuxDatacom 84 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706M4-HK." + +dmAdMuxDatacomMuxDM706Ke OBJECT IDENTIFIER ::={ dmAdMuxDatacom 85 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706KE." + +dmAdMuxDatacomMuxDM706Km1 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 86 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706KM1." + +dmAdMuxDatacomMuxDM706Km2 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 87 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706KM2." + +dmAdMuxDatacomMuxDM706Km4 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 88 } +-- DESCRIPTION +-- "DATACOM Minimux Router DM706KM4." + +dmAdMuxDatacomMuxDMSTM1 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 101 } +-- DESCRIPTION +-- "DATACOM Mux DmSTM-1." + +dmAdMuxDatacomMuxDM705-CPU34-Sub OBJECT IDENTIFIER ::={ dmAdMuxDatacom 109 } +-- DESCRIPTION +-- "DATACOM Mux DM705-CPU34-Sub." + +dmAdMuxDatacomMuxDM705-CPU34 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 110 } +-- DESCRIPTION +-- "DATACOM Mux DM705-CPU34." + +dmAdMuxDatacomMuxDM705-CPU64-Sub OBJECT IDENTIFIER ::={ dmAdMuxDatacom 111 } +-- DESCRIPTION +-- "DATACOM Mux DM705-CPU64-Sub." + +dmAdMuxDatacomMuxDM705-CPU64 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 112 } +-- DESCRIPTION +-- "DATACOM Mux DM705-CPU64." + +dmAdMuxDatacomMuxDM705-CPU32-Sub OBJECT IDENTIFIER ::={ dmAdMuxDatacom 113 } +-- DESCRIPTION +-- "DATACOM Mux DM705-CPU32-Sub." + +dmAdMuxDatacomMuxDM705-CPU128-Sub OBJECT IDENTIFIER ::={ dmAdMuxDatacom 114 } +-- DESCRIPTION +-- "DATACOM Mux DM705-CPU128-Sub." + +dmAdMuxDatacomMuxDM881 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 116 } +-- DESCRIPTION +-- "DATACOM Mux DM881." + +dmAdMuxDatacomMuxDM814 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 117 } +-- DESCRIPTION +-- "DATACOM Mux DM814." + +dmAdMuxDatacomMuxDM830 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 118 } +-- DESCRIPTION +-- "DATACOM Mux DM830." + +dmAdMuxDatacomMuxDM880 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 119 } +-- DESCRIPTION +-- "DATACOM Mux DM880." + +dmAdMuxDatacomMuxDM810 OBJECT IDENTIFIER ::={ dmAdMuxDatacom 120 } +-- DESCRIPTION +-- "DATACOM Mux DM810." + + +END diff --git a/mibs/DATACOM-SMI.mib b/mibs/DATACOM-SMI.mib new file mode 100644 index 0000000000..6ac90e1387 --- /dev/null +++ b/mibs/DATACOM-SMI.mib @@ -0,0 +1,112 @@ +-- +-- DATACOM Telematica +-- Copyright 1999-2006 by Datacom Telematica (Teracom Telematica Ltda). All Rights Reserved. +-- This DATACOM SNMP MIB Specification is Datacom proprietary intellectual property. +-- +-- This module will be extend, as required. The specification and other information +-- contained in this document can be modified without prior notice. The user should +-- consult Datacom to determine whether any such changes have been done. +-- + +DATACOM-SMI DEFINITIONS ::= BEGIN + + +IMPORTS + enterprises + FROM RFC1155-SMI; + +datacom OBJECT IDENTIFIER ::={ enterprises 3709 } +-- MODULE-IDENTITY +-- LAST-UPDATED "9912150000Z" +-- ORGANIZATION "Datacom Telemática" +-- CONTACT-INFO +-- "Datacom Telemática +-- +-- Postal: Datacom Telematica +-- Av. França, 735 +-- Navegantes, POA, RS +-- CEP 90230-220 +-- BRAZIL +-- +-- Tel: +55(051)3358-0100 +-- Fax: +55(051)3358-0101 +-- +-- E-mail: datacom@datacom-telematica.com.br" +-- DESCRIPTION +-- " The Structure of Management Information for +-- Datacom Telematica enterprise. " +-- + +datacomRegistrations OBJECT IDENTIFIER ::={ datacom 1 } + + +datacomGenericMIBs OBJECT IDENTIFIER ::={ datacom 2 } + + +datacomProductsMIBs OBJECT IDENTIFIER ::={ datacom 3 } + + +datacomExperimental OBJECT IDENTIFIER ::={ datacom 4 } + + + + + +-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + + +-- -- -- -- -- -- -- -- -- -- -- -- -- -- +-- +-- datacomRegistration +-- Register the modules identification of MIBs +datacomModules OBJECT IDENTIFIER ::={ datacomRegistrations 1 } + +-- +-- Products registration +-- Register the management cards +datacomManagementCards OBJECT IDENTIFIER ::={ datacomRegistrations 2 } + +-- Register the modems +datacomModems OBJECT IDENTIFIER ::={ datacomRegistrations 3 } + + +-- Register the data converters. +datacomAccessDevices OBJECT IDENTIFIER ::={ datacomRegistrations 5 } + + + +-- -- -- -- -- -- -- -- -- -- -- -- -- -- +-- +-- datacomProductsMIBs + +-- Modem MIBs +datacomModemsMIBs OBJECT IDENTIFIER ::={ datacomProductsMIBs 3 } + +-- Access Devices MIBs +datacomAccessDevicesMIBs OBJECT IDENTIFIER ::={ datacomProductsMIBs 5 } + + + + +-- -- -- -- -- -- -- -- -- -- -- -- -- -- +-- +-- datacomExperimental + +datacomExpGenericMIBs OBJECT IDENTIFIER ::={ datacomExperimental 2 } + +datacomExpProductsMIBs OBJECT IDENTIFIER ::={ datacomExperimental 3 } + + +-- +-- datacomExpProductsMIBs +datacomExpModemsMIBs OBJECT IDENTIFIER ::={ datacomExpProductsMIBs 3 } + +-- Access Devices MIBs +datacomExpAccessDevicesMIBs OBJECT IDENTIFIER ::={ datacomExpProductsMIBs 5 } + + +END + + + + From cacb094343bd18d58e3af5418ce1d2c7ca332275 Mon Sep 17 00:00:00 2001 From: laf Date: Wed, 15 Apr 2015 20:30:47 +0100 Subject: [PATCH 23/59] Added check for oid as well --- includes/discovery/os/linux.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/discovery/os/linux.inc.php b/includes/discovery/os/linux.inc.php index 79b4552606..f710215181 100755 --- a/includes/discovery/os/linux.inc.php +++ b/includes/discovery/os/linux.inc.php @@ -15,7 +15,7 @@ if (!$os) elseif (strstr($sysDescr, "endian")) { $os = "endian"; } elseif (preg_match("/Cisco Small Business/", $sysDescr)) { $os = "ciscosmblinux"; } elseif (strpos($entPhysicalMfgName, "QNAP") !== FALSE) { $os = "qnap"; } - elseif (stristr($sysObjectId, "packetlogic")) { $os = "procera"; } + elseif (stristr($sysObjectId, "packetlogic") || strstr($sysObjectId, ".1.3.6.1.4.1.15397.2")) { $os = "procera"; } elseif (strstr($sysObjectId, ".1.3.6.1.4.1.10002.1") || strstr($sysObjectId, ".1.3.6.1.4.1.41112.1.4") || strpos(trim(snmp_get($device, "dot11manufacturerName.5", "-Osqnv", "IEEE802dot11-MIB")), "Ubiquiti") !== FALSE) { $os = "airos"; From 1d883afd0f8d547af5e18a27d7130d4cadb6eb08 Mon Sep 17 00:00:00 2001 From: laf Date: Wed, 15 Apr 2015 20:36:02 +0100 Subject: [PATCH 24/59] Updated poller file to use oid --- includes/polling/os/procera.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/polling/os/procera.inc.php b/includes/polling/os/procera.inc.php index 917c110c6d..8fa22db2c1 100644 --- a/includes/polling/os/procera.inc.php +++ b/includes/polling/os/procera.inc.php @@ -12,7 +12,7 @@ * the source code distribution for details. */ -if (stristr($poll_device['sysObjectID'], "packetlogic")) { +if (stristr($poll_device['sysObjectID'], "packetlogic") || strstr($poll_device['sysObjectId'], ".1.3.6.1.4.1.15397.2")) { $version = "PacketLogic"; $hardware = "PacketLogic"; } From a0503d63bdb2e28a2029ae591d98b7fb7b2ba78a Mon Sep 17 00:00:00 2001 From: Alan Gregory Date: Wed, 15 Apr 2015 16:40:33 -0300 Subject: [PATCH 25/59] Update Files and Added processor --- includes/discovery/processors/datacom.inc.php | 11 +++++++++++ includes/polling/os/datacom.inc.php | 8 ++++---- includes/polling/processors/datacom.inc.php | 3 +++ 3 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 includes/discovery/processors/datacom.inc.php create mode 100644 includes/polling/processors/datacom.inc.php diff --git a/includes/discovery/processors/datacom.inc.php b/includes/discovery/processors/datacom.inc.php new file mode 100644 index 0000000000..90591c3d27 --- /dev/null +++ b/includes/discovery/processors/datacom.inc.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/includes/polling/os/datacom.inc.php b/includes/polling/os/datacom.inc.php index 2785f0b445..ffd78d6e6b 100644 --- a/includes/polling/os/datacom.inc.php +++ b/includes/polling/os/datacom.inc.php @@ -1,6 +1,6 @@ \ No newline at end of file diff --git a/includes/polling/processors/datacom.inc.php b/includes/polling/processors/datacom.inc.php new file mode 100644 index 0000000000..600ab93ae3 --- /dev/null +++ b/includes/polling/processors/datacom.inc.php @@ -0,0 +1,3 @@ + \ No newline at end of file From 8b8d4492530b17a65d04491c4dd4dea1f8ffdd6a Mon Sep 17 00:00:00 2001 From: laf Date: Wed, 15 Apr 2015 21:17:14 +0100 Subject: [PATCH 26/59] Updated oid on poller --- includes/polling/os/procera.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/polling/os/procera.inc.php b/includes/polling/os/procera.inc.php index 8fa22db2c1..639353e139 100644 --- a/includes/polling/os/procera.inc.php +++ b/includes/polling/os/procera.inc.php @@ -12,7 +12,7 @@ * the source code distribution for details. */ -if (stristr($poll_device['sysObjectID'], "packetlogic") || strstr($poll_device['sysObjectId'], ".1.3.6.1.4.1.15397.2")) { +if (stristr($poll_device['sysObjectID'], "packetlogic") || strstr($poll_device['sysObjectId'], "enterprises.15397.2")) { $version = "PacketLogic"; $hardware = "PacketLogic"; } From 49751fe0d331556df9f4c728a8bcfc1158912fee Mon Sep 17 00:00:00 2001 From: laf Date: Wed, 15 Apr 2015 21:35:31 +0100 Subject: [PATCH 27/59] oid lookup added --- includes/polling/os/procera.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/polling/os/procera.inc.php b/includes/polling/os/procera.inc.php index 639353e139..0ff28383d9 100644 --- a/includes/polling/os/procera.inc.php +++ b/includes/polling/os/procera.inc.php @@ -12,7 +12,7 @@ * the source code distribution for details. */ -if (stristr($poll_device['sysObjectID'], "packetlogic") || strstr($poll_device['sysObjectId'], "enterprises.15397.2")) { +if (stristr($poll_device['sysObjectID'], "packetlogic") || strstr($poll_device['sysObjectID'], "enterprises.15397.2") || strstr($poll_device['sysObjectID'], ".1.3.6.1.4.1.15397.2")) { $version = "PacketLogic"; $hardware = "PacketLogic"; } From 840d1b7cda503855f45116b6b860828b0e67f24f Mon Sep 17 00:00:00 2001 From: Mike Rostermund Date: Thu, 16 Apr 2015 01:50:13 +0200 Subject: [PATCH 28/59] Hide divider when no plugins are enabled --- html/includes/print-menubar.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/html/includes/print-menubar.php b/html/includes/print-menubar.php index 6ac12cb7b8..52f1fe4868 100644 --- a/html/includes/print-menubar.php +++ b/html/includes/print-menubar.php @@ -433,8 +433,12 @@ Plugins::call('menu'); if ($_SESSION['userlevel'] >= '10') { - echo(' + if (dbFetchCell("SELECT COUNT(*) from `plugins` WHERE plugin_active = '1'") > 0) { + echo(' + '); + } + echo('
  • Plugin Admin
  • '); } From 5092c6d9acb8ab22cb61902c17c83d5f840d205b Mon Sep 17 00:00:00 2001 From: laf Date: Wed, 15 Apr 2015 08:36:02 +0100 Subject: [PATCH 29/59] Updated the way cisco detection works --- includes/polling/os/cisco.inc.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/includes/polling/os/cisco.inc.php b/includes/polling/os/cisco.inc.php index bed288e036..61d5dba526 100644 --- a/includes/polling/os/cisco.inc.php +++ b/includes/polling/os/cisco.inc.php @@ -1,14 +1,14 @@ Date: Thu, 16 Apr 2015 10:08:19 +0000 Subject: [PATCH 30/59] CSV Exports --- html/csv.php | 52 +++++++ ...lert-log.inc.php => alert-log.pdf.inc.php} | 0 .../{example.inc.php => example.pdf.inc.php} | 0 html/includes/reports/ports.csv.inc.php | 137 ++++++++++++++++++ html/includes/vars.inc.php | 40 +++++ html/index.php | 40 +---- html/pages/ports.inc.php | 1 + html/pdf.php | 2 +- 8 files changed, 232 insertions(+), 40 deletions(-) create mode 100644 html/csv.php rename html/includes/reports/{alert-log.inc.php => alert-log.pdf.inc.php} (100%) rename html/includes/reports/{example.inc.php => example.pdf.inc.php} (100%) create mode 100644 html/includes/reports/ports.csv.inc.php create mode 100644 html/includes/vars.inc.php diff --git a/html/csv.php b/html/csv.php new file mode 100644 index 0000000000..1f9dee0ca8 --- /dev/null +++ b/html/csv.php @@ -0,0 +1,52 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if (strpos($_SERVER['PATH_INFO'], "debug")) +{ + $debug = "1"; + ini_set('display_errors', 1); + ini_set('display_startup_errors', 1); + ini_set('log_errors', 1); + ini_set('error_reporting', E_ALL); +} else { + $debug = FALSE; + ini_set('display_errors', 0); + ini_set('display_startup_errors', 0); + ini_set('log_errors', 0); + ini_set('error_reporting', 0); +} + +include "../includes/defaults.inc.php"; +include "../config.php"; +include_once "../includes/definitions.inc.php"; +include "../includes/functions.php"; +include "includes/functions.inc.php"; +include "includes/vars.inc.php"; +include "includes/authenticate.inc.php"; + +$report = mres($vars['report']); +if( !empty($report) && file_exists("includes/reports/$report.csv.inc.php")) { + if( $debug == false ) { + header("Content-Type: text/csv"); + header('Content-Disposition: attachment; filename="'.$report.'-'.date('Ymd').'.csv"'); + } + $csv = array(); + include_once "includes/reports/$report.csv.inc.php"; + foreach( $csv as $line ) { + echo implode(',',$line)."\n"; + } +} else { + echo "Report not found.\n"; +} +?> diff --git a/html/includes/reports/alert-log.inc.php b/html/includes/reports/alert-log.pdf.inc.php similarity index 100% rename from html/includes/reports/alert-log.inc.php rename to html/includes/reports/alert-log.pdf.inc.php diff --git a/html/includes/reports/example.inc.php b/html/includes/reports/example.pdf.inc.php similarity index 100% rename from html/includes/reports/example.inc.php rename to html/includes/reports/example.pdf.inc.php diff --git a/html/includes/reports/ports.csv.inc.php b/html/includes/reports/ports.csv.inc.php new file mode 100644 index 0000000000..5013afd414 --- /dev/null +++ b/html/includes/reports/ports.csv.inc.php @@ -0,0 +1,137 @@ + $value) +{ + if ($value != "") + { + switch ($var) + { + case 'hostname': + $where .= " AND D.hostname LIKE ?"; + $param[] = "%".$value."%"; + break; + case 'location': + $where .= " AND D.location LIKE ?"; + $param[] = "%".$value."%"; + break; + case 'device_id': + $where .= " AND D.device_id = ?"; + $param[] = $value; + break; + case 'deleted': + case 'ignore': + if ($value == 1) + { + $where .= " AND (I.ignore = 1 OR D.ignore = 1) AND I.deleted = 0"; + } + break; + case 'disable': + case 'ifSpeed': + if (is_numeric($value)) + { + $where .= " AND I.$var = ?"; + $param[] = $value; + } + break; + case 'ifType': + $where .= " AND I.$var = ?"; + $param[] = $value; + break; + case 'ifAlias': + case 'port_descr_type': + $where .= " AND I.$var LIKE ?"; + $param[] = "%".$value."%"; + break; + case 'errors': + if ($value == 1) + { + $where .= " AND (I.`ifInErrors_delta` > '0' OR I.`ifOutErrors_delta` > '0')"; + } + break; + case 'state': + if ($value == "down") + { + $where .= "AND I.ifAdminStatus = ? AND I.ifOperStatus = ?"; + $param[] = "up"; + $param[] = "down"; + } elseif($value == "up") { + $where .= "AND I.ifAdminStatus = ? AND I.ifOperStatus = ? AND I.ignore = '0' AND D.ignore='0' AND I.deleted='0'"; + $param[] = "up"; + $param[] = "up"; + } elseif($value == "admindown") { + $where .= "AND I.ifAdminStatus = ? AND D.ignore = 0"; + $param[] = "down"; + } + break; + } + } +} + +$query = "SELECT * FROM `ports` AS I, `devices` AS D WHERE I.device_id = D.device_id ".$where." ".$query_sort; + +$row = 1; + +list($format, $subformat) = explode("_", $vars['format']); + +$ports = dbFetchRows($query, $param); + +switch ($vars['sort']) +{ + case 'traffic': + $ports = array_sort($ports, 'ifOctets_rate', SORT_DESC); + break; + case 'traffic_in': + $ports = array_sort($ports, 'ifInOctets_rate', SORT_DESC); + break; + case 'traffic_out': + $ports = array_sort($ports, 'ifOutOctets_rate', SORT_DESC); + break; + case 'packets': + $ports = array_sort($ports, 'ifUcastPkts_rate', SORT_DESC); + break; + case 'packets_in': + $ports = array_sort($ports, 'ifInUcastOctets_rate', SORT_DESC); + break; + case 'packets_out': + $ports = array_sort($ports, 'ifOutUcastOctets_rate', SORT_DESC); + break; + case 'errors': + $ports = array_sort($ports, 'ifErrors_rate', SORT_DESC); + break; + case 'speed': + $ports = array_sort($ports, 'ifSpeed', SORT_DESC); + break; + case 'port': + $ports = array_sort($ports, 'ifDescr', SORT_ASC); + break; + case 'media': + $ports = array_sort($ports, 'ifType', SORT_ASC); + break; + case 'descr': + $ports = array_sort($ports, 'ifAlias', SORT_ASC); + break; + case 'device': + default: + $ports = array_sort($ports, 'hostname', SORT_ASC); +} + +$csv[] = array('Device','Port','Speed','Down','Up','Media','Description'); +foreach( $ports as $port ) { + if( port_permitted($port['port_id'], $port['device_id']) ) { + $speed = humanspeed($port['ifSpeed']); + $type = humanmedia($port['ifType']); + $port['in_rate'] = formatRates($port['ifInOctets_rate'] * 8); + $port['out_rate'] = formatRates($port['ifOutOctets_rate'] * 8); + $port = ifLabel($port, $device); + $csv[] = array($port['hostname'],fixIfName($port['label']),$speed,$port['in_rate'],$port['out_rate'],$type,$port['ifAlias']); + } +} +?> diff --git a/html/includes/vars.inc.php b/html/includes/vars.inc.php new file mode 100644 index 0000000000..788915f694 --- /dev/null +++ b/html/includes/vars.inc.php @@ -0,0 +1,40 @@ +$get_var) +{ + if (strstr($key, "opt")) + { + list($name, $value) = explode("|", $get_var); + if (!isset($value)) { $value = "yes"; } + $vars[$name] = $value; + } +} + +$segments = explode('/', trim($_SERVER['REQUEST_URI'], '/')); + +foreach ($segments as $pos => $segment) +{ + $segment = urldecode($segment); + if ($pos == "0") + { + $vars['page'] = $segment; + } else { + list($name, $value) = explode("=", $segment); + if ($value == "" || !isset($value)) + { + $vars[$name] = yes; + } else { + $vars[$name] = $value; + } + } +} + +foreach ($_GET as $name => $value) +{ + $vars[$name] = $value; +} + +foreach ($_POST as $name => $value) +{ + $vars[$name] = $value; +} diff --git a/html/index.php b/html/index.php index a7baf36ae9..62618323c7 100755 --- a/html/index.php +++ b/html/index.php @@ -52,6 +52,7 @@ include("../config.php"); include_once("../includes/definitions.inc.php"); include("../includes/functions.php"); include("includes/functions.inc.php"); +include("includes/vars.inc.php"); include('includes/plugins.inc.php'); Plugins::start(); @@ -70,45 +71,6 @@ ob_start(); ini_set('allow_url_fopen', 0); ini_set('display_errors', 0); -foreach ($_GET as $key=>$get_var) -{ - if (strstr($key, "opt")) - { - list($name, $value) = explode("|", $get_var); - if (!isset($value)) { $value = "yes"; } - $vars[$name] = $value; - } -} - -$segments = explode('/', trim($_SERVER['REQUEST_URI'], '/')); - -foreach ($segments as $pos => $segment) -{ - $segment = urldecode($segment); - if ($pos == "0") - { - $vars['page'] = $segment; - } else { - list($name, $value) = explode("=", $segment); - if ($value == "" || !isset($value)) - { - $vars[$name] = yes; - } else { - $vars[$name] = $value; - } - } -} - -foreach ($_GET as $name => $value) -{ - $vars[$name] = $value; -} - -foreach ($_POST as $name => $value) -{ - $vars[$name] = $value; -} - include("includes/authenticate.inc.php"); if (strstr($_SERVER['REQUEST_URI'], 'widescreen=yes')) { $_SESSION['widescreen'] = 1; } diff --git a/html/pages/ports.inc.php b/html/pages/ports.inc.php index 23977e5e75..386100262a 100644 --- a/html/pages/ports.inc.php +++ b/html/pages/ports.inc.php @@ -60,6 +60,7 @@ foreach ($menu_options as $option => $text) echo('
    '); ?> + Export CSV | Update URL | setTextShadow(array('enabled'=>false, 'depth_w'=>0.2, 'depth_h'=>0.2, 'col if (isset($_GET['report']) && !empty($_GET['report'])) { $report = mres($_GET['report']); $pdf->SetHeaderData('../../' . $config['title_image'], 40, ucfirst($report), $config['project_name'], array(0,0,0), array(0,64,128)); - include_once "includes/reports/$report.inc.php"; + include_once "includes/reports/$report.pdf.inc.php"; } else { $report = 'report'; } From 4f12359c1a3650d3da2df8858bea2d837adb5b17 Mon Sep 17 00:00:00 2001 From: laf Date: Fri, 17 Apr 2015 11:20:44 +0100 Subject: [PATCH 31/59] Added fallback to grab serial and version for ibm switches --- includes/polling/os/ibmnos.inc.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/includes/polling/os/ibmnos.inc.php b/includes/polling/os/ibmnos.inc.php index a39c88ce3b..a8cfcaff56 100644 --- a/includes/polling/os/ibmnos.inc.php +++ b/includes/polling/os/ibmnos.inc.php @@ -28,6 +28,12 @@ if (strpos($sysdescr_value, 'IBM Networking Operating System') !== false) { $version = trim(snmp_get($device, ".1.3.6.1.4.1.20301.2.7.13.1.1.1.10.0", "-Ovq") , '" '); $serial = trim(snmp_get($device, ".1.3.6.1.4.1.20301.100.100.14.9.0", "-Ovq") , '" '); } + if (empty($version)) { + $version = trim(snmp_get($device, ".1.3.6.1.2.1.47.1.1.1.1.10.1", "-Ovq") , '" '); + } + if (empty($serial)) { + $serial = trim(snmp_get($device, ".1.3.6.1.2.1.47.1.1.1.1.11.1", "-Ovq") , '" '); + } } elseif (strpos($sysdescr_value, 'IBM Flex System Fabric') !== false) { $hardware = str_replace("IBM Flex System Fabric", "", $sysdescr_value); $version = trim(snmp_get($device, ".1.3.6.1.2.1.47.1.1.1.1.10.1", "-Ovq") , '" '); From c9f086484ad0e6e56f7f8ae646216686266ccf93 Mon Sep 17 00:00:00 2001 From: laf Date: Fri, 17 Apr 2015 16:24:51 +0100 Subject: [PATCH 32/59] Updated map to include graphs --- html/includes/functions.inc.php | 28 ++++++++++++++++++---------- html/includes/print-map.inc.php | 15 ++++++++------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/html/includes/functions.inc.php b/html/includes/functions.inc.php index 6a94719f1d..0018d8cd2a 100644 --- a/html/includes/functions.inc.php +++ b/html/includes/functions.inc.php @@ -122,7 +122,7 @@ function generate_device_url($device, $vars=array()) return generate_url(array('page' => 'device', 'device' => $device['device_id']), $vars); } -function generate_device_link($device, $text=NULL, $vars=array(), $start=0, $end=0, $escape_text=1) +function generate_device_link($device, $text=NULL, $vars=array(), $start=0, $end=0, $escape_text=1, $no_overlib=0) { global $config; @@ -168,7 +168,11 @@ function generate_device_link($device, $text=NULL, $vars=array(), $start=0, $end } if ($escape_text) { $text = htmlentities($text); } - $link = overlib_link($url, $text, escape_quotes($contents), $class); + if ($no_overlib == 1) { + $link = $contents; + } else { + $link = overlib_link($url, $text, escape_quotes($contents), $class); + } if (device_permitted($device['device_id'])) { @@ -404,7 +408,7 @@ function generate_entity_link($type, $entity, $text = NULL, $graph_type=NULL) } -function generate_port_link($port, $text = NULL, $type = NULL) +function generate_port_link($port, $text = NULL, $type = NULL, $no_overlib = 0, $single_graph = 0) { global $config; @@ -429,17 +433,21 @@ function generate_port_link($port, $text = NULL, $type = NULL) $graph_array['from'] = $config['time']['day']; $graph_array['id'] = $port['port_id']; $content .= generate_graph_tag($graph_array); - $graph_array['from'] = $config['time']['week']; - $content .= generate_graph_tag($graph_array); - $graph_array['from'] = $config['time']['month']; - $content .= generate_graph_tag($graph_array); - $graph_array['from'] = $config['time']['year']; - $content .= generate_graph_tag($graph_array); + if ($single_graph == 0) { + $graph_array['from'] = $config['time']['week']; + $content .= generate_graph_tag($graph_array); + $graph_array['from'] = $config['time']['month']; + $content .= generate_graph_tag($graph_array); + $graph_array['from'] = $config['time']['year']; + $content .= generate_graph_tag($graph_array); + } $content .= "
    "; $url = generate_port_url($port); - if (port_permitted($port['port_id'], $port['device_id'])) { + if ($no_overlib == 1) { + return $content; + } elseif (port_permitted($port['port_id'], $port['device_id'])) { return overlib_link($url, $text, $content, $class); } else { return fixifName($text); diff --git a/html/includes/print-map.inc.php b/html/includes/print-map.inc.php index 97ca4a7e20..75e4ae090d 100644 --- a/html/includes/print-map.inc.php +++ b/html/includes/print-map.inc.php @@ -25,12 +25,12 @@ $sql .= ' AND `local_device_id` != 0 AND `remote_device_id` != 0'; $tmp_ids = array(); foreach (dbFetchRows("SELECT DISTINCT least(`devices`.`device_id`, `remote_device_id`) AS `remote_device_id`, GREATEST(`remote_device_id`,`devices`.`device_id`) AS `local_device_id` FROM `links` LEFT JOIN `ports` ON `local_port_id`=`ports`.`port_id` LEFT JOIN `devices` ON `ports`.`device_id`=`devices`.`device_id` $sql", $sql_array) as $link_devices) { if (!in_array($link_devices['local_device_id'], $tmp_ids) && device_permitted($link_devices['local_device_id'])) { - $link_dev = dbFetchRow("SELECT `hostname`,`location` FROM `devices` WHERE `device_id`=?",array($link_devices['local_device_id'])); - $tmp_devices[] = array('id'=>$link_devices['local_device_id'],'label'=>$link_dev['hostname'],'title'=>$link_dev['hostname'],'group'=>$link_dev['location']); + $link_dev = dbFetchRow("SELECT * FROM `devices` WHERE `device_id`=?",array($link_devices['local_device_id'])); + $tmp_devices[] = array('id'=>$link_devices['local_device_id'],'label'=>$link_dev['hostname'],'title'=>generate_device_link($link_dev,'','','','','',1,1),'group'=>$link_dev['location']); } if (!in_array($link_devices['remote_device_id'], $tmp_ids) && device_permitted($link_devices['remote_device_id'])) { - $link_dev = dbFetchRow("SELECT `hostname`,`location` FROM `devices` WHERE `device_id`=?",array($link_devices['remote_device_id'])); - $tmp_devices[] = array('id'=>$link_devices['remote_device_id'],'label'=>$link_dev['hostname'],'title'=>$link_dev['hostname'],'group'=>$link_dev['location']); + $link_dev = dbFetchRow("SELECT * FROM `devices` WHERE `device_id`=?",array($link_devices['remote_device_id'])); + $tmp_devices[] = array('id'=>$link_devices['remote_device_id'],'label'=>$link_dev['hostname'],'title'=>generate_device_link($link_dev,'','','','','',1,1),'group'=>$link_dev['location']); } array_push($tmp_ids,$link_devices['local_device_id']); array_push($tmp_ids,$link_devices['remote_device_id']); @@ -42,11 +42,12 @@ $nodes = json_encode($tmp_devices); if (is_array($tmp_devices[0])) { $tmp_links = array(); - foreach (dbFetchRows("SELECT local_device_id, remote_device_id, `remote_hostname`,`ports`.`ifName` AS `local_port`, `remote_port`,`ports`.`ifSpeed` AS ifSpeed FROM `links` LEFT JOIN `ports` ON `local_port_id`=`ports`.`port_id` LEFT JOIN `devices` ON `ports`.`device_id`=`devices`.`device_id` WHERE (`local_device_id` IN ($tmp_ids) AND `remote_device_id` IN ($tmp_ids))") as $link_devices) { + foreach (dbFetchRows("SELECT local_device_id, remote_device_id, `remote_hostname`,`ports`.*, `remote_port` FROM `links` LEFT JOIN `ports` ON `local_port_id`=`ports`.`port_id` LEFT JOIN `devices` ON `ports`.`device_id`=`devices`.`device_id` WHERE (`local_device_id` IN ($tmp_ids) AND `remote_device_id` IN ($tmp_ids))") as $link_devices) { foreach ($tmp_devices as $k=>$v) { if ($v['id'] == $link_devices['local_device_id']) { $from = $v['id']; - $port = shorten_interface_type($link_devices['local_port']); + $port = shorten_interface_type($link_devices['ifName']); + $port_data = $link_devices; } if ($v['id'] == $link_devices['remote_device_id']) { $to = $v['id']; @@ -67,7 +68,7 @@ if (is_array($tmp_devices[0])) { } else { $width = 1; } - $tmp_links[] = array('from'=>$from,'to'=>$to,'label'=>$port,'title'=>$port,'width'=>$width); + $tmp_links[] = array('from'=>$from,'to'=>$to,'label'=>$port,'title'=>generate_port_link($port_data, "",'',1,1),'width'=>$width); } $edges = json_encode($tmp_links); From 169353d6ef25e2eab4a975551959582793c29982 Mon Sep 17 00:00:00 2001 From: f0o Date: Fri, 17 Apr 2015 16:53:31 +0000 Subject: [PATCH 33/59] Added nginx-hack to fix missing $_SERVER[PATH_INFO] --- html/index.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/html/index.php b/html/index.php index 62618323c7..9f2a847087 100755 --- a/html/index.php +++ b/html/index.php @@ -12,7 +12,11 @@ * */ -$_SERVER['PATH_INFO'] = !empty($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : (!empty($_SERVER['ORIG_PATH_INFO']) ? $_SERVER['ORIG_PATH_INFO'] : ''); +if( strstr($_SERVER['SERVER_SOFTWARE'],"nginx") ) { + $_SERVER['PATH_INFO'] = str_replace($_SERVER['PATH_TRANSLATED'].$_SERVER['PHP_SELF'],"",$_SERVER['ORIG_SCRIPT_FILENAME']); +} else { + $_SERVER['PATH_INFO'] = !empty($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : (!empty($_SERVER['ORIG_PATH_INFO']) ? $_SERVER['ORIG_PATH_INFO'] : ''); +} function logErrors($errno, $errstr, $errfile, $errline) { global $php_debug; From d26e282834828e109c5a581d0410588164a638b7 Mon Sep 17 00:00:00 2001 From: laf Date: Fri, 17 Apr 2015 19:56:46 +0100 Subject: [PATCH 34/59] Changed vis settings and added link utilisation --- html/includes/print-map.inc.php | 40 ++++++++++++++++++++++++++++----- includes/defaults.inc.php | 3 +++ 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/html/includes/print-map.inc.php b/html/includes/print-map.inc.php index 75e4ae090d..90a71adbdb 100644 --- a/html/includes/print-map.inc.php +++ b/html/includes/print-map.inc.php @@ -14,8 +14,8 @@ $tmp_devices = array(); if (!empty($device['hostname'])) { - $sql = ' WHERE `devices`.`hostname`=?'; - $sql_array = array($device['hostname']); + $sql = ' WHERE `devices`.`hostname`=? OR `remote_hostname`=?'; + $sql_array = array($device['hostname'],$device['hostname']); } else { $sql = ' WHERE 1'; } @@ -68,7 +68,20 @@ if (is_array($tmp_devices[0])) { } else { $width = 1; } - $tmp_links[] = array('from'=>$from,'to'=>$to,'label'=>$port,'title'=>generate_port_link($port_data, "",'',1,1),'width'=>$width); + $link_in_used = ($link_devices['ifInOctets_rate'] * 8) / $link_devices['ifSpeed'] * 100; + $link_out_used = ($link_devices['ifOutOctets_rate'] * 8) / $link_devices['ifSpeed'] * 100; + if ($link_in_used > $link_out_used) { + $link_used = $link_in_used; + } else { + $link_used = $link_out_used; + } + $link_used = round($link_used, -1); + if ($link_used > 100) { + $link_used = 100; + } + $link_color = $config['map_legend'][$link_used]; + + $tmp_links[] = array('from'=>$from,'to'=>$to,'label'=>$port,'title'=>generate_port_link($port_data, "",'',1,1),'width'=>$width,'color'=>$link_color); } $edges = json_encode($tmp_links); @@ -98,9 +111,26 @@ echo $edges; var data = { nodes: nodes, edges: edges, - stabilize: true + stabilize: false + }; + var options = { + physics: { + barnesHut: { + gravitationalConstant: -80000, springConstant: 0.001, springLength: 200 + } + }, + tooltip: { + color: { + background: '#ffffff' + } + }, + smoothCurves: {dynamic:false, type: "continuous"}, + edges: { + color: { + color: '#000000' + } + } }; - var options = {physics: {barnesHut: {gravitationalConstant: -11900, centralGravity: 1.4, springLength: 203, springConstant: 0.05, damping: 0.3}}, smoothCurves: false}; var network = new vis.Network(container, data, options); network.on("resize", function(params) {console.log(params.width,params.height)}); network.on('click', function (properties) { diff --git a/includes/defaults.inc.php b/includes/defaults.inc.php index c9cc3d4c2c..cacc1f5b9f 100644 --- a/includes/defaults.inc.php +++ b/includes/defaults.inc.php @@ -252,6 +252,9 @@ $config['graph_colours']['blues'] = array('A0A0E5','8080BD','606096','40406F', $config['graph_colours']['purples'] = array('CC7CCC','AF63AF','934A93','773177','5B185B','3F003F'); $config['graph_colours']['default'] = $config['graph_colours']['blues']; +// Map colors +$config['map_legend'] = array('0'=> '#ffffff', '10' => '#79847e', '20' => '#97ffca', '30' => '#a800ff', '40' => '#6c00ff', '50' => '#00d2ff', '60' => '#0090ff', '70' => '#ffe400', '80' => '#ffa200', '90' => '#ff6600', '100' => '#ff0000'); + // Device page options $config['show_overview_tab'] = TRUE; From a608d7648d6a77e3f1c84b2ab08bb5d9b0799fba Mon Sep 17 00:00:00 2001 From: Chris Freas Date: Fri, 17 Apr 2015 14:57:23 -0400 Subject: [PATCH 35/59] I agree to the conditions of the Contributor Agreement contained in doc/General/Contributing.md. --- AUTHORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.md b/AUTHORS.md index c81e1a7daf..ad60a7f798 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -19,6 +19,7 @@ Contributors to LibreNMS: - Alan Gregory (alangregory) - Joubert RedRat (joubertredrat) - Len Lin (Ultra2D) +- Christopher Freas (nwautomator) [1]: http://observium.org/ "Observium web site" From ab45804e62aa9b4ece2beb1bdff7539aacb065c9 Mon Sep 17 00:00:00 2001 From: Chris Freas Date: Fri, 17 Apr 2015 14:59:47 -0400 Subject: [PATCH 36/59] Add Juniper inventory support --- includes/discovery/entity-physical.inc.php | 241 ++++++++++++--------- 1 file changed, 139 insertions(+), 102 deletions(-) diff --git a/includes/discovery/entity-physical.inc.php b/includes/discovery/entity-physical.inc.php index e60e50514e..88aee578ed 100755 --- a/includes/discovery/entity-physical.inc.php +++ b/includes/discovery/entity-physical.inc.php @@ -1,123 +1,160 @@ $entry) { - - $entPhysicalDescr = $entry['entPhysicalDescr']; - $entPhysicalContainedIn = $entry['entPhysicalContainedIn']; - $entPhysicalClass = $entry['entPhysicalClass']; - $entPhysicalName = $entry['entPhysicalName']; - $entPhysicalSerialNum = $entry['entPhysicalSerialNum']; - $entPhysicalModelName = $entry['entPhysicalModelName']; - $entPhysicalMfgName = $entry['entPhysicalMfgName']; - $entPhysicalVendorType = $entry['entPhysicalVendorType']; - $entPhysicalParentRelPos = $entry['entPhysicalParentRelPos']; - $entPhysicalHardwareRev = $entry['entPhysicalHardwareRev']; - $entPhysicalFirmwareRev = $entry['entPhysicalFirmwareRev']; - $entPhysicalSoftwareRev = $entry['entPhysicalSoftwareRev']; - $entPhysicalIsFRU = $entry['entPhysicalIsFRU']; - $entPhysicalAlias = $entry['entPhysicalAlias']; - $entPhysicalAssetID = $entry['entPhysicalAssetID']; - - if (isset($entity_array[$entPhysicalIndex]['0']['entAliasMappingIdentifier'])) { - $ifIndex = $entity_array[$entPhysicalIndex]['0']['entAliasMappingIdentifier']; - } - - if (!strpos($ifIndex, "fIndex") || $ifIndex == "") { - unset($ifIndex); + $entity_array = array(); + echo(" jnxBoxAnatomy"); + $entity_array = snmpwalk_cache_oid($device, "jnxBoxAnatomy", $entity_array, "JUNIPER-MIB"); } else { - $ifIndex_array = explode(".", $ifIndex); - $ifIndex = $ifIndex_array[1]; + + $entity_array = array(); + echo(" entPhysicalEntry"); + $entity_array = snmpwalk_cache_oid($device, "entPhysicalEntry", $entity_array, "ENTITY-MIB:CISCO-ENTITY-VENDORTYPE-OID-MIB"); + echo(" entAliasMappingIdentifier"); + $entity_array = snmpwalk_cache_twopart_oid($device, "entAliasMappingIdentifier", $entity_array, "ENTITY-MIB:IF-MIB"); } - if ($entPhysicalVendorTypes[$entPhysicalVendorType] && !$entPhysicalModelName) - { - $entPhysicalModelName = $entPhysicalVendorTypes[$entPhysicalVendorType]; - } + foreach ($entity_array as $entPhysicalIndex => $entry) { - // FIXME - dbFacile + if ($device['os'] == 'junos') { - if ($entPhysicalDescr || $entPhysicalName) - { - $entPhysical_id = dbFetchCell("SELECT entPhysical_id FROM `entPhysical` WHERE device_id = ? AND entPhysicalIndex = ?",array($device['device_id'], $entPhysicalIndex)); + // Juniper's MIB doesn't have the same objects as the Entity MIB, so some values + // are made up here. + $entPhysicalDescr = $entry['jnxContentsDescr']; + $entPhysicalContainedIn = $entry['jnxContainersWithin']; + $entPhysicalClass = $entry['jnxBoxClass']; + $entPhysicalName = $entry['jnxOperatingDescr']; + $entPhysicalSerialNum = $entry['jnxContentsSerialNo']; + $entPhysicalModelName = $entry['jnxContentsPartNo']; + $entPhysicalMfgName = 'Juniper'; + $entPhysicalVendorType = 'Juniper'; + $entPhysicalParentRelPos = -1; + $entPhysicalHardwareRev = $entry['jnxContentsRevision']; + $entPhysicalFirmwareRev = $entry['entPhysicalFirmwareRev']; + $entPhysicalSoftwareRev = $entry['entPhysicalSoftwareRev']; + $entPhysicalIsFRU = $entry['jnxFruType']; + $entPhysicalAlias = $entry['entPhysicalAlias']; + $entPhysicalAssetID = $entry['entPhysicalAssetID']; + } else { - if ($entPhysical_id) { - $update_data = array( - 'entPhysicalIndex' => $entPhysicalIndex, - 'entPhysicalDescr' => $entPhysicalDescr, - 'entPhysicalClass' => $entPhysicalClass, - 'entPhysicalName' => $entPhysicalName, - 'entPhysicalModelName' => $entPhysicalModelName, - 'entPhysicalSerialNum' => $entPhysicalSerialNum, - 'entPhysicalContainedIn' => $entPhysicalContainedIn, - 'entPhysicalMfgName' => $entPhysicalMfgName, - 'entPhysicalParentRelPos' => $entPhysicalParentRelPos, - 'entPhysicalVendorType' => $entPhysicalVendorType, - 'entPhysicalHardwareRev' => $entPhysicalHardwareRev, - 'entPhysicalFirmwareRev' => $entPhysicalFirmwareRev, - 'entPhysicalSoftwareRev' => $entPhysicalSoftwareRev, - 'entPhysicalIsFRU' => $entPhysicalIsFRU, - 'entPhysicalAlias' => $entPhysicalAlias, - 'entPhysicalAssetID' => $entPhysicalAssetID - ); - dbUpdate($update_data, 'entPhysical', 'device_id=? AND entPhysicalIndex=?',array($device['device_id'],$entPhysicalIndex)); - echo("."); - } else { - $insert_data = array( - 'device_id' => $device['device_id'], - 'entPhysicalIndex' => $entPhysicalIndex, - 'entPhysicalDescr' => $entPhysicalDescr, - 'entPhysicalClass' => $entPhysicalClass, - 'entPhysicalName' => $entPhysicalName, - 'entPhysicalModelName' => $entPhysicalModelName, - 'entPhysicalSerialNum' => $entPhysicalSerialNum, - 'entPhysicalContainedIn' => $entPhysicalContainedIn, - 'entPhysicalMfgName' => $entPhysicalMfgName, - 'entPhysicalParentRelPos' => $entPhysicalParentRelPos, - 'entPhysicalVendorType' => $entPhysicalVendorType, - 'entPhysicalHardwareRev' => $entPhysicalHardwareRev, - 'entPhysicalFirmwareRev' => $entPhysicalFirmwareRev, - 'entPhysicalSoftwareRev' => $entPhysicalSoftwareRev, - 'entPhysicalIsFRU' => $entPhysicalIsFRU, - 'entPhysicalAlias' => $entPhysicalAlias, - 'entPhysicalAssetID' => $entPhysicalAssetID - ); + $entPhysicalDescr = $entry['entPhysicalDescr']; + $entPhysicalContainedIn = $entry['entPhysicalContainedIn']; + $entPhysicalClass = $entry['entPhysicalClass']; + $entPhysicalName = $entry['entPhysicalName']; + $entPhysicalSerialNum = $entry['entPhysicalSerialNum']; + $entPhysicalModelName = $entry['entPhysicalModelName']; + $entPhysicalMfgName = $entry['entPhysicalMfgName']; + $entPhysicalVendorType = $entry['entPhysicalVendorType']; + $entPhysicalParentRelPos = $entry['entPhysicalParentRelPos']; + $entPhysicalHardwareRev = $entry['entPhysicalHardwareRev']; + $entPhysicalFirmwareRev = $entry['entPhysicalFirmwareRev']; + $entPhysicalSoftwareRev = $entry['entPhysicalSoftwareRev']; + $entPhysicalIsFRU = $entry['entPhysicalIsFRU']; + $entPhysicalAlias = $entry['entPhysicalAlias']; + $entPhysicalAssetID = $entry['entPhysicalAssetID']; + } - if (!empty($ifIndex)) { - $insert_data['ifIndex'] = $ifIndex; + if (isset($entity_array[$entPhysicalIndex]['0']['entAliasMappingIdentifier'])) { + $ifIndex = $entity_array[$entPhysicalIndex]['0']['entAliasMappingIdentifier']; + } + + if (!strpos($ifIndex, "fIndex") || $ifIndex == "") { + unset($ifIndex); + } else { + $ifIndex_array = explode(".", $ifIndex); + $ifIndex = $ifIndex_array[1]; + } + + if ($entPhysicalVendorTypes[$entPhysicalVendorType] && !$entPhysicalModelName) { + $entPhysicalModelName = $entPhysicalVendorTypes[$entPhysicalVendorType]; + } + + // FIXME - dbFacile + + if ($entPhysicalDescr || $entPhysicalName) { + $entPhysical_id = dbFetchCell("SELECT entPhysical_id FROM `entPhysical` WHERE device_id = ? AND entPhysicalIndex = ?",array($device['device_id'], $entPhysicalIndex)); + + if ($entPhysical_id) { + $update_data = array( + 'entPhysicalIndex' => $entPhysicalIndex, + 'entPhysicalDescr' => $entPhysicalDescr, + 'entPhysicalClass' => $entPhysicalClass, + 'entPhysicalName' => $entPhysicalName, + 'entPhysicalModelName' => $entPhysicalModelName, + 'entPhysicalSerialNum' => $entPhysicalSerialNum, + 'entPhysicalContainedIn' => $entPhysicalContainedIn, + 'entPhysicalMfgName' => $entPhysicalMfgName, + 'entPhysicalParentRelPos' => $entPhysicalParentRelPos, + 'entPhysicalVendorType' => $entPhysicalVendorType, + 'entPhysicalHardwareRev' => $entPhysicalHardwareRev, + 'entPhysicalFirmwareRev' => $entPhysicalFirmwareRev, + 'entPhysicalSoftwareRev' => $entPhysicalSoftwareRev, + 'entPhysicalIsFRU' => $entPhysicalIsFRU, + 'entPhysicalAlias' => $entPhysicalAlias, + 'entPhysicalAssetID' => $entPhysicalAssetID + ); + dbUpdate($update_data, 'entPhysical', 'device_id=? AND entPhysicalIndex=?',array($device['device_id'],$entPhysicalIndex)); + echo("."); + } else { + $insert_data = array( + 'device_id' => $device['device_id'], + 'entPhysicalIndex' => $entPhysicalIndex, + 'entPhysicalDescr' => $entPhysicalDescr, + 'entPhysicalClass' => $entPhysicalClass, + 'entPhysicalName' => $entPhysicalName, + 'entPhysicalModelName' => $entPhysicalModelName, + 'entPhysicalSerialNum' => $entPhysicalSerialNum, + 'entPhysicalContainedIn' => $entPhysicalContainedIn, + 'entPhysicalMfgName' => $entPhysicalMfgName, + 'entPhysicalParentRelPos' => $entPhysicalParentRelPos, + 'entPhysicalVendorType' => $entPhysicalVendorType, + 'entPhysicalHardwareRev' => $entPhysicalHardwareRev, + 'entPhysicalFirmwareRev' => $entPhysicalFirmwareRev, + 'entPhysicalSoftwareRev' => $entPhysicalSoftwareRev, + 'entPhysicalIsFRU' => $entPhysicalIsFRU, + 'entPhysicalAlias' => $entPhysicalAlias, + 'entPhysicalAssetID' => $entPhysicalAssetID + ); + + if (!empty($ifIndex)) { + $insert_data['ifIndex'] = $ifIndex; + } + + dbInsert($insert_data, 'entPhysical'); + echo("+"); + } + + if ($device['os'] == 'junos') { + + // $entPhysicalIndex appears as a numeric OID fragment + // (string), so convert it to an "integer" for the + // validation step below since it is stored in the DB as + // an integer. This should be fixed. + list($first,$second) = explode(".",$entPhysicalIndex); + $entPhysicalIndexNoDots = $first . $second; + $valid[$entPhysicalIndexNoDots] = 1; + } else { + $valid[$entPhysicalIndex] = 1; + } + } } - dbInsert($insert_data, 'entPhysical'); - echo("+"); - } +} else { echo("Disabled!"); } - $valid[$entPhysicalIndex] = 1; - } - } - - } else { echo("Disabled!"); } - - $sql = "SELECT * FROM `entPhysical` WHERE `device_id` = '".$device['device_id']."'"; - foreach (dbFetchRows($sql) as $test) - { +$sql = "SELECT * FROM `entPhysical` WHERE `device_id` = '".$device['device_id']."'"; +foreach (dbFetchRows($sql) as $test) { $id = $test['entPhysicalIndex']; if (!$valid[$id]) { - echo("-"); - dbDelete('entPhysical', 'entPhysical_id = ?', array($test['entPhysical_id'])); + echo("-"); + dbDelete('entPhysical', 'entPhysical_id = ?', array($test['entPhysical_id'])); } - } - - echo("\n"); +} +echo("\n"); ?> From 5f076fe63e6f48473a477f982355ba1daf24689f Mon Sep 17 00:00:00 2001 From: laf Date: Fri, 17 Apr 2015 20:15:31 +0100 Subject: [PATCH 37/59] Updated query and color for 0% links --- html/includes/print-map.inc.php | 4 ++-- includes/defaults.inc.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/html/includes/print-map.inc.php b/html/includes/print-map.inc.php index 90a71adbdb..c99e88979d 100644 --- a/html/includes/print-map.inc.php +++ b/html/includes/print-map.inc.php @@ -14,8 +14,8 @@ $tmp_devices = array(); if (!empty($device['hostname'])) { - $sql = ' WHERE `devices`.`hostname`=? OR `remote_hostname`=?'; - $sql_array = array($device['hostname'],$device['hostname']); + $sql = ' WHERE `devices`.`hostname`=?'; + $sql_array = array($device['hostname']); } else { $sql = ' WHERE 1'; } diff --git a/includes/defaults.inc.php b/includes/defaults.inc.php index cacc1f5b9f..b22b0957bb 100644 --- a/includes/defaults.inc.php +++ b/includes/defaults.inc.php @@ -253,7 +253,7 @@ $config['graph_colours']['purples'] = array('CC7CCC','AF63AF','934A93','773177', $config['graph_colours']['default'] = $config['graph_colours']['blues']; // Map colors -$config['map_legend'] = array('0'=> '#ffffff', '10' => '#79847e', '20' => '#97ffca', '30' => '#a800ff', '40' => '#6c00ff', '50' => '#00d2ff', '60' => '#0090ff', '70' => '#ffe400', '80' => '#ffa200', '90' => '#ff6600', '100' => '#ff0000'); +$config['map_legend'] = array('0'=> '#aeaeae', '10' => '#79847e', '20' => '#97ffca', '30' => '#a800ff', '40' => '#6c00ff', '50' => '#00d2ff', '60' => '#0090ff', '70' => '#ffe400', '80' => '#ffa200', '90' => '#ff6600', '100' => '#ff0000'); // Device page options From 31d3950dbfbefc3584813d0cc51cac2b7ee401a1 Mon Sep 17 00:00:00 2001 From: laf Date: Fri, 17 Apr 2015 20:22:57 +0100 Subject: [PATCH 38/59] Changed node shape to be box --- html/includes/print-map.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/html/includes/print-map.inc.php b/html/includes/print-map.inc.php index c99e88979d..55948dd4be 100644 --- a/html/includes/print-map.inc.php +++ b/html/includes/print-map.inc.php @@ -26,11 +26,11 @@ $tmp_ids = array(); foreach (dbFetchRows("SELECT DISTINCT least(`devices`.`device_id`, `remote_device_id`) AS `remote_device_id`, GREATEST(`remote_device_id`,`devices`.`device_id`) AS `local_device_id` FROM `links` LEFT JOIN `ports` ON `local_port_id`=`ports`.`port_id` LEFT JOIN `devices` ON `ports`.`device_id`=`devices`.`device_id` $sql", $sql_array) as $link_devices) { if (!in_array($link_devices['local_device_id'], $tmp_ids) && device_permitted($link_devices['local_device_id'])) { $link_dev = dbFetchRow("SELECT * FROM `devices` WHERE `device_id`=?",array($link_devices['local_device_id'])); - $tmp_devices[] = array('id'=>$link_devices['local_device_id'],'label'=>$link_dev['hostname'],'title'=>generate_device_link($link_dev,'','','','','',1,1),'group'=>$link_dev['location']); + $tmp_devices[] = array('id'=>$link_devices['local_device_id'],'label'=>$link_dev['hostname'],'title'=>generate_device_link($link_dev,'','','','','',1,1),'group'=>$link_dev['location'],'shape'=>'box'); } if (!in_array($link_devices['remote_device_id'], $tmp_ids) && device_permitted($link_devices['remote_device_id'])) { $link_dev = dbFetchRow("SELECT * FROM `devices` WHERE `device_id`=?",array($link_devices['remote_device_id'])); - $tmp_devices[] = array('id'=>$link_devices['remote_device_id'],'label'=>$link_dev['hostname'],'title'=>generate_device_link($link_dev,'','','','','',1,1),'group'=>$link_dev['location']); + $tmp_devices[] = array('id'=>$link_devices['remote_device_id'],'label'=>$link_dev['hostname'],'title'=>generate_device_link($link_dev,'','','','','',1,1),'group'=>$link_dev['location'],'shape'=>'box'); } array_push($tmp_ids,$link_devices['local_device_id']); array_push($tmp_ids,$link_devices['remote_device_id']); From 0da8a79a5f6a8fec9583edc13ffce6c315bfbabb Mon Sep 17 00:00:00 2001 From: laf Date: Fri, 17 Apr 2015 20:42:28 +0100 Subject: [PATCH 39/59] Fixed function calls --- html/includes/print-map.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/html/includes/print-map.inc.php b/html/includes/print-map.inc.php index 55948dd4be..297bac1b6c 100644 --- a/html/includes/print-map.inc.php +++ b/html/includes/print-map.inc.php @@ -26,11 +26,11 @@ $tmp_ids = array(); foreach (dbFetchRows("SELECT DISTINCT least(`devices`.`device_id`, `remote_device_id`) AS `remote_device_id`, GREATEST(`remote_device_id`,`devices`.`device_id`) AS `local_device_id` FROM `links` LEFT JOIN `ports` ON `local_port_id`=`ports`.`port_id` LEFT JOIN `devices` ON `ports`.`device_id`=`devices`.`device_id` $sql", $sql_array) as $link_devices) { if (!in_array($link_devices['local_device_id'], $tmp_ids) && device_permitted($link_devices['local_device_id'])) { $link_dev = dbFetchRow("SELECT * FROM `devices` WHERE `device_id`=?",array($link_devices['local_device_id'])); - $tmp_devices[] = array('id'=>$link_devices['local_device_id'],'label'=>$link_dev['hostname'],'title'=>generate_device_link($link_dev,'','','','','',1,1),'group'=>$link_dev['location'],'shape'=>'box'); + $tmp_devices[] = array('id'=>$link_devices['local_device_id'],'label'=>$link_dev['hostname'],'title'=>generate_device_link($link_dev,'',array(),'','','',1),'group'=>$link_dev['location'],'shape'=>'box'); } if (!in_array($link_devices['remote_device_id'], $tmp_ids) && device_permitted($link_devices['remote_device_id'])) { $link_dev = dbFetchRow("SELECT * FROM `devices` WHERE `device_id`=?",array($link_devices['remote_device_id'])); - $tmp_devices[] = array('id'=>$link_devices['remote_device_id'],'label'=>$link_dev['hostname'],'title'=>generate_device_link($link_dev,'','','','','',1,1),'group'=>$link_dev['location'],'shape'=>'box'); + $tmp_devices[] = array('id'=>$link_devices['remote_device_id'],'label'=>$link_dev['hostname'],'title'=>generate_device_link($link_dev,'',array(),'','','',1),'group'=>$link_dev['location'],'shape'=>'box'); } array_push($tmp_ids,$link_devices['local_device_id']); array_push($tmp_ids,$link_devices['remote_device_id']); From 6913fd8822b78bfcd6917414f555510bc9e5ba04 Mon Sep 17 00:00:00 2001 From: Paul Gear Date: Sat, 18 Apr 2015 18:56:40 +1000 Subject: [PATCH 40/59] Sharpen main device_bits & port_bits graphs Did this by lightening the max area, slightly darkening the main area, and highlighting with a darker-still outline --- html/includes/graphs/generic_data.inc.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/html/includes/graphs/generic_data.inc.php b/html/includes/graphs/generic_data.inc.php index 861868ab14..63cc15cebe 100644 --- a/html/includes/graphs/generic_data.inc.php +++ b/html/includes/graphs/generic_data.inc.php @@ -93,16 +93,18 @@ if($format == "octets" || $format == "bytes") $rrd_options .= " COMMENT:'bps Now Ave Max 95th %\\n'"; -$rrd_options .= " AREA:in".$format."_max#aDEB7B:"; -$rrd_options .= " AREA:in".$format."#91B13C:'In '"; +$rrd_options .= " AREA:in".$format."_max#D7FFC7:"; +$rrd_options .= " AREA:in".$format."#90B040:'In '"; +$rrd_options .= " LINE:in".$format."#608720:'In '"; #$rrd_options .= " LINE1.25:in".$format."#006600:'In '"; $rrd_options .= " GPRINT:in".$format.":LAST:%6.2lf%s"; $rrd_options .= " GPRINT:in".$format.":AVERAGE:%6.2lf%s"; $rrd_options .= " GPRINT:in".$format."_max:MAX:%6.2lf%s"; $rrd_options .= " GPRINT:95thin:%6.2lf%s\\\\n"; -$rrd_options .= " AREA:dout".$format."_max#a3b9FF:"; -$rrd_options .= " AREA:dout".$format."#8080BD:'Out'"; +$rrd_options .= " AREA:dout".$format."_max#E0E0FF:"; +$rrd_options .= " AREA:dout".$format."#8080C0:"; +$rrd_options .= " LINE:dout".$format."#606090:'Out'"; #$rrd_options .= " LINE1.25:dout".$format."#000099:Out"; $rrd_options .= " GPRINT:out".$format.":LAST:%6.2lf%s"; $rrd_options .= " GPRINT:out".$format.":AVERAGE:%6.2lf%s"; From 5c037290815656231823064e0f78d81c6cd81671 Mon Sep 17 00:00:00 2001 From: Paul Gear Date: Sat, 18 Apr 2015 19:04:18 +1000 Subject: [PATCH 41/59] Make UCD CPU idle look less sickly yellow --- html/includes/graphs/device/ucd_cpu.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/includes/graphs/device/ucd_cpu.inc.php b/html/includes/graphs/device/ucd_cpu.inc.php index 49af3fba04..3068bba695 100644 --- a/html/includes/graphs/device/ucd_cpu.inc.php +++ b/html/includes/graphs/device/ucd_cpu.inc.php @@ -25,7 +25,7 @@ $rrd_options .= " AREA:system_perc#ea8f00:system:STACK"; $rrd_options .= " GPRINT:system_perc:LAST:' %5.2lf%%'"; $rrd_options .= " GPRINT:system_perc:AVERAGE:' %5.2lf%%'"; $rrd_options .= " GPRINT:system_perc:MAX:' %5.2lf%%\\n'"; -$rrd_options .= " AREA:idle_perc#f5f5e5:idle:STACK"; +$rrd_options .= " AREA:idle_perc#f8f8f3:idle:STACK"; $rrd_options .= " GPRINT:idle_perc:LAST:' %5.2lf%%'"; $rrd_options .= " GPRINT:idle_perc:AVERAGE:' %5.2lf%%'"; $rrd_options .= " GPRINT:idle_perc:MAX:' %5.2lf%%\\n'"; From 1cff721f2b70197e6107321bad586a8188553028 Mon Sep 17 00:00:00 2001 From: Paul Gear Date: Sat, 18 Apr 2015 19:06:22 +1000 Subject: [PATCH 42/59] Trivial change to Makefile my life easier --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f7894ab811..986e4d8e3b 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ push-dev: push-personal pp: $(GIT) push personal -push-testing: +push-testing pt: $(GIT) push testing update-subtrees: datetime-subtree moment-subtree font-awesome vis From 55284c2114fa0958f039ec1c9d6eada8f9f56220 Mon Sep 17 00:00:00 2001 From: laf Date: Sat, 18 Apr 2015 10:29:44 +0100 Subject: [PATCH 43/59] Updated no_overlib to overlib --- html/includes/functions.inc.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/html/includes/functions.inc.php b/html/includes/functions.inc.php index 0018d8cd2a..48295cd3e7 100644 --- a/html/includes/functions.inc.php +++ b/html/includes/functions.inc.php @@ -122,7 +122,7 @@ function generate_device_url($device, $vars=array()) return generate_url(array('page' => 'device', 'device' => $device['device_id']), $vars); } -function generate_device_link($device, $text=NULL, $vars=array(), $start=0, $end=0, $escape_text=1, $no_overlib=0) +function generate_device_link($device, $text=NULL, $vars=array(), $start=0, $end=0, $escape_text=1, $overlib=1) { global $config; @@ -168,7 +168,7 @@ function generate_device_link($device, $text=NULL, $vars=array(), $start=0, $end } if ($escape_text) { $text = htmlentities($text); } - if ($no_overlib == 1) { + if ($overlib == 0) { $link = $contents; } else { $link = overlib_link($url, $text, escape_quotes($contents), $class); @@ -408,7 +408,7 @@ function generate_entity_link($type, $entity, $text = NULL, $graph_type=NULL) } -function generate_port_link($port, $text = NULL, $type = NULL, $no_overlib = 0, $single_graph = 0) +function generate_port_link($port, $text = NULL, $type = NULL, $overlib = 1, $single_graph = 0) { global $config; @@ -445,7 +445,7 @@ function generate_port_link($port, $text = NULL, $type = NULL, $no_overlib = 0, $url = generate_port_url($port); - if ($no_overlib == 1) { + if ($overlib == 0) { return $content; } elseif (port_permitted($port['port_id'], $port['device_id'])) { return overlib_link($url, $text, $content, $class); From d32b44ab77efaaa5dad1bd01851fea8f65a44f59 Mon Sep 17 00:00:00 2001 From: laf Date: Sat, 18 Apr 2015 10:44:47 +0100 Subject: [PATCH 44/59] Added link and info about migrating from Observium --- doc/General/Welcome-to-Observium-users.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/doc/General/Welcome-to-Observium-users.md b/doc/General/Welcome-to-Observium-users.md index 2795f3edcd..f69a3ecff9 100644 --- a/doc/General/Welcome-to-Observium-users.md +++ b/doc/General/Welcome-to-Observium-users.md @@ -10,14 +10,17 @@ IT professionals. See [README.md][2] and the references there for more information about the kind of community we're trying to promote. LibreNMS was forked from [the last GPL-licensed version of Observium][3]. -This means you won't be able to take an existing Observium installation +~~This means you won't be able to take an existing Observium installation later than r3250 and just change it to LibreNMS. This would probably break (although if you were on a version between r3250 and the next database schema change, it might be feasible). Upgrades from versions earlier than r3251 might work. Please try it on an unimportant system and tell us your -experiences! +experiences!~~ + +Thanks to one of our users Dan Brown who has written a migration script to be able move your Observium install over to LibreNMS [Dan Brown][10]. This also takes care of moving from one cpu architect to another. Give it a try :) How LibreNMS will be different from Observium: + - We will have an inclusive community, where it's OK to ask stupid questions, and OK to ask for things that aren't on the roadmap. If you'd like to see something added, add or comment on the relevant issue in our @@ -34,6 +37,7 @@ How LibreNMS will be different from Observium: and painless as possible to create forked or private versions. Reasons why you might want to use Observium instead of LibreNMS: + - You have a financial investment in Observium and aren't concerned about community contributions. - ~~You need functionality that has been added to Observium since r3250.~~ The beauty of LibreNMS is that you can contribute missing features. @@ -41,6 +45,7 @@ Reasons why you might want to use Observium instead of LibreNMS: [philosophy of Free Software/copyleft][6] in general. Reasons why you might want to use LibreNMS instead of Observium: + - You want to work with others on the project, knowing that [your investment of time and effort will not be wasted][7]. - You want to add and experiment with features that are not a priority for @@ -65,5 +70,6 @@ Reasons why you might want to use LibreNMS instead of Observium: "Contribution guidelines" [9]: https://github.com/librenms/librenms/issues "LibreNMS issue database at GitHub" - +[10]: https://vlan50.com/2015/04/17/migrating-from-observium-to-librenms/ +"Migrating from Observium to LibreNMS" From 2b744b81b1b83c8c624f659d7ecf7cae6172ec80 Mon Sep 17 00:00:00 2001 From: laf Date: Sat, 18 Apr 2015 15:47:07 +0100 Subject: [PATCH 45/59] Updated to use new overlib variable --- html/includes/print-map.inc.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/html/includes/print-map.inc.php b/html/includes/print-map.inc.php index 297bac1b6c..453a305f15 100644 --- a/html/includes/print-map.inc.php +++ b/html/includes/print-map.inc.php @@ -26,11 +26,11 @@ $tmp_ids = array(); foreach (dbFetchRows("SELECT DISTINCT least(`devices`.`device_id`, `remote_device_id`) AS `remote_device_id`, GREATEST(`remote_device_id`,`devices`.`device_id`) AS `local_device_id` FROM `links` LEFT JOIN `ports` ON `local_port_id`=`ports`.`port_id` LEFT JOIN `devices` ON `ports`.`device_id`=`devices`.`device_id` $sql", $sql_array) as $link_devices) { if (!in_array($link_devices['local_device_id'], $tmp_ids) && device_permitted($link_devices['local_device_id'])) { $link_dev = dbFetchRow("SELECT * FROM `devices` WHERE `device_id`=?",array($link_devices['local_device_id'])); - $tmp_devices[] = array('id'=>$link_devices['local_device_id'],'label'=>$link_dev['hostname'],'title'=>generate_device_link($link_dev,'',array(),'','','',1),'group'=>$link_dev['location'],'shape'=>'box'); + $tmp_devices[] = array('id'=>$link_devices['local_device_id'],'label'=>$link_dev['hostname'],'title'=>generate_device_link($link_dev,'',array(),'','','',0),'group'=>$link_dev['location'],'shape'=>'box'); } if (!in_array($link_devices['remote_device_id'], $tmp_ids) && device_permitted($link_devices['remote_device_id'])) { $link_dev = dbFetchRow("SELECT * FROM `devices` WHERE `device_id`=?",array($link_devices['remote_device_id'])); - $tmp_devices[] = array('id'=>$link_devices['remote_device_id'],'label'=>$link_dev['hostname'],'title'=>generate_device_link($link_dev,'',array(),'','','',1),'group'=>$link_dev['location'],'shape'=>'box'); + $tmp_devices[] = array('id'=>$link_devices['remote_device_id'],'label'=>$link_dev['hostname'],'title'=>generate_device_link($link_dev,'',array(),'','','',0),'group'=>$link_dev['location'],'shape'=>'box'); } array_push($tmp_ids,$link_devices['local_device_id']); array_push($tmp_ids,$link_devices['remote_device_id']); @@ -81,7 +81,7 @@ if (is_array($tmp_devices[0])) { } $link_color = $config['map_legend'][$link_used]; - $tmp_links[] = array('from'=>$from,'to'=>$to,'label'=>$port,'title'=>generate_port_link($port_data, "",'',1,1),'width'=>$width,'color'=>$link_color); + $tmp_links[] = array('from'=>$from,'to'=>$to,'label'=>$port,'title'=>generate_port_link($port_data, "",'',0,1),'width'=>$width,'color'=>$link_color); } $edges = json_encode($tmp_links); From fbf0580d1572fd70d6d88a2215e6740d155d9167 Mon Sep 17 00:00:00 2001 From: laf Date: Sat, 18 Apr 2015 17:43:15 +0100 Subject: [PATCH 46/59] Trying to get strikethrough working --- doc/General/Welcome-to-Observium-users.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/General/Welcome-to-Observium-users.md b/doc/General/Welcome-to-Observium-users.md index f69a3ecff9..873e0de3ac 100644 --- a/doc/General/Welcome-to-Observium-users.md +++ b/doc/General/Welcome-to-Observium-users.md @@ -10,12 +10,12 @@ IT professionals. See [README.md][2] and the references there for more information about the kind of community we're trying to promote. LibreNMS was forked from [the last GPL-licensed version of Observium][3]. -~~This means you won't be able to take an existing Observium installation +This means you won't be able to take an existing Observium installation later than r3250 and just change it to LibreNMS. This would probably break (although if you were on a version between r3250 and the next database schema change, it might be feasible). Upgrades from versions earlier than r3251 might work. Please try it on an unimportant system and tell us your -experiences!~~ +experiences! Thanks to one of our users Dan Brown who has written a migration script to be able move your Observium install over to LibreNMS [Dan Brown][10]. This also takes care of moving from one cpu architect to another. Give it a try :) @@ -28,7 +28,7 @@ How LibreNMS will be different from Observium: - Development decisions will be community-driven. We want to make software that fulfills its users' needs. See the [ROADMAP][4] for more thoughts on our current plans. -- ~~Development will probably proceed at a slower pace, at least initially.~~ +- Development will probably proceed at a slower pace, at least initially. - There are no plans for a paid version, and we don't anticipate this ever changing. - There are no current plans for paid support, but this may be added later @@ -40,7 +40,7 @@ Reasons why you might want to use Observium instead of LibreNMS: - You have a financial investment in Observium and aren't concerned about community contributions. -- ~~You need functionality that has been added to Observium since r3250.~~ The beauty of LibreNMS is that you can contribute missing features. +- You need functionality that has been added to Observium since r3250. The beauty of LibreNMS is that you can contribute missing features. - You don't like the [GNU General Public License, version 3][5] or the [philosophy of Free Software/copyleft][6] in general. From 5540994f8b70cef689b21ddb27438a9b8084dc0e Mon Sep 17 00:00:00 2001 From: laf Date: Sun, 19 Apr 2015 00:43:16 +0100 Subject: [PATCH 47/59] Updates to schedule maintenance --- html/forms/schedule-maintenance.inc.php | 71 +++++++++++ html/includes/table/alert-schedule.inc.php | 21 ++-- html/pages/alert-schedule.inc.php | 133 +++++++++++++++++---- sql-schema/048.sql | 4 + 4 files changed, 190 insertions(+), 39 deletions(-) create mode 100644 sql-schema/048.sql diff --git a/html/forms/schedule-maintenance.inc.php b/html/forms/schedule-maintenance.inc.php index b3be48c0ff..dcbcad4fce 100644 --- a/html/forms/schedule-maintenance.inc.php +++ b/html/forms/schedule-maintenance.inc.php @@ -12,4 +12,75 @@ * the source code distribution for details. */ +if(is_admin() === false) { + die('ERROR: You need to be admin'); +} +$sub_type = $_POST['sub_type']; + +if ($sub_type == 'new-maintenance') { + + // Defaults + $status = 'error'; + + $title = mres($_POST['title']); + $notes = mres($_POST['notes']); + $start = mres($_POST['start']); + $end = mres($_POST['end']); + $maps = mres($_POST['maps']); + + if (empty($title)) { + $message = "Missing title
    "; + } + if (empty($start)) { + $message .= "Missing start date
    "; + } + if (empty($end)) { + $message .= "Missing end date
    "; + } + if( !is_array($_POST['maps']) ) { + $message .= "Not mapped to any groups or devices
    "; + } + + if (empty($message)) { + $schedule_id = dbInsert(array('start'=>$start,'end'=>$end,'title'=>$title,'notes'=>$notes),'alert_schedule'); + if ($schedule_id > 0) { + $items = array(); + $fail = 0; + foreach( $_POST['maps'] as $target ) { + $item = dbInsert(array('schedule_id'=>$schedule_id,'target'=>$target),'alert_schedule_items'); + if ($item > 0) { + array_push($items,$item); + } else { + $fail = 1; + } + } + if ($fail == 1) { + foreach ($items as $item) { + dbDelete('alert_schedule_items', '`item_id`=?', array($item)); + } + dbDelete('alert_schedule', '`schedule_id`=?', array($schedule_id)); + $message = 'Creating maintenance schedule failed'.$yeah; + } else { + $status = 'ok'; + $message = 'Created maintenance schedule'; + } + } else { + $message = "Issue creating maintenance schedule"; + } + } + + $response = array('status'=>$status,'message'=>$message); + +} elseif ($sub_type == 'parse-maintenance') { + + $schedule_id = $_POST['schedule_id']; + $schedule = dbFetchRow("SELECT * FROM `alert_schedule` WHERE `schedule_id`=?",array($schedule_id)); + $items = array(); + foreach (dbFetchRows("SELECT `target` FROM `alert_schedule_items` WHERE `schedule_id`=?",array($schedule_id)) as $targets) { + $items[] = $targets; + } + $response = array('start'=>$schedule['start'],'end'=>$schedule['end'],'title'=>$schedule['title'],'notes'=>$schedule['notes'],'targets'=>$items); +} + +echo _json_encode($response); diff --git a/html/includes/table/alert-schedule.inc.php b/html/includes/table/alert-schedule.inc.php index dcea1023af..5ec8ef7959 100644 --- a/html/includes/table/alert-schedule.inc.php +++ b/html/includes/table/alert-schedule.inc.php @@ -15,14 +15,14 @@ $where = 1; if ($_SESSION['userlevel'] >= '5') { - $sql = " FROM `alert_schedule` AS S LEFT JOIN `devices` AS `D` ON `S`.`device_id`=`D`.`device_id` WHERE $where"; + $sql = " FROM `alert_schedule` AS S WHERE $where"; } else { - $sql = " FROM `alert_schedule` AS S, devices_perms AS P LEFT JOIN `devices` AS `D` WHERE $where AND `S`.`device_id` = `P`.`device_id` AND `P`.`user_id` = ?"; + $sql = " FROM `alert_schedule` AS S WHERE $where"; $param[] = $_SESSION['user_id']; } if (isset($searchPhrase) && !empty($searchPhrase)) { - $sql .= " AND (`D`.`hostname` LIKE '%$searchPhrase%' OR `S`.`start` LIKE '%$searchPhrase%' OR `S`.`end` LIKE '%$searchPhrase%')"; + $sql .= " AND (`S`.`title` LIKE '%$searchPhrase%' OR `S`.`start` LIKE '%$searchPhrase%' OR `S`.`end` LIKE '%$searchPhrase%')"; } $count_sql = "SELECT COUNT(`id`) $sql"; @@ -32,7 +32,7 @@ if (empty($total)) { } if (!isset($sort) || empty($sort)) { - $sort = '`D`.`hostname` ASC '; + $sort = '`S`.`title` ASC '; } $sql .= " ORDER BY $sort"; @@ -46,18 +46,13 @@ if ($rowCount != -1) { $sql .= " LIMIT $limit_low,$limit_high"; } -$sql = "SELECT DATE_FORMAT(`S`.`start`, '%D %b %Y %T') AS `start`, DATE_FORMAT(`S`.`end`, '%D %b %Y %T') AS `end`, `D`.`hostname`, `S`.`device_id` $sql"; +$sql = "SELECT `S`.`schedule_id`, DATE_FORMAT(`S`.`start`, '%D %b %Y %T') AS `start`, DATE_FORMAT(`S`.`end`, '%D %b %Y %T') AS `end`, `S`.`title` $sql"; foreach (dbFetchRows($sql,$param) as $schedule) { - if ($schedule['device_id'] == '-1') { - $host_link = 'All devices'; - } else { - $dev = device_by_id_cache($schedule['device_id']); - $host_link = generate_device_link($dev, shorthost($dev['hostname'])); - } - $response[] = array('hostname'=>$host_link, + $response[] = array('title'=>$schedule['title'], 'start'=>$schedule['start'], - 'end'=>$schedule['end']); + 'end'=>$schedule['end'], + 'id'=>$schedule['schedule_id']); } $output = array('current'=>$current,'rowCount'=>$rowCount,'rows'=>$response,'total'=>$total); diff --git a/html/pages/alert-schedule.inc.php b/html/pages/alert-schedule.inc.php index b9c62c8099..71a38085f1 100644 --- a/html/pages/alert-schedule.inc.php +++ b/html/pages/alert-schedule.inc.php @@ -14,6 +14,7 @@ $pagetitle[] = "Alert Schedule"; $no_refresh = TRUE; +if(is_admin() !== false) { ?> @@ -26,33 +27,24 @@ $no_refresh = TRUE;
    +
    + +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    - +
    @@ -89,9 +95,10 @@ foreach (dbFetchRows("SELECT `id`,`name` FROM `device_groups`") as $device_group - + +
    HostnameTitle Start EndActions
    @@ -101,6 +108,13 @@ foreach (dbFetchRows("SELECT `id`,`name` FROM `device_groups`") as $device_group var grid = $("#alert-schedule").bootgrid({ ajax: true, + formatters: { + "commands": function(column, row) + { + return " " + + ""; + } + }, templates: { header: "
    "+ "
    "+ @@ -116,22 +130,59 @@ var grid = $("#alert-schedule").bootgrid({ }; }, url: "/ajax_table.php" +}).on("loaded.rs.jquery.bootgrid", function() +{ + /* Executes after data is loaded and rendered */ + grid.find(".command-edit").on("click", function(e) + { + $('#schedule_id').val($(this).data("schedule_id")); + $("#schedule-maintenance").modal('show'); + }).end().find(".command-delete").on("click", function(e) + { + alert("You pressed delete on row: " + $(this).data("row-id")); + }); +}); + +$('#schedule-maintenance').on('show.bs.modal', function (event) { + $('#tagmanager').tagmanager(); + var schedule_id = $('#schedule_id').val(); + $('#map-tags').tagmanager({ + strategy: 'array', + tagFieldName: 'maps[]', + initialCap: false + }); + if (schedule_id > 0) { + $.ajax({ + type: "POST", + url: "/ajax_form.php", + data: { type: "schedule-maintenance", sub_type: "parse-maintenance", schedule_id: schedule_id }, + dataType: "json", + success: function(output) { + var arr = []; + $.each ( output['targets'], function( key ) { + arr.push(key); + }); + $('#response').data('tagmanager').populate(arr); + $('#severity').val(output['severity']).change; + var extra = $.parseJSON(output['extra']); + $('#count').val(extra['count']); + } + }); + } }); $('#sched-submit').click('', function(e) { e.preventDefault(); - var device = $("#device").val(); - var start = $("#start").val(); - var end = $("#end").val(); $.ajax({ type: "POST", url: "/ajax_form.php", - data: { type: "schedule-maintenance", subtype: "add", device: device, start: start, end: end }, + data: $('form.schedule-maintenance-form').serialize(), dataType: "json", success: function(data){ if(data.status == 'ok') { $("#message").html('
    '+data.message+'
    '); $("#schedule-maintenance").modal('hide'); + $("#alert-schedule").bootgrid('reload'); } else { $("#response").html('
    '+data.message+'
    '); } @@ -143,6 +194,30 @@ $('#sched-submit').click('', function(e) { }); +$('#add-map').click('',function (event) { + $('#map-tags').data('tagmanager').populate([ $('#map-stub').val() ]); + $('#map-stub').val(''); +}); + +$('#map-stub').typeahead([ + { + name: 'map_devices', + remote : '/ajax_search.php?search=%QUERY&type=device&map=1', + header : '
     Devices
    ', + template: '{{name}}', + valueKey:"name", + engine: Hogan + }, + { + name: 'map_groups', + remote : '/ajax_search.php?search=%QUERY&type=group&map=1', + header : '
     Groups
    ', + template: '{{name}}', + valueKey:"name", + engine: Hogan + } +]); + $(function () { $("#start").datetimepicker(); $("#end").datetimepicker(); @@ -155,3 +230,9 @@ $(function () { }); + + diff --git a/sql-schema/048.sql b/sql-schema/048.sql new file mode 100644 index 0000000000..6a61e06eba --- /dev/null +++ b/sql-schema/048.sql @@ -0,0 +1,4 @@ +ALTER TABLE `alert_schedule` DROP `device_id`; +ALTER TABLE `alert_schedule` CHANGE `id` `schedule_id` INT( 11 ) NOT NULL AUTO_INCREMENT; +ALTER TABLE `alert_schedule` ADD `title` VARCHAR( 255 ) NOT NULL ,ADD `notes` TEXT NOT NULL ; +CREATE TABLE `librenms`.`alert_schedule_items` (`item_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,`schedule_id` INT NOT NULL ,`target` VARCHAR( 255 ) NOT NULL ,INDEX ( `schedule_id` )) ENGINE = INNODB; From 430e17750ea4a2361ae3e145de61fdfa2acb065b Mon Sep 17 00:00:00 2001 From: laf Date: Sun, 19 Apr 2015 00:46:59 +0100 Subject: [PATCH 48/59] Removed duplicate In --- html/includes/graphs/generic_data.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/includes/graphs/generic_data.inc.php b/html/includes/graphs/generic_data.inc.php index 63cc15cebe..a85a6c760b 100644 --- a/html/includes/graphs/generic_data.inc.php +++ b/html/includes/graphs/generic_data.inc.php @@ -94,7 +94,7 @@ if($format == "octets" || $format == "bytes") $rrd_options .= " COMMENT:'bps Now Ave Max 95th %\\n'"; $rrd_options .= " AREA:in".$format."_max#D7FFC7:"; -$rrd_options .= " AREA:in".$format."#90B040:'In '"; +$rrd_options .= " AREA:in".$format."#90B040:"; $rrd_options .= " LINE:in".$format."#608720:'In '"; #$rrd_options .= " LINE1.25:in".$format."#006600:'In '"; $rrd_options .= " GPRINT:in".$format.":LAST:%6.2lf%s"; From 9da3efe09102ab1c85316c07e03c232d86f93cd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Rosiak?= Date: Sun, 19 Apr 2015 13:28:58 +0200 Subject: [PATCH 49/59] Include hostname in alerts_list API command - Include hostname in alerts_list API command - Update API docs --- doc/API/API-Docs.md | 1 + html/includes/api_functions.inc.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/API/API-Docs.md b/doc/API/API-Docs.md index 3e3bdabb83..ddd786d549 100644 --- a/doc/API/API-Docs.md +++ b/doc/API/API-Docs.md @@ -487,6 +487,7 @@ Output: "count": 7, "alerts": [ { + "hostname": "localhost", "id": "1", "device_id": "1", "rule_id": "1", diff --git a/html/includes/api_functions.inc.php b/html/includes/api_functions.inc.php index 161ce3fc81..019b073c2e 100644 --- a/html/includes/api_functions.inc.php +++ b/html/includes/api_functions.inc.php @@ -536,7 +536,7 @@ function list_alerts() { $sql = "AND id=?"; array_push($param,$alert_id); } - $alerts = dbFetchRows("SELECT * FROM `alerts` WHERE `state` IN (?) $sql",$param); + $alerts = dbFetchRows("SELECT `D`.`hostname`, `A`.* FROM `alerts` AS `A`, `devices` AS `D` WHERE `D`.`device_id` = `A`.`device_id` AND `A`.`state` IN (?) $sql",$param); $total_alerts = count($alerts); $output = array("status" => "ok", "err-msg" => '', "count" => $total_alerts, "alerts" => $alerts); $app->response->setStatus('200'); From deda8c2ab0e4393f46adcef3e4b44a4f883ae542 Mon Sep 17 00:00:00 2001 From: laf Date: Sun, 19 Apr 2015 20:23:34 +0100 Subject: [PATCH 50/59] Final bits to the schedule maintenance section --- html/forms/schedule-maintenance.inc.php | 37 +++- html/includes/modal/alert_schedule.inc.php | 187 ++++++++++++++++++ .../modal/remove_alert_schedule.inc.php | 78 ++++++++ html/includes/table/alert-schedule.inc.php | 12 +- html/pages/alert-schedule.inc.php | 174 ++-------------- includes/functions.php | 18 ++ 6 files changed, 340 insertions(+), 166 deletions(-) create mode 100644 html/includes/modal/alert_schedule.inc.php create mode 100644 html/includes/modal/remove_alert_schedule.inc.php diff --git a/html/forms/schedule-maintenance.inc.php b/html/forms/schedule-maintenance.inc.php index dcbcad4fce..4699653c6e 100644 --- a/html/forms/schedule-maintenance.inc.php +++ b/html/forms/schedule-maintenance.inc.php @@ -22,7 +22,12 @@ if ($sub_type == 'new-maintenance') { // Defaults $status = 'error'; + $update = 0; + $schedule_id = mres($_POST['schedule_id']); + if ($schedule_id > 0) { + $update = 1; + } $title = mres($_POST['title']); $notes = mres($_POST['notes']); $start = mres($_POST['start']); @@ -43,11 +48,21 @@ if ($sub_type == 'new-maintenance') { } if (empty($message)) { - $schedule_id = dbInsert(array('start'=>$start,'end'=>$end,'title'=>$title,'notes'=>$notes),'alert_schedule'); + if (empty($schedule_id)) { + $schedule_id = dbInsert(array('start'=>$start,'end'=>$end,'title'=>$title,'notes'=>$notes),'alert_schedule'); + } else { + dbUpdate(array('start'=>$start,'end'=>$end,'title'=>$title,'notes'=>$notes),'alert_schedule','`schedule_id`=?',array($schedule_id)); + } if ($schedule_id > 0) { $items = array(); $fail = 0; + + if ($update == 1) { + dbDelete('alert_schedule_items', '`schedule_id`=?', array($schedule_id)); + } + foreach( $_POST['maps'] as $target ) { + $target = target_to_id($target); $item = dbInsert(array('schedule_id'=>$schedule_id,'target'=>$target),'alert_schedule_items'); if ($item > 0) { array_push($items,$item); @@ -55,18 +70,18 @@ if ($sub_type == 'new-maintenance') { $fail = 1; } } - if ($fail == 1) { + if ($fail == 1 && $update == 0) { foreach ($items as $item) { dbDelete('alert_schedule_items', '`item_id`=?', array($item)); } dbDelete('alert_schedule', '`schedule_id`=?', array($schedule_id)); - $message = 'Creating maintenance schedule failed'.$yeah; + $message = 'Issue scheduling maintenance'; } else { $status = 'ok'; - $message = 'Created maintenance schedule'; + $message = 'Scheduling maintenance ok'; } } else { - $message = "Issue creating maintenance schedule"; + $message = "Issue scheduling maintenance"; } } @@ -74,13 +89,21 @@ if ($sub_type == 'new-maintenance') { } elseif ($sub_type == 'parse-maintenance') { - $schedule_id = $_POST['schedule_id']; + $schedule_id = mres($_POST['schedule_id']); $schedule = dbFetchRow("SELECT * FROM `alert_schedule` WHERE `schedule_id`=?",array($schedule_id)); $items = array(); foreach (dbFetchRows("SELECT `target` FROM `alert_schedule_items` WHERE `schedule_id`=?",array($schedule_id)) as $targets) { - $items[] = $targets; + $targets = id_to_target($targets['target']); + array_push($items,$targets); } $response = array('start'=>$schedule['start'],'end'=>$schedule['end'],'title'=>$schedule['title'],'notes'=>$schedule['notes'],'targets'=>$items); +} elseif ($sub_type == 'del-maintenance') { + $schedule_id = mres($_POST['del_schedule_id']); + dbDelete('alert_schedule_items','`schedule_id`=?',array($schedule_id)); + dbDelete('alert_schedule','`schedule_id`=?', array($schedule_id)); + $status = 'ok'; + $message = 'Maintenance schedule has been removed'; + $response = array('status'=>$status,'message'=>$message); } echo _json_encode($response); diff --git a/html/includes/modal/alert_schedule.inc.php b/html/includes/modal/alert_schedule.inc.php new file mode 100644 index 0000000000..dd9b725afc --- /dev/null +++ b/html/includes/modal/alert_schedule.inc.php @@ -0,0 +1,187 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if(is_admin() !== false) { + +?> + + + + diff --git a/html/includes/modal/remove_alert_schedule.inc.php b/html/includes/modal/remove_alert_schedule.inc.php new file mode 100644 index 0000000000..91613146f6 --- /dev/null +++ b/html/includes/modal/remove_alert_schedule.inc.php @@ -0,0 +1,78 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if(is_admin() !== false) { + +?> + + + + diff --git a/html/includes/table/alert-schedule.inc.php b/html/includes/table/alert-schedule.inc.php index 5ec8ef7959..ba6f9884cc 100644 --- a/html/includes/table/alert-schedule.inc.php +++ b/html/includes/table/alert-schedule.inc.php @@ -32,7 +32,7 @@ if (empty($total)) { } if (!isset($sort) || empty($sort)) { - $sort = '`S`.`title` ASC '; + $sort = '`S`.`start` DESC '; } $sql .= " ORDER BY $sort"; @@ -49,10 +49,18 @@ if ($rowCount != -1) { $sql = "SELECT `S`.`schedule_id`, DATE_FORMAT(`S`.`start`, '%D %b %Y %T') AS `start`, DATE_FORMAT(`S`.`end`, '%D %b %Y %T') AS `end`, `S`.`title` $sql"; foreach (dbFetchRows($sql,$param) as $schedule) { + $status = 0; + if ($schedule['end'] < date('dS M Y H:i::s')) { + $status = 1; + } + if (date('dS M Y H:i::s') >= $schedule['start'] && date('dS M Y H:i::s') < $schedule['end']) { + $status = 2; + } $response[] = array('title'=>$schedule['title'], 'start'=>$schedule['start'], 'end'=>$schedule['end'], - 'id'=>$schedule['schedule_id']); + 'id'=>$schedule['schedule_id'], + 'status'=>$status); } $output = array('current'=>$current,'rowCount'=>$rowCount,'rows'=>$response,'total'=>$total); diff --git a/html/pages/alert-schedule.inc.php b/html/pages/alert-schedule.inc.php index 71a38085f1..47dc8027ff 100644 --- a/html/pages/alert-schedule.inc.php +++ b/html/pages/alert-schedule.inc.php @@ -16,73 +16,10 @@ $pagetitle[] = "Alert Schedule"; $no_refresh = TRUE; if(is_admin() !== false) { -?> +require_once("includes/modal/alert_schedule.inc.php"); +require_once("includes/modal/remove_alert_schedule.inc.php"); - +?>
    @@ -95,8 +32,8 @@ if(is_admin() !== false) { - - + + @@ -111,8 +48,16 @@ var grid = $("#alert-schedule").bootgrid({ formatters: { "commands": function(column, row) { - return " " + - ""; + if (row.status == 1) { + return ''; + } else { + var response = " " + + ""; + if (row.status == 2) { + response = response + ' '; + } + return response; + } } }, templates: { @@ -139,93 +84,8 @@ var grid = $("#alert-schedule").bootgrid({ $("#schedule-maintenance").modal('show'); }).end().find(".command-delete").on("click", function(e) { - alert("You pressed delete on row: " + $(this).data("row-id")); - }); -}); - -$('#schedule-maintenance').on('show.bs.modal', function (event) { - $('#tagmanager').tagmanager(); - var schedule_id = $('#schedule_id').val(); - $('#map-tags').tagmanager({ - strategy: 'array', - tagFieldName: 'maps[]', - initialCap: false - }); - if (schedule_id > 0) { - $.ajax({ - type: "POST", - url: "/ajax_form.php", - data: { type: "schedule-maintenance", sub_type: "parse-maintenance", schedule_id: schedule_id }, - dataType: "json", - success: function(output) { - var arr = []; - $.each ( output['targets'], function( key ) { - arr.push(key); - }); - $('#response').data('tagmanager').populate(arr); - $('#severity').val(output['severity']).change; - var extra = $.parseJSON(output['extra']); - $('#count').val(extra['count']); - } - }); - } -}); - -$('#sched-submit').click('', function(e) { - e.preventDefault(); - $.ajax({ - type: "POST", - url: "/ajax_form.php", - data: $('form.schedule-maintenance-form').serialize(), - dataType: "json", - success: function(data){ - if(data.status == 'ok') { - $("#message").html('
    '+data.message+'
    '); - $("#schedule-maintenance").modal('hide'); - $("#alert-schedule").bootgrid('reload'); - } else { - $("#response").html('
    '+data.message+'
    '); - } - }, - error: function(){ - $("#response").html('
    An error occurred.
    '); - } - }); - -}); - -$('#add-map').click('',function (event) { - $('#map-tags').data('tagmanager').populate([ $('#map-stub').val() ]); - $('#map-stub').val(''); -}); - -$('#map-stub').typeahead([ - { - name: 'map_devices', - remote : '/ajax_search.php?search=%QUERY&type=device&map=1', - header : '
     Devices
    ', - template: '{{name}}', - valueKey:"name", - engine: Hogan - }, - { - name: 'map_groups', - remote : '/ajax_search.php?search=%QUERY&type=group&map=1', - header : '
     Groups
    ', - template: '{{name}}', - valueKey:"name", - engine: Hogan - } -]); - -$(function () { - $("#start").datetimepicker(); - $("#end").datetimepicker(); - $("#start").on("dp.change", function (e) { - $("#end").data("DateTimePicker").minDate(e.date); - }); - $("#end").on("dp.change", function (e) { - $("#start").data("DateTimePicker").maxDate(e.date); + $('#del_schedule_id').val($(this).data("schedule_id")); + $('#delete-maintenance').modal('show'); }); }); diff --git a/includes/functions.php b/includes/functions.php index 701229ecfa..043ad5008f 100755 --- a/includes/functions.php +++ b/includes/functions.php @@ -1154,3 +1154,21 @@ function set_curl_proxy($post) curl_setopt($post, CURLOPT_PROXY, $config['callback_proxy']); } } + +function target_to_id($target) { + if( $target[0].$target[1] == "g:" ) { + $target = "g".dbFetchCell('SELECT id FROM device_groups WHERE name = ?',array(substr($target,2))); + } else { + $target = dbFetchCell('SELECT device_id FROM devices WHERE hostname = ?',array($target)); + } + return $target; +} + +function id_to_target($id) { + if( $id[0] == "g" ) { + $id = 'g:'.dbFetchCell("SELECT name FROM device_groups WHERE id = ?",array(substr($id,1))); + } else { + $id = dbFetchCell("SELECT hostname FROM devices WHERE device_id = ?",array($id)); + } + return $id; +} From b619aaa8f9cac868dac65d69197e8e8260770289 Mon Sep 17 00:00:00 2001 From: laf Date: Sun, 19 Apr 2015 20:41:13 +0100 Subject: [PATCH 51/59] Added menubar entry --- html/includes/print-menubar.php | 1 + 1 file changed, 1 insertion(+) diff --git a/html/includes/print-menubar.php b/html/includes/print-menubar.php index 52f1fe4868..b428d4e079 100644 --- a/html/includes/print-menubar.php +++ b/html/includes/print-menubar.php @@ -62,6 +62,7 @@ if (isset($config['site_style']) && ($config['site_style'] == 'dark' || $config[ if ($_SESSION['userlevel'] >= '10') { ?>
  • Alert Rules
  • +
  • Maintenance Windows
  • Alert Map
  • Alert Templates
  • Date: Sun, 19 Apr 2015 21:26:38 +0100 Subject: [PATCH 52/59] Updated changelog 19/04/15 --- doc/General/Changelog.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/doc/General/Changelog.md b/doc/General/Changelog.md index 4233ecd178..9d60c9e1d3 100644 --- a/doc/General/Changelog.md +++ b/doc/General/Changelog.md @@ -8,6 +8,15 @@ - Fixed alerts path issue (PR756, PR760) - Supress further port alerts when interface goes down (PR745) - Fixed login so redirects via 303 when POST data sent (PR775) + - Fixed missing link to errored or ignored ports (PR787) + - Updated alert log query for performance improvements (PR783) + - Honour alert_rules.disabled field (PR784) + - Stop page debug if user not logged in (PR785) + - Added text filtering for new tables (PR797) + - Fixed VMWare VM detection + hardware / serial support (PR799) + - Fix links from /health/processor (PR810) + - Hide divider if no plugins installed (PR811) + - Added Nginx fix for using debug option (PR823) ####Improvements - New theme support added (light,dark and mono) (PR682,PR683,PR701) @@ -23,10 +32,22 @@ - Shorten interface names on map (PR752) - Added PowerCode support (PR762) - Added Autodiscovery via OSPF (PR772) - - Added visual graph of alert log (PR777) + - Added visual graph of alert log (PR777, PR809) - Added Callback system to send anonymous stats (PR768) - More tables converted to use bootgrid (PR729, PR761) - New Global Cache to store common queries added (PR780) + - Added proxy support for submitting stats (PR791) + - Minor APC Polling change (PR800) + - Updated to HP switch detection (PR802) + - Added Datacom basic detection (PR816) + - Updated Cisco detection (PR815) + - Added CSV export system + ability to export ports (PR818) + - Added basic detection for PacketLogic devices (PR773) + - Added fallback support for IBM switches for Serial / Version (PR822) + - Added Juniper Inventory support (PR825) + - Sharpen graphs produced (PR826) + - Updated map to show device overview graphs and port graphs (PR826) + - Added hostname to API call for list_alerts (PR834) ### Mar 2015 From f518ebd0ecbaa45611e7bfbae96b5489fa78817b Mon Sep 17 00:00:00 2001 From: f0o Date: Mon, 20 Apr 2015 15:57:26 +0000 Subject: [PATCH 53/59] Fix filename for rrdcached usage. --- includes/rrdtool.inc.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/includes/rrdtool.inc.php b/includes/rrdtool.inc.php index d00d5105ed..b9f81ba299 100644 --- a/includes/rrdtool.inc.php +++ b/includes/rrdtool.inc.php @@ -150,10 +150,17 @@ function rrdtool($command, $filename, $options) { global $config, $debug, $rrd_pipes, $console_color; - $cmd = "$command $filename $options"; if ($command != "create" && $config['rrdcached']) { - $cmd .= " --daemon " . $config['rrdcached']; + $filename = str_replace($config['install_dir'],"",$filename); + //Some people tend to end paths with '/', let's tolerate that + if( $filename[0] == "/" ) { + $filename = substr($filename,1); + } + $filename = str_replace("rrd/","",$filename); //Make sure you use -b /opt/librenms/rrd on your rrdcached! + $cmd = "$command $filename $options --daemon " . $config['rrdcached']; + } else { + $cmd = "$command $filename $options"; } if ($config['norrd']) From c75d00a5aff2be4aac190d0abe2b61a3943b806e Mon Sep 17 00:00:00 2001 From: f0o Date: Mon, 20 Apr 2015 16:09:02 +0000 Subject: [PATCH 54/59] Updated Device-Group SQL-Update --- includes/device-groups.inc.php | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/includes/device-groups.inc.php b/includes/device-groups.inc.php index 748efd2ca2..533b433b56 100644 --- a/includes/device-groups.inc.php +++ b/includes/device-groups.inc.php @@ -25,9 +25,10 @@ /** * Generate SQL from Group-Pattern * @param string $pattern Pattern to generate SQL for + * @param string $search What to searchid for * @return string */ -function GenGroupSQL($pattern) { +function GenGroupSQL($pattern,$search='') { $tmp = explode(" ",$pattern); $tables = array(); foreach( $tmp as $opt ) { @@ -48,7 +49,10 @@ function GenGroupSQL($pattern) { } $i++; } - $sql = "SELECT ".str_replace("(","",$tables[0]).".device_id FROM ".implode(",",$tables)." WHERE (".str_replace(array("%","@","!~","~"),array("","%","NOT LIKE","LIKE"),$pattern).")"; + if( !empty($search) ) { + $search .= " &&"; + } + $sql = "SELECT DISTINCT(".str_replace("(","",$tables[0]).".device_id) FROM ".implode(",",$tables)." WHERE ".$search." (".str_replace(array("%","@","!~","~"),array("","%","NOT LIKE","LIKE"),$pattern).")"; return $sql; } @@ -81,13 +85,8 @@ function GetDeviceGroups() { function GetGroupsFromDevice($device) { $ret = array(); foreach( GetDeviceGroups() as $group ) { - foreach( GetDevicesFromGroup($group['id']) as $dev ) { - if( $dev['device_id'] == $device ) { - if( !in_array($group['id'],$ret) ) { - $ret[] = $group['id']; - } - continue 2; - } + if( dbFetchCell(GenGroupSQL($group['pattern'],'device_id=?').' LIMIT 1',array($device)) == $device ){ + $ret[] = $group['id']; } } return $ret; From a2e4a0dcff93a7c43c97080a17b36a99dbfcf8e6 Mon Sep 17 00:00:00 2001 From: f0o Date: Mon, 20 Apr 2015 16:39:55 +0000 Subject: [PATCH 55/59] Honour new maintenance format (PR#835) --- alerts.php | 4 ++++ includes/alerts.inc.php | 20 ++++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/alerts.php b/alerts.php index 0615f587b0..c0210eb84d 100755 --- a/alerts.php +++ b/alerts.php @@ -163,6 +163,10 @@ function RunAlerts() { $updet = false; $noacc = false; } + if( IsMaintenance($device) > 0 ) { + $noiss = true; + $noacc = false; + } if( $updet ) { dbUpdate(array('details' => gzcompress(json_encode($alert['details']),9)),'alert_log','id = ?',array($alert['id'])); } diff --git a/includes/alerts.inc.php b/includes/alerts.inc.php index aa5c8687ce..40c58cc8f0 100644 --- a/includes/alerts.inc.php +++ b/includes/alerts.inc.php @@ -71,6 +71,22 @@ function GetRules($device) { return dbFetchRows('SELECT alert_rules.* FROM alert_rules LEFT JOIN alert_map ON alert_rules.id=alert_map.rule WHERE alert_rules.disabled = 0 && ( (alert_rules.device_id = -1 || alert_rules.device_id = ? ) || alert_map.target = ? '.$where.' )',$params); } +/** + * Check if device is under maintenance + * @param int $device Device-ID + * @return bool + */ +function IsMaintenance( $device ) { + $groups = GetGroupsFromDevice($device); + $params = array($device); + $where = ""; + foreach( $groups as $group ) { + $where .= " || alert_schedule_items.target = ?"; + $params[] = 'g'.$group; + } + return dbFetchCell('SELECT DISTINCT(alert_schedule.schedule_id) FROM alert_schedule LEFT JOIN alert_schedule_items ON alert_schedule.schedule_id=alert_schedule_items.schedule_id WHERE alert_schedule_items.target = ?'.$where.' LIMIT 1',$params); +} + /** * Run all rules for a device * @param int $device Device-ID @@ -78,8 +94,8 @@ function GetRules($device) { */ function RunRules($device) { global $debug; - $chk = dbFetchRow("SELECT id FROM alert_schedule WHERE alert_schedule.device_id = ? AND NOW() BETWEEN alert_schedule.start AND alert_schedule.end", array($device)); - if( $chk['id'] > 0 ) { + if( IsMaintenance($device) > 0 ) { + echo "Under Maintenance, Skipping alerts.\r\n"; return false; } foreach( GetRules($device) as $rule ) { From ef25ed345d9c46fce09af9a0e63b7419b2133609 Mon Sep 17 00:00:00 2001 From: f0o Date: Mon, 20 Apr 2015 18:18:22 +0000 Subject: [PATCH 56/59] Allow notification to resume count/delay cycles after maintenance --- alerts.php | 4 ++-- includes/alerts.inc.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/alerts.php b/alerts.php index c0210eb84d..690001808b 100755 --- a/alerts.php +++ b/alerts.php @@ -163,9 +163,9 @@ function RunAlerts() { $updet = false; $noacc = false; } - if( IsMaintenance($device) > 0 ) { + if( IsMaintenance($alert['device_id']) > 0 ) { $noiss = true; - $noacc = false; + $noacc = true; } if( $updet ) { dbUpdate(array('details' => gzcompress(json_encode($alert['details']),9)),'alert_log','id = ?',array($alert['id'])); diff --git a/includes/alerts.inc.php b/includes/alerts.inc.php index 40c58cc8f0..720629badf 100644 --- a/includes/alerts.inc.php +++ b/includes/alerts.inc.php @@ -74,7 +74,7 @@ function GetRules($device) { /** * Check if device is under maintenance * @param int $device Device-ID - * @return bool + * @return int */ function IsMaintenance( $device ) { $groups = GetGroupsFromDevice($device); @@ -84,7 +84,7 @@ function IsMaintenance( $device ) { $where .= " || alert_schedule_items.target = ?"; $params[] = 'g'.$group; } - return dbFetchCell('SELECT DISTINCT(alert_schedule.schedule_id) FROM alert_schedule LEFT JOIN alert_schedule_items ON alert_schedule.schedule_id=alert_schedule_items.schedule_id WHERE alert_schedule_items.target = ?'.$where.' LIMIT 1',$params); + return dbFetchCell('SELECT DISTINCT(alert_schedule.schedule_id) FROM alert_schedule LEFT JOIN alert_schedule_items ON alert_schedule.schedule_id=alert_schedule_items.schedule_id WHERE ( alert_schedule_items.target = ?'.$where.' ) && NOW() BETWEEN alert_schedule.start AND alert_schedule.end LIMIT 1',$params); } /** From b1ef3f79dc1739e9006b9f6e0c4220c7d887569d Mon Sep 17 00:00:00 2001 From: laf Date: Tue, 21 Apr 2015 23:06:59 +0100 Subject: [PATCH 57/59] Update modal so deletion is possible - grrr javascript --- html/includes/modal/delete_alert_map.inc.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/html/includes/modal/delete_alert_map.inc.php b/html/includes/modal/delete_alert_map.inc.php index f26e9ce839..930e1b7f85 100644 --- a/html/includes/modal/delete_alert_map.inc.php +++ b/html/includes/modal/delete_alert_map.inc.php @@ -41,8 +41,7 @@ if(is_admin() === false) {
    TitleStartTitleStart End Actions