more Juniper MIBs added
authorVictor Kirhenshtein <victor@netxms.org>
Wed, 15 Mar 2017 11:09:29 +0000 (13:09 +0200)
committerVictor Kirhenshtein <victor@netxms.org>
Wed, 15 Mar 2017 11:09:29 +0000 (13:09 +0200)
13 files changed:
contrib/mibs/JUNIPER-ALARM-MIB.txt [new file with mode: 0644]
contrib/mibs/JUNIPER-EX-SMI.txt [new file with mode: 0644]
contrib/mibs/JUNIPER-FABRIC-CHASSIS.txt [new file with mode: 0644]
contrib/mibs/JUNIPER-FABRIC-MIB.txt [new file with mode: 0644]
contrib/mibs/JUNIPER-MAC-MIB.txt [new file with mode: 0644]
contrib/mibs/JUNIPER-MIB.txt [new file with mode: 0644]
contrib/mibs/JUNIPER-POWER-SUPPLY-UNIT-MIB.txt [new file with mode: 0644]
contrib/mibs/JUNIPER-VLAN-MIB.txt [new file with mode: 0644]
contrib/mibs/Makefile.am
include/nxsnmp.h
src/server/drivers/juniper/.project
src/server/drivers/juniper/juniper.cpp
src/snmp/libnxsnmp/snapshot.cpp

diff --git a/contrib/mibs/JUNIPER-ALARM-MIB.txt b/contrib/mibs/JUNIPER-ALARM-MIB.txt
new file mode 100644 (file)
index 0000000..83e5512
--- /dev/null
@@ -0,0 +1,185 @@
+--
+-- Juniper Enterprise Specific MIB: Alarm MIB
+-- 
+-- Copyright (c) 2001-2003, Juniper Networks, Inc.
+-- All rights reserved.
+--
+-- The contents of this document are subject to change without notice.
+--
+
+JUNIPER-ALARM-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+    MODULE-IDENTITY, OBJECT-TYPE, Gauge32
+        FROM SNMPv2-SMI
+    TimeStamp
+        FROM SNMPv2-TC
+    jnxMibs
+        FROM JUNIPER-SMI;
+
+jnxAlarms MODULE-IDENTITY
+    LAST-UPDATED "200307182153Z" -- Fri Jul 18 21:53:46 2003 UTC
+    ORGANIZATION "Juniper Networks, Inc."
+    CONTACT-INFO
+            "        Juniper Technical Assistance Center
+                     Juniper Networks, Inc.
+                     1194 N. Mathilda Avenue
+                     Sunnyvale, CA 94089
+                     E-mail: support@juniper.net"
+
+    DESCRIPTION
+            "This is Juniper Networks' implementation of enterprise
+            specific MIB for alarms from the router chassis box."
+    ::= { jnxMibs 4 }
+
+
+
+
+--  ::= { jnxAlarms 1 }                        This OID is obsolete.
+
+
+--
+-- Craft Alarms
+--
+
+    jnxCraftAlarms       OBJECT IDENTIFIER ::= { jnxAlarms 2 }
+
+
+    jnxAlarmRelayMode OBJECT-TYPE
+       SYNTAX          INTEGER {
+               other(1),       -- other or unknown
+               passOn(2),      -- alarms being passed on
+               cutOff(3)       -- alarms being cut off
+       }               
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The alarm relay mode of the craft interface
+               panel for both yellow and red alarms.
+
+               Both yellow and red alarms could be cut off 
+               by a front panel Alarm Cutoff / Lamp Test 
+               (ACO/LT) button.
+
+               In the pass-on mode, the alarm relay will be 
+               activated to pass on the yellow or red alarms.
+               In the cut-off mode, both yellow and red alarms
+               will be cut off from the alarm relays which are 
+               normally connected to audible sirens or visual 
+               flashing devices."
+
+
+       ::= { jnxCraftAlarms 1 }
+
+
+    jnxYellowAlarms      OBJECT IDENTIFIER ::= { jnxCraftAlarms 2 }
+
+    jnxYellowAlarmState OBJECT-TYPE
+       SYNTAX          INTEGER {
+                       other(1),       -- alarm state is unknown
+                       off(2),         -- alarm is off
+                       on(3)           -- alarm is on
+       }
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The yellow alarm state on the craft interface 
+               panel.
+
+               The yellow alarm is on when there is some 
+               system warning such as maintenance alert or 
+               significant temperature increase.
+
+               This yellow alarm state could be turned off 
+               by the ACO/LT (Alarm Cut Off / Lamp Test) button
+               on the front panel module."
+
+
+       ::= { jnxYellowAlarms 1 }
+
+    jnxYellowAlarmCount OBJECT-TYPE
+       SYNTAX          Gauge32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The number of currently active and non-silent 
+               yellow alarms.
+
+               This object is independent of the ACO/LT (Alarm
+               Cut Off / Lamp Test) button."
+
+
+       ::= { jnxYellowAlarms 2 }
+
+
+    jnxYellowAlarmLastChange OBJECT-TYPE
+       SYNTAX          TimeStamp
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The value of sysUpTime when the yellow alarm
+               last changed - either from off to on or vice
+               versa.  Zero if unknown or never changed since
+               the agent was up."
+
+
+       ::= { jnxYellowAlarms 3 }
+
+
+    jnxRedAlarms         OBJECT IDENTIFIER ::= { jnxCraftAlarms 3 }
+
+    jnxRedAlarmState OBJECT-TYPE
+       SYNTAX          INTEGER {
+                       other(1),       -- alarm state is unknown
+                       off(2),         -- alarm is off
+                       on(3)           -- alarm is on
+       }
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The red alarm indication on the craft interface 
+               panel.
+
+               The red alarm is on when there is some system 
+               failure or power supply failure or the system 
+               is experiencing a hardware malfunction or some 
+               threshold is being exceeded.
+
+               This red alarm state could be turned off by the
+               ACO/LT (Alarm Cut Off / Lamp Test) button on the
+               front panel module."
+
+
+       ::= { jnxRedAlarms 1 }
+
+
+    jnxRedAlarmCount OBJECT-TYPE
+       SYNTAX          Gauge32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The number of currently active and non-silent 
+               red alarms.
+
+               This object is independent of the ACO/LT (Alarm
+               Cut Off / Lamp Test) button."
+
+
+       ::= { jnxRedAlarms 2 }
+
+
+    jnxRedAlarmLastChange OBJECT-TYPE
+       SYNTAX          TimeStamp
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The value of sysUpTime when the red alarm
+               last changed - either from off to on or vice
+               versa.  Zero if unknown or never changed since
+               the agent was up."
+
+
+       ::= { jnxRedAlarms 3 }
+
+
+END
diff --git a/contrib/mibs/JUNIPER-EX-SMI.txt b/contrib/mibs/JUNIPER-EX-SMI.txt
new file mode 100644 (file)
index 0000000..58b6353
--- /dev/null
@@ -0,0 +1,44 @@
+--
+-- Juniper Enterprise Specific MIB: Structure of Management Information
+--
+-- Copyright (c) 2002-2009, Juniper Networks, Inc.
+-- All rights reserved.
+--
+-- The contents of this document are subject to change without notice.
+--
+
+JUNIPER-EX-SMI DEFINITIONS ::= BEGIN
+
+IMPORTS
+                jnxExMibRoot            FROM JUNIPER-SMI;
+
+
+
+--
+-- This MIB file added the nodes to create the Juniper Security
+-- tree structure under the object node: jnxExObjects.
+-- In general, the prefix jnxEx is used to name the object identifiers
+-- and to designate them.
+--
+-- The jnxEx node is designed to provide a branch for the Switching
+-- related MIB defintions specific to the EX products.
+--
+
+--
+-- Object identifier added as the basis for identifying other EX nodes.
+--
+jnxExSwitching                   OBJECT IDENTIFIER ::= { jnxExMibRoot 1 }
+
+
+--
+-- next level object identifiers under jnxExSwitching
+--
+jnxExAnalyzer                    OBJECT IDENTIFIER ::= { jnxExSwitching 1 }
+jnxExSecureAccessPort            OBJECT IDENTIFIER ::= { jnxExSwitching 2 }
+jnxExPaeExtension                OBJECT IDENTIFIER ::= { jnxExSwitching 3 }
+jnxExVirtualChassis              OBJECT IDENTIFIER ::= { jnxExSwitching 4 }
+jnxExVlan                        OBJECT IDENTIFIER ::= { jnxExSwitching 5 }
+jnxRPS                           OBJECT IDENTIFIER ::= { jnxExSwitching 6 }
+jnxMacNotificationRoot           OBJECT IDENTIFIER ::= { jnxExSwitching 7 }
+END
+
diff --git a/contrib/mibs/JUNIPER-FABRIC-CHASSIS.txt b/contrib/mibs/JUNIPER-FABRIC-CHASSIS.txt
new file mode 100644 (file)
index 0000000..ee0562c
--- /dev/null
@@ -0,0 +1,1978 @@
+--
+-- Juniper Enterprise Specific MIB: Fabric Chassis MIB
+-- 
+-- Copyright (c) 2012, Juniper Networks, Inc.
+-- All rights reserved.
+--
+
+JUNIPER-FABRIC-CHASSIS DEFINITIONS ::= BEGIN
+
+IMPORTS
+    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
+    Integer32, Counter32, TimeTicks
+        FROM SNMPv2-SMI
+    DisplayString, TEXTUAL-CONVENTION, DateAndTime
+        FROM SNMPv2-TC
+    jnxDcfMibRoot, jnxFabricChassisTraps, jnxFabricChassisOKTraps
+        FROM JUNIPER-SMI
+    JnxChassisId
+        FROM JUNIPER-MIB;
+
+jnxFabricAnatomy MODULE-IDENTITY
+
+    LAST-UPDATED "201209130000Z" -- Thur Sept 13 00:00:00 2012 UTC
+    ORGANIZATION "Juniper Networks, Inc."
+    CONTACT-INFO
+            "        Juniper Technical Assistance Center
+                 Juniper Networks, Inc.
+                 1194 N. Mathilda Avenue
+                 Sunnyvale, CA 94089
+                 E-mail: support@juniper.net"
+
+    DESCRIPTION
+            "The MIB modules representing Juniper Networks'
+          Quantum Fabric hardware components."
+
+    REVISION
+        "201209130000Z" -- Thur Sept 13 00:00:00 2012 UTC
+    DESCRIPTION
+        "Added director group device (DG) enum to JnxFabricContainersFamily."
+    REVISION
+        "201207260000Z" -- Thur July 26 00:00:00 2012 UTC
+    DESCRIPTION
+        "Modified the description for JnxFabricDeviceId. Added 
+         ufabric as part of JnxFabricContainersFamily."
+
+    ::= { jnxDcfMibRoot 2 }
+
+jnxFabricAnatomyScalars    OBJECT IDENTIFIER ::= { jnxFabricAnatomy 1 }
+jnxFabricAnatomyTables     OBJECT IDENTIFIER ::= { jnxFabricAnatomy 2 }
+
+
+--
+-- Textual Conventions
+--
+
+JnxFabricDeviceId ::= TEXTUAL-CONVENTION
+    STATUS       current
+    DESCRIPTION
+      "The device identifier assigned to the individual devices across the fabric by SFC. 
+       This shall be a unique index for each of the devices constituting the fabric."
+    SYNTAX         Integer32 (1..2147483647)
+
+
+JnxFabricContainersFamily ::= TEXTUAL-CONVENTION
+    STATUS       current
+    DESCRIPTION
+      "The family of container that defines the device."
+    SYNTAX       INTEGER {
+            fabricChassis(1),
+            fabricNode(2),
+            ufabric(3),
+            directorGroupDevice(4)
+      }
+
+
+-- Juniper Fabric Anatomy MIB
+--
+
+-- Fabric Scalar Objects
+
+    jnxFabricClass OBJECT-TYPE 
+      SYNTAX       OBJECT IDENTIFIER
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+              "The product line of the fabric switch."
+      ::= { jnxFabricAnatomyScalars 1 }
+
+    jnxFabricDescr OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The name, model, or detailed description of the fabric,
+            indicating which product the fabric is about."
+      ::= { jnxFabricAnatomyScalars 2 }
+
+    jnxFabricSerialNo OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The serial number of this subject, blank if unknown 
+            or unavailable."
+      ::= { jnxFabricAnatomyScalars 3 }
+
+    jnxFabricRevision OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The revision of this subject, blank if unknown or
+            unavailable."
+      ::= { jnxFabricAnatomyScalars 4 }
+
+    jnxFabricFirmwareRevision OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The firmware (u-boot) revision of this subject, blank if unknown or
+            unavailable."
+      ::= { jnxFabricAnatomyScalars 5 }
+
+    jnxFabricLastInstalled OBJECT-TYPE
+      SYNTAX       TimeTicks
+      UNITS        "centi-seconds"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The value of sysUpTime when the subject was last
+            installed, up-and-running.  Zero if unknown or 
+            already up-and-running when the agent was up."
+      ::= { jnxFabricAnatomyScalars 6 }
+
+    jnxFabricContentsLastChange OBJECT-TYPE
+      SYNTAX       TimeTicks
+      UNITS        "centi-seconds"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The value of sysUpTime when the fabric contents 
+            table last changed.  Zero if unknown or already 
+            existing when the agent was up."
+      ::= { jnxFabricAnatomyScalars 7 }
+
+    jnxFabricFilledLastChange OBJECT-TYPE
+      SYNTAX       TimeTicks
+      UNITS        "centi-seconds"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The value of sysUpTime when the fabric filled 
+            status table last changed.  Zero if unknown or
+            already at that state when the agent was up."
+      ::= { jnxFabricAnatomyScalars 8 }
+      
+--
+-- Fabric Device Table
+--
+
+    jnxFabricDeviceTable OBJECT-TYPE
+      SYNTAX       SEQUENCE OF JnxFabricDeviceEntry
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+            "A list of fabric device entries."
+      ::= { jnxFabricAnatomyTables 1 }
+
+    jnxFabricDeviceEntry OBJECT-TYPE
+      SYNTAX       JnxFabricDeviceEntry
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+            "An entry of fabric device table."
+      INDEX       { jnxFabricDeviceIndex }
+      ::= { jnxFabricDeviceTable 1 }
+
+    JnxFabricDeviceEntry ::= SEQUENCE {
+          jnxFabricDeviceIndex               JnxFabricDeviceId,
+          jnxFabricDeviceEntryContainersFamily JnxFabricContainersFamily,
+          jnxFabricDeviceEntryClass           OBJECT IDENTIFIER,
+          jnxFabricDeviceEntryModel           OBJECT IDENTIFIER,
+          jnxFabricDeviceEntryDescr           DisplayString,
+          jnxFabricDeviceEntrySerialNo        DisplayString,
+          jnxFabricDeviceEntryName            DisplayString,
+          jnxFabricDeviceEntryRevision        DisplayString,
+          jnxFabricDeviceEntryFirmwareRevision    DisplayString,
+          jnxFabricDeviceEntryInstalled       TimeTicks,
+          jnxFabricDeviceEntryContentsLastChange  TimeTicks,
+          jnxFabricDeviceEntryFilledLastChange    TimeTicks,
+          jnxFabricDeviceEntryKernelMemoryUsedPercent Integer32
+    }
+
+    jnxFabricDeviceIndex OBJECT-TYPE
+      SYNTAX       JnxFabricDeviceId
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Identifies the device on which the contents of this
+                row exists."
+      ::= { jnxFabricDeviceEntry 1 }
+
+    jnxFabricDeviceEntryContainersFamily OBJECT-TYPE
+      SYNTAX       JnxFabricContainersFamily
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "The family of container that defines this device."
+      ::= { jnxFabricDeviceEntry 2 }
+
+    jnxFabricDeviceEntryClass OBJECT-TYPE 
+      SYNTAX       OBJECT IDENTIFIER
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+              "The productline of the device entry."
+      ::= { jnxFabricDeviceEntry 3 }
+
+    jnxFabricDeviceEntryModel OBJECT-TYPE 
+      SYNTAX       OBJECT IDENTIFIER
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+              "The model object identifier of the device entry."
+      ::= { jnxFabricDeviceEntry 4 }
+
+    jnxFabricDeviceEntryDescr OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The name or detailed description of the device entry."
+      ::= { jnxFabricDeviceEntry 5 }
+
+    jnxFabricDeviceEntrySerialNo OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The serial number of this subject, blank if unknown 
+            or unavailable."
+      ::= { jnxFabricDeviceEntry 6 }
+
+    jnxFabricDeviceEntryName OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The name of this subject which is same as the serial
+            number unless a device alias has been configured."
+      ::= { jnxFabricDeviceEntry 7 }
+
+    jnxFabricDeviceEntryRevision OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The revision of this subject, blank if unknown or
+            unavailable."
+      ::= { jnxFabricDeviceEntry 8 }
+
+    jnxFabricDeviceEntryFirmwareRevision OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The firmware (u-boot) revision of this subject, blank if unknown or
+            unavailable."
+      ::= { jnxFabricDeviceEntry 9 }
+
+    jnxFabricDeviceEntryInstalled OBJECT-TYPE
+      SYNTAX       TimeTicks
+      UNITS        "centi-seconds"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The value of sysUpTime when the subject was last
+            installed, up-and-running.  Zero if unknown or 
+            already up-and-running when the agent was up."
+      ::= { jnxFabricDeviceEntry 10 }
+
+    jnxFabricDeviceEntryContentsLastChange OBJECT-TYPE
+      SYNTAX       TimeTicks
+      UNITS        "centi-seconds"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The value of sysUpTime when the contents 
+            table last changed.  Zero if unknown or already 
+            existing when the agent was up."
+      ::= { jnxFabricDeviceEntry 11 }
+
+    jnxFabricDeviceEntryFilledLastChange OBJECT-TYPE
+      SYNTAX       TimeTicks
+      UNITS        "centi-seconds"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The value of sysUpTime when the filled 
+            status table last changed.  Zero if unknown or
+            already at that state when the agent was up."
+      ::= { jnxFabricDeviceEntry 12 }
+
+    jnxFabricDeviceEntryKernelMemoryUsedPercent OBJECT-TYPE
+      SYNTAX       Integer32
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The percentage of kernel memory used
+            of this subject.  0 if unavailable or
+            inapplicable."
+      ::= { jnxFabricDeviceEntry 13 }
+
+--
+-- Fabric Containers Table
+--
+
+    jnxFabricContainersTable OBJECT-TYPE
+      SYNTAX       SEQUENCE OF JnxFabricContainersEntry
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+            "A list of containers entries."
+      ::= { jnxFabricAnatomyTables 2 }
+
+    jnxFabricContainersEntry OBJECT-TYPE
+      SYNTAX       JnxFabricContainersEntry
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+            "An entry of containers table. Each entry is
+             indexed by the container table type and
+             the container index."
+
+      INDEX { jnxFabricContainersFamily,
+              jnxFabricContainersIndex }
+      ::= { jnxFabricContainersTable 1 }
+
+    JnxFabricContainersEntry ::= SEQUENCE {
+          jnxFabricContainersFamily  JnxFabricContainersFamily,
+          jnxFabricContainersIndex  Integer32,
+          jnxFabricContainersView   BITS,
+          jnxFabricContainersLevel  INTEGER,
+          jnxFabricContainersWithin Integer32,
+          jnxFabricContainersType   OBJECT IDENTIFIER,
+          jnxFabricContainersDescr  DisplayString,
+          jnxFabricContainersCount  Integer32
+    }
+
+    jnxFabricContainersFamily OBJECT-TYPE
+      SYNTAX       JnxFabricContainersFamily
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "The family of container."
+      ::= { jnxFabricContainersEntry 1 }
+
+    jnxFabricContainersIndex OBJECT-TYPE
+      SYNTAX       Integer32 (1..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The index for this entry."
+      ::= { jnxFabricContainersEntry 2 }
+
+    jnxFabricContainersView OBJECT-TYPE
+      SYNTAX       BITS {
+                       viewFront(0),
+                       viewRear(1),
+                       viewTop(2),
+                       viewBottom(3),
+                       viewLeftHandSide(4),
+                       viewRightHandSide(5)
+                   }
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The view(s) from which the specific container
+            appears.
+
+            This variable indicates that the specific container
+            is embedded and accessible from the corresponding
+            view(s).
+
+            The value is a bit map represented as a sum.
+            If multiple bits are set, the specified
+            container(s) are located and accessible from 
+            that set of views.
+
+            The various values representing the bit positions
+            and its corresponding views are:
+                1   front
+                2   rear
+                4   top
+                8   bottom
+               16   leftHandSide
+               32   rightHandSide
+
+            Note 1: 
+            LefHandSide and rightHandSide are referred
+            to based on the view from the front.
+
+            Note 2: 
+            If the specified containers are scattered 
+            around various views, the numbering is according
+            to the following sequence:
+                front -> rear -> top -> bottom
+                    -> leftHandSide -> rightHandSide
+            For each view plane, the numbering sequence is
+            first from left to right, and then from up to down.
+
+            Note 3: 
+            Even though the value in chassis hardware (e.g. 
+            slot number) may be labelled from 0, 1, 2, and up,
+            all the indices in MIB start with 1 (not 0) 
+            according to network management convention."
+      ::= { jnxFabricContainersEntry 3 }
+
+    jnxFabricContainersLevel OBJECT-TYPE
+      SYNTAX       INTEGER {
+            level0(0),
+            level1(1),
+            level2(2),
+            level3(3)
+      }
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The abstraction level of the chassis or device.
+            It is enumerated from the outside to the inside, 
+            from the outer layer to the inner layer.
+            For example, top level (i.e. level 0) refers to 
+            chassis frame, level 1 FPC slot within chassis 
+            frame, level 2 PIC space within FPC slot."
+      ::= { jnxFabricContainersEntry 4 }
+
+    jnxFabricContainersWithin OBJECT-TYPE
+      SYNTAX       Integer32
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The index of its next higher level container 
+            housing     this entry.  The associated 
+            jnxFabricContainersIndex in the jnxFabricContainersTable 
+            represents its next higher level container."
+      ::= { jnxFabricContainersEntry 5 }
+
+    jnxFabricContainersType OBJECT-TYPE
+      SYNTAX       OBJECT IDENTIFIER
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The type of this container."
+      ::= { jnxFabricContainersEntry 6 }
+
+    jnxFabricContainersDescr OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The name or detailed description of this
+            subject."
+      ::= { jnxFabricContainersEntry 7 }
+
+    jnxFabricContainersCount OBJECT-TYPE
+      SYNTAX       Integer32
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The maximum number of containers of this level
+            per container of the next higher level.  
+            e.g. if there are six level 2 containers in 
+            level 1 container, then jnxFabricContainersCount for
+            level 2 is six."
+      ::= { jnxFabricContainersEntry 8 }
+
+--
+-- Fabric Contents Table
+--
+
+    jnxFabricContentsTable OBJECT-TYPE
+      SYNTAX       SEQUENCE OF JnxFabricContentsEntry
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+            "A list of contents entries."
+      ::= { jnxFabricAnatomyTables 3 }
+
+    jnxFabricContentsEntry OBJECT-TYPE
+      SYNTAX       JnxFabricContentsEntry
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+            "An entry of contents table."
+      INDEX { jnxFabricDeviceIndex,
+              jnxFabricContentsContainerIndex,
+              jnxFabricContentsL1Index,
+              jnxFabricContentsL2Index,
+              jnxFabricContentsL3Index }
+      ::= { jnxFabricContentsTable 1 }
+
+    JnxFabricContentsEntry ::= SEQUENCE {
+          jnxFabricContentsContainerIndex Integer32,
+          jnxFabricContentsL1Index        Integer32,
+          jnxFabricContentsL2Index        Integer32,
+          jnxFabricContentsL3Index        Integer32,
+          jnxFabricContentsType           OBJECT IDENTIFIER,
+          jnxFabricContentsDescr          DisplayString,
+          jnxFabricContentsSerialNo       DisplayString,
+          jnxFabricContentsRevision       DisplayString,
+          jnxFabricContentsInstalled      TimeTicks,
+          jnxFabricContentsPartNo         DisplayString,
+          jnxFabricContentsChassisId      JnxChassisId,
+          jnxFabricContentsChassisDescr   DisplayString,
+          jnxFabricContentsChassisCleiCode DisplayString
+    }
+
+    jnxFabricContentsContainerIndex OBJECT-TYPE
+      SYNTAX       Integer32 (1..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The associated jnxFabricContainersIndex in the 
+            jnxFabricContainersTable."
+      ::= { jnxFabricContentsEntry 1 }
+      
+    jnxFabricContentsL1Index OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The level one index of the container
+            housing this subject.  Zero if unavailable
+            or inapplicable."
+      ::= { jnxFabricContentsEntry 2 }
+
+    jnxFabricContentsL2Index OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The level two index of the container
+            housing this subject.  Zero if unavailable
+            or inapplicable."
+      ::= { jnxFabricContentsEntry 3 }
+
+    jnxFabricContentsL3Index OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The level three index of the container
+            housing this subject.  Zero if unavailable
+            or inapplicable."
+      ::= { jnxFabricContentsEntry 4 }
+
+    jnxFabricContentsType OBJECT-TYPE
+      SYNTAX       OBJECT IDENTIFIER
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The type of this subject.  zeroDotZero
+            if unknown."
+      ::= { jnxFabricContentsEntry 5 }
+
+    jnxFabricContentsDescr OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The name or detailed description of this
+            subject."
+      ::= { jnxFabricContentsEntry 6 }
+
+    jnxFabricContentsSerialNo OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The serial number of this subject, blank if 
+            unknown or unavailable."
+      ::= { jnxFabricContentsEntry 7 }
+
+    jnxFabricContentsRevision OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The revision of this subject, blank if unknown 
+            or unavailable."
+      ::= { jnxFabricContentsEntry 8 }
+
+    jnxFabricContentsInstalled OBJECT-TYPE
+      SYNTAX       TimeTicks
+      UNITS        "centi-seconds"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The value of sysUpTime when the subject was last 
+            installed, up-and-running.  Zero if unknown
+            or already up-and-running when the agent was up."
+      ::= { jnxFabricContentsEntry 9 }
+
+    jnxFabricContentsPartNo OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The part number of this subject, blank if unknown 
+            or unavailable."
+      ::= { jnxFabricContentsEntry 10 }
+
+    jnxFabricContentsChassisId OBJECT-TYPE
+      SYNTAX       JnxChassisId
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Identifies the chassis on which the contents of this
+                row exists."
+        ::= { jnxFabricContentsEntry 11 }
+
+    jnxFabricContentsChassisDescr OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "A textual description of the chassis on which the
+                contents of this row exists."
+        ::= { jnxFabricContentsEntry 12 }
+
+    jnxFabricContentsChassisCleiCode OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "The clei code of this subject, blank if unknown
+                 or unavailable.
+
+                 A CLEI code is an intelligent code that consists of 10
+                 alphanumeric characters with 4 data elements.  The first data
+                 element is considered the basic code with the first 2 characters
+                 indicating the technology or equipment type, and the third and
+                 fourth characters denoting the functional sub-category.  The
+                 second data element represents the features, and its three
+                 characters denote functional capabilities or changes.  The third
+                 data element has one character and denotes a reference to a
+                 manufacturer, system ID, specification, or drawing.  The fourth
+                 data element consists of two characters and contains complementary
+                 data.  These two characters provide a means of differentiating or
+                 providing uniqueness between the eight character CLEI codes by
+                 identifying the manufacturing vintage of the product.  Names are
+                 assigned via procedures defined in [GR485].
+
+                 The assigned maintenance agent for the CLEI code, Telcordia
+                 Technologies, is responsible for assigning certain equipment and
+                 other identifiers (e.g., location, manufacturer/supplier) for the
+                 telecommunications industry."
+        ::= { jnxFabricContentsEntry 13 }
+
+--
+-- Fabric Filled Status Table
+--
+-- This table show the empty/filled status of the container in the 
+-- fabric containers table.
+--
+
+    jnxFabricFilledTable OBJECT-TYPE
+      SYNTAX       SEQUENCE OF JnxFabricFilledEntry
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+            "A list of filled status entries."
+      ::= { jnxFabricAnatomyTables 4 }
+
+    jnxFabricFilledEntry OBJECT-TYPE
+      SYNTAX       JnxFabricFilledEntry
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+            "An entry of filled status table."
+      INDEX { jnxFabricDeviceIndex,
+              jnxFabricFilledContainerIndex,
+              jnxFabricFilledL1Index,
+              jnxFabricFilledL2Index,
+              jnxFabricFilledL3Index }
+      ::= { jnxFabricFilledTable 1 }
+
+    JnxFabricFilledEntry ::= SEQUENCE {
+          jnxFabricFilledContainerIndex Integer32,
+          jnxFabricFilledL1Index        Integer32,
+          jnxFabricFilledL2Index        Integer32,
+          jnxFabricFilledL3Index        Integer32,
+          jnxFabricFilledDescr          DisplayString,
+          jnxFabricFilledState          INTEGER,
+          jnxFabricFilledChassisId      JnxChassisId,
+          jnxFabricFilledChassisDescr   DisplayString
+    }
+
+    jnxFabricFilledContainerIndex OBJECT-TYPE
+      SYNTAX       Integer32 (1..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The associated jnxFabricContainersIndex in the 
+            jnxFabricContainersTable."
+      ::= { jnxFabricFilledEntry 1 }
+      
+    jnxFabricFilledL1Index OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The level one index of the container
+            housing this subject.  Zero if unavailable
+            or inapplicable."
+      ::= { jnxFabricFilledEntry 2 }
+
+    jnxFabricFilledL2Index OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The level two index of the container
+            housing this subject.  Zero if unavailable
+            or inapplicable."
+      ::= { jnxFabricFilledEntry 3 }
+
+    jnxFabricFilledL3Index OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The level three index of the container
+            housing this subject.  Zero if unavailable
+            or inapplicable."
+      ::= { jnxFabricFilledEntry 4 }
+
+    jnxFabricFilledDescr OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The name or detailed description of this
+            subject."
+      ::= { jnxFabricFilledEntry 5 }
+
+    jnxFabricFilledState OBJECT-TYPE
+      SYNTAX       INTEGER {
+            unknown(1),
+            empty(2),
+            filled(3)
+      }
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The filled state of this subject."
+      ::= { jnxFabricFilledEntry 6 }
+
+    jnxFabricFilledChassisId OBJECT-TYPE
+      SYNTAX         JnxChassisId
+      MAX-ACCESS     read-only
+      STATUS         current
+      DESCRIPTION
+                "Identifies the chassis on which the contents of this
+                row exists."
+        ::= { jnxFabricFilledEntry 7 }
+
+    jnxFabricFilledChassisDescr OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "A textual description of the chassis on which the
+                contents of this row exists."
+        ::= { jnxFabricFilledEntry 8 }
+
+
+--
+-- Fabric Operating Status Table
+--
+-- This table reveals the operating status of some subjects 
+-- of interest in the fabric contents table.
+--
+
+    jnxFabricOperatingTable OBJECT-TYPE
+      SYNTAX       SEQUENCE OF JnxFabricOperatingEntry
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+            "A list of operating status entries."
+      ::= { jnxFabricAnatomyTables 5 }
+
+    jnxFabricOperatingEntry OBJECT-TYPE
+      SYNTAX       JnxFabricOperatingEntry
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+            "An entry of operating status table."
+      INDEX { jnxFabricDeviceIndex,
+              jnxFabricOperatingContentsIndex,
+              jnxFabricOperatingL1Index,
+              jnxFabricOperatingL2Index,
+              jnxFabricOperatingL3Index }
+      ::= { jnxFabricOperatingTable 1 }
+
+    JnxFabricOperatingEntry ::= SEQUENCE {
+          jnxFabricOperatingContentsIndex Integer32,
+          jnxFabricOperatingL1Index     Integer32,
+          jnxFabricOperatingL2Index     Integer32,
+          jnxFabricOperatingL3Index     Integer32,
+          jnxFabricOperatingDescr       DisplayString,
+          jnxFabricOperatingState       INTEGER,
+          jnxFabricOperatingTemp        Integer32,
+          jnxFabricOperatingCPU         Integer32,
+          jnxFabricOperatingISR         Integer32,
+          jnxFabricOperatingDRAMSize    Integer32,
+          jnxFabricOperatingBuffer      Integer32,
+          jnxFabricOperatingHeap        Integer32,
+          jnxFabricOperatingUpTime      TimeTicks,
+          jnxFabricOperatingLastRestart TimeTicks,
+          jnxFabricOperatingMemory      Integer32,
+          jnxFabricOperatingStateOrdered  INTEGER,
+          jnxFabricOperatingChassisId   JnxChassisId,
+          jnxFabricOperatingChassisDescr  DisplayString,
+          jnxFabricOperatingRestartTime   DateAndTime,
+          jnxFabricOperating1MinLoadAvg   Integer32,
+          jnxFabricOperating5MinLoadAvg   Integer32,
+          jnxFabricOperating15MinLoadAvg  Integer32
+    }
+
+    jnxFabricOperatingContentsIndex OBJECT-TYPE
+      SYNTAX       Integer32 (1..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The associated jnxFabricContentsContainerIndex in the 
+            jnxFabricContentsTable."
+      ::= { jnxFabricOperatingEntry 1 }
+      
+    jnxFabricOperatingL1Index OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The level one index associated with this
+            subject.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricOperatingEntry 2 }
+
+    jnxFabricOperatingL2Index OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The level two index associated with this 
+            subject.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricOperatingEntry 3 }
+
+    jnxFabricOperatingL3Index OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The level three index associated with this
+            subject.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricOperatingEntry 4 }
+
+    jnxFabricOperatingDescr OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The name or detailed description of this subject."
+      ::= { jnxFabricOperatingEntry 5 }
+
+    jnxFabricOperatingState OBJECT-TYPE
+      SYNTAX       INTEGER {
+            unknown(1),
+            running(2),   -- up and running,
+                          -- as a active primary
+            ready(3),     -- ready to run, not running yet
+            reset(4),     -- held in reset, not ready yet
+            runningAtFullSpeed(5),  
+                          -- valid for fans only
+            down(6),      -- down or off, for power supply
+            standby(7)    -- running as a standby backup
+      }
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The operating state of this subject."
+      ::= { jnxFabricOperatingEntry 6 }
+
+    jnxFabricOperatingTemp OBJECT-TYPE
+      SYNTAX       Integer32
+      UNITS        "Celsius (degrees C)"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The temperature in Celsius (degrees C) of this 
+            subject.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricOperatingEntry 7 }
+
+    jnxFabricOperatingCPU OBJECT-TYPE
+      SYNTAX       Integer32
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The CPU utilization in percentage of this 
+            subject.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricOperatingEntry 8 }
+      
+    jnxFabricOperatingISR OBJECT-TYPE
+      SYNTAX       Integer32
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The CPU utilization in percentage of this subject
+            spending in interrupt service routine (ISR).
+            Zero if unavailable or inapplicable."
+      ::= { jnxFabricOperatingEntry 9 }
+      
+    jnxFabricOperatingDRAMSize OBJECT-TYPE
+      SYNTAX       Integer32
+      MAX-ACCESS    read-only
+      STATUS       deprecated
+      DESCRIPTION
+                "The DRAM size in bytes of this subject.
+                Zero if unavailable or inapplicable."
+        ::= { jnxFabricOperatingEntry 10 }
+
+    jnxFabricOperatingBuffer OBJECT-TYPE
+      SYNTAX       Integer32
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The buffer pool utilization in percentage
+            of this subject.  Zero if unavailable or 
+            inapplicable."
+      ::= { jnxFabricOperatingEntry 11 }
+      
+    jnxFabricOperatingHeap OBJECT-TYPE
+      SYNTAX       Integer32
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The heap utilization in percentage of 
+            this subject.  Zero if unavailable or 
+            inapplicable."
+      ::= { jnxFabricOperatingEntry 12 }
+
+    jnxFabricOperatingUpTime OBJECT-TYPE
+      SYNTAX       TimeTicks
+      UNITS        "centi-seconds"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The time interval in 10-millisecond period
+            that this subject has been up and running.  
+            Zero if unavailable or inapplicable."
+      ::= { jnxFabricOperatingEntry 13 }
+
+    jnxFabricOperatingLastRestart OBJECT-TYPE
+      SYNTAX       TimeTicks
+      UNITS        "centi-seconds"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The value of sysUpTime when this subject 
+            last restarted.  Zero if unavailable or 
+            inapplicable."
+      ::= { jnxFabricOperatingEntry 14 }
+
+    jnxFabricOperatingMemory OBJECT-TYPE
+      SYNTAX       Integer32
+      UNITS        "Megabytes"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The installed memory size in Megabytes 
+            of this subject.  Zero if unavailable or
+            inapplicable."
+      ::= { jnxFabricOperatingEntry 15 }
+
+    jnxFabricOperatingStateOrdered OBJECT-TYPE
+      SYNTAX       INTEGER {
+            running(1),   -- up and running,
+                          -- as a active primary
+            standby(2),   -- running as a standby backup
+            ready(3),     -- ready to run, not running yet
+              runningAtFullSpeed(4),  
+                          -- valid for fans only
+            reset(5),     -- held in reset, not ready yet
+            down(6),      -- down or off, for power supply
+            unknown(7)
+      }
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The operating state of this subject.  Identical to
+                 jnxFabricOperatingState, but with enums ordered from 'most
+                 operational' to 'least operational' states."
+      ::= { jnxFabricOperatingEntry 16 }
+
+    jnxFabricOperatingChassisId OBJECT-TYPE
+      SYNTAX       JnxChassisId
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Identifies the chassis on which the contents of this
+                row exists."
+        ::= { jnxFabricOperatingEntry 17 }
+
+    jnxFabricOperatingChassisDescr OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "A textual description of the chassis on which the
+                contents of this row exists."
+        ::= { jnxFabricOperatingEntry 18 }
+
+    jnxFabricOperatingRestartTime OBJECT-TYPE
+      SYNTAX       DateAndTime
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "The time at which this entity
+                last restarted."
+        ::= { jnxFabricOperatingEntry 19 }
+
+    jnxFabricOperating1MinLoadAvg OBJECT-TYPE
+      SYNTAX       Integer32
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "The CPU Load Average over the last 1 minutes
+                Here it will be shown as percentage value
+                Zero if unavailable or inapplicable."
+        ::= { jnxFabricOperatingEntry 20 }
+
+    jnxFabricOperating5MinLoadAvg OBJECT-TYPE
+      SYNTAX       Integer32
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "The CPU Load Average over the last 5 minutes
+                Here it will be shown as percentage value
+                Zero if unavailable or inapplicable."
+        ::= { jnxFabricOperatingEntry 21 }
+
+    jnxFabricOperating15MinLoadAvg OBJECT-TYPE
+      SYNTAX       Integer32
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "The CPU Load Average over the last 15 minutes
+                Here it will be shown as percentage value
+                Zero if unavailable or inapplicable."
+        ::= { jnxFabricOperatingEntry 22 }
+
+--
+-- Fabric Redundancy Information Table
+--
+-- This table shows the internal configuration setting for the 
+-- available redundant subsystems or components in the fabric.
+--
+
+    jnxFabricRedundancyTable OBJECT-TYPE
+      SYNTAX       SEQUENCE OF JnxFabricRedundancyEntry
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+            "A list of redundancy information entries."
+      ::= { jnxFabricAnatomyTables 6 }
+
+    jnxFabricRedundancyEntry OBJECT-TYPE
+      SYNTAX       JnxFabricRedundancyEntry
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+            "An entry in the redundancy information table."
+      INDEX { jnxFabricDeviceIndex,
+              jnxFabricRedundancyContentsIndex,
+              jnxFabricRedundancyL1Index,
+              jnxFabricRedundancyL2Index,
+              jnxFabricRedundancyL3Index }
+      ::= { jnxFabricRedundancyTable 1 }
+
+    JnxFabricRedundancyEntry ::= SEQUENCE {
+          jnxFabricRedundancyContentsIndex          Integer32,
+          jnxFabricRedundancyL1Index                Integer32,
+          jnxFabricRedundancyL2Index                Integer32,
+          jnxFabricRedundancyL3Index                Integer32,
+          jnxFabricRedundancyDescr                 DisplayString,
+          jnxFabricRedundancyConfig                INTEGER,
+          jnxFabricRedundancyState                 INTEGER,
+          jnxFabricRedundancySwitchoverCount        Counter32,
+          jnxFabricRedundancySwitchoverTime         TimeTicks,
+          jnxFabricRedundancySwitchoverReason       INTEGER,
+          jnxFabricRedundancyKeepaliveHeartbeat            Integer32,
+          jnxFabricRedundancyKeepaliveTimeout       Integer32,
+          jnxFabricRedundancyKeepaliveElapsed       Integer32,
+          jnxFabricRedundancyKeepaliveLoss         Counter32,
+          jnxFabricRedundancyChassisId             JnxChassisId,
+          jnxFabricRedundancyChassisDescr          DisplayString
+    }
+
+    jnxFabricRedundancyContentsIndex OBJECT-TYPE
+      SYNTAX       Integer32 (1..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The associated jnxFabricContentsContainerIndex in the 
+            jnxFabricContentsTable."
+      ::= { jnxFabricRedundancyEntry 1 }
+      
+    jnxFabricRedundancyL1Index OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The level one index associated with this
+            subject.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricRedundancyEntry 2 }
+
+    jnxFabricRedundancyL2Index OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The level two index associated with this 
+            subject.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricRedundancyEntry 3 }
+
+    jnxFabricRedundancyL3Index OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The level three index associated with this
+            subject.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricRedundancyEntry 4 }
+
+    jnxFabricRedundancyDescr OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The name or detailed description of this subject."
+      ::= { jnxFabricRedundancyEntry 5 }
+
+    jnxFabricRedundancyConfig OBJECT-TYPE
+      SYNTAX       INTEGER {
+            unknown(1),
+            master(2),    -- election priority set as a master
+            backup(3),    -- election priority set as a backup
+            disabled(4),  -- election disabled
+            notApplicable(5) -- any among the available can be master
+      }
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The election priority of redundancy configuration for
+            this subject.  The value 'notApplicable' means no
+            specific instance is configured to be master or
+            backup; whichever component boots up first becomes a
+            master."
+      ::= { jnxFabricRedundancyEntry 6 }
+
+    jnxFabricRedundancyState OBJECT-TYPE
+      SYNTAX       INTEGER {
+            unknown(1),
+            master(2),    -- master
+            backup(3),    -- backup
+            disabled(4)   -- disabled
+      }
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The current running state for this subject."
+      ::= { jnxFabricRedundancyEntry 7 }
+
+    jnxFabricRedundancySwitchoverCount OBJECT-TYPE
+      SYNTAX       Counter32
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The total number of switchover as perceived by
+            this subject since routing engine is up and running.
+            The switchover is defined as a change in state of
+            jnxFabricRedundancyState from master to backup or vice
+            versa.      Its value is reset when the routing engine
+            is reset or rebooted."
+      ::= { jnxFabricRedundancyEntry 8 }
+
+    jnxFabricRedundancySwitchoverTime OBJECT-TYPE
+      SYNTAX       TimeTicks
+      UNITS        "centi-seconds"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The value of sysUpTime when the jnxFabricRedundancyState
+            of this subject was last switched over from master
+            to backup or vice versa.  Zero if unknown or never
+            switched over since the routing engine is up and
+            running."
+      ::= { jnxFabricRedundancyEntry 9 }
+
+    jnxFabricRedundancySwitchoverReason OBJECT-TYPE
+      SYNTAX       INTEGER {
+            other(1),         -- others
+            neverSwitched(2), -- never switched
+            userSwitched(3),  -- user-initiated switchover
+            autoSwitched(4)   -- automatic switchover
+      }
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The reason of the last switchover for this subject."
+      ::= { jnxFabricRedundancyEntry 10 }
+
+    jnxFabricRedundancyKeepaliveHeartbeat OBJECT-TYPE
+      SYNTAX       Integer32
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The period of sending keepalive messages between
+            the master and backup subsystems.  It is a system-wide
+            preset value in seconds used by internal mastership
+            resolution.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricRedundancyEntry 11 }
+
+    jnxFabricRedundancyKeepaliveTimeout OBJECT-TYPE
+      SYNTAX       Integer32
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The timeout period in seconds, by the keepalive 
+            watchdog timer, before initiating a switch over to 
+            the backup subsystem.  Zero if unavailable or 
+            inapplicable."
+      ::= { jnxFabricRedundancyEntry 12 }
+
+    jnxFabricRedundancyKeepaliveElapsed OBJECT-TYPE
+      SYNTAX       Integer32
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The elapsed time in seconds by this subject since 
+            receiving the last keepalive message from the other
+            subsystems.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricRedundancyEntry 13 }
+
+    jnxFabricRedundancyKeepaliveLoss OBJECT-TYPE
+      SYNTAX       Counter32
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The total number of losses on keepalive messages 
+            between the master and backup subsystems as perceived
+            by this subject since the system is up and running.  
+            Zero if unavailable or inapplicable."
+      ::= { jnxFabricRedundancyEntry 14 }
+
+    jnxFabricRedundancyChassisId OBJECT-TYPE
+      SYNTAX         JnxChassisId
+      MAX-ACCESS     read-only
+      STATUS         current
+      DESCRIPTION
+                "Identifies the chassis on which the contents of this
+                row exists."
+        ::= { jnxFabricRedundancyEntry 15 }
+
+    jnxFabricRedundancyChassisDescr OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "A textual description of the chassis on which the
+                contents of this row exists."
+        ::= { jnxFabricRedundancyEntry 16 }
+
+      
+--
+-- FRU (Field Replaceable Unit) Status Table
+--
+-- This table shows the status of the FRUs in the chassis' within the fabric
+--
+
+    jnxFabricFruTable OBJECT-TYPE
+      SYNTAX       SEQUENCE OF JnxFabricFruEntry
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+            "A list of FRU status entries."
+      ::= { jnxFabricAnatomyTables 7 }
+
+    jnxFabricFruEntry OBJECT-TYPE
+      SYNTAX       JnxFabricFruEntry
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+            "An entry in the FRU status table."
+      INDEX { jnxFabricDeviceIndex,
+              jnxFabricFruContentsIndex,
+              jnxFabricFruL1Index,
+              jnxFabricFruL2Index,
+              jnxFabricFruL3Index }
+      ::= { jnxFabricFruTable 1 }
+
+    JnxFabricFruEntry ::= SEQUENCE {
+          jnxFabricFruContentsIndex       Integer32,
+          jnxFabricFruL1Index             Integer32,
+          jnxFabricFruL2Index             Integer32,
+          jnxFabricFruL3Index             Integer32,
+          jnxFabricFruName                DisplayString,
+          jnxFabricFruType               INTEGER,
+          jnxFabricFruSlot                Integer32,
+          jnxFabricFruState              INTEGER,
+          jnxFabricFruTemp                Integer32,
+          jnxFabricFruOfflineReason       INTEGER,
+          jnxFabricFruLastPowerOff        TimeTicks,
+          jnxFabricFruLastPowerOn         TimeTicks,
+          jnxFabricFruPowerUpTime         TimeTicks,
+          jnxFabricFruChassisId           JnxChassisId,
+          jnxFabricFruChassisDescr        DisplayString,
+          jnxFabricFruPsdAssignment       Integer32
+    }
+
+    jnxFabricFruContentsIndex OBJECT-TYPE
+      SYNTAX       Integer32 (1..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The associated jnxFabricContentsContainerIndex in the 
+            jnxFabricContentsTable."
+      ::= { jnxFabricFruEntry 1 }
+      
+    jnxFabricFruL1Index OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The level one index associated with this
+            subject.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricFruEntry 2 }
+
+    jnxFabricFruL2Index OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The level two index associated with this 
+            subject.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricFruEntry 3 }
+
+    jnxFabricFruL3Index OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The level three index associated with this
+            subject.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricFruEntry 4 }
+
+    jnxFabricFruName OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The name or detailed description of this subject."
+      ::= { jnxFabricFruEntry 5 }
+
+    jnxFabricFruType OBJECT-TYPE
+      SYNTAX       INTEGER {
+            other(1),                               -- unknown or others
+            clockGenerator(2),                      -- CG
+            flexiblePicConcentrator(3),             -- FPC
+            switchingAndForwardingModule(4),        -- SFM
+            controlBoard(5),                        -- CBD, SCB
+            routingEngine(6),                       -- RE
+            powerEntryModule(7),                    -- PEM
+            frontPanelModule(8),                    -- FPM
+            switchInterfaceBoard(9),                -- SIB
+            processorMezzanineBoardForSIB(10),      -- SPMB
+            portInterfaceCard(11),                  -- PIC
+            craftInterfacePanel(12),                -- CIP
+            fan(13),                                -- fan
+            lineCardChassis(14),                    -- LCC
+            forwardingEngineBoard(15),              -- FEB
+            protectedSystemDomain(16)               -- PSD
+      }
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The FRU type for this subject."
+      ::= { jnxFabricFruEntry 6 }
+
+    jnxFabricFruSlot OBJECT-TYPE
+      SYNTAX       Integer32 (0..2147483647)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The slot number of this subject.  This is equivalent
+            to jnxFabricFruL1Index in meaning.  Zero if unavailable or 
+            inapplicable."
+      ::= { jnxFabricFruEntry 7 }
+
+    jnxFabricFruState OBJECT-TYPE
+      SYNTAX       INTEGER {
+            unknown(1),
+            empty(2),
+            present(3),
+            ready(4),
+            announceOnline(5),
+            online(6),
+            anounceOffline(7),
+            offline(8),
+            diagnostic(9),
+            standby(10)
+      }
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The current state for this subject."
+      ::= { jnxFabricFruEntry 8 }
+
+    jnxFabricFruTemp OBJECT-TYPE
+      SYNTAX       Integer32
+      UNITS        "Celsius (degrees C)"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The temperature in Celsius (degrees C) of this 
+            subject.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricFruEntry 9 }
+
+    jnxFabricFruOfflineReason OBJECT-TYPE
+      SYNTAX       INTEGER {
+            unknown(1),                 -- unknown or other
+            none(2),                    -- none 
+            error(3),                   -- error 
+            noPower(4),                 -- no power  
+            configPowerOff(5),              -- configured to power off
+            configHoldInReset(6),           -- configured to hold in reset
+            cliCommand(7),                  -- offlined by cli command
+            buttonPress(8),                 -- offlined by button press
+            cliRestart(9),                  -- restarted by cli command
+            overtempShutdown(10),           -- overtemperature shutdown
+            masterClockDown(11),            -- master clock down
+            singleSfmModeChange(12),        -- single SFM mode change
+            packetSchedulingModeChange(13), -- packet scheduling mode change
+            physicalRemoval(14),            -- physical removal
+            unresponsiveRestart(15),        -- restarting unresponsive board
+            sonetClockAbsent(16),           -- sonet out clock absent
+            rddPowerOff(17),                -- RDD power off
+            majorErrors(18),                -- major errors
+            minorErrors(19),                -- minor errors
+            lccHardRestart(20),             -- LCC hard restart
+            lccVersionMismatch(21),         -- LCC version mismatch
+            powerCycle(22),                 -- power cycle
+            reconnect(23),                  -- reconnect
+            overvoltage(24),                -- overvoltage
+            pfeVersionMismatch(25),         -- PFE version mismatch
+            febRddCfgChange(26),            -- FEB redundancy cfg changed
+            fpcMisconfig(27),               -- FPC is misconfigured
+            fruReconnectFail(28),           -- FRU did not reconnect
+            fruFwddReset(29),               -- FWDD reset the fru
+            fruFebSwitch(30),               -- FEB got switched
+            fruFebOffline(31),              -- FEB was offlined
+            fruInServSoftUpgradeError(32),  -- In Service Software Upgrade Error
+            fruChasdPowerRatingExceed(33),  -- Chassis power rating exceeded
+            fruConfigOffline(34),           -- Configured offline
+            fruServiceRestartRequest(35),   -- restarting request from a service
+            spuResetRequest(36),            -- SPU reset request
+            spuFlowdDown(37),               -- SPU flowd down
+            spuSpi4Down(38),                -- SPU SPI4 down
+            spuWatchdogTimeout(39),         -- SPU Watchdog timeout
+            spuCoreDump(40),                -- SPU kernel core dump
+            fpgaSpi4LinkDown(41),           -- FPGA SPI4 link down
+            i3Spi4LinkDown(42),             -- I3 SPI4 link down
+            cppDisconnect(43),              -- CPP disconnect
+            cpuNotBoot(44),                 -- CPU not boot
+            spuCoreDumpComplete(45),        -- SPU kernel core dump complete
+            rstOnSpcSpuFailure(46),         -- Rst on SPC SPU failure
+            softRstOnSpcSpuFailure(47),     -- Soft Reset on SPC SPU failure
+            hwAuthenticationFailure(48),    -- HW authentication failure
+            reconnectFpcFail(49),           -- Reconnect FPC fail
+            fpcAppFailed(50),               -- FPC app failed
+            fpcKernelCrash(51),             -- FPC kernel crash
+            spuFlowdDownNoCore(52),         -- SPU flowd down, no core dump
+            spuFlowdCoreDumpIncomplete(53), -- SPU flowd crash with incomplete core dump
+            spuFlowdCoreDumpComplete(54),   -- SPU flowd crash with complete core dump
+            spuIdpdDownNoCore(55),          -- SPU idpd down, no core dump
+            spuIdpdCoreDumpIncomplete(56),  -- SPU idpd crash with incomplete core dump
+            spuIdpdCoreDumpComplete(57),    -- SPU idpd crash with complete core dump
+            spuCoreDumpIncomplete(58),      -- SPU kernel crash with incomplete core dump
+            spuIdpdDown(59),                -- SPU idpd down
+            fruPfeReset(60),                -- PFE reset
+            fruReconnectNotReady(61),       -- FPC not ready to reconnect
+            fruSfLinkDown(62),              -- FE - Fabric links down
+            fruFabricDown(63),              -- Fabric transitioned from up to down
+            fruAntiCounterfeitRetry(64),    -- FPC offlined due to Anti Counterfeit Retry
+            fruFPCChassisClusterDisable(65), -- FPC offlined due to Chassis Cluster Disable
+            spuFipsError(66),                -- SPU fips error
+            fruFPCFabricDownOffline(67),     -- FPC offlined due to Fabric down
+            febCfgChange(68),                -- FEB config change
+            routeLocalizationRoleChange(69), -- Route localization role change
+            fruFpcUnsupported(70),           -- FPC unsupported
+            psdVersionMismatch(71),          -- PSD version mismatch
+            fruResetThresholdExceeded(72),   -- FRU Reset Threshold Exceeded
+            picBounce(73),                   -- PIC Bounce
+            badVoltage(74),                  -- bad voltage
+            fruFPCReducedFabricBW(75)        -- FPC offlined due to Reduced Fabric Bandwidth
+      }
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The offline reason of this subject."
+      ::= { jnxFabricFruEntry 10 }
+
+    jnxFabricFruLastPowerOff OBJECT-TYPE
+      SYNTAX       TimeTicks
+      UNITS        "centi-seconds"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The value of sysUpTime when this subject was last 
+            powered off.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricFruEntry 11 }
+
+    jnxFabricFruLastPowerOn OBJECT-TYPE
+      SYNTAX       TimeTicks
+      UNITS        "centi-seconds"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The value of sysUpTime when this subject was last 
+            powered on.  Zero if unavailable or inapplicable."
+      ::= { jnxFabricFruEntry 12 }
+
+    jnxFabricFruPowerUpTime OBJECT-TYPE
+      SYNTAX       TimeTicks
+      UNITS        "centi-seconds"
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+            "The time interval in 10-millisecond period
+            that this subject has been up and running
+            since the last power on time.  Zero if 
+            unavailable or inapplicable."
+      ::= { jnxFabricFruEntry 13 }
+
+    jnxFabricFruChassisId OBJECT-TYPE
+      SYNTAX       JnxChassisId
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Identifies the chassis on which the contents of this
+                row exists."
+        ::= { jnxFabricFruEntry 14 }
+
+    jnxFabricFruChassisDescr OBJECT-TYPE
+      SYNTAX       DisplayString (SIZE (0..255))
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "A textual description of the chassis on which the
+                contents of this row exists."
+        ::= { jnxFabricFruEntry 15 }
+
+    jnxFabricFruPsdAssignment OBJECT-TYPE
+      SYNTAX       Integer32 (0..31)
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "The PSD assignment of this subject. Zero if unavailable or
+                not applicable."
+        ::= { jnxFabricFruEntry 16 }
+
+--
+-- definition of chassis related traps
+--
+    -- Traps for chassis alarm conditions   
+
+    jnxFabricPowerSupplyFailure NOTIFICATION-TYPE
+      OBJECTS     { jnxFabricDeviceIndex,
+                    jnxFabricContentsContainerIndex,
+                    jnxFabricContentsL1Index,
+                    jnxFabricContentsL2Index,
+                    jnxFabricContentsL3Index,
+                    jnxFabricContentsDescr,
+                    jnxFabricOperatingState }
+      STATUS            current
+      DESCRIPTION
+            "A jnxFabricPowerSupplyFailure trap signifies that
+            the SNMP entity, acting in an agent role, has
+            detected that the specified power supply in the
+            chassis has been in the failure (bad DC output) 
+            condition."
+      ::= { jnxFabricChassisTraps 1 }
+
+    jnxFabricFanFailure NOTIFICATION-TYPE
+      OBJECTS     { jnxFabricDeviceIndex,
+                    jnxFabricContentsContainerIndex,
+                    jnxFabricContentsL1Index,
+                    jnxFabricContentsL2Index,
+                    jnxFabricContentsL3Index,
+                    jnxFabricContentsDescr,
+                    jnxFabricOperatingState }
+      STATUS            current
+      DESCRIPTION
+            "A jnxFabricFanFailure trap signifies that the SNMP
+            entity, acting in an agent role, has detected
+            that the specified cooling fan or impeller in 
+            the chassis has been in the failure (not spinning) 
+            condition."
+      ::= { jnxFabricChassisTraps 2 }
+
+    jnxFabricOverTemperature NOTIFICATION-TYPE
+      OBJECTS     { jnxFabricDeviceIndex,
+                    jnxFabricContentsContainerIndex,
+                    jnxFabricContentsL1Index,
+                    jnxFabricContentsL2Index,
+                    jnxFabricContentsL3Index,
+                    jnxFabricContentsDescr,
+                    jnxFabricOperatingTemp }
+      STATUS            current
+      DESCRIPTION
+            "A jnxFabricOverTemperature trap signifies that the 
+            SNMP entity, acting in an agent role, has 
+            detected that the specified hardware component
+            in the chassis has experienced over temperature
+            condition."
+      ::= { jnxFabricChassisTraps 3 }
+
+    jnxFabricRedundancySwitchover NOTIFICATION-TYPE
+      OBJECTS     { jnxFabricDeviceIndex,
+                    jnxFabricRedundancyContentsIndex,
+                    jnxFabricRedundancyL1Index,
+                    jnxFabricRedundancyL2Index,
+                    jnxFabricRedundancyL3Index,
+                    jnxFabricRedundancyDescr,
+                    jnxFabricRedundancyConfig,
+                    jnxFabricRedundancyState,
+                    jnxFabricRedundancySwitchoverCount,
+                    jnxFabricRedundancySwitchoverTime,
+                    jnxFabricRedundancySwitchoverReason }
+      STATUS            current
+      DESCRIPTION
+            "A jnxFabricRedundancySwitchover trap signifies that 
+            the SNMP entity, acting in an agent role, has 
+            detected that the specified hardware component
+            in the chassis has experienced a redundancy 
+            switchover event defined as a change in state
+            of jnxFabricRedundancyState from master to backup or
+            vice versa."
+      ::= { jnxFabricChassisTraps 4 }
+
+    jnxFabricFruRemoval NOTIFICATION-TYPE
+      OBJECTS     { jnxFabricDeviceIndex,
+                    jnxFabricFruContentsIndex,
+                    jnxFabricFruL1Index,
+                    jnxFabricFruL2Index,
+                    jnxFabricFruL3Index,
+                    jnxFabricFruName,
+                    jnxFabricFruType,
+                    jnxFabricFruSlot }
+      STATUS            current
+      DESCRIPTION
+            "A jnxFabricFruRemoval trap signifies that the SNMP 
+            entity, acting in an agent role, has detected 
+            that the specified FRU (Field Replaceable Unit)
+            has been removed from the chassis."
+      ::= { jnxFabricChassisTraps 5 }
+
+    jnxFabricFruInsertion NOTIFICATION-TYPE
+      OBJECTS     { jnxFabricDeviceIndex,
+                    jnxFabricFruContentsIndex,
+                    jnxFabricFruL1Index,
+                    jnxFabricFruL2Index,
+                    jnxFabricFruL3Index,
+                    jnxFabricFruName,
+                    jnxFabricFruType,
+                    jnxFabricFruSlot }
+      STATUS            current
+      DESCRIPTION
+            "A jnxFabricFruInsertion trap signifies that the SNMP 
+            entity,     acting in an agent role, has detected that
+            the specified FRU (Field Replaceable Unit) has been 
+            inserted into the chassis."
+      ::= { jnxFabricChassisTraps 6 }
+
+    jnxFabricFruPowerOff NOTIFICATION-TYPE
+      OBJECTS     { jnxFabricDeviceIndex,
+                    jnxFabricFruContentsIndex,
+                    jnxFabricFruL1Index,
+                    jnxFabricFruL2Index,
+                    jnxFabricFruL3Index,
+                    jnxFabricFruName,
+                    jnxFabricFruType,
+                    jnxFabricFruSlot,
+                    jnxFabricFruOfflineReason,
+                    jnxFabricFruLastPowerOff,
+                    jnxFabricFruLastPowerOn }
+      STATUS            current
+      DESCRIPTION
+            "A jnxFabricFruPowerOff trap signifies that the SNMP 
+            entity, acting in an agent role, has detected 
+            that the specified FRU (Field Replaceable Unit)
+            has been powered off in the chassis."
+      ::= { jnxFabricChassisTraps 7 }
+
+    jnxFabricFruPowerOn NOTIFICATION-TYPE
+      OBJECTS     { jnxFabricDeviceIndex,
+                    jnxFabricFruContentsIndex,
+                    jnxFabricFruL1Index,
+                    jnxFabricFruL2Index,
+                    jnxFabricFruL3Index,
+                    jnxFabricFruName,
+                    jnxFabricFruType,
+                    jnxFabricFruSlot,
+                    jnxFabricFruOfflineReason,
+                    jnxFabricFruLastPowerOff,
+                    jnxFabricFruLastPowerOn }
+      STATUS            current
+      DESCRIPTION
+            "A jnxFabricFruPowerOn trap signifies that the SNMP 
+            entity,     acting in an agent role, has detected that
+            the specified FRU (Field Replaceable Unit) has been 
+            powered on in the chassis."
+      ::= { jnxFabricChassisTraps 8 }
+
+    jnxFabricFruFailed NOTIFICATION-TYPE
+        OBJECTS         { jnxFabricDeviceIndex,
+                          jnxFabricFruContentsIndex,
+                          jnxFabricFruL1Index,
+                          jnxFabricFruL2Index,
+                          jnxFabricFruL3Index,
+                          jnxFabricFruName,
+                          jnxFabricFruType,
+                          jnxFabricFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "This indicates the specified FRU (Field Replaceable Unit)
+                 has failed in the chassis. Most probably this is due toi
+                 some hard error such as fru is not powering up or not
+                 able to load ukernel. In these cases, fru is replaced."
+        ::= { jnxFabricChassisTraps 9 }
+
+    jnxFabricFruOffline NOTIFICATION-TYPE
+        OBJECTS         { jnxFabricDeviceIndex,
+                          jnxFabricFruContentsIndex,
+                          jnxFabricFruL1Index,
+                          jnxFabricFruL2Index,
+                          jnxFabricFruL3Index,
+                          jnxFabricFruName,
+                          jnxFabricFruType,
+                          jnxFabricFruSlot,
+                          jnxFabricFruOfflineReason,
+                          jnxFabricFruLastPowerOff,
+                          jnxFabricFruLastPowerOn }
+        STATUS          current
+        DESCRIPTION
+                "A jnxFabricFruOffline trap signifies that the SNMP
+                entity, acting in an agent role, has detected
+                that the specified FRU (Field Replaceable Unit)
+                has gone offline in the chassis."
+        ::= { jnxFabricChassisTraps 10 }
+
+    jnxFabricFruOnline NOTIFICATION-TYPE
+        OBJECTS         { jnxFabricDeviceIndex,
+                          jnxFabricFruContentsIndex,
+                          jnxFabricFruL1Index,
+                          jnxFabricFruL2Index,
+                          jnxFabricFruL3Index,
+                          jnxFabricFruName,
+                          jnxFabricFruType,
+                          jnxFabricFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxFabricFruOnline trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                the specified FRU (Field Replaceable Unit) has
+                gone online in the chassis."
+        ::= { jnxFabricChassisTraps 11 }
+
+    jnxFabricFruCheck NOTIFICATION-TYPE
+        OBJECTS         { jnxFabricDeviceIndex,
+                          jnxFabricFruContentsIndex,
+                          jnxFabricFruL1Index,
+                          jnxFabricFruL2Index,
+                          jnxFabricFruL3Index,
+                          jnxFabricFruName,
+                          jnxFabricFruType,
+                          jnxFabricFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxFabricFruCheck trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                the specified FRU (Field Replaceable Unit) has
+                encountered some operational errors and gone into
+                check state in the chassis."
+        ::= { jnxFabricChassisTraps 12 }   
+
+    jnxFabricFEBSwitchover NOTIFICATION-TYPE
+        OBJECTS         { jnxFabricDeviceIndex,
+                          jnxFabricFruContentsIndex,
+                          jnxFabricFruL1Index,
+                          jnxFabricFruL2Index,
+                          jnxFabricFruL3Index,
+                          jnxFabricFruName,
+                          jnxFabricFruType,
+                          jnxFabricFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxFabricFEBSwitchover trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                the specified FEB (Forwarding Engine Board) has
+                switched over."
+        ::= { jnxFabricChassisTraps 13 }
+
+
+    jnxFabricHardDiskFailed NOTIFICATION-TYPE
+        OBJECTS         { jnxFabricDeviceIndex,
+                          jnxFabricFruContentsIndex,
+                          jnxFabricFruL1Index,
+                          jnxFabricFruL2Index,
+                          jnxFabricFruL3Index,
+                          jnxFabricFruName,
+                          jnxFabricFruType,
+                          jnxFabricFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxHardDiskFailed trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                the Disk in the specified Routing Engine has
+                encountered some operational errors and gone into
+                failed state in the chassis."
+        ::= { jnxFabricChassisTraps 14 }
+
+    jnxFabricHardDiskMissing NOTIFICATION-TYPE
+        OBJECTS         { jnxFabricDeviceIndex,
+                          jnxFabricFruContentsIndex,
+                          jnxFabricFruL1Index,
+                          jnxFabricFruL2Index,
+                          jnxFabricFruL3Index,
+                          jnxFabricFruName,
+                          jnxFabricFruType,
+                          jnxFabricFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A DiskMissing trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                hard disk in the specified outing Engine is missing
+                from boot device list."
+        ::= { jnxFabricChassisTraps 15 }
+
+    jnxFabricBootFromBackup NOTIFICATION-TYPE
+        OBJECTS         { jnxFabricFruContentsIndex,
+                          jnxFabricFruL1Index,
+                          jnxFabricFruL2Index,
+                          jnxFabricFruL3Index,
+                          jnxFabricFruName,
+                          jnxFabricFruType,
+                          jnxFabricFruSlot }
+         STATUS         current
+         DESCRIPTION
+                 "A jnxBootFromBackup trap signifies that the SNMP
+                 entity, acting in an agent role, has detected that
+                 the specified  routing-engine/member has booted from
+                 the back up root partition"
+         ::= { jnxFabricChassisTraps 16 }     
+
+
+    jnxFabricHighPower NOTIFICATION-TYPE
+        OBJECTS         { jnxFabricDeviceIndex,
+                          jnxFabricContentsContainerIndex,
+                          jnxFabricContentsL1Index,
+                          jnxFabricContentsL2Index,
+                          jnxFabricFruName,
+                          jnxFabricFruType,
+                          jnxFabricFruSlot }
+         STATUS         current
+         DESCRIPTION
+                 "A jnxFabricHighPowerConsumption trap signifies that the SNMP
+                 entity, acting in an agent role, has detected that
+                 the specified fabric ASIC consumes more power than
+                 expected"
+         ::= { jnxFabricChassisTraps 17 }     
+
+    -- Traps for chassis alarm cleared conditions
+
+    jnxFabricPowerSupplyOK NOTIFICATION-TYPE
+      OBJECTS     { jnxFabricDeviceIndex,
+                    jnxFabricContentsContainerIndex,
+                    jnxFabricContentsL1Index,
+                    jnxFabricContentsL2Index,
+                    jnxFabricContentsL3Index,
+                    jnxFabricContentsDescr,
+                    jnxFabricOperatingState }
+      STATUS            current
+      DESCRIPTION
+            "A jnxFabricPowerSupplyOK trap signifies that the 
+            SNMP entity, acting in an agent role, has
+            detected that the specified power supply in the
+            chassis has recovered from the failure (bad DC output) 
+            condition."
+      ::= { jnxFabricChassisOKTraps 1 }
+
+    jnxFabricFanOK NOTIFICATION-TYPE
+      OBJECTS     { jnxFabricDeviceIndex,
+                    jnxFabricContentsContainerIndex,
+                    jnxFabricContentsL1Index,
+                    jnxFabricContentsL2Index,
+                    jnxFabricContentsL3Index,
+                    jnxFabricContentsDescr,
+                    jnxFabricOperatingState }
+      STATUS            current
+      DESCRIPTION
+            "A jnxFabricFanOK trap signifies that the SNMP
+            entity, acting in an agent role, has detected that
+            the specified cooling fan or impeller in the chassis
+            has recovered from the failure (not spinning) condition."
+      ::= { jnxFabricChassisOKTraps 2 }
+
+    jnxFabricTemperatureOK NOTIFICATION-TYPE
+      OBJECTS     { jnxFabricDeviceIndex,
+                    jnxFabricContentsContainerIndex,
+                    jnxFabricContentsL1Index,
+                    jnxFabricContentsL2Index,
+                    jnxFabricContentsL3Index,
+                    jnxFabricContentsDescr,
+                    jnxFabricOperatingTemp }
+      STATUS            current
+      DESCRIPTION
+            "A jnxFabricTemperatureOK trap signifies that the 
+            SNMP entity, acting in an agent role, has 
+            detected that the specified hardware component
+            in the chassis has recovered from over temperature
+            condition." 
+      ::= { jnxFabricChassisOKTraps 3 }
+
+    jnxFabricFruOK NOTIFICATION-TYPE
+        OBJECTS         { jnxFabricDeviceIndex,
+                          jnxFabricFruContentsIndex,
+                          jnxFabricFruL1Index,
+                          jnxFabricFruL2Index,
+                          jnxFabricFruL3Index,
+                          jnxFabricFruName,
+                          jnxFabricFruType,
+                          jnxFabricFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxFabricFabricFruOK trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                the specified FRU (Field Replaceable Unit) has
+                recovered from previous operational errors and it
+                is in ok state in the chassis."
+        ::= { jnxFabricChassisOKTraps 4 }
+        
+    jnxFabricHighPowerCleared NOTIFICATION-TYPE
+        OBJECTS         { jnxFabricDeviceIndex,
+                          jnxFabricContentsContainerIndex,
+                          jnxFabricContentsL1Index,
+                          jnxFabricContentsL2Index,
+                          jnxFabricFruName,
+                          jnxFabricFruType,
+                          jnxFabricFruSlot }
+         STATUS         current
+         DESCRIPTION
+                 "A jnxFabricHighPowerCleared trap signifies that the SNMP
+                 entity, acting in an agent role, has detected that
+                 the specified fabric ASIC has cleared its high power condition"
+         ::= { jnxFabricChassisOKTraps 5 }         
+END
+
diff --git a/contrib/mibs/JUNIPER-FABRIC-MIB.txt b/contrib/mibs/JUNIPER-FABRIC-MIB.txt
new file mode 100644 (file)
index 0000000..ddd32a0
--- /dev/null
@@ -0,0 +1,306 @@
+--
+-- Juniper Enterprise Specific MIB: Fabric MIB
+-- 
+-- Copyright (c) 2012, Juniper Networks, Inc.
+-- All rights reserved.
+--
+
+JUNIPER-FABRIC-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+    MODULE-IDENTITY, OBJECT-TYPE,
+    Integer32, Counter64
+        FROM SNMPv2-SMI
+
+    CounterBasedGauge64
+        FROM HCNUM-TC
+
+    TEXTUAL-CONVENTION 
+        FROM SNMPv2-TC
+
+    jnxFabricMibRoot
+        FROM JUNIPER-SMI;
+
+jnxFabricMib MODULE-IDENTITY
+
+    LAST-UPDATED "201410090000Z"
+    ORGANIZATION "Juniper Networks, Inc."
+    CONTACT-INFO
+            "        Juniper Technical Assistance Center
+                 Juniper Networks, Inc.
+                 1194 N. Mathilda Avenue
+                 Sunnyvale, CA 94089
+                 E-mail: support@juniper.net"
+
+    DESCRIPTION
+            "The MIB modules representing Juniper Networks
+             fabric Manager"
+
+    REVISION
+        "201410090000Z" -- 09-Oct-14 
+    DESCRIPTION
+        "Initial"
+
+    ::= { jnxFabricMibRoot 1 }
+
+jnxFabricMibObjects     OBJECT IDENTIFIER ::= { jnxFabricMib 1 }
+
+--
+-- Textual Conventions
+--
+
+JnxFabricType ::= TEXTUAL-CONVENTION
+    STATUS  current
+    DESCRIPTION
+        "A value representing fabric statistics source or destination type.
+
+         switch-fabric(1)       Indicates switch-fabric
+         linecard(2)            Indicates linecard"
+    REFERENCE   ""
+    SYNTAX       INTEGER {
+                     switch-fabric(1),
+                     linecard(2)
+                  }
+
+JnxFabricStatisticsPriority ::= TEXTUAL-CONVENTION
+    STATUS  current
+    DESCRIPTION
+        "A value representing fabric statisitcs priority, if applicable.
+
+         high(0)     Indicates high priority
+         low(1)      Indicates low priority
+         all(255)    Indicates no specific priority"
+    REFERENCE   ""
+    SYNTAX       INTEGER {
+                     high(0),
+                     low(1),
+                     all(255)
+                  }
+                  
+-- Juniper Fabric Manager MIB
+--
+     
+--
+-- Fabric Statistics Table
+--
+
+jnxFabricStatistics     OBJECT IDENTIFIER ::= { jnxFabricMibObjects 1 }
+
+jnxFabricSourceStatisticsTable OBJECT-TYPE
+    SYNTAX           SEQUENCE OF JnxFabricSourceStatisticsEntry
+    MAX-ACCESS        not-accessible
+    STATUS           current
+    DESCRIPTION
+          "A list of fabric statistics entries based on the source of statistics."
+    ::= { jnxFabricStatistics 1 }
+
+    jnxFabricSourceStatisticsEntry OBJECT-TYPE
+      SYNTAX       JnxFabricSourceStatisticsEntry
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+            "An entry of fabric source statistics table."
+      INDEX       { jnxFabricSourceType,
+                    jnxFabricSourceSlot,
+                    jnxFabricSourcePfe,
+                    jnxFabricDestinationType,
+                    jnxFabricDestinationSlot,
+                    jnxFabricDestinationPfe, 
+                    jnxFabricSourceStatisticsPriority}
+      ::= { jnxFabricSourceStatisticsTable 1 }
+
+    JnxFabricSourceStatisticsEntry ::= SEQUENCE {
+          jnxFabricSourceType                          JnxFabricType,
+          jnxFabricSourceSlot                          Integer32,
+          jnxFabricSourcePfe                           Integer32,
+          jnxFabricDestinationType                     JnxFabricType,
+          jnxFabricDestinationSlot                     Integer32,
+          jnxFabricDestinationPfe                      Integer32,
+          jnxFabricSourceStatisticsPriority            JnxFabricStatisticsPriority,
+          jnxFabricSourceStatisticsPackets             Counter64,
+          jnxFabricSourceStatisticsBytes               Counter64,
+          jnxFabricSourceStatisticsPps                 CounterBasedGauge64,
+          jnxFabricSourceStatisticsBps                 CounterBasedGauge64,
+          jnxFabricSourceStatisticsDropPackets         Counter64,
+          jnxFabricSourceStatisticsDropBytes           Counter64,
+          jnxFabricSourceStatisticsDropPps             CounterBasedGauge64,
+          jnxFabricSourceStatisticsDropBps             CounterBasedGauge64,
+          jnxFabricSourceStatisticsQueueDepthAverage   CounterBasedGauge64,
+          jnxFabricSourceStatisticsQueueDepthCurrent   CounterBasedGauge64,
+          jnxFabricSourceStatisticsQueueDepthPeak      CounterBasedGauge64,
+          jnxFabricSourceStatisticsQueueDepthMaximum   CounterBasedGauge64,
+          jnxFabricSourceStatisticsErrorPackets        Counter64,
+          jnxFabricSourceStatisticsErrorPps            CounterBasedGauge64
+    }
+
+    jnxFabricSourceType OBJECT-TYPE
+      SYNTAX       JnxFabricType
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+                "Source fabric type."
+      ::= { jnxFabricSourceStatisticsEntry 1 }
+
+    jnxFabricSourceSlot OBJECT-TYPE
+      SYNTAX       Integer32 (0..1023 | 65535)
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+                "Denotes plane number for switch-fabric / slot number for linecard. If there is no per plane statistics available, then it shall be 65535."
+      ::= { jnxFabricSourceStatisticsEntry 2 }
+
+    jnxFabricSourcePfe OBJECT-TYPE
+      SYNTAX       Integer32 (0..8191 | 65535)
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+                "Denotes pfe number. It is applicable only when source type is linecard and shall be 65535 for switch-fabric."
+      ::= { jnxFabricSourceStatisticsEntry 3 }
+
+    jnxFabricDestinationType OBJECT-TYPE
+      SYNTAX       JnxFabricType
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+                "Destination fabric type."
+      ::= { jnxFabricSourceStatisticsEntry 4 }
+
+    jnxFabricDestinationSlot OBJECT-TYPE
+      SYNTAX       Integer32 (0..1023 | 65535)
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+                "Denotes plane number for switch-fabric / slot number for linecard. If there is no per plane statistics available, then it shall be 65535."
+      ::= { jnxFabricSourceStatisticsEntry 5 }
+
+    jnxFabricDestinationPfe OBJECT-TYPE
+      SYNTAX       Integer32 (0..8191 | 65535)
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+                "Denotes pfe number. It is applicable only when destination type is linecard and shall be 65535 for switch-fabric."
+      ::= { jnxFabricSourceStatisticsEntry 6 }
+
+    jnxFabricSourceStatisticsPriority OBJECT-TYPE
+      SYNTAX       JnxFabricStatisticsPriority
+      MAX-ACCESS    not-accessible
+      STATUS       current
+      DESCRIPTION
+                "Statistics priority."
+      ::= { jnxFabricSourceStatisticsEntry 7 }
+      
+    jnxFabricSourceStatisticsPackets OBJECT-TYPE
+      SYNTAX       Counter64
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Number of packets transmitted for a source."
+      ::= { jnxFabricSourceStatisticsEntry 8 }
+      
+    jnxFabricSourceStatisticsBytes OBJECT-TYPE
+      SYNTAX       Counter64
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Number of bytes transmitted for a source."
+      ::= { jnxFabricSourceStatisticsEntry 9 }
+
+    jnxFabricSourceStatisticsPps OBJECT-TYPE
+      SYNTAX       CounterBasedGauge64
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Rate of transmission in packets per second for a source."
+      ::= { jnxFabricSourceStatisticsEntry 10 }
+
+    jnxFabricSourceStatisticsBps OBJECT-TYPE
+      SYNTAX       CounterBasedGauge64
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Rate of transmission in bytes per second for a source."
+      ::= { jnxFabricSourceStatisticsEntry 11 }
+
+    jnxFabricSourceStatisticsDropPackets OBJECT-TYPE
+      SYNTAX       Counter64
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Number of packets dropped for a source."
+      ::= { jnxFabricSourceStatisticsEntry 12 }
+
+    jnxFabricSourceStatisticsDropBytes OBJECT-TYPE
+      SYNTAX       Counter64
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Number of bytes dropped for a source."
+      ::= { jnxFabricSourceStatisticsEntry 13 }
+
+    jnxFabricSourceStatisticsDropPps OBJECT-TYPE
+      SYNTAX       CounterBasedGauge64
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Drop rate in packets per second for a source."
+      ::= { jnxFabricSourceStatisticsEntry 14 }
+
+    jnxFabricSourceStatisticsDropBps OBJECT-TYPE
+      SYNTAX       CounterBasedGauge64
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Drop rate in bytes per second for a source."
+      ::= { jnxFabricSourceStatisticsEntry 15 }
+
+    jnxFabricSourceStatisticsQueueDepthAverage OBJECT-TYPE
+      SYNTAX       CounterBasedGauge64
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Average queue depth, if applicable for a source type. Else it shall be 0."
+      ::= { jnxFabricSourceStatisticsEntry 16 }
+
+    jnxFabricSourceStatisticsQueueDepthCurrent OBJECT-TYPE
+      SYNTAX       CounterBasedGauge64
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Current queue depth, if applicable for a source type. Else it shall be 0."
+      ::= { jnxFabricSourceStatisticsEntry 17 }
+
+    jnxFabricSourceStatisticsQueueDepthPeak OBJECT-TYPE
+      SYNTAX       CounterBasedGauge64
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Peak queue depth, if applicable for a source type. Else it shall be 0."
+      ::= { jnxFabricSourceStatisticsEntry 18 }
+
+    jnxFabricSourceStatisticsQueueDepthMaximum OBJECT-TYPE
+      SYNTAX       CounterBasedGauge64
+      MAX-ACCESS    read-only
+      STATUS       current
+      DESCRIPTION
+                "Maximum queue depth, if applicable for a source type. Else it shall be 0."
+      ::= { jnxFabricSourceStatisticsEntry 19 }
+
+    jnxFabricSourceStatisticsErrorPackets OBJECT-TYPE
+      SYNTAX        Counter64
+      MAX-ACCESS    read-only
+      STATUS        current
+      DESCRIPTION
+                "Number of errror packets for a source."
+      ::= { jnxFabricSourceStatisticsEntry 20 }
+
+    jnxFabricSourceStatisticsErrorPps OBJECT-TYPE
+      SYNTAX        CounterBasedGauge64
+      MAX-ACCESS    read-only
+      STATUS        current
+      DESCRIPTION
+                "Error rate in packets per second for a source."
+      ::= { jnxFabricSourceStatisticsEntry 21 }
+
+END
+
diff --git a/contrib/mibs/JUNIPER-MAC-MIB.txt b/contrib/mibs/JUNIPER-MAC-MIB.txt
new file mode 100644 (file)
index 0000000..25fef33
--- /dev/null
@@ -0,0 +1,150 @@
+--
+-- Juniper Enterprise Specific MIB: Ethernet MAC MIB
+-- 
+-- Copyright (c) 2002-2003, Juniper Networks, Inc.
+-- All rights reserved.
+--
+-- The contents of this document are subject to change without notice.
+--
+
+JUNIPER-MAC-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+    MODULE-IDENTITY, OBJECT-TYPE, Counter64,
+    Unsigned32
+        FROM SNMPv2-SMI
+    TEXTUAL-CONVENTION, MacAddress
+        FROM SNMPv2-TC
+    ifIndex
+        FROM IF-MIB
+    jnxMibs 
+        FROM JUNIPER-SMI;
+
+jnxMac MODULE-IDENTITY
+    LAST-UPDATED "200307182153Z" -- Fri Jul 18 21:53:55 2003 UTC
+    ORGANIZATION "Juniper Networks, Inc."
+    CONTACT-INFO
+            "        Juniper Technical Assistance Center
+                    Juniper Networks, Inc.
+                    1194 N. Mathilda Avenue
+                    Sunnyvale, CA 94089
+                    E-mail: support@juniper.net"
+
+    DESCRIPTION
+            "This is Juniper Networks' implementation of enterprise
+            specific MIB for Ethernet Mac Stats"
+
+    -- revision history
+    REVISION "200210100000Z"    -- 10 October, 2002
+    DESCRIPTION
+            "MacStats MIB added."
+
+    ::= { jnxMibs 23 }
+
+JnxVlanIndex ::= TEXTUAL-CONVENTION
+    STATUS      current
+    DESCRIPTION
+        "A value used to index per-VLAN tables. A values of 0 
+        is not permitted. The value of 4095 is reserved
+        for untagged interfaces; if the value is between 1 and
+        4094 inclusive, it represents an IEEE 802.1Q VLAN-ID with
+        global scope within a given bridged domain (see VlanId
+        textual convention).  If the value is greater than 4095
+        then it represents a VLAN with scope local to the
+        particular agent, i.e. one without a global VLAN-ID
+        assigned to it. Such VLANs are outside the scope of
+        IEEE 802.1Q but it is convenient to be able to manage them
+        in the same way using this MIB."
+    SYNTAX      Unsigned32
+
+
+-- MacStatsTable
+
+    jnxMacStats OBJECT IDENTIFIER ::= { jnxMac 1 }
+
+-- Mac Statistics table contains statistics information on the entity's
+-- GE PIC.
+-- The stats (inoctets, inframes, outoctets, outpframes)
+-- are the stats value for each src mac address and vlan id 
+-- by mac learning process on ethernet ports.
+
+-- The order of index is "ifIndex, jnxVlanIndex, jnxSourceMacAddress"
+-- for the preference on grouping vlan-based stats and accounting.
+
+    jnxMacStatsTable OBJECT-TYPE
+        SYNTAX       SEQUENCE OF JnxMacStatsEntry
+        MAX-ACCESS   not-accessible
+        STATUS       current
+        DESCRIPTION
+                  "a list of MacStats entry for GE ethernet interfaces"
+        ::= { jnxMacStats 1 }
+
+    jnxMacStatsEntry OBJECT-TYPE
+        SYNTAX     JnxMacStatsEntry
+        MAX-ACCESS   not-accessible
+        STATUS       current
+        DESCRIPTION
+            "An entry containing statistics information applicable to a
+            particular GE ethernet interfaces."
+        INDEX   { ifIndex, jnxVlanIndex, jnxSourceMacAddress }
+        ::= { jnxMacStatsTable 1 }
+
+    JnxMacStatsEntry ::=
+        SEQUENCE {
+            jnxVlanIndex                 JnxVlanIndex,
+            jnxSourceMacAddress          MacAddress,
+            jnxMacHCInOctets             Counter64,
+            jnxMacHCInFrames             Counter64,
+            jnxMacHCOutOctets            Counter64,
+            jnxMacHCOutFrames            Counter64
+        }
+
+    jnxVlanIndex OBJECT-TYPE
+        SYNTAX      JnxVlanIndex
+        MAX-ACCESS  not-accessible
+        STATUS      current
+        DESCRIPTION
+                "The VLAN ID refering to this VLAN."
+        ::= { jnxMacStatsEntry 1 }
+
+    jnxSourceMacAddress OBJECT-TYPE
+        SYNTAX      MacAddress
+        MAX-ACCESS  not-accessible
+        STATUS      current
+        DESCRIPTION
+                "The Source MAC address."
+        ::= { jnxMacStatsEntry 2 }
+
+    jnxMacHCInOctets OBJECT-TYPE
+        SYNTAX      Counter64
+        MAX-ACCESS  read-only
+        STATUS      current
+        DESCRIPTION
+                "The number of total octets received in this VLAN/MAC Address."
+        ::= { jnxMacStatsEntry 3 }
+
+    jnxMacHCInFrames OBJECT-TYPE
+        SYNTAX      Counter64
+        MAX-ACCESS  read-only
+        STATUS      current
+        DESCRIPTION
+                "The number of total frames received in this VLAN/MAC Address."
+        ::= { jnxMacStatsEntry 4 }
+
+    jnxMacHCOutOctets OBJECT-TYPE
+        SYNTAX      Counter64
+        MAX-ACCESS  read-only
+        STATUS      current
+        DESCRIPTION
+                "The number of total octets transmitted in this VLAN/MAC Address."
+        ::= { jnxMacStatsEntry 5 }
+
+    jnxMacHCOutFrames OBJECT-TYPE
+        SYNTAX      Counter64
+        MAX-ACCESS  read-only
+        STATUS      current
+        DESCRIPTION
+                "The number of total frames transmitted in this VLAN/MAC Address."
+        ::= { jnxMacStatsEntry 6 }
+
+END
diff --git a/contrib/mibs/JUNIPER-MIB.txt b/contrib/mibs/JUNIPER-MIB.txt
new file mode 100644 (file)
index 0000000..5ea9d6a
--- /dev/null
@@ -0,0 +1,2433 @@
+--
+-- Juniper Enterprise Specific MIB: Chassis MIB
+-- 
+-- Copyright (c) 1998-2015, Juniper Networks, Inc.
+-- All rights reserved.
+--
+-- The contents of this document are subject to change without notice.
+--
+
+
+JUNIPER-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
+    Integer32, Gauge32, Counter32
+        FROM SNMPv2-SMI
+    DisplayString, TimeStamp, TimeInterval, TEXTUAL-CONVENTION, DateAndTime
+        FROM SNMPv2-TC
+    jnxMibs, jnxChassisTraps, jnxChassisOKTraps
+        FROM JUNIPER-SMI;
+
+jnxBoxAnatomy MODULE-IDENTITY
+
+    LAST-UPDATED "201605160000Z"    -- May 16, 2016
+    ORGANIZATION "Juniper Networks, Inc."
+    CONTACT-INFO
+            "        Juniper Technical Assistance Center
+                    Juniper Networks, Inc.
+                    1194 N. Mathilda Avenue
+                    Sunnyvale, CA 94089
+                    E-mail: support@juniper.net"
+
+    DESCRIPTION
+            "The MIB modules representing Juniper Networks'
+           implementation of enterprise specific MIBs 
+           supported by a single SNMP agent."
+    REVISION      "200403230000Z"
+    DESCRIPTION
+               "Added chassis identification objects."
+    REVISION     "200406300000Z"    -- July 30, 2004
+    DESCRIPTION
+               "Added following new traps for chassis
+                alarm conditions: jnxFruFailed, jnxFruOffline
+                and jnxFruOnline."
+    REVISION     "200409170000Z"    -- Sep 17, 2004
+    DESCRIPTION
+               "Added new traps for chassis
+                alarm condition jnxFruCheck."
+    REVISION     "200507180000Z"    -- Jul 18, 2005
+    DESCRIPTION
+               "Added new fru type FEB in jnxFruType enumeration."
+    REVISION     "200507190000Z"    -- Jul 19, 2005
+    DESCRIPTION
+               "Added new offline reason pfeVersionMismatch
+                to jnxFruOfflineReason enumeration."
+    REVISION     "200611200000Z"    -- Nov 20, 2006
+    DESCRIPTION
+               "Added new offline reason fruFebOffline
+                to jnxFruOfflineReason enumeration."
+    REVISION     "200807310000Z"    -- Jul 31, 2008
+    DESCRIPTION
+               "Added jnxBoxSystemDomainType object."
+    REVISION     "200808010000Z"    -- Aug 01, 2008
+    DESCRIPTION
+               "Added new fru type PSD to jnxFruType enumeration and
+                added jcsX chassis IDs to JnxChassisId enumeration."
+    REVISION     "200812310000Z"    -- Dec 31, 2008
+    DESCRIPTION
+               "Added nodeX chassis IDs to JnxChassisId enumeration."
+    REVISION     "200901090000Z"    -- Jan 09, 2009
+    DESCRIPTION 
+               "Added sfcX and lcc4-lcc15 chassis IDs to JnxChassisId
+                enumeration."
+    REVISION     "201010220000Z"    -- Oct 22, 2010
+    DESCRIPTION
+               "Added load average variables"
+    REVISION     "201109090000Z"    -- Sep 09, 2011
+    DESCRIPTION
+               "Added jnxBoxPersonality for MidRangius Boxes
+                namely MX40/MX10/MX5"
+    REVISION     "201202150000Z"    -- Feb 02, 2012
+    DESCRIPTION 
+               "Added new offline reason builtinPicBounce to
+                jnxFruOfflineReason enumeration."
+    REVISION     "201202210000Z"    -- Feb 21, 2012
+    DESCRIPTION
+               "Added new jnxFruType: PDU and PSM,
+                and new traps: jnxFmLinkErr and jnxFmCellDropErr."
+    REVISION     "201208240000Z"    -- Aug 24, 2012
+    DESCRIPTION 
+               "Added new offline reason fruTypeConfigMismatch to
+                jnxFruOfflineReason enumeration."
+    REVISION     "201208240000Z"    -- Aug 24, 2012
+    DESCRIPTION 
+               "Added new offline reason fruTypeConfigMismatch to
+                jnxFruOfflineReason enumeration."
+    REVISION     "201210120000Z"    -- Oct 12, 2012
+    DESCRIPTION 
+               "Added new offline reason fruPICOfflineOnEccErrors to
+                jnxFruOfflineReason enumeration."
+    REVISION     "201211070000Z"    -- Nov 07, 2012
+    DESCRIPTION 
+               "Added new offline reasons fruFpcIncompatible and
+                fruFpcFanTrayPEMIncompatible to
+                jnxFruOfflineReason enumeration."
+    REVISION     "201301070000Z"    -- Jan 07, 2013
+    DESCRIPTION
+               "Added new offline reason openflowConfigChange to
+                jnxFruOfflineReason enumeration."
+    REVISION     "201302280000Z"    -- Feb 28, 2013
+    DESCRIPTION
+               "Added new offline reasons fruFpcScbIncompatible to
+                jnxFruOfflineReason enumeration."
+    REVISION     "201303220000Z"    -- Mar 22, 2013
+    DESCRIPTION
+               "Added new offline reason hwError
+                to jnxFruOfflineReason enumeration."
+    REVISION     "201305220000Z"    -- May 22, 2013
+    DESCRIPTION 
+               "Added new offline reasons fruReUnresponsive to
+                jnxFruOfflineReason enumeration."
+    REVISION     "201307170000Z"    -- Jul 17, 2013
+    DESCRIPTION 
+               "Added new Fabric plane offline/online/check traps
+                to trap fabric plane offline/online/fault events."
+    REVISION     "201309240000Z"    -- Sep 24, 2013
+    DESCRIPTION
+               "Added new offline reason hwError
+                to jnxFruOfflineReason enumeration."
+    REVISION     "201310150000Z"    -- Oct 15, 2013
+    DESCRIPTION
+               "Added new offline reason fruIncompatibleWithPEM,
+                fruIncompatibleWithSIB, and sibIncompatibleWithOtherSIB
+                to jnxFruOfflineReason enumeration."
+    REVISION     "201311190000Z"    -- Nov 19, 2013
+    DESCRIPTION
+               "Added new offline reason fruPfeErrors to
+                jnxFruOfflineReason enumeration."
+    REVISION     "201212100000Z"    -- Dec 10, 2012
+    DESCRIPTION 
+               "Added new OIDs to get control plane memory 
+                allocation (jnxOperatingMemoryCP)
+                and utilization(jnxOperatingBufferCP) in RE."
+
+    REVISION     "201404080000Z"    -- Apr 08, 2014
+    DESCRIPTION
+               "Added new offline reason vpnLocalizationRoleChange to
+                jnxFruOfflineReason enumeration."
+
+    REVISION     "201405200000Z"    -- May 20, 2014
+    DESCRIPTION
+               "Added MIBs for 1, 5 and 15 min average CPU util"
+    
+    REVISION     "201407300000Z"    -- Jul 30, 2014
+    DESCRIPTION
+               "Added new offline reasons fruFpcFanTrayIncompatible &
+                fruFpcPEMIncompatible to jnxFruOfflineReason enumeration."
+
+    REVISION     "201501140000Z"    -- Jan 14, 2015
+    DESCRIPTION
+               "Added new color types for jnxLEDState and jnxLEDStateOrdered."
+
+    REVISION     "201412040000Z"    -- Dec 04, 2014
+    DESCRIPTION
+               "Added new trap: jnxFmAsicErr."
+
+    REVISION     "201504010000Z"    -- Apr 1, 2015
+    DESCRIPTION
+              "Added new FRU Power consumption variable."
+
+    REVISION     "201504280000Z"    -- Apr 28, 2015
+    DESCRIPTION
+              "Added new MIB jnxContentsModel."
+
+    REVISION     "201602020000Z"    -- Feb 02, 2016
+    DESCRIPTION
+               "Added new offline reason fruFpcHFanTrayIncompatible and
+                missing entries mixedSwitchFabric, unsupportedFabric,
+                jamConfigError."
+
+    REVISION     "201605160000Z"    -- May 16, 2016
+    DESCRIPTION
+               "Added new trap: jnxFmHealthChkErr."
+    ::= { jnxMibs 1 }
+
+--
+-- Textual Conventions
+--
+
+JnxChassisId ::= TEXTUAL-CONVENTION
+    STATUS       current
+    DESCRIPTION  "Identifies a specific router chassis."
+    SYNTAX       INTEGER {
+                     unknown       (1),
+                     singleChassis (2),
+                     scc           (3),
+                     lcc0          (4),
+                     lcc1          (5),
+                     lcc2          (6),
+                     lcc3          (7),
+                     jcs1          (8),
+                     jcs2          (9),
+                     jcs3          (10),
+                     jcs4          (11),
+                     node0         (12),
+                     node1         (13),
+                     sfc0          (14),
+                     sfc1          (15),
+                     sfc2          (16),
+                     sfc3          (17),
+                     sfc4          (18),
+                     lcc4          (19),
+                     lcc5          (20),
+                     lcc6          (21),
+                     lcc7          (22),
+                     lcc8          (23),
+                     lcc9          (24),
+                     lcc10         (25),
+                     lcc11         (26),
+                     lcc12         (27),
+                     lcc13         (28),
+                     lcc14         (29),
+                     lcc15         (30),
+                     member0       (31),
+                     member1       (32),
+                     member2       (33),
+                     member3       (34),
+                     member4       (35),
+                     member5       (36),
+                     member6       (37),
+                     member7       (38),
+                     nodeDevice    (39),
+                     interconnectDevice (40),
+                     controlPlaneDevice (41),
+                     directorDevice (42),
+                     gnf1          (43),
+                     gnf2          (44),
+                     gnf3          (45),
+                     gnf4          (46),
+                     gnf5          (47),
+                     gnf6          (48),
+                     gnf7          (49),
+                     gnf8          (50),
+                     gnf9          (51),
+                     gnf10         (52)
+                 }
+
+
+
+-- Juniper Box Anatomy MIB
+--
+
+-- Top level objects
+
+    jnxBoxClass OBJECT-TYPE 
+       SYNTAX          OBJECT IDENTIFIER
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The class of the box, indicating which product line
+               the box is about, for example, 'Internet Router'."
+       ::= { jnxBoxAnatomy 1 }
+
+    jnxBoxDescr OBJECT-TYPE
+       SYNTAX          DisplayString (SIZE (0..255))
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The name, model, or detailed description of the box,
+               indicating which product the box is about, for example
+               'M40'."
+       ::= { jnxBoxAnatomy 2 }
+
+    jnxBoxSerialNo OBJECT-TYPE
+       SYNTAX          DisplayString (SIZE (0..255))
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The serial number of this subject, blank if unknown 
+               or unavailable."
+       ::= { jnxBoxAnatomy 3 }
+
+    jnxBoxRevision OBJECT-TYPE
+       SYNTAX          DisplayString (SIZE (0..255))
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The revision of this subject, blank if unknown or
+               unavailable."
+       ::= { jnxBoxAnatomy 4 }
+
+    jnxBoxInstalled OBJECT-TYPE
+       SYNTAX          TimeStamp
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The value of sysUpTime when the subject was last
+               installed, up-and-running.  Zero if unknown or 
+               already up-and-running when the agent was up."
+       ::= { jnxBoxAnatomy 5 }
+
+--
+-- Box Containers Table
+--
+
+    jnxContainersTable OBJECT-TYPE
+       SYNTAX          SEQUENCE OF JnxContainersEntry
+       MAX-ACCESS      not-accessible
+       STATUS          current
+       DESCRIPTION
+               "A list of containers entries."
+       ::= { jnxBoxAnatomy 6 }
+
+    jnxContainersEntry OBJECT-TYPE
+       SYNTAX          JnxContainersEntry
+       MAX-ACCESS      not-accessible
+       STATUS          current
+       DESCRIPTION
+               "An entry of containers table."
+       INDEX   { jnxContainersIndex }
+       ::= { jnxContainersTable 1 }
+
+    JnxContainersEntry ::= SEQUENCE {
+           jnxContainersIndex          Integer32,
+           jnxContainersView           Integer32,
+           jnxContainersLevel          Integer32,
+           jnxContainersWithin         Integer32,
+           jnxContainersType           OBJECT IDENTIFIER,
+           jnxContainersDescr          DisplayString,
+           jnxContainersCount          Integer32
+    }
+
+    jnxContainersIndex OBJECT-TYPE
+       SYNTAX          Integer32 (1..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The index for this entry."
+       ::= { jnxContainersEntry 1 }
+
+    jnxContainersView OBJECT-TYPE
+       SYNTAX          Integer32 (1..63)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The view(s) from which the specific container
+               appears.
+
+               This variable indicates that the specific container
+               is embedded and accessible from the corresponding
+               view(s).
+
+               The value is a bit map represented as a sum.
+               If multiple bits are set, the specified
+               container(s) are located and accessible from 
+               that set of views.
+
+               The various values representing the bit positions
+               and its corresponding views are:
+                   1   front
+                   2   rear
+                   4   top
+                   8   bottom
+                  16   leftHandSide
+                  32   rightHandSide
+
+               Note 1: 
+               LefHandSide and rightHandSide are referred
+               to based on the view from the front.
+
+               Note 2: 
+               If the specified containers are scattered 
+               around various views, the numbering is according
+               to the following sequence:
+                   front -> rear -> top -> bottom
+                         -> leftHandSide -> rightHandSide
+               For each view plane, the numbering sequence is
+               first from left to right, and then from up to down.
+
+               Note 3: 
+               Even though the value in chassis hardware (e.g. 
+               slot number) may be labelled from 0, 1, 2, and up,
+               all the indices in MIB start with 1 (not 0) 
+               according to network management convention."
+       ::= { jnxContainersEntry 2 }
+
+    jnxContainersLevel OBJECT-TYPE
+       SYNTAX          Integer32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The abstraction level of the box or chassis.
+               It is enumerated from the outside to the inside, 
+               from the outer layer to the inner layer.
+               For example, top level (i.e. level 0) refers to 
+               chassis frame, level 1 FPC slot within chassis 
+               frame, level 2 PIC space within FPC slot."
+       ::= { jnxContainersEntry 3 }
+
+    jnxContainersWithin OBJECT-TYPE
+       SYNTAX          Integer32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The index of its next higher level container 
+               housing this entry.  The associated 
+               jnxContainersIndex in the jnxContainersTable 
+               represents its next higher level container."
+       ::= { jnxContainersEntry 4 }
+
+    jnxContainersType OBJECT-TYPE
+       SYNTAX          OBJECT IDENTIFIER
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The type of this container."
+       ::= { jnxContainersEntry 5 }
+
+    jnxContainersDescr OBJECT-TYPE
+       SYNTAX          DisplayString (SIZE (0..255))
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The name or detailed description of this
+               subject."
+       ::= { jnxContainersEntry 6 }
+
+    jnxContainersCount OBJECT-TYPE
+       SYNTAX          Integer32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The maximum number of containers of this level
+               per container of the next higher level.  
+               e.g. if there are six level 2 containers in 
+               level 1 container, then jnxContainersCount for
+               level 2 is six."
+       ::= { jnxContainersEntry 7 }
+
+--
+-- Box Contents Table
+--
+
+    jnxContentsLastChange OBJECT-TYPE
+       SYNTAX          TimeStamp
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The value of sysUpTime when the box contents 
+               table last changed.  Zero if unknown or already 
+               existing when the agent was up."
+       ::= { jnxBoxAnatomy 7 }
+
+    jnxContentsTable OBJECT-TYPE
+       SYNTAX          SEQUENCE OF JnxContentsEntry
+       MAX-ACCESS      not-accessible
+       STATUS          current
+       DESCRIPTION
+               "A list of contents entries."
+       ::= { jnxBoxAnatomy 8 }
+
+    jnxContentsEntry OBJECT-TYPE
+       SYNTAX          JnxContentsEntry
+       MAX-ACCESS      not-accessible
+       STATUS          current
+       DESCRIPTION
+               "An entry of contents table."
+       INDEX   { jnxContentsContainerIndex, 
+                 jnxContentsL1Index,
+                 jnxContentsL2Index,
+                 jnxContentsL3Index }
+       ::= { jnxContentsTable 1 }
+
+    JnxContentsEntry ::= SEQUENCE {
+           jnxContentsContainerIndex   Integer32,
+           jnxContentsL1Index          Integer32,
+           jnxContentsL2Index          Integer32,
+           jnxContentsL3Index          Integer32,
+           jnxContentsType             OBJECT IDENTIFIER,
+           jnxContentsDescr            DisplayString,
+           jnxContentsSerialNo         DisplayString,
+           jnxContentsRevision         DisplayString,
+           jnxContentsInstalled        TimeStamp,
+        jnxContentsPartNo           DisplayString,
+        jnxContentsChassisId        JnxChassisId,
+        jnxContentsChassisDescr     DisplayString,
+        jnxContentsChassisCleiCode  DisplayString,
+        jnxContentsModel            DisplayString
+    }
+
+    jnxContentsContainerIndex OBJECT-TYPE
+       SYNTAX          Integer32 (1..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The associated jnxContainersIndex in the 
+               jnxContainersTable."
+       ::= { jnxContentsEntry 1 }
+       
+    jnxContentsL1Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The level one index of the container
+               housing this subject.  Zero if unavailable
+               or inapplicable."
+       ::= { jnxContentsEntry 2 }
+
+    jnxContentsL2Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The level two index of the container
+               housing this subject.  Zero if unavailable
+               or inapplicable."
+       ::= { jnxContentsEntry 3 }
+
+    jnxContentsL3Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The level three index of the container
+               housing this subject.  Zero if unavailable
+               or inapplicable."
+       ::= { jnxContentsEntry 4 }
+
+    jnxContentsType OBJECT-TYPE
+       SYNTAX          OBJECT IDENTIFIER
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The type of this subject.  zeroDotZero
+               if unknown."
+       ::= { jnxContentsEntry 5 }
+
+    jnxContentsDescr OBJECT-TYPE
+       SYNTAX          DisplayString (SIZE (0..255))
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The name or detailed description of this
+               subject."
+       ::= { jnxContentsEntry 6 }
+
+    jnxContentsSerialNo OBJECT-TYPE
+       SYNTAX          DisplayString (SIZE (0..255))
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The serial number of this subject, blank if 
+               unknown or unavailable."
+       ::= { jnxContentsEntry 7 }
+
+    jnxContentsRevision OBJECT-TYPE
+       SYNTAX          DisplayString (SIZE (0..255))
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The revision of this subject, blank if unknown 
+               or unavailable."
+       ::= { jnxContentsEntry 8 }
+
+    jnxContentsInstalled OBJECT-TYPE
+       SYNTAX          TimeStamp
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The value of sysUpTime when the subject was last 
+               installed, up-and-running.  Zero if unknown
+               or already up-and-running when the agent was up."
+       ::= { jnxContentsEntry 9 }
+
+    jnxContentsPartNo OBJECT-TYPE
+       SYNTAX          DisplayString (SIZE (0..255))
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The part number of this subject, blank if unknown 
+               or unavailable."
+       ::= { jnxContentsEntry 10 }
+
+    jnxContentsChassisId OBJECT-TYPE
+        SYNTAX          JnxChassisId
+        MAX-ACCESS      read-only
+        STATUS          current
+        DESCRIPTION
+                "Identifies the chassis on which the contents of this
+                row exists."
+        ::= { jnxContentsEntry 11 }
+
+    jnxContentsChassisDescr OBJECT-TYPE
+        SYNTAX          DisplayString (SIZE (0..255))
+        MAX-ACCESS      read-only
+        STATUS          current
+        DESCRIPTION
+                "A textual description of the chassis on which the
+                contents of this row exists."
+        ::= { jnxContentsEntry 12 }
+
+    jnxContentsChassisCleiCode OBJECT-TYPE
+        SYNTAX          DisplayString (SIZE (0..255))
+        MAX-ACCESS      read-only
+        STATUS          current
+        DESCRIPTION
+                "The clei code of this subject, blank if unknown
+                 or unavailable.
+
+                 A CLEI code is an intelligent code that consists of 10
+                 alphanumeric characters with 4 data elements.  The first data
+                 element is considered the basic code with the first 2 characters
+                 indicating the technology or equipment type, and the third and
+                 fourth characters denoting the functional sub-category.  The
+                 second data element represents the features, and its three
+                 characters denote functional capabilities or changes.  The third
+                 data element has one character and denotes a reference to a
+                 manufacturer, system ID, specification, or drawing.  The fourth
+                 data element consists of two characters and contains complementary
+                 data.  These two characters provide a means of differentiating or
+                 providing uniqueness between the eight character CLEI codes by
+                 identifying the manufacturing vintage of the product.  Names are
+                 assigned via procedures defined in [GR485].
+
+                 The assigned maintenance agent for the CLEI code, Telcordia
+                 Technologies, is responsible for assigning certain equipment and
+                 other identifiers (e.g., location, manufacturer/supplier) for the
+                 telecommunications industry."
+        ::= { jnxContentsEntry 13 }
+
+    jnxContentsModel OBJECT-TYPE
+        SYNTAX          DisplayString (SIZE (0..255))
+        MAX-ACCESS      read-only
+        STATUS          current
+        DESCRIPTION
+                "The FRU model name of this subject, blank if unknown
+                 or unavailable."
+        ::= { jnxContentsEntry 14 }
+
+
+
+--
+-- Box LED Indicators Table
+--
+
+    jnxLEDLastChange OBJECT-TYPE
+       SYNTAX          TimeStamp
+       MAX-ACCESS      read-only
+       STATUS          deprecated
+       DESCRIPTION
+               "The value of sysUpTime when the box LED table 
+               last changed.  Zero if unknown or already at 
+               that state when the agent was up."
+       ::= { jnxBoxAnatomy 9 }
+
+    jnxLEDTable OBJECT-TYPE
+       SYNTAX          SEQUENCE OF JnxLEDEntry
+       MAX-ACCESS      not-accessible
+       STATUS          deprecated
+       DESCRIPTION
+               "A list of status entries."
+       ::= { jnxBoxAnatomy 10 }
+
+    jnxLEDEntry OBJECT-TYPE
+       SYNTAX          JnxLEDEntry
+       MAX-ACCESS      not-accessible
+       STATUS          deprecated
+       DESCRIPTION
+               "An entry of status table."
+       INDEX   { jnxLEDAssociateTable,
+                 jnxLEDAssociateIndex,
+                 jnxLEDL1Index,
+                 jnxLEDL2Index,
+                 jnxLEDL3Index }
+       ::= { jnxLEDTable 1 }
+
+    JnxLEDEntry ::= SEQUENCE {
+           jnxLEDAssociateTable        INTEGER,
+           jnxLEDAssociateIndex        Integer32,
+           jnxLEDL1Index               Integer32,
+           jnxLEDL2Index               Integer32,
+           jnxLEDL3Index               Integer32,
+           jnxLEDOriginator            OBJECT IDENTIFIER,
+           jnxLEDDescr                 DisplayString,
+           jnxLEDState                 INTEGER,
+           jnxLEDStateOrdered          INTEGER
+    }
+
+    jnxLEDAssociateTable OBJECT-TYPE
+       SYNTAX          INTEGER {
+               other(1),
+               jnxContainersTable(2),
+               jnxContentsTable(3)
+       }
+       MAX-ACCESS      read-only
+       STATUS          deprecated
+       DESCRIPTION
+               "The associated table that this entry is 
+               related."
+       ::= { jnxLEDEntry 1 }
+
+    jnxLEDAssociateIndex OBJECT-TYPE
+       SYNTAX          Integer32 (1..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          deprecated
+       DESCRIPTION
+               "The index of the associated table that this
+               entry is related."
+       ::= { jnxLEDEntry 2 }
+
+    jnxLEDL1Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          deprecated
+       DESCRIPTION
+               "The level one index of the associated
+               table that this entry is related.  Zero 
+               if unavailable or inapplicable."
+       ::= { jnxLEDEntry 3 }
+
+    jnxLEDL2Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          deprecated
+       DESCRIPTION
+               "The level two index of the associated
+               table that this entry is related.  Zero 
+               if unavailable or inapplicable."
+       ::= { jnxLEDEntry 4 }
+
+    jnxLEDL3Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          deprecated
+       DESCRIPTION
+               "The level three index of the associated
+               table that this entry is related.  Zero
+               if unavailable or inapplicable."
+       ::= { jnxLEDEntry 5 }
+
+    jnxLEDOriginator OBJECT-TYPE
+       SYNTAX          OBJECT IDENTIFIER
+       MAX-ACCESS      read-only
+       STATUS          deprecated
+       DESCRIPTION
+               "The originator of the this entry."
+       ::= { jnxLEDEntry 6 }
+
+    jnxLEDDescr OBJECT-TYPE
+       SYNTAX          DisplayString (SIZE (0..255))
+       MAX-ACCESS      read-only
+       STATUS          deprecated
+       DESCRIPTION
+               "The name or detailed description of this subject."
+       ::= { jnxLEDEntry 7 }
+
+    jnxLEDState OBJECT-TYPE
+       SYNTAX          INTEGER {
+               other(1),     -- unknown or unavailable
+               green(2),     -- ok, good, normally working,
+                             -- or on-line as a standby backup if
+                             -- there is an active primary
+               yellow(3),    -- alarm, warning, marginally working
+               red(4),       -- alert, failed, not working
+               blue(5),      -- ok, on-line as an active primary
+               amber(6),     -- alarm, off-line, not running
+               off(7),            -- off-line, not running
+               blinkingGreen(8),  -- entering state of ok, good, normally working
+               blinkingYellow(9), -- entering state of alarm, warning, marginally working
+               blinkingRed(10),   -- entering state of alert, failed, not working
+               blinkingBlue(11),  -- entering state of ok, on-line as an active primary
+               blinkingAmber(12)  -- entering state of alarm, off-line, not running
+       }
+       MAX-ACCESS      read-only
+       STATUS          deprecated
+       DESCRIPTION
+               "The state of the LED indicator."
+       ::= { jnxLEDEntry 8 }
+
+    jnxLEDStateOrdered OBJECT-TYPE
+       SYNTAX          INTEGER {
+               blue(1),      -- ok, on-line as an active primary
+               green(2),     -- ok, good, normally working,
+                             -- or on-line as a standby backup if
+                             -- there is an active primary
+               amber(3),     -- alarm, off-line, not running
+               yellow(4),    -- alarm, warning, marginally working
+               red(5),       -- alert, failed, not working
+               other(6),     -- unknown or unavailable
+               off(7),             -- off-line, not running
+               blinkingBlue(8),    -- entering state of ok, on-line as an active primary
+               blinkingGreen(9),   -- entering state of ok, good, normally working
+               blinkingAmber(10),  -- entering state of alarm, off-line, not running
+               blinkingYellow(11), -- entering state of alarm, warning, marginally working
+               blinkingRed(12)     -- entering state of alert, failed, not working
+       }
+       MAX-ACCESS      read-only
+       STATUS          deprecated
+       DESCRIPTION
+               "The state of the LED indicator.  Identical to jnxLEDState, but
+                with enums ordered from 'most operational' to 'least
+                operational' states."
+       ::= { jnxLEDEntry 9 }
+--
+-- Box Filled Status Table
+--
+-- This table show the empty/filled status of the container in the 
+-- box containers table.
+--
+
+    jnxFilledLastChange OBJECT-TYPE
+       SYNTAX          TimeStamp
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The value of sysUpTime when the box filled 
+               status table last changed.  Zero if unknown or
+               already at that state when the agent was up."
+       ::= { jnxBoxAnatomy 11 }
+       
+    jnxFilledTable OBJECT-TYPE
+       SYNTAX          SEQUENCE OF JnxFilledEntry
+       MAX-ACCESS      not-accessible
+       STATUS          current
+       DESCRIPTION
+               "A list of filled status entries."
+       ::= { jnxBoxAnatomy 12 }
+
+    jnxFilledEntry OBJECT-TYPE
+       SYNTAX          JnxFilledEntry
+       MAX-ACCESS      not-accessible
+       STATUS          current
+       DESCRIPTION
+               "An entry of filled status table."
+       INDEX   { jnxFilledContainerIndex,
+                 jnxFilledL1Index,
+                 jnxFilledL2Index,
+                 jnxFilledL3Index }
+       ::= { jnxFilledTable 1 }
+
+    JnxFilledEntry ::= SEQUENCE {
+           jnxFilledContainerIndex     Integer32,
+           jnxFilledL1Index            Integer32,
+           jnxFilledL2Index            Integer32,
+           jnxFilledL3Index            Integer32,
+           jnxFilledDescr              DisplayString,
+            jnxFilledState              INTEGER,
+            jnxFilledChassisId          JnxChassisId,
+            jnxFilledChassisDescr       DisplayString
+    }
+
+    jnxFilledContainerIndex OBJECT-TYPE
+       SYNTAX          Integer32 (1..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The associated jnxContainersIndex in the 
+               jnxContainersTable."
+       ::= { jnxFilledEntry 1 }
+       
+    jnxFilledL1Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The level one index of the container
+               housing this subject.  Zero if unavailable
+               or inapplicable."
+       ::= { jnxFilledEntry 2 }
+
+    jnxFilledL2Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The level two index of the container
+               housing this subject.  Zero if unavailable
+               or inapplicable."
+       ::= { jnxFilledEntry 3 }
+
+    jnxFilledL3Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The level three index of the container
+               housing this subject.  Zero if unavailable
+               or inapplicable."
+       ::= { jnxFilledEntry 4 }
+
+    jnxFilledDescr OBJECT-TYPE
+       SYNTAX          DisplayString (SIZE (0..255))
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The name or detailed description of this
+               subject."
+       ::= { jnxFilledEntry 5 }
+
+    jnxFilledState OBJECT-TYPE
+       SYNTAX          INTEGER {
+               unknown(1),
+               empty(2),
+               filled(3)
+       }
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The filled state of this subject."
+       ::= { jnxFilledEntry 6 }
+
+    jnxFilledChassisId OBJECT-TYPE
+        SYNTAX         JnxChassisId
+        MAX-ACCESS     read-only
+        STATUS         current
+        DESCRIPTION
+                "Identifies the chassis on which the contents of this
+                row exists."
+        ::= { jnxFilledEntry 7 }
+
+    jnxFilledChassisDescr OBJECT-TYPE
+        SYNTAX         DisplayString (SIZE (0..255))
+        MAX-ACCESS      read-only
+        STATUS         current
+        DESCRIPTION
+                "A textual description of the chassis on which the
+                contents of this row exists."
+        ::= { jnxFilledEntry 8 }
+
+
+--
+-- Box Operating Status Table
+--
+-- This table reveals the operating status of some subjects 
+-- of interest in the box contents table.
+--
+
+    jnxOperatingTable OBJECT-TYPE
+       SYNTAX          SEQUENCE OF JnxOperatingEntry
+       MAX-ACCESS      not-accessible
+       STATUS          current
+       DESCRIPTION
+               "A list of operating status entries."
+       ::= { jnxBoxAnatomy 13 }
+
+    jnxOperatingEntry OBJECT-TYPE
+       SYNTAX          JnxOperatingEntry
+       MAX-ACCESS      not-accessible
+       STATUS          current
+       DESCRIPTION
+               "An entry of operating status table."
+       INDEX   { jnxOperatingContentsIndex,
+                 jnxOperatingL1Index,
+                 jnxOperatingL2Index,
+                 jnxOperatingL3Index }
+       ::= { jnxOperatingTable 1 }
+
+    JnxOperatingEntry ::= SEQUENCE {
+           jnxOperatingContentsIndex   Integer32,
+           jnxOperatingL1Index         Integer32,
+           jnxOperatingL2Index         Integer32,
+           jnxOperatingL3Index         Integer32,
+           jnxOperatingDescr           DisplayString,
+           jnxOperatingState           INTEGER,
+           jnxOperatingTemp            Gauge32,
+           jnxOperatingCPU             Gauge32,
+           jnxOperatingISR             Gauge32,
+           jnxOperatingDRAMSize        Integer32,
+           jnxOperatingBuffer          Gauge32,
+           jnxOperatingHeap            Gauge32,
+           jnxOperatingUpTime          TimeInterval,
+           jnxOperatingLastRestart     TimeStamp,
+           jnxOperatingMemory          Integer32,
+        jnxOperatingStateOrdered    INTEGER,
+        jnxOperatingChassisId       JnxChassisId,
+        jnxOperatingChassisDescr    DisplayString,
+        jnxOperatingRestartTime     DateAndTime,
+        jnxOperating1MinLoadAvg     Gauge32,
+        jnxOperating5MinLoadAvg     Gauge32,
+        jnxOperating15MinLoadAvg    Gauge32,
+        jnxOperating1MinAvgCPU      Gauge32,
+        jnxOperating5MinAvgCPU      Gauge32,
+        jnxOperating15MinAvgCPU     Gauge32,
+        jnxOperatingFRUPower        Gauge32,
+             jnxOperatingBufferCP        Gauge32,
+             jnxOperatingMemoryCP        Integer32
+    }
+
+    jnxOperatingContentsIndex OBJECT-TYPE
+       SYNTAX          Integer32 (1..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The associated jnxContentsContainerIndex in the 
+               jnxContentsTable."
+       ::= { jnxOperatingEntry 1 }
+       
+    jnxOperatingL1Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The level one index associated with this
+               subject.  Zero if unavailable or inapplicable."
+       ::= { jnxOperatingEntry 2 }
+
+    jnxOperatingL2Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The level two index associated with this 
+               subject.  Zero if unavailable or inapplicable."
+       ::= { jnxOperatingEntry 3 }
+
+    jnxOperatingL3Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The level three index associated with this
+               subject.  Zero if unavailable or inapplicable."
+       ::= { jnxOperatingEntry 4 }
+
+    jnxOperatingDescr OBJECT-TYPE
+       SYNTAX          DisplayString (SIZE (0..255))
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The name or detailed description of this subject."
+       ::= { jnxOperatingEntry 5 }
+
+    jnxOperatingState OBJECT-TYPE
+       SYNTAX          INTEGER {
+               unknown(1),
+               running(2),   -- up and running,
+                             -- as a active primary
+               ready(3),     -- ready to run, not running yet
+               reset(4),     -- held in reset, not ready yet
+               runningAtFullSpeed(5),  
+                             -- valid for fans only
+               down(6),      -- down or off, for power supply
+               standby(7)    -- running as a standby backup
+       }
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The operating state of this subject."
+       ::= { jnxOperatingEntry 6 }
+
+    jnxOperatingTemp OBJECT-TYPE
+       SYNTAX          Gauge32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The temperature in Celsius (degrees C) of this 
+               subject.  Zero if unavailable or inapplicable."
+       ::= { jnxOperatingEntry 7 }
+
+    jnxOperatingCPU OBJECT-TYPE
+       SYNTAX          Gauge32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The CPU utilization in percentage of this 
+               subject.  Zero if unavailable or inapplicable."
+       ::= { jnxOperatingEntry 8 }
+       
+    jnxOperatingISR OBJECT-TYPE
+       SYNTAX          Gauge32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The CPU utilization in percentage of this subject
+               spending in interrupt service routine (ISR).
+               Zero if unavailable or inapplicable."
+       ::= { jnxOperatingEntry 9 }
+       
+    jnxOperatingDRAMSize OBJECT-TYPE
+       SYNTAX          Integer32
+       MAX-ACCESS      read-only
+       STATUS          deprecated
+       DESCRIPTION
+               "The DRAM size in bytes of this subject.
+               Zero if unavailable or inapplicable."
+       ::= { jnxOperatingEntry 10 }
+       
+    jnxOperatingBuffer OBJECT-TYPE
+       SYNTAX          Gauge32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The buffer pool utilization in percentage
+               of this subject.  Zero if unavailable or 
+               inapplicable."
+       ::= { jnxOperatingEntry 11 }
+       
+    jnxOperatingHeap OBJECT-TYPE
+       SYNTAX          Gauge32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The heap utilization in percentage of 
+               this subject.  Zero if unavailable or 
+               inapplicable."
+       ::= { jnxOperatingEntry 12 }
+
+    jnxOperatingUpTime OBJECT-TYPE
+       SYNTAX          TimeInterval
+       MAX-ACCESS      read-only
+        STATUS          deprecated
+       DESCRIPTION
+               "The time interval in 10-millisecond period
+               that this subject has been up and running.  
+               Zero if unavailable or inapplicable."
+       ::= { jnxOperatingEntry 13 }
+
+    jnxOperatingLastRestart OBJECT-TYPE
+       SYNTAX          TimeStamp
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The value of sysUpTime when this subject 
+               last restarted.  Zero if unavailable or 
+               inapplicable."
+       ::= { jnxOperatingEntry 14 }
+
+    jnxOperatingMemory OBJECT-TYPE
+       SYNTAX          Integer32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The installed memory size in Megabytes 
+               of this subject.  Zero if unavailable or
+               inapplicable."
+       ::= { jnxOperatingEntry 15 }
+
+    jnxOperatingStateOrdered OBJECT-TYPE
+       SYNTAX          INTEGER {
+               running(1),   -- up and running,
+                             -- as a active primary
+               standby(2),   -- running as a standby backup
+               ready(3),     -- ready to run, not running yet
+               runningAtFullSpeed(4),  
+                             -- valid for fans only
+               reset(5),     -- held in reset, not ready yet
+               down(6),      -- down or off, for power supply
+               unknown(7)
+       }
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The operating state of this subject.  Identical to
+                 jnxOperatingState, but with enums ordered from 'most
+                 operational' to 'least operational' states."
+       ::= { jnxOperatingEntry 16 }
+
+    jnxOperatingChassisId OBJECT-TYPE
+        SYNTAX         JnxChassisId
+        MAX-ACCESS     read-only
+        STATUS         current
+        DESCRIPTION
+                "Identifies the chassis on which the contents of this
+                row exists."
+        ::= { jnxOperatingEntry 17 }
+
+    jnxOperatingChassisDescr OBJECT-TYPE
+        SYNTAX         DisplayString (SIZE (0..255))
+        MAX-ACCESS      read-only
+        STATUS         current
+        DESCRIPTION
+                "A textual description of the chassis on which the
+                contents of this row exists."
+        ::= { jnxOperatingEntry 18 }
+
+    jnxOperatingRestartTime OBJECT-TYPE
+        SYNTAX          DateAndTime
+        MAX-ACCESS      read-only
+        STATUS          current
+        DESCRIPTION
+                "The time at which this entity
+                last restarted."
+        ::= { jnxOperatingEntry 19 }
+
+        jnxOperating1MinLoadAvg OBJECT-TYPE
+            SYNTAX          Gauge32
+            MAX-ACCESS      read-only
+            STATUS          current
+            DESCRIPTION
+                    "The CPU Load Average over the last 1 minutes
+                     Here it will be shown as percentage value
+                     Zero if unavailable or inapplicable."
+            ::= { jnxOperatingEntry 20 }
+
+        jnxOperating5MinLoadAvg OBJECT-TYPE
+            SYNTAX          Gauge32
+            MAX-ACCESS      read-only
+            STATUS          current
+            DESCRIPTION
+                    "The CPU Load Average over the last 5 minutes
+                     Here it will be shown as percentage value
+                     Zero if unavailable or inapplicable."
+            ::= { jnxOperatingEntry 21 }
+
+        jnxOperating15MinLoadAvg OBJECT-TYPE
+            SYNTAX          Gauge32
+            MAX-ACCESS      read-only
+            STATUS          current
+            DESCRIPTION
+                    "The CPU Load Average over the last 15 minutes
+                     Here it will be shown as percentage value
+                     Zero if unavailable or inapplicable."
+            ::= { jnxOperatingEntry 22 }
+
+    jnxOperating1MinAvgCPU OBJECT-TYPE
+        SYNTAX          Gauge32
+        MAX-ACCESS      read-only
+        STATUS          current
+        DESCRIPTION
+            "The CPU utilization in percentage of this
+             subject averaged over last 1 minutes. Zero if
+             unavailable or inapplicable."
+        ::= { jnxOperatingEntry 23 }
+
+    jnxOperating5MinAvgCPU OBJECT-TYPE
+        SYNTAX          Gauge32
+        MAX-ACCESS      read-only
+        STATUS          current
+        DESCRIPTION
+            "The CPU utilization in percentage of this
+             subject averaged over last 5 minutes.  Zero if
+             unavailable or inapplicable."
+        ::= { jnxOperatingEntry 24 }
+
+    jnxOperating15MinAvgCPU OBJECT-TYPE
+        SYNTAX          Gauge32
+        MAX-ACCESS      read-only
+        STATUS          current
+        DESCRIPTION
+            "The CPU utilization in percentage of this
+             subject averaged over last 15 minutes.  Zero
+             if unavailable or inapplicable."
+        ::= { jnxOperatingEntry 25 }
+  
+        jnxOperatingFRUPower    OBJECT-TYPE
+            SYNTAX          Gauge32
+            MAX-ACCESS      read-only
+            STATUS          current
+            DESCRIPTION
+                    "The present power of each FRU. Here it will
+                     be shown in terms of voltage. Zero if unavailable
+                     or inapplicable"
+            ::= { jnxOperatingEntry 26 }
+
+       jnxOperatingBufferCP OBJECT-TYPE
+           SYNTAX              Gauge32
+           MAX-ACCESS          read-only
+           STATUS              current
+           DESCRIPTION
+                   "The buffer pool utilization in percentage
+                   of this subject in control plane.  Zero if 
+                    unavailable or inapplicable."
+           ::= { jnxOperatingEntry 27 }
+       
+       jnxOperatingMemoryCP OBJECT-TYPE
+           SYNTAX              Integer32       
+           MAX-ACCESS          read-only
+           STATUS              current
+           DESCRIPTION
+                       "The Allocated memory size for control plane
+                        in Megabytes. Zero if unavailable or
+                       inapplicable."
+           ::= { jnxOperatingEntry 28 }
+
+--
+-- Box Redundancy Information Table
+--
+-- This table shows the internal configuration setting for the 
+-- available redundant subsystems or components in the box.
+--
+
+    jnxRedundancyTable OBJECT-TYPE
+       SYNTAX          SEQUENCE OF JnxRedundancyEntry
+       MAX-ACCESS      not-accessible
+       STATUS          current
+       DESCRIPTION
+               "A list of redundancy information entries."
+       ::= { jnxBoxAnatomy 14 }
+
+    jnxRedundancyEntry OBJECT-TYPE
+       SYNTAX          JnxRedundancyEntry
+       MAX-ACCESS      not-accessible
+       STATUS          current
+       DESCRIPTION
+               "An entry in the redundancy information table."
+       INDEX   { jnxRedundancyContentsIndex,
+                 jnxRedundancyL1Index,
+                 jnxRedundancyL2Index,
+                 jnxRedundancyL3Index }
+       ::= { jnxRedundancyTable 1 }
+
+    JnxRedundancyEntry ::= SEQUENCE {
+           jnxRedundancyContentsIndex       Integer32,
+           jnxRedundancyL1Index             Integer32,
+           jnxRedundancyL2Index             Integer32,
+           jnxRedundancyL3Index             Integer32,
+           jnxRedundancyDescr               DisplayString,
+           jnxRedundancyConfig              INTEGER,
+           jnxRedundancyState               INTEGER,
+           jnxRedundancySwitchoverCount     Counter32,
+           jnxRedundancySwitchoverTime      TimeStamp,
+           jnxRedundancySwitchoverReason    INTEGER,
+           jnxRedundancyKeepaliveHeartbeat  Integer32,
+           jnxRedundancyKeepaliveTimeout    Integer32,
+           jnxRedundancyKeepaliveElapsed    Integer32,
+            jnxRedundancyKeepaliveLoss       Counter32,
+            jnxRedundancyChassisId           JnxChassisId,
+            jnxRedundancyChassisDescr        DisplayString
+    }
+
+    jnxRedundancyContentsIndex OBJECT-TYPE
+       SYNTAX          Integer32 (1..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The associated jnxContentsContainerIndex in the 
+               jnxContentsTable."
+       ::= { jnxRedundancyEntry 1 }
+       
+    jnxRedundancyL1Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The level one index associated with this
+               subject.  Zero if unavailable or inapplicable."
+       ::= { jnxRedundancyEntry 2 }
+
+    jnxRedundancyL2Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The level two index associated with this 
+               subject.  Zero if unavailable or inapplicable."
+       ::= { jnxRedundancyEntry 3 }
+
+    jnxRedundancyL3Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The level three index associated with this
+               subject.  Zero if unavailable or inapplicable."
+       ::= { jnxRedundancyEntry 4 }
+
+    jnxRedundancyDescr OBJECT-TYPE
+       SYNTAX          DisplayString (SIZE (0..255))
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The name or detailed description of this subject."
+       ::= { jnxRedundancyEntry 5 }
+
+    jnxRedundancyConfig OBJECT-TYPE
+       SYNTAX          INTEGER {
+               unknown(1),
+               master(2),    -- election priority set as a master
+               backup(3),    -- election priority set as a backup
+               disabled(4),  -- election disabled
+               notApplicable(5) -- any among the available can be master
+       }
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The election priority of redundancy configuration for
+               this subject.  The value 'notApplicable' means no
+               specific instance is configured to be master or
+               backup; whichever component boots up first becomes a
+               master."
+       ::= { jnxRedundancyEntry 6 }
+
+    jnxRedundancyState OBJECT-TYPE
+       SYNTAX          INTEGER {
+               unknown(1),
+               master(2),    -- master
+               backup(3),    -- backup
+               disabled(4)   -- disabled
+       }
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The current running state for this subject."
+       ::= { jnxRedundancyEntry 7 }
+
+    jnxRedundancySwitchoverCount OBJECT-TYPE
+       SYNTAX          Counter32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The total number of switchover as perceived by
+               this subject since routing engine is up and running.
+               The switchover is defined as a change in state of
+               jnxRedundancyState from master to backup or vice
+               versa.  Its value is reset when the routing engine
+               is reset or rebooted."
+       ::= { jnxRedundancyEntry 8 }
+
+    jnxRedundancySwitchoverTime OBJECT-TYPE
+       SYNTAX          TimeStamp
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The value of sysUpTime when the jnxRedundancyState
+               of this subject was last switched over from master
+               to backup or vice versa.  Zero if unknown or never
+               switched over since the routing engine is up and
+               running."
+       ::= { jnxRedundancyEntry 9 }
+
+    jnxRedundancySwitchoverReason OBJECT-TYPE
+       SYNTAX          INTEGER {
+               other(1),               -- others
+               neverSwitched(2),       -- never switched
+               userSwitched(3),        -- user-initiated switchover
+               autoSwitched(4)         -- automatic switchover
+       }
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The reason of the last switchover for this subject."
+       ::= { jnxRedundancyEntry 10 }
+
+    jnxRedundancyKeepaliveHeartbeat OBJECT-TYPE
+       SYNTAX          Integer32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The period of sending keepalive messages between
+               the master and backup subsystems.  It is a system-wide
+               preset value in seconds used by internal mastership
+               resolution.  Zero if unavailable or inapplicable."
+       ::= { jnxRedundancyEntry 11 }
+
+    jnxRedundancyKeepaliveTimeout OBJECT-TYPE
+       SYNTAX          Integer32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The timeout period in seconds, by the keepalive 
+               watchdog timer, before initiating a switch over to 
+               the backup subsystem.  Zero if unavailable or 
+               inapplicable."
+       ::= { jnxRedundancyEntry 12 }
+
+    jnxRedundancyKeepaliveElapsed OBJECT-TYPE
+       SYNTAX          Integer32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The elapsed time in seconds by this subject since 
+               receiving the last keepalive message from the other
+               subsystems.  Zero if unavailable or inapplicable."
+       ::= { jnxRedundancyEntry 13 }
+
+    jnxRedundancyKeepaliveLoss OBJECT-TYPE
+       SYNTAX          Counter32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The total number of losses on keepalive messages 
+               between the master and backup subsystems as perceived
+               by this subject since the system is up and running.  
+               Zero if unavailable or inapplicable."
+       ::= { jnxRedundancyEntry 14 }
+
+    jnxRedundancyChassisId OBJECT-TYPE
+        SYNTAX         JnxChassisId
+        MAX-ACCESS     read-only
+        STATUS         current
+        DESCRIPTION
+                "Identifies the chassis on which the contents of this
+                row exists."
+        ::= { jnxRedundancyEntry 15 }
+
+    jnxRedundancyChassisDescr OBJECT-TYPE
+        SYNTAX         DisplayString (SIZE (0..255))
+        MAX-ACCESS      read-only
+        STATUS         current
+        DESCRIPTION
+                "A textual description of the chassis on which the
+                contents of this row exists."
+        ::= { jnxRedundancyEntry 16 }
+
+       
+--
+-- FRU (Field Replaceable Unit) Status Table
+--
+-- This table shows the status of the FRUs in the chassis.
+--
+
+    jnxFruTable OBJECT-TYPE
+       SYNTAX          SEQUENCE OF JnxFruEntry
+       MAX-ACCESS      not-accessible
+       STATUS          current
+       DESCRIPTION
+               "A list of FRU status entries."
+       ::= { jnxBoxAnatomy 15 }
+
+    jnxFruEntry OBJECT-TYPE
+       SYNTAX          JnxFruEntry
+       MAX-ACCESS      not-accessible
+       STATUS          current
+       DESCRIPTION
+               "An entry in the FRU status table."
+       INDEX   { jnxFruContentsIndex,
+                 jnxFruL1Index,
+                 jnxFruL2Index,
+                 jnxFruL3Index }
+       ::= { jnxFruTable 1 }
+
+    JnxFruEntry ::= SEQUENCE {
+           jnxFruContentsIndex       Integer32,
+           jnxFruL1Index             Integer32,
+           jnxFruL2Index             Integer32,
+           jnxFruL3Index             Integer32,
+           jnxFruName                DisplayString,
+           jnxFruType                INTEGER,
+           jnxFruSlot                Integer32,
+           jnxFruState               INTEGER,
+           jnxFruTemp                Gauge32,
+           jnxFruOfflineReason       INTEGER,
+           jnxFruLastPowerOff        TimeStamp,
+           jnxFruLastPowerOn         TimeStamp,
+            jnxFruPowerUpTime         TimeInterval,
+            jnxFruChassisId           JnxChassisId,
+            jnxFruChassisDescr        DisplayString,
+            jnxFruPsdAssignment       Integer32
+    }
+
+    jnxFruContentsIndex OBJECT-TYPE
+       SYNTAX          Integer32 (1..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The associated jnxContentsContainerIndex in the 
+               jnxContentsTable."
+       ::= { jnxFruEntry 1 }
+       
+    jnxFruL1Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The level one index associated with this
+               subject.  Zero if unavailable or inapplicable."
+       ::= { jnxFruEntry 2 }
+
+    jnxFruL2Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The level two index associated with this 
+               subject.  Zero if unavailable or inapplicable."
+       ::= { jnxFruEntry 3 }
+
+    jnxFruL3Index OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The level three index associated with this
+               subject.  Zero if unavailable or inapplicable."
+       ::= { jnxFruEntry 4 }
+
+    jnxFruName OBJECT-TYPE
+       SYNTAX          DisplayString (SIZE (0..255))
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The name or detailed description of this subject."
+       ::= { jnxFruEntry 5 }
+
+    jnxFruType OBJECT-TYPE
+       SYNTAX          INTEGER {
+               other(1),                               -- unknown or others
+               clockGenerator(2),                      -- CG
+               flexiblePicConcentrator(3),             -- FPC
+               switchingAndForwardingModule(4),        -- SFM
+               controlBoard(5),                        -- CBD, SCB
+               routingEngine(6),                       -- RE
+               powerEntryModule(7),                    -- PEM
+               frontPanelModule(8),                    -- FPM
+               switchInterfaceBoard(9),                -- SIB
+               processorMezzanineBoardForSIB(10),      -- SPMB
+               portInterfaceCard(11),                  -- PIC
+               craftInterfacePanel(12),                -- CIP
+               fan(13),                                -- fan
+               lineCardChassis(14),                    -- LCC
+                forwardingEngineBoard(15),              -- FEB
+                protectedSystemDomain(16),              -- PSD
+               powerDistributionUnit(17),              -- PDU
+               powerSupplyModule(18),                  -- PSM
+               switchFabricBoard(19),                  -- SFB
+               adapterCard(20)                         -- ADC
+       }
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The FRU type for this subject."
+       ::= { jnxFruEntry 6 }
+
+    jnxFruSlot OBJECT-TYPE
+       SYNTAX          Integer32 (0..'7fffffff'h)
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The slot number of this subject.  This is equivalent
+               to jnxFruL1Index in meaning.  Zero if unavailable or 
+               inapplicable."
+       ::= { jnxFruEntry 7 }
+
+    jnxFruState OBJECT-TYPE
+       SYNTAX          INTEGER {
+               unknown(1),
+               empty(2),
+               present(3),
+               ready(4),
+               announceOnline(5),
+               online(6),
+               anounceOffline(7),
+               offline(8),
+               diagnostic(9),
+               standby(10)
+       }
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The current state for this subject."
+       ::= { jnxFruEntry 8 }
+
+    jnxFruTemp OBJECT-TYPE
+       SYNTAX          Gauge32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The temperature in Celsius (degrees C) of this 
+               subject.  Zero if unavailable or inapplicable."
+       ::= { jnxFruEntry 9 }
+
+    jnxFruOfflineReason OBJECT-TYPE
+       SYNTAX          INTEGER {
+               unknown(1),                     -- unknown or other
+               none(2),                        -- none 
+               error(3),                       -- error 
+               noPower(4),                     -- no power  
+               configPowerOff(5),              -- configured to power off
+               configHoldInReset(6),           -- configured to hold in reset
+               cliCommand(7),                  -- offlined by cli command
+               buttonPress(8),                 -- offlined by button press
+               cliRestart(9),                  -- restarted by cli command
+               overtempShutdown(10),           -- overtemperature shutdown
+               masterClockDown(11),            -- master clock down
+               singleSfmModeChange(12),        -- single SFM mode change
+               packetSchedulingModeChange(13), -- packet scheduling mode change
+               physicalRemoval(14),            -- physical removal
+               unresponsiveRestart(15),        -- restarting unresponsive board
+               sonetClockAbsent(16),           -- sonet out clock absent
+                rddPowerOff(17),                -- RDD power off
+                majorErrors(18),                -- major errors
+                minorErrors(19),                -- minor errors
+                lccHardRestart(20),             -- LCC hard restart
+                lccVersionMismatch(21),         -- LCC version mismatch
+                powerCycle(22),                 -- power cycle
+                reconnect(23),                  -- reconnect
+                overvoltage(24),                -- overvoltage
+                pfeVersionMismatch(25),         -- PFE version mismatch
+                febRddCfgChange(26),            -- FEB redundancy cfg changed
+                fpcMisconfig(27),               -- FPC is misconfigured
+                fruReconnectFail(28),           -- FRU did not reconnect
+                fruFwddReset(29),               -- FWDD reset the fru
+                fruFebSwitch(30),               -- FEB got switched
+                fruFebOffline(31),              -- FEB was offlined
+                fruInServSoftUpgradeError(32),  -- In Service Software Upgrade Error
+                fruChasdPowerRatingExceed(33),  -- Chassis power rating exceeded
+                fruConfigOffline(34),           -- Configured offline
+                fruServiceRestartRequest(35),   -- restarting request from a service
+                spuResetRequest(36),            -- SPU reset request
+                spuFlowdDown(37),               -- SPU flowd down
+                spuSpi4Down(38),                -- SPU SPI4 down
+                spuWatchdogTimeout(39),         -- SPU Watchdog timeout
+                spuCoreDump(40),                -- SPU kernel core dump
+                fpgaSpi4LinkDown(41),           -- FPGA SPI4 link down
+                i3Spi4LinkDown(42),             -- I3 SPI4 link down
+                cppDisconnect(43),              -- CPP disconnect
+                cpuNotBoot(44),                 -- CPU not boot
+                spuCoreDumpComplete(45),        -- SPU kernel core dump complete
+                rstOnSpcSpuFailure(46),         -- Rst on SPC SPU failure
+                softRstOnSpcSpuFailure(47),     -- Soft Reset on SPC SPU failure
+                hwAuthenticationFailure(48),    -- HW authentication failure
+                reconnectFpcFail(49),           -- Reconnect FPC fail
+                fpcAppFailed(50),               -- FPC app failed
+                fpcKernelCrash(51),             -- FPC kernel crash
+                spuFlowdDownNoCore(52),         -- SPU flowd down, no core dump
+                spuFlowdCoreDumpIncomplete(53), -- SPU flowd crash with incomplete core dump
+                spuFlowdCoreDumpComplete(54),   -- SPU flowd crash with complete core dump
+                spuIdpdDownNoCore(55),          -- SPU idpd down, no core dump
+                spuIdpdCoreDumpIncomplete(56),  -- SPU idpd crash with incomplete core dump
+                spuIdpdCoreDumpComplete(57),    -- SPU idpd crash with complete core dump
+                spuCoreDumpIncomplete(58),      -- SPU kernel crash with incomplete core dump
+                spuIdpdDown(59),                -- SPU idpd down
+                fruPfeReset(60),                -- PFE reset
+                fruReconnectNotReady(61),       -- FPC not ready to reconnect
+                fruSfLinkDown(62),              -- FE - Fabric links down
+                fruFabricDown(63),              -- Fabric transitioned from up to down
+                fruAntiCounterfeitRetry(64),    -- FPC offlined due to Anti Counterfeit Retry
+                fruFPCChassisClusterDisable(65), -- FPC offlined due to Chassis Cluster Disable
+                spuFipsError(66),                -- SPU fips error
+                fruFPCFabricDownOffline(67),     -- FPC offlined due to Fabric down
+                febCfgChange(68),                -- FEB config change
+                routeLocalizationRoleChange(69), -- Route localization role change
+                fruFpcUnsupported(70),           -- FPC unsupported
+                psdVersionMismatch(71),          -- PSD version mismatch
+                fruResetThresholdExceeded(72),   -- FRU Reset Threshold Exceeded
+                picBounce(73),                   -- PIC Bounce
+                badVoltage(74),                  -- bad voltage
+                fruFPCReducedFabricBW(75),       -- FPC offlined due to Reduced Fabric Bandwidth
+                fruAutoheal(76),                 -- FRU offlined due to software autoheal action
+                builtinPicBounce(77),            -- Builtin PIC Bounce
+                fruFabricDegraded(78),           -- Fabric running in degraded state
+                fruFPCFabricDegradedOffline(79), -- FPC offlined due to degraded fabric action 
+                fruUnsupportedSlot(80),          -- FRU unsupported in the current slot
+                fruRouteLocalizationMisCfg(81),  -- Route Localization - FPC Misconfiguration
+                fruTypeConfigMismatch(82),       -- FRU Type configuration mismatch
+                lccModeChanged(83),              -- LCC mode changed on the SFC
+                hwFault(84),                     -- Hardware fault
+                fruPICOfflineOnEccErrors(85),    -- PIC offlined on ecc errors cross ceratins limit.
+                fruFpcIncompatible(86),          -- FPC imcompatible with other FPCs
+                fruFpcFanTrayPEMIncompatible(87),-- FPC incompatible with FAN-TRAYs ,PEMs
+                fruUnsupportedFirmware(88),      -- Firmware on this FRU not supported
+                openflowConfigChange(89),        -- Openflow config change offlines FPC
+                fruFpcScbIncompatible(90),       -- FPC incompatible with SCB
+                fruReUnresponsive(91),           -- Corresponding slot RE unresponsive
+                hwError(92),                     -- Hardware error
+                fruErrorManagerReqFPCReset(93),  -- Error manager requested FPC reset.
+                fruIncompatibleWithPEM(94),      -- FRU incompatible with power supply
+                fruIncompatibleWithSIB(95),      -- FRU incompatible with SIB
+                sibIncompatibleWithOtherSIB(96), -- FRU incompatible with other SIB
+                fruPfeErrors(97),                -- PIC offlined on PFE Errors cross limit.
+                vpnLocalizationRoleChange(98),   -- VPN localization core-facing-FPC role change
+                fruFpcFanTrayIncompatible(99),   -- FPC incompatible with FAN-TRAYs
+                fruFpcPEMIncompatible(100),      -- FPC incompatible with PEMs
+                mixedSwitchFabric(101),          -- Mixed Switch Fabric error
+                unsupportedFabric(102),          -- unsupported Fabric error
+                jamConfigError(103),             -- JAM configuration error
+                fruFpcHFanTrayIncompatible(104)  -- FPC incompatible with Horizontal FAN-TRAYs
+
+       }
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The offline reason of this subject."
+       ::= { jnxFruEntry 10 }
+
+    jnxFruLastPowerOff OBJECT-TYPE
+       SYNTAX          TimeStamp
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The value of sysUpTime when this subject was last 
+               powered off.  Zero if unavailable or inapplicable."
+       ::= { jnxFruEntry 11 }
+
+    jnxFruLastPowerOn OBJECT-TYPE
+       SYNTAX          TimeStamp
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The value of sysUpTime when this subject was last 
+               powered on.  Zero if unavailable or inapplicable."
+       ::= { jnxFruEntry 12 }
+
+    jnxFruPowerUpTime OBJECT-TYPE
+       SYNTAX          TimeInterval
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The time interval in 10-millisecond period
+               that this subject has been up and running
+               since the last power on time.  Zero if 
+               unavailable or inapplicable."
+       ::= { jnxFruEntry 13 }
+
+    jnxFruChassisId OBJECT-TYPE
+        SYNTAX         JnxChassisId
+        MAX-ACCESS     read-only
+        STATUS         current
+        DESCRIPTION
+                "Identifies the chassis on which the contents of this
+                row exists."
+        ::= { jnxFruEntry 14 }
+
+    jnxFruChassisDescr OBJECT-TYPE
+        SYNTAX         DisplayString (SIZE (0..255))
+        MAX-ACCESS      read-only
+        STATUS         current
+        DESCRIPTION
+                "A textual description of the chassis on which the
+                contents of this row exists."
+        ::= { jnxFruEntry 15 }
+
+    jnxFruPsdAssignment OBJECT-TYPE
+        SYNTAX         Integer32 (0..31)
+        MAX-ACCESS     read-only
+        STATUS         current
+        DESCRIPTION
+                "The PSD assignment of this subject. Zero if unavailable or
+                not applicable."
+        ::= { jnxFruEntry 16 }
+
+--
+-- definition of Kernel Memory Used related stuff
+--
+
+    jnxBoxKernelMemoryUsedPercent OBJECT-TYPE
+       SYNTAX          Integer32
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The percentage of kernel memory used
+               of this subject.  0 if unavailable or
+               inapplicable."
+       ::= { jnxBoxAnatomy 16 }
+
+--
+-- definition of system domain information
+--
+
+    jnxBoxSystemDomainType OBJECT-TYPE
+       SYNTAX          INTEGER {
+                     notApplicable(1),
+                     rootSystemDomain(2),
+                     protectedSystemDomain(3)
+        }
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The system domain type of this subject, notApplicable will
+               be returned if this feature is not supported."
+       ::= { jnxBoxAnatomy 17 }
+
+
+--
+-- Applicable only for MidRangius Systems (MX5/10/40)
+--
+    jnxBoxPersonality OBJECT-TYPE 
+       SYNTAX          OBJECT IDENTIFIER
+       MAX-ACCESS      read-only
+       STATUS          current
+       DESCRIPTION
+               "The personality of the box, indicating which product line it is currently acting as
+                for example, 'MX40'."
+       ::= { jnxBoxAnatomy 18 }
+
+
+
+--
+-- definition of chassis related traps
+--
+    -- Traps for chassis alarm conditions   
+
+    jnxPowerSupplyFailure NOTIFICATION-TYPE
+       OBJECTS         { jnxContentsContainerIndex,
+                         jnxContentsL1Index,
+                         jnxContentsL2Index,
+                         jnxContentsL3Index,
+                         jnxContentsDescr,
+                         jnxOperatingState }
+       STATUS          current
+       DESCRIPTION
+               "A jnxPowerSupplyFailure trap signifies that
+               the SNMP entity, acting in an agent role, has
+               detected that the specified power supply in the
+               chassis has been in the failure (bad DC output) 
+               condition."
+       ::= { jnxChassisTraps 1 }
+
+    jnxFanFailure NOTIFICATION-TYPE
+       OBJECTS         { jnxContentsContainerIndex,
+                         jnxContentsL1Index,
+                         jnxContentsL2Index,
+                         jnxContentsL3Index,
+                         jnxContentsDescr,
+                         jnxOperatingState }
+       STATUS          current
+       DESCRIPTION
+               "A jnxFanFailure trap signifies that the SNMP
+               entity, acting in an agent role, has detected
+               that the specified cooling fan or impeller in 
+               the chassis has been in the failure (not spinning) 
+               condition."
+       ::= { jnxChassisTraps 2 }
+
+    jnxOverTemperature NOTIFICATION-TYPE
+       OBJECTS         { jnxContentsContainerIndex,
+                         jnxContentsL1Index,
+                         jnxContentsL2Index,
+                         jnxContentsL3Index,
+                         jnxContentsDescr,
+                         jnxOperatingTemp }
+       STATUS          current
+       DESCRIPTION
+               "A jnxOverTemperature trap signifies that the 
+               SNMP entity, acting in an agent role, has 
+               detected that the specified hardware component
+               in the chassis has experienced over temperature
+               condition."
+       ::= { jnxChassisTraps 3 }
+
+    jnxRedundancySwitchover NOTIFICATION-TYPE
+       OBJECTS         { jnxRedundancyContentsIndex,
+                         jnxRedundancyL1Index,
+                         jnxRedundancyL2Index,
+                         jnxRedundancyL3Index,
+                         jnxRedundancyDescr,
+                         jnxRedundancyConfig,
+                         jnxRedundancyState,
+                         jnxRedundancySwitchoverCount,
+                         jnxRedundancySwitchoverTime,
+                         jnxRedundancySwitchoverReason }
+       STATUS          current
+       DESCRIPTION
+               "A jnxRedundancySwitchover trap signifies that 
+               the SNMP entity, acting in an agent role, has 
+               detected that the specified hardware component
+               in the chassis has experienced a redundancy 
+               switchover event defined as a change in state
+               of jnxRedundancyState from master to backup or
+               vice versa."
+       ::= { jnxChassisTraps 4 }
+
+    jnxFruRemoval NOTIFICATION-TYPE
+       OBJECTS         { jnxFruContentsIndex,
+                         jnxFruL1Index,
+                         jnxFruL2Index,
+                         jnxFruL3Index,
+                         jnxFruName,
+                         jnxFruType,
+                         jnxFruSlot }
+       STATUS          current
+       DESCRIPTION
+               "A jnxFruRemoval trap signifies that the SNMP 
+               entity, acting in an agent role, has detected 
+               that the specified FRU (Field Replaceable Unit)
+               has been removed from the chassis."
+       ::= { jnxChassisTraps 5 }
+
+    jnxFruInsertion NOTIFICATION-TYPE
+       OBJECTS         { jnxFruContentsIndex,
+                         jnxFruL1Index,
+                         jnxFruL2Index,
+                         jnxFruL3Index,
+                         jnxFruName,
+                         jnxFruType,
+                         jnxFruSlot }
+       STATUS          current
+       DESCRIPTION
+               "A jnxFruInsertion trap signifies that the SNMP 
+               entity, acting in an agent role, has detected that
+               the specified FRU (Field Replaceable Unit) has been 
+               inserted into the chassis."
+       ::= { jnxChassisTraps 6 }
+
+    jnxFruPowerOff NOTIFICATION-TYPE
+       OBJECTS         { jnxFruContentsIndex,
+                         jnxFruL1Index,
+                         jnxFruL2Index,
+                         jnxFruL3Index,
+                         jnxFruName,
+                         jnxFruType,
+                         jnxFruSlot,
+                         jnxFruOfflineReason,
+                         jnxFruLastPowerOff,
+                         jnxFruLastPowerOn }
+       STATUS          current
+       DESCRIPTION
+               "A jnxFruPowerOff trap signifies that the SNMP 
+               entity, acting in an agent role, has detected 
+               that the specified FRU (Field Replaceable Unit)
+               has been powered off in the chassis."
+       ::= { jnxChassisTraps 7 }
+
+    jnxFruPowerOn NOTIFICATION-TYPE
+       OBJECTS         { jnxFruContentsIndex,
+                         jnxFruL1Index,
+                         jnxFruL2Index,
+                         jnxFruL3Index,
+                         jnxFruName,
+                         jnxFruType,
+                         jnxFruSlot,
+                         jnxFruOfflineReason,
+                         jnxFruLastPowerOff,
+                         jnxFruLastPowerOn }
+       STATUS          current
+       DESCRIPTION
+               "A jnxFruPowerOn trap signifies that the SNMP 
+               entity, acting in an agent role, has detected that
+               the specified FRU (Field Replaceable Unit) has been 
+               powered on in the chassis."
+       ::= { jnxChassisTraps 8 }
+
+    jnxFruFailed NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "This indicates the specified FRU (Field Replaceable Unit)
+                 has failed in the chassis. Most probably this is due toi
+                 some hard error such as fru is not powering up or not
+                 able to load ukernel. In these cases, fru is replaced."
+        ::= { jnxChassisTraps 9 }
+
+    jnxFruOffline NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot,
+                          jnxFruOfflineReason,
+                          jnxFruLastPowerOff,
+                          jnxFruLastPowerOn }
+        STATUS          current
+        DESCRIPTION
+                "A jnxFruOffline trap signifies that the SNMP
+                entity, acting in an agent role, has detected
+                that the specified FRU (Field Replaceable Unit)
+                has gone offline in the chassis."
+        ::= { jnxChassisTraps 10 }
+
+    jnxFruOnline NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxFruOnline trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                the specified FRU (Field Replaceable Unit) has
+                gone online in the chassis."
+        ::= { jnxChassisTraps 11 }
+
+    jnxFruCheck NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxFruCheck trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                the specified FRU (Field Replaceable Unit) has
+                encountered some operational errors and gone into
+                check state in the chassis."
+        ::= { jnxChassisTraps 12 }   
+
+    jnxFEBSwitchover NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxFEBSwitchover trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                the specified FEB (Forwarding Engine Board) has
+                switched over."
+        ::= { jnxChassisTraps 13 }
+
+    jnxHardDiskFailed NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxHardDiskFailed trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                the Disk in the specified Routing Engine has
+                encountered some operational errors and gone into
+                failed state in the chassis."
+        ::= { jnxChassisTraps 14 }
+
+    jnxHardDiskMissing NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A DiskMissing trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                hard disk in the specified outing Engine is missing
+                from boot device list."
+        ::= { jnxChassisTraps 15 }
+
+    jnxBootFromBackup NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+         STATUS         current
+         DESCRIPTION
+                 "A jnxBootFromBackup trap signifies that the SNMP
+                 entity, acting in an agent role, has detected that
+                 the specified  routing-engine/member has booted from
+                 the back up root partition"
+         ::= { jnxChassisTraps 16 }     
+
+    jnxFmLinkErr NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A LinkErr trap signifies that the SNMP
+                entity, acting in an agent role, has detected
+                link errors."
+        ::= { jnxChassisTraps 17 }
+
+    jnxFmCellDropErr NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A CellDropErr trap signifies that the SNMP
+                entity, acting in an agent role, has detected 
+                cell drop errors."
+        ::= { jnxChassisTraps 18 }
+
+    jnxExtSrcLockLost NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A ExtSrcLockLost trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                a lock for an external clock source has been lost."
+        ::= { jnxChassisTraps 19 }
+    jnxPlaneOffline NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot,
+                          jnxFruOfflineReason,
+                          jnxFruLastPowerOff,
+                          jnxFruLastPowerOn }
+        STATUS          current
+        DESCRIPTION
+                "A jnxPlaneOffline trap signifies that the SNMP
+                entity, acting in an agent role, has detected
+                that the specified Fabric plane
+                has gone offline in the chassis."
+        ::= { jnxChassisTraps 20 }
+
+    jnxPlaneOnline NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxPlaneOnline trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                the specified Fabric Plane has
+                gone online in the chassis."
+        ::= { jnxChassisTraps 21 }
+
+    jnxPlaneCheck NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxPlaneCheck trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                the specified Fabric plane has
+                encountered some operational errors and gone into
+                check state in the chassis."
+        ::= { jnxChassisTraps 22 }   
+    
+    jnxPlaneFault NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxPlaneCheck trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                the specified Fabric plane has
+                encountered some operational errors and gone into
+                fault state in the chassis."
+        ::= { jnxChassisTraps 23 }   
+
+    jnxPowerSupplyInputFailure NOTIFICATION-TYPE
+        OBJECTS         { jnxContentsContainerIndex,
+                          jnxContentsL1Index,
+                          jnxContentsL2Index,
+                          jnxContentsL3Index,
+                          jnxContentsDescr,
+                          jnxOperatingState }
+        STATUS          current
+        DESCRIPTION
+            "A jnxPowerSupplyInputFailure trap signifies that
+            the SNMP entity, acting in an agent role, has
+            detected that the specified power supply's input feed 
+            in the chassis has been in the failure condition."
+        ::= { jnxChassisTraps 24 }
+
+    jnxFmAsicErr NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxFmAsicErr trap signifies that the SNMP
+                entity, acting in an agent role, has detected 
+                errors in a switching device within the fabric."
+        ::= { jnxChassisTraps 25 }
+    
+    jnxMountVarOffHardDiskFailed NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxMountVarOffHardDiskFailed signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                mount of /var failed off harddisk, emergency /var created."
+        ::= { jnxChassisTraps 26 }
+
+    jnxFmHealthChkErr NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A HealthChkErr trap signifies that the SNMP
+                entity, acting in an agent role, has detected 
+                health check errors."
+        ::= { jnxChassisTraps 27 }
+
+    -- Traps for chassis alarm cleared conditions
+
+    jnxPowerSupplyOK NOTIFICATION-TYPE
+       OBJECTS         { jnxContentsContainerIndex,
+                         jnxContentsL1Index,
+                         jnxContentsL2Index,
+                         jnxContentsL3Index,
+                         jnxContentsDescr,
+                         jnxOperatingState }
+       STATUS          current
+       DESCRIPTION
+               "A jnxPowerSupplyOK trap signifies that the 
+               SNMP entity, acting in an agent role, has
+               detected that the specified power supply in the
+               chassis has recovered from the failure (bad DC output) 
+               condition."
+       ::= { jnxChassisOKTraps 1 }
+
+    jnxFanOK NOTIFICATION-TYPE
+       OBJECTS         { jnxContentsContainerIndex,
+                         jnxContentsL1Index,
+                         jnxContentsL2Index,
+                         jnxContentsL3Index,
+                         jnxContentsDescr,
+                         jnxOperatingState }
+       STATUS          current
+       DESCRIPTION
+               "A jnxFanOK trap signifies that the SNMP
+               entity, acting in an agent role, has detected that
+               the specified cooling fan or impeller in the chassis
+               has recovered from the failure (not spinning) condition."
+       ::= { jnxChassisOKTraps 2 }
+
+    jnxTemperatureOK NOTIFICATION-TYPE
+       OBJECTS         { jnxContentsContainerIndex,
+                         jnxContentsL1Index,
+                         jnxContentsL2Index,
+                         jnxContentsL3Index,
+                         jnxContentsDescr,
+                         jnxOperatingTemp }
+       STATUS          current
+       DESCRIPTION
+               "A jnxTemperatureOK trap signifies that the 
+               SNMP entity, acting in an agent role, has 
+               detected that the specified hardware component
+               in the chassis has recovered from over temperature
+               condition." 
+       ::= { jnxChassisOKTraps 3 }
+
+    jnxFruOK NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxFruOK trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                the specified FRU (Field Replaceable Unit) has
+                recovered from previous operational errors and it
+                is in ok state in the chassis."
+        ::= { jnxChassisOKTraps 4 }
+
+    jnxExtSrcLockAcquired NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A ExtSrcLockAcquired trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                a lock for an external clock source has been acquired."
+        ::= { jnxChassisOKTraps 5 }
+
+    jnxHardDiskOK NOTIFICATION-TYPE
+        OBJECTS         { jnxFruContentsIndex,
+                          jnxFruL1Index,
+                          jnxFruL2Index,
+                          jnxFruL3Index,
+                          jnxFruName,
+                          jnxFruType,
+                          jnxFruSlot }
+        STATUS          current
+        DESCRIPTION
+                "A jnxHardDiskOK trap signifies that the SNMP
+                entity, acting in an agent role, has detected that
+                the Disk in the specified Routing Engine has
+                recovered from the failure condition."
+        ::= { jnxChassisOKTraps 6 }
+
+    jnxPowerSupplyInputOK NOTIFICATION-TYPE
+        OBJECTS     { jnxContentsContainerIndex,
+                      jnxContentsL1Index,
+                      jnxContentsL2Index,
+                      jnxContentsL3Index,
+                      jnxContentsDescr,
+                      jnxOperatingState }
+        STATUS      current
+        DESCRIPTION
+            "A jnxPowerSupplyInputOK trap signifies that the 
+            SNMP entity, acting in an agent role, has detected 
+            that the specified power supply's input feed in the
+            chassis has recovered from the failure condition."
+        ::= { jnxChassisOKTraps 7 }
+
+END
diff --git a/contrib/mibs/JUNIPER-POWER-SUPPLY-UNIT-MIB.txt b/contrib/mibs/JUNIPER-POWER-SUPPLY-UNIT-MIB.txt
new file mode 100644 (file)
index 0000000..eb0549c
--- /dev/null
@@ -0,0 +1,476 @@
+-- *****************************************************************
+-- Juniper Enterprise Specific MIB: JUNIPER-POWER-MANAGEMENT
+--
+-- Copyright (c) 2009-2010, Juniper Networks, Inc.
+-- All rights reserved.
+--
+-- The contents of this document are subject to change without notice.
+-- *****************************************************************
+
+JUNIPER-POWER-SUPPLY-UNIT-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+        MODULE-IDENTITY, OBJECT-TYPE
+                FROM SNMPv2-SMI
+        TEXTUAL-CONVENTION, DisplayString, TruthValue
+                FROM SNMPv2-TC
+        jnxContentsContainerIndex, jnxContentsL1Index,
+        jnxContentsL2Index, jnxContentsL3Index
+                FROM JUNIPER-MIB
+        jnxPsuMIBRoot
+                FROM JUNIPER-SMI;
+
+jnxPsuMIB MODULE-IDENTITY
+    LAST-UPDATED "201010270000Z" -- Oct 27 00:00:00 2010 UTC
+    ORGANIZATION "Juniper Networks, Inc."
+    CONTACT-INFO
+        "Juniper Technical Assistance Center
+         Juniper Networks, Inc.
+         1194 N. Mathilda Avenue
+         Sunnyvale, CA 94089
+         E-mail: support@juniper.net"
+
+    DESCRIPTION
+            "The Juniper Supply Unit MIB definitions for enabling
+             power monitoring and management of a juniper device."
+
+    -- revision history
+    REVISION  "201001270000Z" -- January 27 00:00:00 2010 UTC
+    DESCRIPTION
+            "Initial revision."
+    REVISION  "201005130000Z" -- May 13 00:00:00 2010 UTC
+    DESCRIPTION
+            "Added new OIDs for power budget statistics which gives details of
+            Power reserved for Chassis and the Total power allocated to Chassis
+            including for each FPC. 
+            Added new Table jnxPsuFpcPowerTable which gives the Priority
+            assigned and Power allocated to each FPC."
+    REVISION  "201010270000Z" -- Oct 27 00:00:00 2010 UTC
+    DESCRIPTION
+            "Added new OIDs for power budget statistics which gives details of
+            Power reserved for System dynamically."
+
+    ::= { jnxPsuMIBRoot 1 }
+
+jnxPsuNotifications     OBJECT IDENTIFIER ::= { jnxPsuMIB 1 }
+jnxPsuObjects           OBJECT IDENTIFIER ::= { jnxPsuMIB 2 }
+
+--**********************************************************************
+-- PSU Scalar Objects 
+--**********************************************************************
+
+jnxPsuScalars           OBJECT IDENTIFIER ::= { jnxPsuObjects 1 }
+
+jnxPsuAvailableDeviceCount OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION
+        "Gives the number of PSU units available online in the System."
+    ::= { jnxPsuScalars 1 }
+
+jnxPsuAvailableAveragePowerSupply OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION
+        "Gives the total average power that the System can supply from the
+        available online units in Watts."
+    ::= { jnxPsuScalars 2 }
+
+jnxPsuAvailableMaxPowerSupply OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION
+        "Gives the total maximum power that the System can supply from the 
+        available online units in Watts."
+    ::= { jnxPsuScalars 3 }
+
+jnxPsuRedundancy  OBJECT-TYPE
+    SYNTAX        INTEGER {
+                  nPlusNRedundancy(1),
+                  nPlusOneRedundancy(2),
+                  none(3)
+    }
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION
+        "PSU power redundancy configuration."
+    ::= { jnxPsuScalars 4 }
+
+jnxPsuChassisPowerReserved OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION
+        "Power reserved for Chassis in Watts."
+    ::= { jnxPsuScalars 5 }
+
+jnxPsuChassisPowerAllocated OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION
+        "Total power allocated for chassis and all the FPCs in Watts."
+    ::= { jnxPsuScalars 6 }
+
+jnxPsuRedundantPowerAvailable OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION
+        "Power(in Watts) that is still available for allocation
+        even while supporting redundancy with the present usage."
+    ::= { jnxPsuScalars 7 }
+
+jnxPsuTotalPowerAvailable OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION
+        "Power(in Watts) which could be made available for further
+        allocation without supporting any redundancy with the present usage."
+::= { jnxPsuScalars 8 }
+
+jnxPsuChassisPowerConsumed OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION
+        "Total power consumed by the entire system rounded to the nearest integer.
+         This is calculated using the PowerFactor, Current and Voltage values 
+         of each PSU that is online and connected to the System."
+    ::= { jnxPsuScalars 9 }
+
+jnxPsuTemperatureInflow OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION
+        "Average inflow temperature calculated from all 
+        the available input sensors on the master RE."
+
+    ::= { jnxPsuScalars 10 }
+
+jnxPsuTemperatureOutflow OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION
+        "Average outflow temperature calculated from all 
+        the available output sensors on the master RE."
+    ::= { jnxPsuScalars 11 }
+
+jnxPsuTemperatureInflowSamples OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION
+        "The number of samples being taken while calculating
+        jnxPsuTemperatureInflow."
+
+    ::= { jnxPsuScalars 12 }
+
+jnxPsuTemperatureOutflowSamples OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION
+        "The number of samples being taken while calculating
+        jnxPsuTemperatureOutflow."
+
+    ::= { jnxPsuScalars 13 }
+
+--**********************************************************************
+-- Device POWER
+--**********************************************************************
+
+jnxPsuTable  OBJECT-TYPE
+    SYNTAX        SEQUENCE OF JnxPsuEntry 
+    MAX-ACCESS    not-accessible
+    STATUS        current
+    DESCRIPTION   "A list of power entries for each PSU component."
+    ::= { jnxPsuObjects 2 }
+
+jnxPsuEntry    OBJECT-TYPE
+    SYNTAX        JnxPsuEntry
+    MAX-ACCESS    not-accessible
+    STATUS        current
+    DESCRIPTION   "Defines an entry in jnxPsuTable. "
+    INDEX         { jnxContentsContainerIndex,
+                    jnxContentsL1Index,
+                    jnxContentsL2Index,
+                    jnxContentsL3Index }
+
+    ::= { jnxPsuTable 1 }
+
+JnxPsuEntry ::= 
+    SEQUENCE { 
+        jnxPsuAvgPower    INTEGER,
+        jnxPsuMaxPower    INTEGER,
+        jnxPsuMode        INTEGER,
+        jnxPsuOutletCount INTEGER
+    }
+
+jnxPsuAvgPower         OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION   "Buffer that contains the average power used, in Watts 
+                  for each component."
+    ::= { jnxPsuEntry 1 }
+                 
+jnxPsuMaxPower         OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION   "Buffer that contains the max power available, in Watts 
+                  for each component."
+    ::= { jnxPsuEntry 2 }
+
+jnxPsuMode   OBJECT-TYPE
+    SYNTAX        INTEGER {
+                      single(1),
+                      three(3)
+                  }
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION   "Mode for each PSU component."
+    ::= { jnxPsuEntry 3 }
+
+jnxPsuOutletCount OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION   "The number of outlets (regardless of their current state)
+                  present on this psu component, default is 0."
+    DEFVAL        { 0 }
+    ::= { jnxPsuEntry 4 }
+
+--**********************************************************************
+-- Environment
+--**********************************************************************
+
+jnxPsuEnvironmentTable OBJECT-TYPE
+    SYNTAX        SEQUENCE OF JnxPsuEnvironmentEntry
+    MAX-ACCESS    not-accessible
+    STATUS        current
+    DESCRIPTION   "A list of PSU Environment entries."
+    ::= { jnxPsuObjects 3 }
+
+jnxPsuEnvironmentEntry OBJECT-TYPE
+    SYNTAX       JnxPsuEnvironmentEntry
+    MAX-ACCESS   not-accessible
+    STATUS       current
+    DESCRIPTION  "Defines an entry in jnxPsuEnvironmentTable."
+    INDEX        { jnxContentsContainerIndex,
+                   jnxContentsL1Index,
+                   jnxContentsL2Index,
+                   jnxContentsL3Index }
+    ::= { jnxPsuEnvironmentTable 1 }
+
+JnxPsuEnvironmentEntry ::=
+    SEQUENCE {
+        jnxPsuThermalValue    INTEGER,
+        jnxPsuHumidityValue   INTEGER
+    }
+
+jnxPsuThermalValue  OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION   "Temparature at each component in degrees Celsius rounded to
+                  the nearest integer."
+    ::= { jnxPsuEnvironmentEntry 1 }
+
+jnxPsuHumidityValue  OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION   "Humidity at each component in percentage."
+    ::= { jnxPsuEnvironmentEntry 2 }
+
+--**********************************************************************
+-- OUTLETS
+--**********************************************************************
+
+jnxPsuOutletTable OBJECT-TYPE
+    SYNTAX        SEQUENCE OF JnxPsuOutletEntry
+    MAX-ACCESS    not-accessible
+    STATUS        current
+    DESCRIPTION   "Gives details of each Power outlet`s state,
+                   capacity to supply power, and other details."
+    ::= { jnxPsuObjects 4 }
+
+jnxPsuOutletEntry OBJECT-TYPE
+    SYNTAX       JnxPsuOutletEntry
+    MAX-ACCESS   not-accessible
+    STATUS       current
+    DESCRIPTION  "A value contained within the OutletEntry"
+    INDEX        { jnxContentsContainerIndex,
+                   jnxContentsL1Index,
+                   jnxContentsL2Index,
+                   jnxContentsL3Index }
+     ::= { jnxPsuOutletTable 1 }
+
+JnxPsuOutletEntry ::= 
+    SEQUENCE {
+       jnxPsuOutletName                     DisplayString,
+       jnxPsuOutletDescription              DisplayString,
+       jnxPsuOutletAvgPower                 INTEGER,
+       jnxPsuOutletMaxPower                 INTEGER,
+       jnxPsuOutletCurrent                  INTEGER,
+       jnxPsuOutletStatus                   INTEGER,
+       jnxPsuOutletVoltage                  INTEGER,
+       jnxPsuOutletPowerFactorValue         INTEGER,
+       jnxPsuOutletPowerConsumed            INTEGER
+    }
+
+jnxPsuOutletName  OBJECT-TYPE
+    SYNTAX        DisplayString(SIZE (0..15))
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION   "Outlet name associated to the power supply unit for 
+                   each PSU Component."
+    ::= { jnxPsuOutletEntry 1 }
+
+jnxPsuOutletDescription        OBJECT-TYPE
+    SYNTAX        DisplayString(SIZE (0..63))
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION   "Outlet description associated to the power supply unit for 
+                   each PSU Component."
+    ::= { jnxPsuOutletEntry 2 }
+
+jnxPsuOutletAvgPower OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION   "Buffer that contains the average power used, in Watts for each component."
+    ::= { jnxPsuOutletEntry 3 }
+                
+jnxPsuOutletMaxPower OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION   "Buffer that contains the maximum power available, in Watts for each component."
+    ::= { jnxPsuOutletEntry 4 }
+                
+jnxPsuOutletCurrent OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION   "PSU output current in milliamps rounded to the nearest
+                  integer."
+    ::= { jnxPsuOutletEntry 5 }
+                  
+jnxPsuOutletStatus  OBJECT-TYPE
+    SYNTAX        INTEGER {
+                      off(0),
+                      on(1)
+                  }
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION   "The value of the operational status for the given outlet.
+                   This can also be used to set the outlet state"
+    ::= { jnxPsuOutletEntry 8 }
+
+jnxPsuOutletVoltage OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION   "Output voltage in Volts rounded to the nearest integer."
+    ::= { jnxPsuOutletEntry 9 }
+
+--
+-- NOTE: jnxPsuOutletPowerFactorValue does NOT return the traditional
+-- "power factor", defined as real power in watts divided by apparent 
+-- power in volt-amperes.  Instead it returns "efficiency" which is  
+-- defined as power output divided by power input.
+--
+jnxPsuOutletPowerFactorValue OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION   "Power factor percentage of each PSU (2k/3k).
+
+                  Algorithm for calculation of Power Factor is below.
+                  For PowerOut values that fall in between 618.93W and 915.24W,
+                  say 700W, the appropriate PF ranges from 0.910191 & 
+                  0.917994. Following linear equation could help deduce a
+                  fairly accurate input power value.
+                  Linear equation y = mx + b (where m is the slope and b is 
+                  the Y intercept)
+
+                  Slope m = (y2 - y1) / (x2 - x1)
+                  Y intercept  b = y - mx
+                  Plugging it all together for our example:
+                  m = (915.24 - 618.93) / (0.917994 - 0.910191) = 37973.86
+                  b = 915.24 - (37973.86 * 0.917994) = -33944.5
+                  for 700W (y), our efficiency (x) would then be:
+                  x = (700 - (-33944.5)) / 37973.86 = 0.912326 = 91%
+
+                  PowerIn = 700W /0.912326 = 767.26W "
+
+    ::= { jnxPsuOutletEntry 10 }
+
+jnxPsuOutletPowerConsumed OBJECT-TYPE
+    SYNTAX        INTEGER
+    MAX-ACCESS    read-only
+    STATUS        current
+    DESCRIPTION   "Power Consumed by each outlet units in Watts."
+    ::= { jnxPsuOutletEntry 11 }
+
+                  
+--**********************************************************************
+-- FPC Power allocated information 
+--**********************************************************************
+
+jnxPsuFpcPowerTable OBJECT-TYPE
+    SYNTAX        SEQUENCE OF JnxPsuFpcPowerEntry
+    MAX-ACCESS    not-accessible
+    STATUS        current
+    DESCRIPTION   "A list of entries for each FPC(Flexible PIC Concentrator)
+                   giving it's assigned priority and power being allocated. 
+                   More information on FPCs can be found in JUNIPER-MIB."
+    ::= { jnxPsuObjects 5 }
+
+jnxPsuFpcPowerEntry OBJECT-TYPE
+    SYNTAX       JnxPsuFpcPowerEntry
+    MAX-ACCESS   not-accessible
+    STATUS       current
+    DESCRIPTION  "A value contained within the FpcPowerEntry"
+    INDEX        { jnxContentsContainerIndex,
+                   jnxContentsL1Index,
+                   jnxContentsL2Index,
+                   jnxContentsL3Index }
+     ::= { jnxPsuFpcPowerTable 1 }
+
+JnxPsuFpcPowerEntry ::=
+    SEQUENCE {
+            jnxPsuFpcPowerPriority               INTEGER,
+            jnxPsuFpcPowerAllocated              INTEGER
+          }
+      
+jnxPsuFpcPowerPriority OBJECT-TYPE
+     SYNTAX         INTEGER
+     MAX-ACCESS     read-only
+     STATUS         current
+     DESCRIPTION    "The Power budget priority assigned to the FPC.
+                     Lower number means higher priority."
+     ::= { jnxPsuFpcPowerEntry 1 }
+
+jnxPsuFpcPowerAllocated OBJECT-TYPE
+    SYNTAX         INTEGER
+    MAX-ACCESS     read-only
+    STATUS         current
+    DESCRIPTION    "The Power allocated to the FPC in Watts."
+    ::= { jnxPsuFpcPowerEntry 2 }
+
+END
diff --git a/contrib/mibs/JUNIPER-VLAN-MIB.txt b/contrib/mibs/JUNIPER-VLAN-MIB.txt
new file mode 100644 (file)
index 0000000..5be0de7
--- /dev/null
@@ -0,0 +1,650 @@
+--
+-- Juniper Enterprise Specific MIB: Vlan
+--
+-- Copyright (c) 2007-2011, Juniper Networks, Inc.
+-- All rights reserved.
+--
+-- The contents of this document are subject to change without notice.
+--
+
+JUNIPER-VLAN-MIB DEFINITIONS ::= BEGIN
+    
+IMPORTS
+    Integer32, IpAddress, OBJECT-TYPE, MODULE-IDENTITY    
+       FROM SNMPv2-SMI
+    MacAddress, TruthValue, DisplayString              
+       FROM SNMPv2-TC
+    InterfaceIndex 
+       FROM IF-MIB
+    InetAddress, InetAddressType, InetAddressPrefixLength
+       FROM INET-ADDRESS-MIB
+     Unsigned32
+         FROM SNMPv2-SMI
+    jnxExVlan                                          
+       FROM JUNIPER-EX-SMI;
+
+jnxVlanMIBObjects  MODULE-IDENTITY
+    LAST-UPDATED "200901090000Z" -- Fri Jan 09 00:00:00 2009 UTC
+    ORGANIZATION "Juniper Networks, Inc."
+    CONTACT-INFO
+        "Juniper Technical Assistance Center
+         Juniper Networks, Inc.
+         1194 N. Mathilda Avenue
+         Sunnyvale, CA 94089
+         E-mail: support@juniper.net"
+    DESCRIPTION
+        "This module contains definitions for management information for 
+       pre-standards IEEE 802.1Q VLANs and their association with a Lan 
+       Emulation Client (lec). Devices implementing these pre-standards 
+       maintain port groupings and associated filters used to form a 
+       'virtual bridge'."
+    REVISION   
+        "200901090000Z" -- Fri Jan 09 00:00:00 2009 UTC
+    DESCRIPTION
+        "Marked the deprecated Objects of jnxVlanTable, 
+         jnxVlanInterfaceTable and jnxVlanPortGroupTable 
+         as Obsolete."
+    REVISION
+        "200901200000Z" -- Mon Jan 20 00:00:00 2009 UTC
+    DESCRIPTION
+        "Added new Object jnxExVlanTag to represent Vlan Tag information
+         for each Vlan."
+    REVISION
+        "201009070000Z" -- Tue Sep 7 00:00:00 2010 UTC
+    DESCRIPTION
+        "Added new Objects jnxExVlanPortTagness and jnxExVlanPortAccessMode as
+        part of jnxExVlanPortGroupTable."
+
+    ::= { jnxExVlan 1 }
+
+--------------------------------------------------------------------------------
+-- VLAN Configuration
+--------------------------------------------------------------------------------
+
+jnxVlanTable OBJECT-TYPE
+    SYNTAX      SEQUENCE OF JnxVlanEntry
+    MAX-ACCESS  not-accessible
+    STATUS      obsolete
+    DESCRIPTION
+        "A table of VLAN names and characteristics."
+    ::= { jnxVlanMIBObjects 1 }
+
+jnxVlanEntry OBJECT-TYPE
+    SYNTAX      JnxVlanEntry
+    MAX-ACCESS  not-accessible
+    STATUS      obsolete
+    DESCRIPTION
+        "A table entry containing VLAN names and characteristics."
+    INDEX   { IMPLIED jnxVlanName }
+    ::= { jnxVlanTable 1 }
+
+JnxVlanEntry ::=
+    SEQUENCE {
+        jnxVlanName               DisplayString,
+       jnxVlanID                 Integer32,
+        jnxVlanType               INTEGER,
+        jnxVlanPortGroupInstance  Integer32,
+        jnxVlanMacListInstance    Integer32
+    }
+     
+jnxVlanName OBJECT-TYPE
+    SYNTAX      DisplayString (SIZE (1..255)) 
+    MAX-ACCESS  not-accessible 
+    STATUS      obsolete
+    DESCRIPTION
+        "Vlan name is the textual name and this is the identifier
+        that the user of a configuration utility will use."
+    ::= {  jnxVlanEntry 1 }
+
+jnxVlanID OBJECT-TYPE
+    SYNTAX      Integer32(1..4094)
+    MAX-ACCESS  read-only 
+    STATUS      obsolete
+    DESCRIPTION
+        "This is the locally significant ID that is used internally by this 
+       device to reference this VLAN."
+    ::= { jnxVlanEntry 2 }
+
+jnxVlanType OBJECT-TYPE
+    SYNTAX     INTEGER {
+        static (1),
+        dynamic(2)
+    }
+    MAX-ACCESS         read-only
+    STATUS      obsolete
+    DESCRIPTION
+        "The valn type can be
+        static (1)
+        Dynamic(2)"
+    DEFVAL { 1 }
+    ::= { jnxVlanEntry 3 }
+
+jnxVlanPortGroupInstance OBJECT-TYPE
+    SYNTAX     Integer32
+    MAX-ACCESS         read-only
+    STATUS      obsolete
+    DESCRIPTION
+        "jnxVlanPortGroupInstance is the index that identifies that the sub 
+       tree in the jnxVlanPortGroupTable helps to retrieve the group of 
+       ports in this VLAN."
+    ::= { jnxVlanEntry 4 }
+
+jnxVlanMacListInstance OBJECT-TYPE
+    SYNTAX      Integer32
+    MAX-ACCESS  read-only
+    STATUS      obsolete
+    DESCRIPTION
+        "jnxVlanMacListInstance is the index , if this is a MAC-based VLAN 
+       which identifies the sub tree to retrieve the list of MAC address to 
+       allow into this VLAN. If this is not a MAC-based VLAN then the 
+       value is 0"
+    DEFVAL { 0 }
+    ::= { jnxVlanEntry 5 }
+
+jnxVlanInterfaceTable OBJECT-TYPE
+     SYNTAX      SEQUENCE OF JnxVlanInterfaceEntry
+     MAX-ACCESS  not-accessible
+     STATUS      obsolete
+     DESCRIPTION
+         "A table of VLAN names and characteristics in layer 3."
+     ::= { jnxVlanMIBObjects 2 }
+
+jnxVlanInterfaceEntry OBJECT-TYPE
+    SYNTAX      JnxVlanInterfaceEntry
+    MAX-ACCESS  not-accessible
+    STATUS      obsolete
+    DESCRIPTION
+        "A table entry containing VLAN names and characteristics in layer 3."
+    INDEX   { IMPLIED jnxVlanName }
+    ::= { jnxVlanInterfaceTable 1 }
+
+JnxVlanInterfaceEntry ::=
+    SEQUENCE {
+        jnxVlanInterfaceIpAddress            InetAddress,
+        jnxVlanInterfaceProtocol             InetAddressType,
+        jnxVlanInterfaceSubNetMask           IpAddress,
+        jnxVlanInterfaceBroadcastAddress     IpAddress,
+        jnxVlanInterfaceDescription          DisplayString,
+        jnxVlanInterfaceAdminStatus          TruthValue,
+        jnxVlanInterfaceOperStatus           DisplayString,
+        jnxVlanSnmpIfIndex                  InterfaceIndex 
+    }
+
+jnxVlanInterfaceIpAddress OBJECT-TYPE
+     SYNTAX      InetAddress 
+     MAX-ACCESS  read-only
+     STATUS      obsolete
+     DESCRIPTION
+         "This specifies the IPAddress of this interface. "
+     ::= { jnxVlanInterfaceEntry 1 }
+
+jnxVlanInterfaceProtocol OBJECT-TYPE
+    SYNTAX     InetAddressType
+    MAX-ACCESS  read-only
+    STATUS      obsolete
+    DESCRIPTION
+         "This specifies the protocol for ipv4."
+    ::= { jnxVlanInterfaceEntry 2 }
+
+jnxVlanInterfaceSubNetMask OBJECT-TYPE
+    SYNTAX      IpAddress
+    MAX-ACCESS  read-only
+    STATUS      obsolete
+    DESCRIPTION
+        "This specifies the subnet mask address of the vlan ."
+    ::= { jnxVlanInterfaceEntry 3 }
+
+jnxVlanInterfaceBroadcastAddress OBJECT-TYPE
+    SYNTAX      IpAddress
+    MAX-ACCESS  read-only
+    STATUS      obsolete
+    DESCRIPTION
+        "This specifies the broadcast address of the vlan."
+    ::= { jnxVlanInterfaceEntry 4 }
+
+jnxVlanInterfaceDescription OBJECT-TYPE
+    SYNTAX      DisplayString (SIZE (1..255))
+    MAX-ACCESS  read-only
+    STATUS      obsolete
+    DESCRIPTION
+        "jnxvlanInterfaceDescription provides the description for the vlan."
+    ::= { jnxVlanInterfaceEntry 5 }
+
+jnxVlanInterfaceAdminStatus OBJECT-TYPE
+    SYNTAX      TruthValue
+    MAX-ACCESS  read-only
+    STATUS      obsolete
+    DESCRIPTION
+        "This takes care of administration status of the vlan"
+    ::= { jnxVlanInterfaceEntry 6 }
+
+jnxVlanInterfaceOperStatus OBJECT-TYPE
+    SYNTAX      DisplayString
+    MAX-ACCESS  read-only
+    STATUS      obsolete
+    DESCRIPTION
+        "This specifies the operational status of the vlan"
+    ::= { jnxVlanInterfaceEntry 7 }
+
+jnxVlanSnmpIfIndex OBJECT-TYPE
+    SYNTAX      InterfaceIndex
+    MAX-ACCESS  read-only
+    STATUS      obsolete
+    DESCRIPTION
+        "This specifies the SNMP IF Index ."
+    ::= { jnxVlanInterfaceEntry 8 }
+
+-------------------------------------------------------------------------------
+-- Port Group Table
+--------------------------------------------------------------------------------
+
+jnxVlanPortGroupTable OBJECT-TYPE
+    SYNTAX     SEQUENCE OF JnxVlanPortGroupEntry
+    MAX-ACCESS  not-accessible
+    STATUS      obsolete
+    DESCRIPTION
+        "A table of port groupings."
+    ::= { jnxVlanMIBObjects 3 }
+
+jnxVlanPortGroupEntry OBJECT-TYPE
+    SYNTAX      JnxVlanPortGroupEntry
+    MAX-ACCESS  not-accessible
+    STATUS      obsolete
+    DESCRIPTION
+        "A table entry containing a port number"
+    INDEX   { jnxVlanPortGroupIndex, jnxVlanPort }
+    ::= { jnxVlanPortGroupTable 1 }
+
+JnxVlanPortGroupEntry ::=
+    SEQUENCE {
+        jnxVlanPortGroupIndex      Integer32,
+        jnxVlanPort                Integer32,
+        jnxVlanPortStatus          INTEGER
+    }
+
+jnxVlanPortGroupIndex OBJECT-TYPE
+    SYNTAX      Integer32
+    MAX-ACCESS  not-accessible
+    STATUS      obsolete
+    DESCRIPTION
+        "Index used so that there can be many different
+        port groups"
+    ::= { jnxVlanPortGroupEntry 1 }
+
+jnxVlanPort OBJECT-TYPE
+    SYNTAX      Integer32
+    MAX-ACCESS  not-accessible
+    STATUS      obsolete
+    DESCRIPTION
+        "The vlanPort specifies the port in the vlan.By adding a port here,
+        that port will now be part of any VLAN(s) that this port group is 
+       associated with."
+    ::= { jnxVlanPortGroupEntry 2 }
+
+jnxVlanPortStatus OBJECT-TYPE
+    SYNTAX      INTEGER {
+        autoActive      (1),
+        allowed         (2),
+        allowedActive   (3),
+        allowedNotAvail (4),
+        notAssociated   (5)
+    }
+    MAX-ACCESS  read-only
+    STATUS      obsolete
+    DESCRIPTION
+        "The status of this port relative to the VLAN that points
+        at this port group.[1.autoactive , 2.allowed, 3.allowedActive
+        4.allowedNotAvail, 5.notAssociated]
+
+        autoActive     : Means that the port is part of this VLAN
+                        because the switch automatically added it.
+        allowed        : Means that the port has been configured so that
+                        if all other criteria (if any) are met, this port
+                        is allowed to be in this VLAN.
+        allowedActive  : Means the same as allowed plus the fact
+                                that there is a device attached to this port and
+                                participating in the VLAN.
+        allowedNotAvail: This value is only needed for devices
+                         that don't allow a port to be in more than one
+                         VLAN at a time.  This value means that this port
+                         also exists in some other VLAN(s) and is active
+                         in another VLAN.  Therefore this port is not
+                         available to be used in this VLAN.
+        notAssociated :  Means that the Port Group is not currently
+                         associated with any VLAN."
+    DEFVAL { allowed }
+    ::= { jnxVlanPortGroupEntry 3 }
+
+--------------------------------------------------------------------------------
+-- MAC List Table
+--------------------------------------------------------------------------------
+
+jnxVlanMacListTable OBJECT-TYPE
+    SYNTAX      SEQUENCE OF JnxVlanMacListEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "jnxVlanMacListTable is the table of MAC Lists. "
+    ::= { jnxVlanMIBObjects 4 }
+
+jnxVlanMacListEntry OBJECT-TYPE
+    SYNTAX      JnxVlanMacListEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A table entry containing MAC Addresses"
+    INDEX   { jnxVlanMacListIndex }
+    ::= { jnxVlanMacListTable 1 }
+
+JnxVlanMacListEntry ::=
+    SEQUENCE {
+        jnxVlanMacListIndex        Integer32,
+        jnxVlanMacAddress          MacAddress
+    }
+
+jnxVlanMacListIndex OBJECT-TYPE
+    SYNTAX      Integer32
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "jnxVlanMacListIndex can be used beacuse there can  be many different
+        MAC Lists"
+    ::= { jnxVlanMacListEntry 1 }
+
+jnxVlanMacAddress OBJECT-TYPE
+    SYNTAX      MacAddress
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "jnxVlanMacAddress is the MAC Address that belongs to this group."
+    ::= { jnxVlanMacListEntry 2 }
+
+--------------------------------------------------------------------------------
+-- Ex VLAN Configuration
+--------------------------------------------------------------------------------
+
+jnxExVlanTable OBJECT-TYPE
+    SYNTAX      SEQUENCE OF JnxExVlanEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A table of VLAN names and characteristics."
+    ::= { jnxVlanMIBObjects 5 }
+
+jnxExVlanEntry OBJECT-TYPE
+    SYNTAX      JnxExVlanEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A table entry containing VLAN names and characteristics."
+    INDEX   { jnxExVlanID }
+    ::= { jnxExVlanTable 1 }
+
+JnxExVlanEntry ::=
+    SEQUENCE {
+        jnxExVlanID                 Integer32,
+        jnxExVlanName               DisplayString,
+        jnxExVlanType               INTEGER,
+        jnxExVlanPortGroupInstance  Integer32,
+        jnxExVlanTag                Unsigned32
+    }
+
+jnxExVlanID OBJECT-TYPE
+    SYNTAX      Integer32(1..4094)
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "This is the locally significant ID that is used internally by this
+        device to reference this VLAN."
+    ::= { jnxExVlanEntry 1 }
+
+jnxExVlanName OBJECT-TYPE
+    SYNTAX      DisplayString (SIZE (1..255))
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "Vlan name is the textual name."
+    ::= {  jnxExVlanEntry 2 }
+
+jnxExVlanType OBJECT-TYPE
+    SYNTAX      INTEGER {
+        static (1),
+        dynamic(2)
+    }
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The vlan type can be
+        static (1)
+        Dynamic(2)"
+    DEFVAL { 1 }
+    ::= { jnxExVlanEntry 3 }
+
+jnxExVlanPortGroupInstance OBJECT-TYPE
+    SYNTAX      Integer32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "jnxExVlanPortGroupInstance is the index that identifies that the sub
+        tree in the jnxVlanPortGroupTable helps to retrieve the group of
+        ports in this VLAN."
+    ::= { jnxExVlanEntry 4 }
+
+jnxExVlanTag OBJECT-TYPE
+    SYNTAX      Unsigned32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "jnxExVlanTag gives the Vlan Tag details for each Vlan."
+    ::= { jnxExVlanEntry 5 }
+
+--------------------------------------------------------------------------------
+-- Ex VLAN Interface Table 
+--------------------------------------------------------------------------------
+
+jnxExVlanInterfaceTable OBJECT-TYPE
+     SYNTAX      SEQUENCE OF JnxExVlanInterfaceEntry
+     MAX-ACCESS  not-accessible
+     STATUS      current
+     DESCRIPTION
+         "A table of VLAN names and characteristics in layer 3."
+     ::= { jnxVlanMIBObjects 6 }
+
+jnxExVlanInterfaceEntry OBJECT-TYPE
+    SYNTAX      JnxExVlanInterfaceEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A table entry containing VLAN names and characteristics in layer 3."
+    INDEX   { jnxExVlanID }
+    ::= { jnxExVlanInterfaceTable 1 }
+
+JnxExVlanInterfaceEntry ::=
+    SEQUENCE {
+        jnxExVlanInterfaceProtocol             InetAddressType,
+        jnxExVlanInterfaceIpAddress            InetAddress,
+        jnxExVlanInterfacePrefixLength         InetAddressPrefixLength,
+        jnxExVlanInterfaceBroadcastAddress     InetAddress,
+        jnxExVlanInterfaceDescription          DisplayString,
+        jnxExVlanInterfaceAdminStatus          INTEGER,
+        jnxExVlanInterfaceOperStatus           INTEGER,
+        jnxExVlanSnmpIfIndex                   InterfaceIndex
+    }
+
+jnxExVlanInterfaceProtocol OBJECT-TYPE
+    SYNTAX      InetAddressType
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+         "This specifies the protocol for ipv4."
+    ::= { jnxExVlanInterfaceEntry 1 }
+
+jnxExVlanInterfaceIpAddress OBJECT-TYPE
+     SYNTAX      InetAddress
+     MAX-ACCESS  read-only
+     STATUS      current
+     DESCRIPTION
+         "This specifies the IPAddress of this interface. "
+     ::= { jnxExVlanInterfaceEntry 2 }
+
+jnxExVlanInterfacePrefixLength OBJECT-TYPE
+    SYNTAX      InetAddressPrefixLength
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "This specifies the length of subnet mask address of the vlan ."
+    ::= { jnxExVlanInterfaceEntry 3 }
+
+jnxExVlanInterfaceBroadcastAddress OBJECT-TYPE
+    SYNTAX      InetAddress
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "This specifies the broadcast address of the vlan."
+    ::= { jnxExVlanInterfaceEntry 4 }
+
+jnxExVlanInterfaceDescription OBJECT-TYPE
+    SYNTAX      DisplayString (SIZE (1..255))
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "jnxExvlanInterfaceDescription provides the description for the vlan."
+    ::= { jnxExVlanInterfaceEntry 5 }
+
+jnxExVlanInterfaceAdminStatus OBJECT-TYPE
+    SYNTAX      INTEGER {
+                    up(1),        -- ready to pass packets
+                    down(2)
+                }
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "This takes care of administration status of the vlan"
+    ::= { jnxExVlanInterfaceEntry 6 }
+
+jnxExVlanInterfaceOperStatus OBJECT-TYPE
+    SYNTAX      INTEGER {
+                    up(1),        -- ready to pass packets
+                    down(2)
+                }
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "This specifies the operational status of the vlan"
+    ::= { jnxExVlanInterfaceEntry 7 }
+
+jnxExVlanSnmpIfIndex OBJECT-TYPE
+    SYNTAX      InterfaceIndex
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "This specifies the SNMP IF Index ."
+    ::= { jnxExVlanInterfaceEntry 8 }
+
+-------------------------------------------------------------------------------
+-- Ex Port Group Table
+--------------------------------------------------------------------------------
+
+jnxExVlanPortGroupTable OBJECT-TYPE
+    SYNTAX      SEQUENCE OF JnxExVlanPortGroupEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A table of port groupings."
+    ::= { jnxVlanMIBObjects 7 }
+
+jnxExVlanPortGroupEntry OBJECT-TYPE
+    SYNTAX      JnxExVlanPortGroupEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "A table entry containing a port number"
+    INDEX   { jnxExVlanPortGroupIndex, jnxExVlanPort }
+    ::= { jnxExVlanPortGroupTable 1 }
+
+JnxExVlanPortGroupEntry ::=
+    SEQUENCE {
+        jnxExVlanPortGroupIndex      Integer32,
+        jnxExVlanPort                Integer32,
+        jnxExVlanPortStatus          INTEGER,
+        jnxExVlanPortTagness         INTEGER,
+        jnxExVlanPortAccessMode      INTEGER
+    }
+
+jnxExVlanPortGroupIndex OBJECT-TYPE
+    SYNTAX      Integer32(1..65535)
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "Index used so that there can be many different
+        port groups"
+    ::= { jnxExVlanPortGroupEntry 1 }
+
+jnxExVlanPort OBJECT-TYPE
+    SYNTAX      Integer32(1..65535)
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+        "The vlanPort specifies the port in the vlan.By adding a port here,
+        that port will now be part of any VLAN(s) that this port group is
+        associated with."
+    ::= { jnxExVlanPortGroupEntry 2 }
+
+jnxExVlanPortStatus OBJECT-TYPE
+    SYNTAX      INTEGER {
+        autoActive      (1),
+        allowed         (2),
+        allowedActive   (3),
+        allowedNotAvail (4),
+        notAssociated   (5)
+    }
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The status of this port relative to the VLAN that points
+        at this port group.[1.autoactive , 2.allowed, 3.allowedActive
+        4.allowedNotAvail, 5.notAssociated]
+
+        autoActive     : Means that the port is part of this VLAN
+                         because the switch automatically added it.
+        allowed        : Means that the port has been configured so that
+                         if all other criteria (if any) are met, this port
+                         is allowed to be in this VLAN.
+        allowedActive  : Means the same as allowed plus the fact
+                         that there is a device attached to this port and
+                         participating in the VLAN.
+        allowedNotAvail: This value is only needed for devices
+                         that don't allow a port to be in more than one
+                         VLAN at a time.  This value means that this port
+                         also exists in some other VLAN(s) and is active
+                         in another VLAN.  Therefore this port is not
+                         available to be used in this VLAN.
+        notAssociated :  Means that the Port Group is not currently
+                         associated with any VLAN."
+    DEFVAL { allowed }
+    ::= { jnxExVlanPortGroupEntry 3 }
+
+jnxExVlanPortTagness  OBJECT-TYPE
+    SYNTAX      INTEGER {
+        tagged   (1),
+        untagged (2)
+    }
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The VlanPortTaqness gives whether the Port is tagged or untagged."
+    ::= { jnxExVlanPortGroupEntry 4 }
+
+jnxExVlanPortAccessMode  OBJECT-TYPE
+    SYNTAX      INTEGER {
+        access   (1),
+        trunk   (2)
+    }
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The VlanPortAccessMode gives whether the Port is Access or Trunk."
+    ::= { jnxExVlanPortGroupEntry 5 }
+
+END
+
index 70705d0..ed13c81 100644 (file)
@@ -366,10 +366,18 @@ mibs_DATA = \
        IPV6-STATIC-ROUTE-MIB.txt \
        IPV6-TC.txt \
        IPX.txt \
+       JUNIPER-ALARM-MIB.txt \
        JUNIPER-CHASSIS-DEFINES-MIB.txt \
+       JUNIPER-EX-SMI.txt \
+       JUNIPER-FABRIC-CHASSIS.txt \
+       JUNIPER-FABRIC-MIB.txt \
        JUNIPER-IF-MIB.txt \
        JUNIPER-IVE-MIB.txt \
+       JUNIPER-MAC-MIB.txt \
+       JUNIPER-MIB.txt \
+       JUNIPER-POWER-SUPPLY-UNIT-MIB.txt \
        JUNIPER-SMI.txt \
+       JUNIPER-VLAN-MIB.txt \
        JVM-MANAGEMENT-MIB.txt \
        JWAC-MIB.txt \
        L2PROTOCOL-TUNNEL-MIB.txt \
index b290982..4b5ce1f 100644 (file)
@@ -721,6 +721,7 @@ private:
    void buildIndex();
    SNMP_SnapshotIndexEntry *find(const UINT32 *oid, size_t oidLen) const;
    SNMP_SnapshotIndexEntry *find(const TCHAR *oid) const;
+   SNMP_SnapshotIndexEntry *find(const SNMP_ObjectId& oid) const;
 
 public:
    SNMP_Snapshot();
@@ -734,12 +735,24 @@ public:
    EnumerationCallbackResult walk(const UINT32 *baseOid, size_t baseOidLen, EnumerationCallbackResult (*handler)(const SNMP_Variable *, const SNMP_Snapshot *, void *), void *userArg) const;
 
    SNMP_Variable *get(const TCHAR *oid) const;
+   SNMP_Variable *get(const SNMP_ObjectId& oid) const;
    SNMP_Variable *get(const UINT32 *oid, size_t oidLen) const;
    SNMP_Variable *getNext(const TCHAR *oid) const;
+   SNMP_Variable *getNext(const SNMP_ObjectId& oid) const;
    SNMP_Variable *getNext(const UINT32 *oid, size_t oidLen) const;
    SNMP_Variable *first() const { return m_values->get(0); }
    SNMP_Variable *last() const { return m_values->get(m_values->size() - 1); }
 
+   UINT32 getAsInt32(const TCHAR *oid) const { SNMP_Variable *v = get(oid); return (v != NULL) ? v->getValueAsInt() : 0; }
+   UINT32 getAsInt32(const SNMP_ObjectId& oid) const { SNMP_Variable *v = get(oid); return (v != NULL) ? v->getValueAsInt() : 0; }
+   UINT32 getAsInt32(const UINT32 *oid, size_t oidLen) const { SNMP_Variable *v = get(oid, oidLen); return (v != NULL) ? v->getValueAsInt() : 0; }
+   UINT32 getAsUInt32(const TCHAR *oid) const { SNMP_Variable *v = get(oid); return (v != NULL) ? v->getValueAsUInt() : 0; }
+   UINT32 getAsUInt32(const SNMP_ObjectId& oid) const { SNMP_Variable *v = get(oid); return (v != NULL) ? v->getValueAsUInt() : 0; }
+   UINT32 getAsUInt32(const UINT32 *oid, size_t oidLen) const { SNMP_Variable *v = get(oid, oidLen); return (v != NULL) ? v->getValueAsUInt() : 0; }
+   TCHAR *getAsString(const TCHAR *oid, TCHAR *buffer, size_t bufferSize) const { SNMP_Variable *v = get(oid); if (v != NULL) { v->getValueAsString(buffer, bufferSize); return buffer; } return NULL; }
+   TCHAR *getAsString(const SNMP_ObjectId& oid, TCHAR *buffer, size_t bufferSize) const { SNMP_Variable *v = get(oid); if (v != NULL) { v->getValueAsString(buffer, bufferSize); return buffer; } return NULL; }
+   TCHAR *getAsString(const UINT32 *oid, size_t oidLen, TCHAR *buffer, size_t bufferSize) const { SNMP_Variable *v = get(oid, oidLen); if (v != NULL) { v->getValueAsString(buffer, bufferSize); return buffer; } return NULL; }
+
    int size() const { return m_values->size(); }
    bool isEmpty() const { return m_values->size() == 0; }
 };
index 47fb183..5e2feb8 100644 (file)
@@ -3,6 +3,9 @@
        <name>juniper</name>
        <comment></comment>
        <projects>
+               <project>libnetxms</project>
+               <project>libnxsnmp</project>
+               <project>libnxsrv</project>
        </projects>
        <buildSpec>
                <buildCommand>
index f531ce8..362e5de 100644 (file)
@@ -82,44 +82,6 @@ void JuniperDriver::analyzeDevice(SNMP_Transport *snmp, const TCHAR *oid, String
 }
 
 /**
- * Handler for walking slot numbers
- */
-static UINT32 SlotWalkHandler(SNMP_Variable *var, SNMP_Transport *snmp, void *arg)
-{
-   int slot = var->getValueAsInt();
-   if (slot > 0)
-   {
-      InterfaceList *ifList = (InterfaceList *)arg;
-      InterfaceInfo *iface = ifList->findByIfIndex(var->getName().getElement(var->getName().length() - 1));
-      if ((iface != NULL) && (iface->type == IFTYPE_ETHERNET_CSMACD))
-      {
-         iface->isPhysicalPort = true;
-         iface->slot = slot - 1;  // Juniper numbers slots from 0 but reports in SNMP as n + 1
-      }
-   }
-   return SNMP_ERR_SUCCESS;
-}
-
-/**
- * Handler for walking port numbers
- */
-static UINT32 PortWalkHandler(SNMP_Variable *var, SNMP_Transport *snmp, void *arg)
-{
-   int port = var->getValueAsInt();
-   if (port > 0)
-   {
-      InterfaceList *ifList = (InterfaceList *)arg;
-      InterfaceInfo *iface = ifList->findByIfIndex(var->getName().getElement(var->getName().length() - 1));
-      if ((iface != NULL) && (iface->type == IFTYPE_ETHERNET_CSMACD))
-      {
-         iface->isPhysicalPort = true;
-         iface->port = port - 1;  // Juniper numbers ports from 0 but reports in SNMP as n + 1
-      }
-   }
-   return SNMP_ERR_SUCCESS;
-}
-
-/**
  * Get list of interfaces for given node
  *
  * @param snmp SNMP transport
@@ -132,11 +94,31 @@ InterfaceList *JuniperDriver::getInterfaces(SNMP_Transport *snmp, StringMap *att
        if (ifList == NULL)
                return NULL;
 
-       // Slot numbers
-   SnmpWalk(snmp, _T(".1.3.6.1.4.1.2636.3.3.2.1.1"), SlotWalkHandler, ifList);
+       // Update physical port locations
+       SNMP_Snapshot *chassisTable = SNMP_Snapshot::create(snmp, _T(".1.3.6.1.4.1.2636.3.3.2.1"));
+       for(int i = 0; i < ifList->size(); i++)
+       {
+          InterfaceInfo *iface = ifList->get(i);
+          if (iface->type != IFTYPE_ETHERNET_CSMACD)
+             continue;
+
+          SNMP_ObjectId oid = SNMP_ObjectId::parse(_T(".1.3.6.1.4.1.2636.3.3.2.1.1"));
+          oid.extend(iface->index);
+          int slot = chassisTable->getAsInt32(oid);
+
+      oid.changeElement(oid.length() - 2, 2);
+      int pic = chassisTable->getAsInt32(oid);
+
+          oid.changeElement(oid.length() - 2, 3);
+      int port = chassisTable->getAsInt32(oid);
+
+      if ((slot == 0) || (pic != 1) || (port == 0))   // FIXME: support for multiple PICs in one slot
+         continue;
 
-   // Port numbers
-   SnmpWalk(snmp, _T(".1.3.6.1.4.1.2636.3.3.2.1.3"), PortWalkHandler, ifList);
+      iface->isPhysicalPort = true;
+      iface->slot = slot - 1;  // Juniper numbers slots from 0 but reports in SNMP as n + 1
+      iface->port = port - 1;  // Juniper numbers ports from 0 but reports in SNMP as n + 1
+       }
 
        return ifList;
 }
index d176d10..22ec7a5 100644 (file)
@@ -86,6 +86,16 @@ SNMP_SnapshotIndexEntry *SNMP_Snapshot::find(const UINT32 *oid, size_t oidLen) c
 /**
  * Find OID index entry by OID
  */
+SNMP_SnapshotIndexEntry *SNMP_Snapshot::find(const SNMP_ObjectId& oid) const
+{
+   SNMP_SnapshotIndexEntry *entry;
+   HASH_FIND(hh, m_index, oid.value(), (unsigned int)(oid.length() * sizeof(UINT32)), entry);
+   return entry;
+}
+
+/**
+ * Find OID index entry by OID
+ */
 SNMP_SnapshotIndexEntry *SNMP_Snapshot::find(const TCHAR *oid) const
 {
    UINT32 binOid[MAX_OID_LEN];
@@ -142,6 +152,15 @@ SNMP_Variable *SNMP_Snapshot::get(const TCHAR *oid) const
 /**
  * Get variable
  */
+SNMP_Variable *SNMP_Snapshot::get(const SNMP_ObjectId& oid) const
+{
+   SNMP_SnapshotIndexEntry *entry = find(oid);
+   return (entry != NULL) ? entry->var : NULL;
+}
+
+/**
+ * Get variable
+ */
 SNMP_Variable *SNMP_Snapshot::get(const UINT32 *oid, size_t oidLen) const
 {
    SNMP_SnapshotIndexEntry *entry = find(oid, oidLen);
@@ -163,6 +182,14 @@ SNMP_Variable *SNMP_Snapshot::getNext(const TCHAR *oid) const
 /**
  * Get next variable for given OID
  */
+SNMP_Variable *SNMP_Snapshot::getNext(const SNMP_ObjectId& oid) const
+{
+   return getNext(oid.value(), oid.length());
+}
+
+/**
+ * Get next variable for given OID
+ */
 SNMP_Variable *SNMP_Snapshot::getNext(const UINT32 *oid, size_t oidLen) const
 {
    SNMP_SnapshotIndexEntry *entry = find(oid, oidLen);