add MIB-based validation and generic profile tests

- Add MIB files from LibreNMS in priv/mibs/ for reference
- Create MibParser module to validate OIDs against official MIB definitions
- Add MIB validation tests to ensure hardcoded OIDs match MIB specs
- Refactor SNMP tests to be generic/behavior-focused instead of vendor-specific
- Remove vendor-specific test files (cisco_test, net_snmp_test)
- All 104 tests passing with automated OID validation
This commit is contained in:
Graham McIntire 2026-01-08 08:57:21 -06:00
parent d8e29abf09
commit 96bd8b3829
No known key found for this signature in database
14 changed files with 16317 additions and 3 deletions

View file

@ -0,0 +1,172 @@
defmodule Towerops.Snmp.MibParser do
@moduledoc """
Simple MIB file parser for extracting OID definitions.
This parser extracts OID assignments from MIB files for validation purposes.
It's not a full ASN.1 parser - just enough to validate our hardcoded OIDs
against the official MIB definitions.
## Usage
iex> MibParser.parse_mib_file("priv/mibs/standard/IF-MIB")
{:ok, %{
"ifIndex" => "1.3.6.1.2.1.2.2.1.1",
"ifDescr" => "1.3.6.1.2.1.2.2.1.2",
...
}}
"""
require Logger
@doc """
Parse a MIB file and return a map of object names to OID strings.
"""
@spec parse_mib_file(String.t()) :: {:ok, %{String.t() => String.t()}} | {:error, term()}
def parse_mib_file(path) do
case File.read(path) do
{:ok, content} ->
oids = parse_mib_content(content)
{:ok, oids}
{:error, reason} = error ->
Logger.error("Failed to read MIB file #{path}: #{inspect(reason)}")
error
end
end
@doc """
Parse MIB content and extract OID definitions.
"""
@spec parse_mib_content(String.t()) :: %{String.t() => String.t()}
def parse_mib_content(content) do
# First, build a map of object assignments (e.g., "ifTable ::= { interfaces 2 }")
assignments = extract_assignments(content)
# Then resolve all OIDs by following the assignment chain
resolve_oids(assignments)
end
@doc """
Validate that a given OID matches the definition in a MIB file.
"""
@spec validate_oid(String.t(), String.t(), String.t()) :: :ok | {:error, String.t()}
def validate_oid(mib_file, object_name, expected_oid) do
case parse_mib_file(mib_file) do
{:ok, oids} ->
case Map.get(oids, object_name) do
^expected_oid ->
:ok
actual_oid when is_binary(actual_oid) ->
{:error, "OID mismatch for #{object_name}: expected #{expected_oid}, got #{actual_oid}"}
nil ->
{:error, "Object #{object_name} not found in MIB"}
end
{:error, reason} ->
{:error, "Failed to parse MIB: #{inspect(reason)}"}
end
end
# Private functions
defp extract_assignments(content) do
# Match patterns like:
# objectName OBJECT-TYPE ::= { parent index }
# objectName OBJECT IDENTIFIER ::= { parent index }
# We'll extract: objectName, parent, index
# Remove comments (lines starting with --)
content = Regex.replace(~r/--.*$/m, content, "")
# Match assignment patterns
# This regex captures: name, parent, and index
~r/(\w+)\s+(?:OBJECT-TYPE|OBJECT\s+IDENTIFIER)[^:]*::=\s*\{\s*(\w+)\s+(\d+)\s*\}/
|> Regex.scan(content)
|> Map.new(fn [_, name, parent, index] ->
{name, {parent, index}}
end)
end
defp resolve_oids(assignments) do
# Well-known root OIDs
roots = %{
"iso" => "1",
"org" => "1.3",
"dod" => "1.3.6",
"internet" => "1.3.6.1",
"directory" => "1.3.6.1.1",
"mgmt" => "1.3.6.1.2",
"mib-2" => "1.3.6.1.2.1",
"experimental" => "1.3.6.1.3",
"private" => "1.3.6.1.4",
"enterprises" => "1.3.6.1.4.1",
"security" => "1.3.6.1.5",
"snmpV2" => "1.3.6.1.6",
"snmpModules" => "1.3.6.1.6.3"
}
# Build OID map by recursively resolving assignments
Enum.reduce(assignments, roots, fn {name, {parent, index}}, acc ->
case resolve_oid(parent, index, acc, assignments) do
{:ok, oid} -> Map.put(acc, name, oid)
:error -> acc
end
end)
end
defp resolve_oid(parent, index, resolved, assignments) do
cond do
# Parent already resolved
Map.has_key?(resolved, parent) ->
{:ok, "#{resolved[parent]}.#{index}"}
# Parent needs to be resolved from assignments
Map.has_key?(assignments, parent) ->
{grandparent, parent_index} = assignments[parent]
case resolve_oid(grandparent, parent_index, resolved, assignments) do
{:ok, parent_oid} ->
{:ok, "#{parent_oid}.#{index}"}
:error ->
:error
end
# Can't resolve
true ->
:error
end
end
@doc """
List all MIB files in the priv/mibs directory.
"""
@spec list_mib_files() :: [String.t()]
def list_mib_files do
mibs_dir = Application.app_dir(:towerops, "priv/mibs")
case File.ls(mibs_dir) do
{:ok, subdirs} ->
Enum.flat_map(subdirs, &list_mib_files_in_subdir(mibs_dir, &1))
{:error, _} ->
[]
end
end
defp list_mib_files_in_subdir(mibs_dir, subdir) do
subdir_path = Path.join(mibs_dir, subdir)
case File.ls(subdir_path) do
{:ok, files} ->
files
|> Enum.filter(&String.ends_with?(&1, "MIB"))
|> Enum.map(&Path.join([mibs_dir, subdir, &1]))
{:error, _} ->
[]
end
end
end

View file

@ -1,5 +1,5 @@
%{
"bandit": {:hex, :bandit, "1.9.0", "6dc1ff2c30948dfecf32db574cc3447c7b9d70e0b61140098df3818870b01b76", [:mix], [{:hpax, "~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.18", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "2538aaa1663b40ca9cbd8ca1f8a540cb49e5baf34c6ffef068369cc45f9146f2"},
"bandit": {:hex, :bandit, "1.10.1", "6b1f8609d947ae2a74da5bba8aee938c94348634e54e5625eef622ca0bbbb062", [:mix], [{:hpax, "~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.18", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "4b4c35f273030e44268ace53bf3d5991dfc385c77374244e2f960876547671aa"},
"bcrypt_elixir": {:hex, :bcrypt_elixir, "3.3.2", "d50091e3c9492d73e17fc1e1619a9b09d6a5ef99160eb4d736926fd475a16ca3", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "471be5151874ae7931911057d1467d908955f93554f7a6cd1b7d804cac8cef53"},
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
"cc_precompiler": {:hex, :cc_precompiler, "0.1.11", "8c844d0b9fb98a3edea067f94f616b3f6b29b959b6b3bf25fee94ffe34364768", [:mix], [{:elixir_make, "~> 0.7", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "3427232caf0835f94680e5bcf082408a70b48ad68a5f5c0b02a3bea9f3a075b9"},
@ -45,12 +45,12 @@
"plug": {:hex, :plug, "1.19.1", "09bac17ae7a001a68ae393658aa23c7e38782be5c5c00c80be82901262c394c0", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "560a0017a8f6d5d30146916862aaf9300b7280063651dd7e532b8be168511e62"},
"plug_crypto": {:hex, :plug_crypto, "2.1.1", "19bda8184399cb24afa10be734f84a16ea0a2bc65054e23a62bb10f06bc89491", [:mix], [], "hexpm", "6470bce6ffe41c8bd497612ffde1a7e4af67f36a15eea5f921af71cf3e11247c"},
"postgrex": {:hex, :postgrex, "0.21.1", "2c5cc830ec11e7a0067dd4d623c049b3ef807e9507a424985b8dcf921224cd88", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "27d8d21c103c3cc68851b533ff99eef353e6a0ff98dc444ea751de43eb48bdac"},
"req": {:hex, :req, "0.5.16", "99ba6a36b014458e52a8b9a0543bfa752cb0344b2a9d756651db1281d4ba4450", [:mix], [{:brotli, "~> 0.3.1", [hex: :brotli, repo: "hexpm", optional: true]}, {:ezstd, "~> 1.0", [hex: :ezstd, repo: "hexpm", optional: true]}, {:finch, "~> 0.17", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 2.0.6 or ~> 2.1", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "974a7a27982b9b791df84e8f6687d21483795882a7840e8309abdbe08bb06f09"},
"req": {:hex, :req, "0.5.17", "0096ddd5b0ed6f576a03dde4b158a0c727215b15d2795e59e0916c6971066ede", [:mix], [{:brotli, "~> 0.3.1", [hex: :brotli, repo: "hexpm", optional: true]}, {:ezstd, "~> 1.0", [hex: :ezstd, repo: "hexpm", optional: true]}, {:finch, "~> 0.17", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 2.0.6 or ~> 2.1", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "0b8bc6ffdfebbc07968e59d3ff96d52f2202d0536f10fef4dc11dc02a2a43e39"},
"snmpkit": {:hex, :snmpkit, "1.3.19", "b09c38cea619a0a67d4fb0f3bfa3b9b749d42c400c2e7bd9446fef82f0d728a7", [:mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}, {:yaml_elixir, "~> 2.9", [hex: :yaml_elixir, repo: "hexpm", optional: true]}], "hexpm", "b05c1f3911204c4d781234187a6f1350c369fcffe2058a85b49735b1259eb973"},
"sobelow": {:hex, :sobelow, "0.14.1", "2f81e8632f15574cba2402bcddff5497b413c01e6f094bc0ab94e83c2f74db81", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8fac9a2bd90fdc4b15d6fca6e1608efb7f7c600fa75800813b794ee9364c87f2"},
"stream_data": {:hex, :stream_data, "1.2.0", "58dd3f9e88afe27dc38bef26fce0c84a9e7a96772b2925c7b32cd2435697a52b", [:mix], [], "hexpm", "eb5c546ee3466920314643edf68943a5b14b32d1da9fe01698dc92b73f89a9ed"},
"styler": {:hex, :styler, "1.10.0", "343f1f7bb19a8893c2841a9ae90665b68d2edf6cc37b964a5099e60c78815c2e", [:mix], [], "hexpm", "6a78876611869466139e63722df4cbbb56b18a842d88c19f23ca844d914ad91a"},
"swoosh": {:hex, :swoosh, "1.19.9", "4eb2c471b8cf06adbdcaa1d57a0ad53c0ed9348ce8586a06cc491f9f0dbcb553", [:mix], [{:bandit, ">= 1.0.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:idna, "~> 6.0", [hex: :idna, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mua, "~> 0.2.3", [hex: :mua, repo: "hexpm", optional: true]}, {:multipart, "~> 0.4", [hex: :multipart, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:req, "~> 0.5.10 or ~> 0.6 or ~> 1.0", [hex: :req, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "516898263a64925c31723c56bc7999a26e97b04e869707f681f4c9bca7ee1688"},
"swoosh": {:hex, :swoosh, "1.20.0", "b04134c2b302da74c3a95ca4ddde191e4854d2847d6687783fecb023a9647598", [:mix], [{:bandit, ">= 1.0.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:idna, "~> 6.0", [hex: :idna, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mua, "~> 0.2.3", [hex: :mua, repo: "hexpm", optional: true]}, {:multipart, "~> 0.4", [hex: :multipart, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:req, "~> 0.5.10 or ~> 0.6 or ~> 1.0", [hex: :req, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "13e610f709bae54851d68afb6862882aa646e5c974bf49e3bf5edd84a73cf213"},
"table_rex": {:hex, :table_rex, "4.1.0", "fbaa8b1ce154c9772012bf445bfb86b587430fb96f3b12022d3f35ee4a68c918", [:mix], [], "hexpm", "95932701df195d43bc2d1c6531178fc8338aa8f38c80f098504d529c43bc2601"},
"tailwind": {:hex, :tailwind, "0.4.1", "e7bcc222fe96a1e55f948e76d13dd84a1a7653fb051d2a167135db3b4b08d3e9", [:mix], [], "hexpm", "6249d4f9819052911120dbdbe9e532e6bd64ea23476056adb7f730aa25c220d1"},
"telemetry": {:hex, :telemetry, "1.3.0", "fedebbae410d715cf8e7062c96a1ef32ec22e764197f70cda73d82778d61e7a2", [:rebar3], [], "hexpm", "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"},

56
priv/mibs/README.md Normal file
View file

@ -0,0 +1,56 @@
# SNMP MIB Files
This directory contains SNMP MIB (Management Information Base) files used by Towerops for network device monitoring.
## Directory Structure
- `standard/` - Standard IETF/IANA MIBs (IF-MIB, ENTITY-MIB, etc.)
- `cisco/` - Cisco vendor-specific MIBs
- `mikrotik/` - MikroTik vendor-specific MIBs
- `net-snmp/` - Net-SNMP specific MIBs (LM-SENSORS, UCD-SNMP)
## Source
MIB files are sourced from the [LibreNMS project](https://github.com/librenms/librenms/tree/master/mibs), which maintains a comprehensive collection of vendor MIBs.
## Purpose
These MIB files serve as:
1. **Reference Documentation** - Authoritative source for OID definitions
2. **Validation** - Tests verify that hardcoded OIDs in profile modules match MIB definitions
3. **Discovery** - Can be browsed to understand available SNMP objects
## Usage in Code
Profile modules (e.g., `Towerops.Snmp.Profiles.Cisco`) contain hardcoded OID strings for performance. These are validated against MIB files during testing to ensure accuracy.
Example from `Towerops.Snmp.Profiles.Base`:
```elixir
@interface_oids %{
if_index: "1.3.6.1.2.1.2.2.1.1", # Validated against IF-MIB
if_descr: "1.3.6.1.2.1.2.2.1.2" # Validated against IF-MIB
}
```
## Adding New MIBs
To add support for a new vendor:
1. Create a directory: `priv/mibs/vendor_name/`
2. Download MIB files from LibreNMS or vendor
3. Add OID references in the appropriate profile module
4. Tests will automatically validate against the new MIBs
## MIB File Format
MIB files use ASN.1 (Abstract Syntax Notation One) format, which defines:
- Object identifiers (OIDs)
- Data types
- Access levels
- Descriptions
## Testing
See `test/towerops/snmp/mib_validation_test.exs` for OID validation tests.

View file

@ -0,0 +1,943 @@
-- *****************************************************************
-- CISCO-ENTITY-SENSOR-MIB
--
-- November 1997, Cliff L. Sojourner
--
-- Copyright (c) 1998-2003-2006, 2013, 2015 by cisco Systems Inc.
-- All rights reserved.
-- *****************************************************************
CISCO-ENTITY-SENSOR-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY,
OBJECT-TYPE,
NOTIFICATION-TYPE,
Integer32
FROM SNMPv2-SMI
MODULE-COMPLIANCE,
OBJECT-GROUP,
NOTIFICATION-GROUP
FROM SNMPv2-CONF
TEXTUAL-CONVENTION,
TimeStamp,
TruthValue
FROM SNMPv2-TC
entPhysicalIndex
FROM ENTITY-MIB
EntPhysicalIndexOrZero
FROM CISCO-TC
ciscoMgmt
FROM CISCO-SMI;
ciscoEntitySensorMIB MODULE-IDENTITY
LAST-UPDATED "201501150000Z"
ORGANIZATION "Cisco Systems, Inc."
CONTACT-INFO
"Postal: Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134-1706
USA
Tel: +1 408 526 4000
E-mail: cs-snmp@cisco.com"
DESCRIPTION
"The CISCO-ENTITY-SENSOR-MIB is used to monitor
the values of sensors in the Entity-MIB (RFC 2037)
entPhysicalTable."
REVISION "201501150000Z"
DESCRIPTION
"Corrected the definition of entSensorPrecision."
REVISION "201309210000Z"
DESCRIPTION
"Added entSensorThresholdRecoveryNotification to
entitySensorMIBNotifications.
Added entSensorThresholdSeverity as a varbind
object to entSensorThresholdNotification.
Added entitySensorNotificationGroup
and deprecated
entitySensorThresholdNotificationGroup.
Added entSensorThresholdNotification and
entSensorThresholdRecoveryNotification to
entitySensorNotificationGroup.
Added entitySensorMIBComplianceV05 and
deprecated entitySensorMIBComplianceV04."
REVISION "200711120000Z"
DESCRIPTION
"Added entitySensorNotifCtrlGlobalGroup."
REVISION "200601010000Z"
DESCRIPTION
"Add new object entSensorMeasuredEntity to
entSensorValueTable."
REVISION "200509080000Z"
DESCRIPTION
"Change the module descriptor name from entitySensorMIB
to ciscoEntitySensorMIB since ENTITY-SENSOR-MIB also
uses the same name and there is a conflict."
REVISION "200301070000Z"
DESCRIPTION
"[1] Add dBm(14) in SensorDataType."
REVISION "200210160000Z"
DESCRIPTION
"[1] Add critical(30) in CSensorThresholdSeverity.
[2] Change to MAX-ACCESS read-write for 3 objects.
[3] Add entitySensorMIBComplianceV02."
REVISION "200006200000Z"
DESCRIPTION
"Initial version of this MIB module."
::= { ciscoMgmt 91 }
entitySensorMIBObjects OBJECT IDENTIFIER
::= { ciscoEntitySensorMIB 1 }
entitySensorMIBNotificationPrefix OBJECT IDENTIFIER
::= { ciscoEntitySensorMIB 2 }
entitySensorMIBConformance OBJECT IDENTIFIER
::= { ciscoEntitySensorMIB 3 }
-- textual conventions
SensorDataType ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"sensor measurement data types. valid values are:
other(1): a measure other than those listed below
unknown(2): unknown measurement, or
arbitrary, relative numbers
voltsAC(3): electric potential
voltsDC(4): electric potential
amperes(5): electric current
watts(6): power
hertz(7): frequency
celsius(8): temperature
percentRH(9): percent relative humidity
rpm(10): shaft revolutions per minute
cmm(11),: cubic meters per minute (airflow)
truthvalue(12): value takes { true(1), false(2) }
specialEnum(13): value takes user defined enumerated values
dBm(14): dB relative to 1mW of power"
SYNTAX INTEGER {
other(1),
unknown(2),
voltsAC(3),
voltsDC(4),
amperes(5),
watts(6),
hertz(7),
celsius(8),
percentRH(9),
rpm(10),
cmm(11),
truthvalue(12),
specialEnum(13),
dBm(14)
}
SensorDataScale ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"International System of Units (SI) prefixes."
SYNTAX INTEGER {
yocto(1), -- 10^-24
zepto(2), -- 10^-21
atto(3), -- 10^-18
femto(4), -- 10^-15
pico(5), -- 10^-12
nano(6), -- 10^-9
micro(7), -- 10^-6
milli(8), -- 10^-3
units(9), -- 10^0
kilo(10), -- 10^3
mega(11), -- 10^6
giga(12), -- 10^9
tera(13), -- 10^12
exa(14), -- 10^15
peta(15), -- 10^18
zetta(16), -- 10^21
yotta(17) -- 10^24
}
SensorPrecision ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"When in the range 1 to 9, SensorPrecision is the number
of decimal places in the fractional part of
a SensorValue fixed-point number. When in the range -8 to
-1, SensorPrecision is the number of accurate digits in
a SensorValue fixed-point number.
SensorPrecision is 0 for non-fixed-point numbers.
Agent implementors must choose a value for SensorPrecision
so that the precision and accuracy of a SensorValue is
correctly indicated.
For example, a temperature sensor that can measure 0o to
100o C in 0.1o increments, +/- 0.05o, would have a
SensorPrecision of 1, a SensorDataScale of units(0), and a
SensorValue ranging from 0 to 1000.
The SensorValue would be interpreted as (degrees C * 10).
If that temperature sensor's precision were 0.1o but its
accuracy were only +/- 0.5o, then the SensorPrecision would
be 0. The SensorValue would be interpreted as degrees C.
Another example: a fan rotation speed sensor that measures RPM
from 0 to 10,000 in 100 RPM increments, with an accuracy of
+50/-37 RPM, would have a SensorPrecision of -2, a
SensorDataScale of units(9), and a SensorValue ranging from 0
to 10000. The 10s and 1s digits of SensorValue would always
be 0."
SYNTAX INTEGER (-8..9)
SensorValue ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"For sensors that measure voltsAC, voltsDC,
amperes, watts, hertz, celsius, cmm
this item is a fixed point number ranging from
-999,999,999 to +999,999,999. Use the value
-1000000000 to indicate underflow. Use the value
+1000000000 to indicate overflow. Use SensorPrecision
to indicate how many fractional digits the SensorValue
has.
For sensors that measure percentRH, this item
is a number ranging from 0 to 100.
For sensors that measure rpm, this item
can take only nonnegative values, 0..999999999.
For sensors of type truthvalue, this item
can take only two values: true(1), false(2).
For sensors of type specialEnum, this item
can take any value in the range (-1000000000..1000000000),
but the meaning of each value is specific to the
sensor.
For sensors of type other and unknown,
this item can take any value in the range
(-1000000000..1000000000), but the meaning of the values
are specific to the sensor.
Use Entity-MIB entPhysicalTable.entPhysicalVendorType
to learn about the sensor type."
SYNTAX INTEGER (-1000000000..1000000000)
SensorStatus ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"Indicates the operational status of the sensor.
ok(1) means the agent can read the sensor
value.
unavailable(2) means that the agent presently
can not report the sensor value.
nonoperational(3) means that the agent believes
the sensor is broken. The sensor could have a
hard failure (disconnected wire), or a soft failure
such as out-of-range, jittery, or wildly fluctuating
readings."
SYNTAX INTEGER {
ok(1),
unavailable(2),
nonoperational(3)
}
SensorValueUpdateRate ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"Indicates the interval in seconds between updates to the
sensor's value.
The value zero indicates:
- the sensor value is updated on demand (when polled by the
agent for a get-request),
- or when the sensor value changes (event-driven),
- or the agent does not know the rate"
SYNTAX INTEGER (0..999999999)
SensorThresholdSeverity ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"sensor threshold severity. Valid values are:
other(1) : a severity other than those listed below.
minor(10) : Minor Problem threshold.
major(20) : Major Problem threshold.
critical(30): Critical problem threshold. A system might shut
down the sensor associated FRU automatically if
the sensor value reach the critical problem
threshold."
SYNTAX INTEGER {
other(1),
minor(10),
major(20),
critical(30)
}
SensorThresholdRelation ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"sensor threshold relational operator types. valid values are:
lessThan(1): if the sensor value is less than
the threshold value
lessOrEqual(2): if the sensor value is less than or equal to
the threshold value
greaterThan(3): if the sensor value is greater than
the threshold value
greaterOrEqual(4): if the sensor value is greater than or equal
to the threshold value
equalTo(5): if the sensor value is equal to
the threshold value
notEqualTo(6): if the sensor value is not equal to
the threshold value"
SYNTAX INTEGER {
lessThan(1),
lessOrEqual(2),
greaterThan(3),
greaterOrEqual(4),
equalTo(5),
notEqualTo(6)
}
-- MIB variables
entSensorValues OBJECT IDENTIFIER
::= { entitySensorMIBObjects 1 }
entSensorThresholds OBJECT IDENTIFIER
::= { entitySensorMIBObjects 2 }
entSensorGlobalObjects OBJECT IDENTIFIER
::= { entitySensorMIBObjects 3 }
-- entSensorValueTable
entSensorValueTable OBJECT-TYPE
SYNTAX SEQUENCE OF EntSensorValueEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table lists the type, scale, and present value
of a sensor listed in the Entity-MIB entPhysicalTable."
::= { entSensorValues 1 }
entSensorValueEntry OBJECT-TYPE
SYNTAX EntSensorValueEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entSensorValueTable entry describes the
present reading of a sensor, the measurement units
and scale, and sensor operational status."
INDEX { entPhysicalIndex }
::= { entSensorValueTable 1 }
EntSensorValueEntry ::= SEQUENCE {
entSensorType SensorDataType,
entSensorScale SensorDataScale,
entSensorPrecision SensorPrecision,
entSensorValue SensorValue,
entSensorStatus SensorStatus,
entSensorValueTimeStamp TimeStamp,
entSensorValueUpdateRate SensorValueUpdateRate,
entSensorMeasuredEntity EntPhysicalIndexOrZero
}
entSensorType OBJECT-TYPE
SYNTAX SensorDataType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This variable indicates the type of data
reported by the entSensorValue.
This variable is set by the agent at start-up
and the value does not change during operation."
::= { entSensorValueEntry 1 }
entSensorScale OBJECT-TYPE
SYNTAX SensorDataScale
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This variable indicates the exponent to apply
to sensor values reported by entSensorValue.
This variable is set by the agent at start-up
and the value does not change during operation."
::= { entSensorValueEntry 2 }
entSensorPrecision OBJECT-TYPE
SYNTAX SensorPrecision
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This variable indicates the number of decimal
places of precision in fixed-point
sensor values reported by entSensorValue.
This variable is set to 0 when entSensorType
is not a fixed-point type: e.g.'percentRH(9)',
'rpm(10)', 'cmm(11)', or 'truthvalue(12)'.
This variable is set by the agent at start-up
and the value does not change during operation."
::= { entSensorValueEntry 3 }
entSensorValue OBJECT-TYPE
SYNTAX SensorValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This variable reports the most recent measurement seen
by the sensor.
To correctly display or interpret this variable's value,
you must also know entSensorType, entSensorScale, and
entSensorPrecision.
However, you can compare entSensorValue with the threshold
values given in entSensorThresholdTable without any semantic
knowledge."
::= { entSensorValueEntry 4 }
entSensorStatus OBJECT-TYPE
SYNTAX SensorStatus
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This variable indicates the present operational status
of the sensor."
::= { entSensorValueEntry 5 }
entSensorValueTimeStamp OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This variable indicates the age of the value reported by
entSensorValue"
::= { entSensorValueEntry 6 }
entSensorValueUpdateRate OBJECT-TYPE
SYNTAX SensorValueUpdateRate
UNITS "seconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This variable indicates the rate that the agent
updates entSensorValue."
::= { entSensorValueEntry 7 }
entSensorMeasuredEntity OBJECT-TYPE
SYNTAX EntPhysicalIndexOrZero
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object identifies the physical entity for which the
sensor is taking measurements. For example, for a sensor
measuring the voltage output of a power-supply, this object
would be the entPhysicalIndex of that power-supply; for a sensor
measuring the temperature inside one chassis of a multi-chassis
system, this object would be the enPhysicalIndex of that
chassis.
This object has a value of zero when the physical entity
for which the sensor is taking measurements can not be
represented by any one row in the entPhysicalTable, or that
there is no such physical entity."
::= { entSensorValueEntry 8 }
-- entSensorThresholdTable
entSensorThresholdTable OBJECT-TYPE
SYNTAX SEQUENCE OF EntSensorThresholdEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table lists the threshold severity, relation, and
comparison value, for a sensor listed in the Entity-MIB
entPhysicalTable."
::= { entSensorThresholds 1 }
entSensorThresholdEntry OBJECT-TYPE
SYNTAX EntSensorThresholdEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entSensorThresholdTable entry describes the
thresholds for a sensor: the threshold severity,
the threshold value, the relation, and the
evaluation of the threshold.
Only entities of type sensor(8) are listed in this table.
Only pre-configured thresholds are listed in this table.
Users can create sensor-value monitoring instruments
in different ways, such as RMON alarms, Expression-MIB, etc.
Entries are created by the agent at system startup and
FRU insertion. Entries are deleted by the agent at
FRU removal."
INDEX {
entPhysicalIndex,
entSensorThresholdIndex
}
::= { entSensorThresholdTable 1 }
EntSensorThresholdEntry ::= SEQUENCE {
entSensorThresholdIndex Integer32,
entSensorThresholdSeverity SensorThresholdSeverity,
entSensorThresholdRelation SensorThresholdRelation,
entSensorThresholdValue SensorValue,
entSensorThresholdEvaluation TruthValue,
entSensorThresholdNotificationEnable TruthValue
}
entSensorThresholdIndex OBJECT-TYPE
SYNTAX Integer32 (1..99999999)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An index that uniquely identifies an entry
in the entSensorThresholdTable. This index
permits the same sensor to have several
different thresholds."
::= { entSensorThresholdEntry 1 }
entSensorThresholdSeverity OBJECT-TYPE
SYNTAX SensorThresholdSeverity
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This variable indicates the severity of this threshold."
::= { entSensorThresholdEntry 2 }
entSensorThresholdRelation OBJECT-TYPE
SYNTAX SensorThresholdRelation
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This variable indicates the relation between sensor value
(entSensorValue) and threshold value (entSensorThresholdValue),
required to trigger the alarm. when evaluating the relation,
entSensorValue is on the left of entSensorThresholdRelation,
entSensorThresholdValue is on the right.
in pseudo-code, the evaluation-alarm mechanism is:
...
if (entSensorStatus == ok) then
if (evaluate(entSensorValue, entSensorThresholdRelation,
entSensorThresholdValue))
then
if (entSensorThresholdNotificationEnable == true))
then
raise_alarm(sensor's entPhysicalIndex);
endif
endif
endif
..."
::= { entSensorThresholdEntry 3 }
entSensorThresholdValue OBJECT-TYPE
SYNTAX SensorValue
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This variable indicates the value of the threshold.
To correctly display or interpret this variable's value,
you must also know entSensorType, entSensorScale, and
entSensorPrecision.
However, you can directly compare entSensorValue
with the threshold values given in entSensorThresholdTable
without any semantic knowledge."
::= { entSensorThresholdEntry 4 }
entSensorThresholdEvaluation OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This variable indicates the result of the most
recent evaluation of the threshold. If the threshold
condition is true, entSensorThresholdEvaluation
is true(1). If the threshold condition is false,
entSensorThresholdEvaluation is false(2).
Thresholds are evaluated at the rate indicated by
entSensorValueUpdateRate."
::= { entSensorThresholdEntry 5 }
entSensorThresholdNotificationEnable OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This variable controls generation of
entSensorThresholdNotification for this threshold.
When this variable is 'true', generation of
entSensorThresholdNotification is enabled for this
threshold. When this variable is 'false',
generation of entSensorThresholdNotification is
disabled for this threshold."
::= { entSensorThresholdEntry 6 }
-- Entity Sensor Global Objects
entSensorThreshNotifGlobalEnable OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This variable enables the generation of
entSensorThresholdNotification globally
on the device. If this object value is
'false', then no entSensorThresholdNotification
will be generated on this device. If this object
value is 'true', then whether a
entSensorThresholdNotification for a threshold will
be generated or not depends on the instance value of
entSensorThresholdNotificationEnable for that
threshold."
::= { entSensorGlobalObjects 1 }
-- notifications
entitySensorMIBNotifications OBJECT IDENTIFIER
::= { entitySensorMIBNotificationPrefix 0 }
entSensorThresholdNotification NOTIFICATION-TYPE
OBJECTS {
entSensorThresholdValue,
entSensorValue,
entSensorThresholdSeverity
}
STATUS current
DESCRIPTION
"The notification is generated when
the sensor value entSensorValue crosses
the threshold value entSensorThresholdValue and
the value of entSensorThreshNotifGlobalEnable is true.
entSensorThresholdSeverity indicates the severity
of this threshold.
The agent implementation guarantees prompt, timely
evaluation of threshold and generation of this
notification."
::= { entitySensorMIBNotifications 1 }
entSensorThresholdRecoveryNotification NOTIFICATION-TYPE
OBJECTS {
entSensorValue,
entSensorThresholdSeverity,
entSensorThresholdValue
}
STATUS current
DESCRIPTION
"This notification is generated
as a recovery notification when
the sensor value entSensorValue goes below
the threshold value entSensorThresholdValue
once it has generated entSensorThresholdNotification.
The value of entSensorThreshNotifGlobalEnable needs
to be true.
entSensorThresholdSeverity indicates the severity
of this threshold.
The agent implementation guarantees prompt, timely
evaluation of threshold and generation of this
notification."
::= { entitySensorMIBNotifications 2 }
-- conformance information
entitySensorMIBCompliances OBJECT IDENTIFIER
::= { entitySensorMIBConformance 1 }
entitySensorMIBGroups OBJECT IDENTIFIER
::= { entitySensorMIBConformance 2 }
-- compliance statements
entitySensorMIBComplianceV01 MODULE-COMPLIANCE
STATUS deprecated
DESCRIPTION
"An Entity-MIB implementation that lists
sensors in its entPhysicalTable must implement
this group."
MODULE -- this module
MANDATORY-GROUPS {
entitySensorValueGroup,
entitySensorThresholdGroup,
entitySensorThresholdNotificationGroup
}
::= { entitySensorMIBCompliances 1 }
entitySensorMIBComplianceV02 MODULE-COMPLIANCE
STATUS deprecated
DESCRIPTION
"An Entity-MIB implementation that lists
sensors in its entPhysicalTable must implement
this group."
MODULE -- this module
MANDATORY-GROUPS { entitySensorThresholdGroup }
GROUP entitySensorValueGroup
DESCRIPTION
"This group is mandatory for the systems which don't
support IETF version of ENTITY-SENSOR-MIB."
GROUP entitySensorThresholdNotificationGroup
DESCRIPTION
"This group is mandatory for the systems which support
entitySensorValueGroup group."
OBJECT entSensorThresholdSeverity
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT entSensorThresholdRelation
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT entSensorThresholdValue
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
::= { entitySensorMIBCompliances 2 }
entitySensorMIBComplianceV03 MODULE-COMPLIANCE
STATUS deprecated
DESCRIPTION
"An Entity-MIB implementation that lists
sensors in its entPhysicalTable must implement
this group."
MODULE -- this module
MANDATORY-GROUPS { entitySensorThresholdGroup }
GROUP entitySensorValueGroup
DESCRIPTION
"This group is mandatory for the systems which don't
support IETF version of ENTITY-SENSOR-MIB."
GROUP entitySensorThresholdNotificationGroup
DESCRIPTION
"This group is mandatory for the systems which support
entitySensorValueGroup group."
GROUP entitySensorValueGroupSup1
DESCRIPTION
"This group is mandatory for the systems which support
the correlation between sensor and its measured
physical entity."
OBJECT entSensorThresholdSeverity
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT entSensorThresholdRelation
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT entSensorThresholdValue
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
::= { entitySensorMIBCompliances 3 }
entitySensorMIBComplianceV04 MODULE-COMPLIANCE
STATUS deprecated
DESCRIPTION
"An Entity-MIB implementation that lists
sensors in its entPhysicalTable must implement
this group."
MODULE -- this module
MANDATORY-GROUPS { entitySensorThresholdGroup }
GROUP entitySensorValueGroup
DESCRIPTION
"This group is mandatory for the systems which don't
support IETF version of ENTITY-SENSOR-MIB."
GROUP entitySensorThresholdNotificationGroup
DESCRIPTION
"This group is mandatory for the systems which support
entitySensorValueGroup group."
GROUP entitySensorValueGroupSup1
DESCRIPTION
"This group is mandatory for the systems which support
the correlation between sensor and its measured
physical entity."
GROUP entitySensorNotifCtrlGlobalGroup
DESCRIPTION
"This group is mandatory for the platforms which support
global notification control on
entSensorThresholdNotification."
OBJECT entSensorThresholdSeverity
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT entSensorThresholdRelation
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT entSensorThresholdValue
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
::= { entitySensorMIBCompliances 4 }
entitySensorMIBComplianceV05 MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"An Entity-MIB implementation that lists
sensors in its entPhysicalTable must implement
this group."
MODULE -- this module
MANDATORY-GROUPS { entitySensorThresholdGroup }
GROUP entitySensorValueGroup
DESCRIPTION
"This group is mandatory for the systems
which don't support IETF version of
ENTITY-SENSOR-MIB."
GROUP entitySensorValueGroupSup1
DESCRIPTION
"This group is mandatory for the systems
which don't support IETF version of
ENTITY-SENSOR-MIB."
GROUP entitySensorNotifCtrlGlobalGroup
DESCRIPTION
"This group is mandatory for the systems
which don't support IETF version of
ENTITY-SENSOR-MIB."
GROUP entitySensorNotificationGroup
DESCRIPTION
"This group is mandatory for the systems
which don't support IETF version of
ENTITY-SENSOR-MIB."
OBJECT entSensorThresholdSeverity
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT entSensorThresholdRelation
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
OBJECT entSensorThresholdValue
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
::= { entitySensorMIBCompliances 5 }
-- units of conformance
entitySensorValueGroup OBJECT-GROUP
OBJECTS {
entSensorType,
entSensorScale,
entSensorPrecision,
entSensorValue,
entSensorStatus,
entSensorValueTimeStamp,
entSensorValueUpdateRate
}
STATUS current
DESCRIPTION
"The collection of objects which are used
to describe and monitor values of Entity-MIB
entPhysicalTable entries of sensors."
::= { entitySensorMIBGroups 1 }
entitySensorThresholdGroup OBJECT-GROUP
OBJECTS {
entSensorThresholdSeverity,
entSensorThresholdRelation,
entSensorThresholdValue,
entSensorThresholdEvaluation,
entSensorThresholdNotificationEnable
}
STATUS current
DESCRIPTION
"The collection of objects which are used
to describe and monitor thresholds for
sensors."
::= { entitySensorMIBGroups 2 }
entitySensorThresholdNotificationGroup NOTIFICATION-GROUP
NOTIFICATIONS { entSensorThresholdNotification }
STATUS deprecated
DESCRIPTION
"The collection of notifications used for
monitoring sensor threshold activity.
entitySensorThresholdNotificationGroup
object is superseded by
entitySensorNotificationGroup."
::= { entitySensorMIBGroups 3 }
entitySensorValueGroupSup1 OBJECT-GROUP
OBJECTS { entSensorMeasuredEntity }
STATUS current
DESCRIPTION
"The collection of objects which are used to describe and track
the measured entities of ENTITY-MIB entPhysicalTable."
::= { entitySensorMIBGroups 4 }
entitySensorNotifCtrlGlobalGroup OBJECT-GROUP
OBJECTS { entSensorThreshNotifGlobalEnable }
STATUS current
DESCRIPTION
"The collection of objects which provide the global
notification control on entSensorThresholdNotification."
::= { entitySensorMIBGroups 5 }
entitySensorNotificationGroup NOTIFICATION-GROUP
NOTIFICATIONS {
entSensorThresholdNotification,
entSensorThresholdRecoveryNotification
}
STATUS current
DESCRIPTION
"The collection of notifications used for
monitoring sensor threshold activity."
::= { entitySensorMIBGroups 6 }
END

View file

@ -0,0 +1,962 @@
-- $Id: CISCO-ENVMON-MIB.my,v 3.2.56.4 1996/06/11 19:38:23 snyder Exp $
-- $Source: /release/112/cvs/Xsys/MIBS/CISCO-ENVMON-MIB.my,v $
-- *****************************************************************
-- CISCO-ENVMON-MIB.my: CISCO Environmental Monitor MIB file
--
-- November 1994 Sandra C. Durham/Jeffrey T. Johnson
--
-- Copyright (c) 1994-2003, 2004, 2018 by cisco Systems, Inc.
-- All rights reserved.
--
-- *****************************************************************
--
CISCO-ENVMON-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY,
OBJECT-TYPE,
NOTIFICATION-TYPE,
Gauge32,
Integer32
FROM SNMPv2-SMI
TEXTUAL-CONVENTION,
DisplayString,
TruthValue
FROM SNMPv2-TC
MODULE-COMPLIANCE,
OBJECT-GROUP,
NOTIFICATION-GROUP
FROM SNMPv2-CONF
ciscoMgmt
FROM CISCO-SMI;
ciscoEnvMonMIB MODULE-IDENTITY
LAST-UPDATED "201803210000Z"
ORGANIZATION "Cisco Systems, Inc."
CONTACT-INFO
" Cisco Systems
Customer Service
Postal: 170 W Tasman Drive
San Jose, CA 95134
USA
Tel: +1 800 553-NETS
E-mail: cs-snmp@cisco.com"
DESCRIPTION
"Added an object ciscoEnvMonTemperatureStatusValueRev1 to
CiscoEnvMonTemperatureStatusEntry for support of negative temperature"
REVISION "201803210000Z"
DESCRIPTION
"The MIB module to describe the status of the Environmental
Monitor on those devices which support one."
REVISION "200312010000Z"
DESCRIPTION
"Added c37xx (13) and other (14) as values for
ciscoEnvMonPresent"
REVISION "200311250000Z"
DESCRIPTION
"Added ciscoEnvMonMIBMiscNotifGroup."
REVISION "200210150000Z"
DESCRIPTION
"Added c7600(12) as values for ciscoEnvMonPresent"
REVISION "200207170000Z"
DESCRIPTION
"Added optional groups ciscoEnvMonEnableStatChangeGroup
and ciscoEnvMonStatChangeNotifGroup."
REVISION "200202040000Z"
DESCRIPTION
"Added osr7600(11) as values
for ciscoEnvMonPresent"
REVISION "200108300000Z"
DESCRIPTION
"Added c10000(10) as values for ciscoEnvMonPresent"
REVISION "200108160000Z"
DESCRIPTION
"Added cat4000(9) as values for ciscoEnvMonPresent"
REVISION "200105070000Z"
DESCRIPTION
"Added cat6000(7),ubr7200(8)
as values for ciscoEnvMonPresent"
REVISION "200001310000Z"
DESCRIPTION
"Add notFunctioning to CiscoEnvMonState.
"
REVISION "9810220000Z"
DESCRIPTION
"Renamed enumerated value internalRPS(5) as
internalRedundant(5) and added description for
ciscoEnvMonSupplySource enumerated values.
"
REVISION "9808050000Z"
DESCRIPTION
"Add enumerated value internalRPS(5) to
ciscoEnvMonSupplySource.
"
REVISION "9611120000Z"
DESCRIPTION
"Add monitoring support for c3600 series router"
REVISION "9508150000Z"
DESCRIPTION
"Specify a correct (non-negative) range for several
index objects."
REVISION "9503130000Z"
DESCRIPTION
"Miscellaneous changes including monitoring support
for c7000 series redundant power supplies."
::= { ciscoMgmt 13 }
CiscoEnvMonState ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"Represents the state of a device being monitored.
Valid values are:
normal(1): the environment is good, such as low
temperature.
warning(2): the environment is bad, such as temperature
above normal operation range but not too
high.
critical(3): the environment is very bad, such as
temperature much higher than normal
operation limit.
shutdown(4): the environment is the worst, the system
should be shutdown immediately.
notPresent(5): the environmental monitor is not present,
such as temperature sensors do not exist.
notFunctioning(6): the environmental monitor does not
function properly, such as a temperature
sensor generates a abnormal data like
1000 C.
"
SYNTAX INTEGER {
normal(1),
warning(2),
critical(3),
shutdown(4),
notPresent(5),
notFunctioning(6)
}
CiscoSignedGauge ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"Represents the current value of an entity, as a signed
integer."
SYNTAX Integer32
ciscoEnvMonObjects OBJECT IDENTIFIER ::= { ciscoEnvMonMIB 1 }
ciscoEnvMonPresent OBJECT-TYPE
SYNTAX INTEGER {
oldAgs (1),
ags (2),
c7000 (3),
ci (4),
cAccessMon (6),
cat6000 (7),
ubr7200 (8),
cat4000 (9),
c10000 (10),
osr7600(11),
c7600(12),
c37xx(13),
other(14),
c7301(15),
c7304(16)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The type of environmental monitor located in the chassis.
An oldAgs environmental monitor card is identical to an ags
environmental card except that it is not capable of supplying
data, and hence no instance of the remaining objects in this
MIB will be returned in response to an SNMP query. Note that
only a firmware upgrade is required to convert an oldAgs into
an ags card."
::= { ciscoEnvMonObjects 1 }
ciscoEnvMonVoltageStatusTable OBJECT-TYPE
SYNTAX SEQUENCE OF CiscoEnvMonVoltageStatusEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The table of voltage status maintained by the environmental
monitor."
::= { ciscoEnvMonObjects 2 }
ciscoEnvMonVoltageStatusEntry OBJECT-TYPE
SYNTAX CiscoEnvMonVoltageStatusEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the voltage status table, representing the status
of the associated testpoint maintained by the environmental
monitor."
INDEX { ciscoEnvMonVoltageStatusIndex }
::= { ciscoEnvMonVoltageStatusTable 1 }
CiscoEnvMonVoltageStatusEntry ::=
SEQUENCE {
ciscoEnvMonVoltageStatusIndex Integer32,
ciscoEnvMonVoltageStatusDescr DisplayString,
ciscoEnvMonVoltageStatusValue CiscoSignedGauge,
ciscoEnvMonVoltageThresholdLow Integer32,
ciscoEnvMonVoltageThresholdHigh Integer32,
ciscoEnvMonVoltageLastShutdown Integer32,
ciscoEnvMonVoltageState CiscoEnvMonState
}
ciscoEnvMonVoltageStatusIndex OBJECT-TYPE
SYNTAX Integer32 (0..2147483647)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Unique index for the testpoint being instrumented.
This index is for SNMP purposes only, and has no
intrinsic meaning."
::= { ciscoEnvMonVoltageStatusEntry 1 }
ciscoEnvMonVoltageStatusDescr OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..32))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Textual description of the testpoint being instrumented.
This description is a short textual label, suitable as a
human-sensible identification for the rest of the
information in the entry."
::= { ciscoEnvMonVoltageStatusEntry 2 }
ciscoEnvMonVoltageStatusValue OBJECT-TYPE
SYNTAX CiscoSignedGauge
UNITS "millivolts"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The current measurement of the testpoint being instrumented."
::= { ciscoEnvMonVoltageStatusEntry 3 }
ciscoEnvMonVoltageThresholdLow OBJECT-TYPE
SYNTAX Integer32
UNITS "millivolts"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The lowest value that the associated instance of the object
ciscoEnvMonVoltageStatusValue may obtain before an emergency
shutdown of the managed device is initiated."
::= { ciscoEnvMonVoltageStatusEntry 4 }
ciscoEnvMonVoltageThresholdHigh OBJECT-TYPE
SYNTAX Integer32
UNITS "millivolts"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The highest value that the associated instance of the object
ciscoEnvMonVoltageStatusValue may obtain before an emergency
shutdown of the managed device is initiated."
::= { ciscoEnvMonVoltageStatusEntry 5 }
ciscoEnvMonVoltageLastShutdown OBJECT-TYPE
SYNTAX Integer32
UNITS "millivolts"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of the associated instance of the object
ciscoEnvMonVoltageStatusValue at the time an emergency
shutdown of the managed device was last initiated. This
value is stored in non-volatile RAM and hence is able to
survive the shutdown."
::= { ciscoEnvMonVoltageStatusEntry 6 }
ciscoEnvMonVoltageState OBJECT-TYPE
SYNTAX CiscoEnvMonState
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The current state of the testpoint being instrumented."
::= { ciscoEnvMonVoltageStatusEntry 7 }
ciscoEnvMonTemperatureStatusTable OBJECT-TYPE
SYNTAX SEQUENCE OF CiscoEnvMonTemperatureStatusEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The table of ambient temperature status maintained by the
environmental monitor."
::= { ciscoEnvMonObjects 3 }
ciscoEnvMonTemperatureStatusEntry OBJECT-TYPE
SYNTAX CiscoEnvMonTemperatureStatusEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the ambient temperature status table, representing
the status of the associated testpoint maintained by the
environmental monitor."
INDEX { ciscoEnvMonTemperatureStatusIndex }
::= { ciscoEnvMonTemperatureStatusTable 1 }
CiscoEnvMonTemperatureStatusEntry ::=
SEQUENCE {
ciscoEnvMonTemperatureStatusIndex Integer32,
ciscoEnvMonTemperatureStatusDescr DisplayString,
ciscoEnvMonTemperatureStatusValue Gauge32,
ciscoEnvMonTemperatureThreshold Integer32,
ciscoEnvMonTemperatureLastShutdown Integer32,
ciscoEnvMonTemperatureState CiscoEnvMonState,
ciscoEnvMonTemperatureStatusValueRev1 Integer32
}
ciscoEnvMonTemperatureStatusIndex OBJECT-TYPE
SYNTAX Integer32 (0..2147483647)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Unique index for the testpoint being instrumented.
This index is for SNMP purposes only, and has no
intrinsic meaning."
::= { ciscoEnvMonTemperatureStatusEntry 1 }
ciscoEnvMonTemperatureStatusDescr OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..32))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Textual description of the testpoint being instrumented.
This description is a short textual label, suitable as a
human-sensible identification for the rest of the
information in the entry."
::= { ciscoEnvMonTemperatureStatusEntry 2 }
ciscoEnvMonTemperatureStatusValue OBJECT-TYPE
SYNTAX Gauge32
UNITS "degrees Celsius"
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The current measurement of the testpoint being instrumented.
The object ciscoEnvMonTemperatureStatusValueRev1 should be
used to read the temperature."
::= { ciscoEnvMonTemperatureStatusEntry 3 }
ciscoEnvMonTemperatureThreshold OBJECT-TYPE
SYNTAX Integer32
UNITS "degrees Celsius"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The highest value that the associated instance of the
object ciscoEnvMonTemperatureStatusValueRev1 may obtain
before an emergency shutdown of the managed device is
initiated."
::= { ciscoEnvMonTemperatureStatusEntry 4 }
ciscoEnvMonTemperatureLastShutdown OBJECT-TYPE
SYNTAX Integer32
UNITS "degrees Celsius"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of the associated instance of the object
ciscoEnvMonTemperatureStatusValueRev1 at the time an emergency
shutdown of the managed device was last initiated. This
value is stored in non-volatile RAM and hence is able to
survive the shutdown."
::= { ciscoEnvMonTemperatureStatusEntry 5 }
ciscoEnvMonTemperatureState OBJECT-TYPE
SYNTAX CiscoEnvMonState
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The current state of the testpoint being instrumented."
::= { ciscoEnvMonTemperatureStatusEntry 6 }
ciscoEnvMonTemperatureStatusValueRev1 OBJECT-TYPE
SYNTAX Integer32
UNITS "degrees Celsius"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The current measurement of the testpoint being instrumented.It also
accomodates negative temperature values."
::= { ciscoEnvMonTemperatureStatusEntry 7 }
ciscoEnvMonFanStatusTable OBJECT-TYPE
SYNTAX SEQUENCE OF CiscoEnvMonFanStatusEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The table of fan status maintained by the environmental
monitor."
::= { ciscoEnvMonObjects 4 }
ciscoEnvMonFanStatusEntry OBJECT-TYPE
SYNTAX CiscoEnvMonFanStatusEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the fan status table, representing the status of
the associated fan maintained by the environmental monitor."
INDEX { ciscoEnvMonFanStatusIndex }
::= { ciscoEnvMonFanStatusTable 1 }
CiscoEnvMonFanStatusEntry ::=
SEQUENCE {
ciscoEnvMonFanStatusIndex Integer32,
ciscoEnvMonFanStatusDescr DisplayString,
ciscoEnvMonFanState CiscoEnvMonState
}
ciscoEnvMonFanStatusIndex OBJECT-TYPE
SYNTAX Integer32 (0..2147483647)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Unique index for the fan being instrumented.
This index is for SNMP purposes only, and has no
intrinsic meaning."
::= { ciscoEnvMonFanStatusEntry 1 }
ciscoEnvMonFanStatusDescr OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..32))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Textual description of the fan being instrumented.
This description is a short textual label, suitable as a
human-sensible identification for the rest of the
information in the entry."
::= { ciscoEnvMonFanStatusEntry 2 }
ciscoEnvMonFanState OBJECT-TYPE
SYNTAX CiscoEnvMonState
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The current state of the fan being instrumented."
::= { ciscoEnvMonFanStatusEntry 3 }
ciscoEnvMonSupplyStatusTable OBJECT-TYPE
SYNTAX SEQUENCE OF CiscoEnvMonSupplyStatusEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The table of power supply status maintained by the
environmental monitor card."
::= { ciscoEnvMonObjects 5 }
ciscoEnvMonSupplyStatusEntry OBJECT-TYPE
SYNTAX CiscoEnvMonSupplyStatusEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the power supply status table, representing the
status of the associated power supply maintained by the
environmental monitor card."
INDEX { ciscoEnvMonSupplyStatusIndex }
::= { ciscoEnvMonSupplyStatusTable 1 }
CiscoEnvMonSupplyStatusEntry ::=
SEQUENCE {
ciscoEnvMonSupplyStatusIndex Integer32,
ciscoEnvMonSupplyStatusDescr DisplayString,
ciscoEnvMonSupplyState CiscoEnvMonState,
ciscoEnvMonSupplySource INTEGER
}
ciscoEnvMonSupplyStatusIndex OBJECT-TYPE
SYNTAX Integer32 (0..2147483647)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Unique index for the power supply being instrumented.
This index is for SNMP purposes only, and has no
intrinsic meaning."
::= { ciscoEnvMonSupplyStatusEntry 1 }
ciscoEnvMonSupplyStatusDescr OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..32))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Textual description of the power supply being instrumented.
This description is a short textual label, suitable as a
human-sensible identification for the rest of the
information in the entry."
::= { ciscoEnvMonSupplyStatusEntry 2 }
ciscoEnvMonSupplyState OBJECT-TYPE
SYNTAX CiscoEnvMonState
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The current state of the power supply being instrumented."
::= { ciscoEnvMonSupplyStatusEntry 3 }
ciscoEnvMonSupplySource OBJECT-TYPE
SYNTAX INTEGER {
unknown(1),
ac(2),
dc(3),
externalPowerSupply(4),
internalRedundant(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The power supply source.
unknown - Power supply source unknown
ac - AC power supply
dc - DC power supply
externalPowerSupply - External power supply
internalRedundant - Internal redundant power supply
"
::= { ciscoEnvMonSupplyStatusEntry 4 }
ciscoEnvMonAlarmContacts OBJECT-TYPE
SYNTAX BITS {
minorVisual(0),
majorVisual(1),
criticalVisual(2),
minorAudible(3),
majorAudible(4),
criticalAudible(5),
input(6)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Each bit is set to reflect the respective
alarm being set. The bit will be cleared
when the respective alarm is cleared."
::= { ciscoEnvMonObjects 6 }
ciscoEnvMonMIBNotificationEnables OBJECT IDENTIFIER ::= { ciscoEnvMonMIB 2 }
ciscoEnvMonEnableShutdownNotification OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This variable indicates whether the system
produces the ciscoEnvMonShutdownNotification. A false
value will prevent shutdown notifications
from being generated by this system."
DEFVAL { false }
::= { ciscoEnvMonMIBNotificationEnables 1 }
ciscoEnvMonEnableVoltageNotification OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-write
STATUS deprecated
DESCRIPTION
"This variable indicates whether the system
produces the ciscoEnvMonVoltageNotification. A false
value will prevent voltage notifications from being
generated by this system. This object is deprecated
in favour of ciscoEnvMonEnableStatChangeNotif."
DEFVAL { false }
::= { ciscoEnvMonMIBNotificationEnables 2 }
ciscoEnvMonEnableTemperatureNotification OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-write
STATUS deprecated
DESCRIPTION
"This variable indicates whether the system
produces the ciscoEnvMonTemperatureNotification.
A false value prevents temperature notifications
from being sent by this entity. This object is
deprecated in favour of
ciscoEnvMonEnableStatChangeNotif."
DEFVAL { false }
::= { ciscoEnvMonMIBNotificationEnables 3 }
ciscoEnvMonEnableFanNotification OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-write
STATUS deprecated
DESCRIPTION
"This variable indicates whether the system
produces the ciscoEnvMonFanNotification.
A false value prevents fan notifications
from being sent by this entity. This object is
deprecated in favour of
ciscoEnvMonEnableStatChangeNotif."
DEFVAL { false }
::= { ciscoEnvMonMIBNotificationEnables 4 }
ciscoEnvMonEnableRedundantSupplyNotification OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-write
STATUS deprecated
DESCRIPTION
"This variable indicates whether the system
produces the ciscoEnvMonRedundantSupplyNotification.
A false value prevents redundant supply notifications
from being generated by this system. This object is
deprecated in favour of
ciscoEnvMonEnableStatChangeNotif."
DEFVAL { false }
::= { ciscoEnvMonMIBNotificationEnables 5 }
ciscoEnvMonEnableStatChangeNotif OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This variable indicates whether the system
produces the ciscoEnvMonVoltStatusChangeNotif,
ciscoEnvMonTempStatusChangeNotif,
ciscoEnvMonFanStatusChangeNotif and
ciscoEnvMonSuppStatusChangeNotif. A false value will
prevent these notifications from being generated by
this system."
DEFVAL { false }
::= { ciscoEnvMonMIBNotificationEnables 6 }
-- the following two OBJECT IDENTIFIERS are used to define SNMPv2 Notifications
-- that are backward compatible with SNMPv1 Traps.
ciscoEnvMonMIBNotificationPrefix OBJECT IDENTIFIER ::= { ciscoEnvMonMIB 3 }
ciscoEnvMonMIBNotifications OBJECT IDENTIFIER ::= { ciscoEnvMonMIBNotificationPrefix 0 }
ciscoEnvMonShutdownNotification NOTIFICATION-TYPE
-- no OBJECTS
STATUS current
DESCRIPTION
"A ciscoEnvMonShutdownNotification is sent if the environmental
monitor detects a testpoint reaching a critical state
and is about to initiate a shutdown. This notification
contains no objects so that it may be encoded and sent in the
shortest amount of time possible. Even so, management
applications should not rely on receiving such a notification
as it may not be sent before the shutdown completes."
::= { ciscoEnvMonMIBNotifications 1 }
ciscoEnvMonVoltageNotification NOTIFICATION-TYPE
OBJECTS {
ciscoEnvMonVoltageStatusDescr,
ciscoEnvMonVoltageStatusValue,
ciscoEnvMonVoltageState
}
STATUS deprecated
DESCRIPTION
"A ciscoEnvMonVoltageNotification is sent if the voltage
measured at a given testpoint is outside the normal range
for the testpoint (i.e. is at the warning, critical, or
shutdown stage). Since such a notification is usually
generated before the shutdown state is reached, it can
convey more data and has a better chance of being sent
than does the ciscoEnvMonShutdownNotification.
This notification is deprecated in favour of
ciscoEnvMonVoltStatusChangeNotif."
::= { ciscoEnvMonMIBNotifications 2 }
ciscoEnvMonTemperatureNotification NOTIFICATION-TYPE
OBJECTS {
ciscoEnvMonTemperatureStatusDescr,
ciscoEnvMonTemperatureStatusValue,
ciscoEnvMonTemperatureState,
ciscoEnvMonTemperatureStatusValueRev1
}
STATUS deprecated
DESCRIPTION
"A ciscoEnvMonTemperatureNotification is sent if the
temperature measured at a given testpoint is outside
the normal range for the testpoint (i.e. is at the warning,
critical, or shutdown stage). Since such a Notification
is usually generated before the shutdown state is reached,
it can convey more data and has a better chance of being
sent than does the ciscoEnvMonShutdownNotification.
This notification is deprecated in favour of
ciscoEnvMonTempStatusChangeNotif."
::= { ciscoEnvMonMIBNotifications 3 }
ciscoEnvMonFanNotification NOTIFICATION-TYPE
OBJECTS {
ciscoEnvMonFanStatusDescr,
ciscoEnvMonFanState
}
STATUS deprecated
DESCRIPTION
"A ciscoEnvMonFanNotification is sent if any one of
the fans in the fan array (where extant) fails.
Since such a notification is usually generated before
the shutdown state is reached, it can convey more
data and has a better chance of being sent
than does the ciscoEnvMonShutdownNotification.
This notification is deprecated in favour of
ciscoEnvMonFanStatusChangeNotif."
::= { ciscoEnvMonMIBNotifications 4 }
ciscoEnvMonRedundantSupplyNotification NOTIFICATION-TYPE
OBJECTS {
ciscoEnvMonSupplyStatusDescr,
ciscoEnvMonSupplyState
}
STATUS deprecated
DESCRIPTION
"A ciscoEnvMonRedundantSupplyNotification is sent if
the redundant power supply (where extant) fails.
Since such a notification is usually generated before
the shutdown state is reached, it can convey more
data and has a better chance of being sent
than does the ciscoEnvMonShutdownNotification.
This notification is deprecated in favour of
ciscoEnvMonSuppStatusChangeNotif."
::= { ciscoEnvMonMIBNotifications 5 }
ciscoEnvMonVoltStatusChangeNotif NOTIFICATION-TYPE
OBJECTS {
ciscoEnvMonVoltageStatusDescr,
ciscoEnvMonVoltageStatusValue,
ciscoEnvMonVoltageState
}
STATUS current
DESCRIPTION
"A ciscoEnvMonVoltStatusChangeNotif is sent if there is
change in the state of a device being monitored
by ciscoEnvMonVoltageState."
::= { ciscoEnvMonMIBNotifications 6 }
ciscoEnvMonTempStatusChangeNotif NOTIFICATION-TYPE
OBJECTS {
ciscoEnvMonTemperatureStatusDescr,
ciscoEnvMonTemperatureStatusValue,
ciscoEnvMonTemperatureState,
ciscoEnvMonTemperatureStatusValueRev1
}
STATUS current
DESCRIPTION
"A ciscoEnvMonTempStatusChangeNotif is sent if there
is change in the state of a device being monitored
by ciscoEnvMonTemperatureState."
::= { ciscoEnvMonMIBNotifications 7 }
ciscoEnvMonFanStatusChangeNotif NOTIFICATION-TYPE
OBJECTS {
ciscoEnvMonFanStatusDescr,
ciscoEnvMonFanState
}
STATUS current
DESCRIPTION
"A ciscoEnvMonFanStatusChangeNotif is sent if there
is change in the state of a device being monitored
by ciscoEnvMonFanState."
::= { ciscoEnvMonMIBNotifications 8 }
ciscoEnvMonSuppStatusChangeNotif NOTIFICATION-TYPE
OBJECTS {
ciscoEnvMonSupplyStatusDescr,
ciscoEnvMonSupplyState
}
STATUS current
DESCRIPTION
"A ciscoEnvMonSupplyStatChangeNotif is sent if there
is change in the state of a device being monitored
by ciscoEnvMonSupplyState."
::= { ciscoEnvMonMIBNotifications 9 }
-- conformance information
ciscoEnvMonMIBConformance OBJECT IDENTIFIER ::= { ciscoEnvMonMIB 4 }
ciscoEnvMonMIBCompliances OBJECT IDENTIFIER ::= { ciscoEnvMonMIBConformance 1 }
ciscoEnvMonMIBGroups OBJECT IDENTIFIER ::= { ciscoEnvMonMIBConformance 2 }
-- compliance statements
ciscoEnvMonMIBCompliance MODULE-COMPLIANCE
STATUS deprecated
DESCRIPTION
"The compliance statement for entities which implement
the Cisco Environmental Monitor MIB. This is
deprecated and new compliance
ciscoEnvMonMIBComplianceRev1 is added."
MODULE -- this module
MANDATORY-GROUPS { ciscoEnvMonMIBGroup }
::= { ciscoEnvMonMIBCompliances 1 }
ciscoEnvMonMIBComplianceRev1 MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for entities which implement
the Cisco Environmental Monitor MIB."
MODULE -- this module
MANDATORY-GROUPS { ciscoEnvMonMIBGroupRev,
ciscoEnvMonMIBNotifGroup }
GROUP ciscoEnvMonEnableStatChangeGroup
DESCRIPTION
"The ciscoEnvMonEnableStatChangeGroup is optional.
This group is applicable for implementations which
need status change notifications for environmental
monitoring."
GROUP ciscoEnvMonStatChangeNotifGroup
DESCRIPTION
"The ciscoEnvMonStatChangeNotifGroup is optional.
This group is applicable for implementations which
need status change notifications for environmental
monitoring."
::= { ciscoEnvMonMIBCompliances 2 }
-- units of conformance
ciscoEnvMonMIBGroup OBJECT-GROUP
OBJECTS {
ciscoEnvMonPresent,
ciscoEnvMonVoltageStatusDescr,
ciscoEnvMonVoltageStatusValue,
ciscoEnvMonVoltageThresholdLow,
ciscoEnvMonVoltageThresholdHigh,
ciscoEnvMonVoltageLastShutdown,
ciscoEnvMonVoltageState,
ciscoEnvMonTemperatureStatusDescr,
ciscoEnvMonTemperatureStatusValue,
ciscoEnvMonTemperatureThreshold,
ciscoEnvMonTemperatureLastShutdown,
ciscoEnvMonTemperatureState,
ciscoEnvMonTemperatureStatusValueRev1,
ciscoEnvMonFanStatusDescr,
ciscoEnvMonFanState,
ciscoEnvMonSupplyStatusDescr,
ciscoEnvMonSupplyState,
ciscoEnvMonSupplySource,
ciscoEnvMonAlarmContacts,
ciscoEnvMonEnableShutdownNotification,
ciscoEnvMonEnableVoltageNotification,
ciscoEnvMonEnableTemperatureNotification,
ciscoEnvMonEnableFanNotification,
ciscoEnvMonEnableRedundantSupplyNotification
}
STATUS deprecated
DESCRIPTION
"A collection of objects providing environmental
monitoring capability to a cisco chassis. This group
is deprecated in favour of ciscoEnvMonMIBGroupRev."
::= { ciscoEnvMonMIBGroups 1 }
ciscoEnvMonMIBGroupRev OBJECT-GROUP
OBJECTS {
ciscoEnvMonPresent,
ciscoEnvMonVoltageStatusDescr,
ciscoEnvMonVoltageStatusValue,
ciscoEnvMonVoltageThresholdLow,
ciscoEnvMonVoltageThresholdHigh,
ciscoEnvMonVoltageLastShutdown,
ciscoEnvMonVoltageState,
ciscoEnvMonTemperatureStatusDescr,
ciscoEnvMonTemperatureStatusValue,
ciscoEnvMonTemperatureThreshold,
ciscoEnvMonTemperatureLastShutdown,
ciscoEnvMonTemperatureState,
ciscoEnvMonTemperatureStatusValueRev1,
ciscoEnvMonFanStatusDescr,
ciscoEnvMonFanState,
ciscoEnvMonSupplyStatusDescr,
ciscoEnvMonSupplyState,
ciscoEnvMonSupplySource,
ciscoEnvMonAlarmContacts,
ciscoEnvMonEnableShutdownNotification
}
STATUS current
DESCRIPTION
"A collection of objects providing environmental
monitoring capability to a cisco chassis."
::= { ciscoEnvMonMIBGroups 2 }
ciscoEnvMonEnableStatChangeGroup OBJECT-GROUP
OBJECTS {
ciscoEnvMonEnableStatChangeNotif
}
STATUS current
DESCRIPTION
"A collection of objects providing enabling/disabling
of the status change notifications for environmental
monitoring."
::= { ciscoEnvMonMIBGroups 3 }
ciscoEnvMonMIBNotifGroup NOTIFICATION-GROUP
NOTIFICATIONS {
ciscoEnvMonShutdownNotification
}
STATUS current
DESCRIPTION
"A notification group providing shutdown notification
for environmental monitoring. "
::= { ciscoEnvMonMIBGroups 4 }
ciscoEnvMonStatChangeNotifGroup NOTIFICATION-GROUP
NOTIFICATIONS {
ciscoEnvMonVoltStatusChangeNotif,
ciscoEnvMonTempStatusChangeNotif,
ciscoEnvMonFanStatusChangeNotif,
ciscoEnvMonSuppStatusChangeNotif
}
STATUS current
DESCRIPTION
"A collection of notifications providing the status
change for environmental monitoring."
::= { ciscoEnvMonMIBGroups 5 }
ciscoEnvMonMIBMiscNotifGroup NOTIFICATION-GROUP
NOTIFICATIONS {
ciscoEnvMonVoltageNotification,
ciscoEnvMonTemperatureNotification,
ciscoEnvMonFanNotification,
ciscoEnvMonRedundantSupplyNotification
}
STATUS deprecated
DESCRIPTION
"A collection of various notifications for the
enviromental monitoring mib module. The notifications
the group and the group are both in deprecated state.
The notifications in the group were deprecated in
favour of notifications in
ciscoEnvMonStatChangeNotifGroup."
::= { ciscoEnvMonMIBGroups 6 }
END

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,230 @@
LM-SENSORS-MIB DEFINITIONS ::= BEGIN
--
-- Derived from the original VEST-INTERNETT-MIB. Open issues:
--
-- (a) where to register this MIB?
-- (b) use not-accessible for diskIOIndex?
--
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, Integer32, Gauge32
FROM SNMPv2-SMI
DisplayString
FROM SNMPv2-TC
ucdExperimental
FROM UCD-SNMP-MIB;
lmSensorsMIB MODULE-IDENTITY
LAST-UPDATED "200011050000Z"
ORGANIZATION "AdamsNames Ltd"
CONTACT-INFO
"Primary Contact: M J Oldfield
email: m@mail.tc"
DESCRIPTION
"This MIB module defines objects for lm_sensor derived data."
REVISION "200011050000Z"
DESCRIPTION
"Derived from DISKIO-MIB ex UCD."
::= { lmSensors 1 }
lmSensors OBJECT IDENTIFIER ::= { ucdExperimental 16 }
--
lmTempSensorsTable OBJECT-TYPE
SYNTAX SEQUENCE OF LMTempSensorsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Table of temperature sensors and their values."
::= { lmSensors 2 }
lmTempSensorsEntry OBJECT-TYPE
SYNTAX LMTempSensorsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry containing a device and its statistics."
INDEX { lmTempSensorsIndex }
::= { lmTempSensorsTable 1 }
LMTempSensorsEntry ::= SEQUENCE {
lmTempSensorsIndex Integer32,
lmTempSensorsDevice DisplayString,
lmTempSensorsValue Gauge32
}
lmTempSensorsIndex OBJECT-TYPE
SYNTAX Integer32 (0..65535)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Reference index for each observed device."
::= { lmTempSensorsEntry 1 }
lmTempSensorsDevice OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The name of the temperature sensor we are reading."
::= { lmTempSensorsEntry 2 }
lmTempSensorsValue OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The temperature of this sensor in mC."
::= { lmTempSensorsEntry 3 }
--
lmFanSensorsTable OBJECT-TYPE
SYNTAX SEQUENCE OF LMFanSensorsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Table of fan sensors and their values."
::= { lmSensors 3 }
lmFanSensorsEntry OBJECT-TYPE
SYNTAX LMFanSensorsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry containing a device and its statistics."
INDEX { lmFanSensorsIndex }
::= { lmFanSensorsTable 1 }
LMFanSensorsEntry ::= SEQUENCE {
lmFanSensorsIndex Integer32,
lmFanSensorsDevice DisplayString,
lmFanSensorsValue Gauge32
}
lmFanSensorsIndex OBJECT-TYPE
SYNTAX Integer32 (0..65535)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Reference index for each observed device."
::= { lmFanSensorsEntry 1 }
lmFanSensorsDevice OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The name of the fan sensor we are reading."
::= { lmFanSensorsEntry 2 }
lmFanSensorsValue OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The rotation speed of the fan in RPM."
::= { lmFanSensorsEntry 3 }
--
lmVoltSensorsTable OBJECT-TYPE
SYNTAX SEQUENCE OF LMVoltSensorsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Table of voltage sensors and their values."
::= { lmSensors 4 }
lmVoltSensorsEntry OBJECT-TYPE
SYNTAX LMVoltSensorsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry containing a device and its statistics."
INDEX { lmVoltSensorsIndex }
::= { lmVoltSensorsTable 1 }
LMVoltSensorsEntry ::= SEQUENCE {
lmVoltSensorsIndex Integer32,
lmVoltSensorsDevice DisplayString,
lmVoltSensorsValue Gauge32
}
lmVoltSensorsIndex OBJECT-TYPE
SYNTAX Integer32 (0..65535)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Reference index for each observed device."
::= { lmVoltSensorsEntry 1 }
lmVoltSensorsDevice OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The name of the device we are reading."
::= { lmVoltSensorsEntry 2 }
lmVoltSensorsValue OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The voltage in mV."
::= { lmVoltSensorsEntry 3 }
--
lmMiscSensorsTable OBJECT-TYPE
SYNTAX SEQUENCE OF LMMiscSensorsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Table of miscellaneous sensor devices and their values."
::= { lmSensors 5 }
lmMiscSensorsEntry OBJECT-TYPE
SYNTAX LMMiscSensorsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry containing a device and its statistics."
INDEX { lmMiscSensorsIndex }
::= { lmMiscSensorsTable 1 }
LMMiscSensorsEntry ::= SEQUENCE {
lmMiscSensorsIndex Integer32,
lmMiscSensorsDevice DisplayString,
lmMiscSensorsValue Gauge32
}
lmMiscSensorsIndex OBJECT-TYPE
SYNTAX Integer32 (0..65535)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Reference index for each observed device."
::= { lmMiscSensorsEntry 1 }
lmMiscSensorsDevice OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The name of the device we are reading."
::= { lmMiscSensorsEntry 2 }
lmMiscSensorsValue OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of this sensor."
::= { lmMiscSensorsEntry 3 }
END

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,460 @@
-- WinAgents MIB Extraction Wizard
-- Extracted from rfc3433.txt 16.03.2005 20:21:58
ENTITY-SENSOR-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE,
Integer32, Unsigned32, mib-2
FROM SNMPv2-SMI
MODULE-COMPLIANCE, OBJECT-GROUP
FROM SNMPv2-CONF
TEXTUAL-CONVENTION, TimeStamp
FROM SNMPv2-TC
entPhysicalIndex, entityPhysicalGroup
FROM ENTITY-MIB
SnmpAdminString
FROM SNMP-FRAMEWORK-MIB;
entitySensorMIB MODULE-IDENTITY
LAST-UPDATED "200212160000Z"
ORGANIZATION "IETF Entity MIB Working Group"
CONTACT-INFO
" Andy Bierman
Cisco Systems, Inc.
Tel: +1 408-527-3711
E-mail: abierman@cisco.com
Postal: 170 West Tasman Drive
San Jose, CA USA 95134
Dan Romascanu
Avaya Inc.
Tel: +972-3-645-8414
Email: dromasca@avaya.com
Postal: Atidim technology Park, Bldg. #3
Tel Aviv, Israel, 61131
K.C. Norseth
L-3 Communications
Tel: +1 801-594-2809
Email: kenyon.c.norseth@L-3com.com
Postal: 640 N. 2200 West.
Salt Lake City, Utah 84116-0850
Send comments to <entmib@ietf.org>
Mailing list subscription info:
http://www.ietf.org/mailman/listinfo/entmib "
DESCRIPTION
"This module defines Entity MIB extensions for physical
sensors.
Copyright (C) The Internet Society (2002). This version
of this MIB module is part of RFC 3433; see the RFC
itself for full legal notices."
REVISION "200212160000Z"
DESCRIPTION
"Initial version of the Entity Sensor MIB module, published
as RFC 3433."
::= { mib-2 99 }
entitySensorObjects OBJECT IDENTIFIER
::= { entitySensorMIB 1 }
-- entitySensorNotifications OBJECT IDENTIFIER
-- ::= { entitySensorMIB 2 }
entitySensorConformance OBJECT IDENTIFIER
::= { entitySensorMIB 3 }
--
-- Textual Conventions
--
EntitySensorDataType ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"An object using this data type represents the Entity Sensor
measurement data type associated with a physical sensor
value. The actual data units are determined by examining an
object of this type together with the associated
EntitySensorDataScale object.
An object of this type SHOULD be defined together with
objects of type EntitySensorDataScale and
EntitySensorPrecision. Together, associated objects of
these three types are used to identify the semantics of an
object of type EntitySensorValue.
Valid values are:
other(1): a measure other than those listed below
unknown(2): unknown measurement, or arbitrary,
relative numbers
voltsAC(3): electric potential
voltsDC(4): electric potential
amperes(5): electric current
watts(6): power
hertz(7): frequency
celsius(8): temperature
percentRH(9): percent relative humidity
rpm(10): shaft revolutions per minute
cmm(11),: cubic meters per minute (airflow)
truthvalue(12): value takes { true(1), false(2) }
"
SYNTAX INTEGER {
other(1),
unknown(2),
voltsAC(3),
voltsDC(4),
amperes(5),
watts(6),
hertz(7),
celsius(8),
percentRH(9),
rpm(10),
cmm(11),
truthvalue(12)
}
EntitySensorDataScale ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"An object using this data type represents a data scaling
factor, represented with an International System of Units
(SI) prefix. The actual data units are determined by
examining an object of this type together with the
associated EntitySensorDataType object.
An object of this type SHOULD be defined together with
objects of type EntitySensorDataType and
EntitySensorPrecision. Together, associated objects of
these three types are used to identify the semantics of an
object of type EntitySensorValue."
REFERENCE
"The International System of Units (SI),
National Institute of Standards and Technology,
Spec. Publ. 330, August 1991."
SYNTAX INTEGER {
yocto(1), -- 10^-24
zepto(2), -- 10^-21
atto(3), -- 10^-18
femto(4), -- 10^-15
pico(5), -- 10^-12
nano(6), -- 10^-9
micro(7), -- 10^-6
milli(8), -- 10^-3
units(9), -- 10^0
kilo(10), -- 10^3
mega(11), -- 10^6
giga(12), -- 10^9
tera(13), -- 10^12
exa(14), -- 10^15
peta(15), -- 10^18
zetta(16), -- 10^21
yotta(17) -- 10^24
}
EntitySensorPrecision ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"An object using this data type represents a sensor
precision range.
An object of this type SHOULD be defined together with
objects of type EntitySensorDataType and
EntitySensorDataScale. Together, associated objects of
these three types are used to identify the semantics of an
object of type EntitySensorValue.
If an object of this type contains a value in the range 1 to
9, it represents the number of decimal places in the
fractional part of an associated EntitySensorValue fixed-
point number.
If an object of this type contains a value in the range -8
to -1, it represents the number of accurate digits in the
associated EntitySensorValue fixed-point number.
The value zero indicates the associated EntitySensorValue
object is not a fixed-point number.
Agent implementors must choose a value for the associated
EntitySensorPrecision object so that the precision and
accuracy of the associated EntitySensorValue object is
correctly indicated.
For example, a physical entity representing a temperature
sensor that can measure 0 degrees to 100 degrees C in 0.1
degree increments, +/- 0.05 degrees, would have an
EntitySensorPrecision value of '1', an EntitySensorDataScale
value of 'units(9)', and an EntitySensorValue ranging from
'0' to '1000'. The EntitySensorValue would be interpreted
as 'degrees C * 10'."
SYNTAX Integer32 (-8..9)
EntitySensorValue ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"An object using this data type represents an Entity Sensor
value.
An object of this type SHOULD be defined together with
objects of type EntitySensorDataType, EntitySensorDataScale
and EntitySensorPrecision. Together, associated objects of
those three types are used to identify the semantics of an
object of this data type.
The semantics of an object using this data type are
determined by the value of the associated
EntitySensorDataType object.
If the associated EntitySensorDataType object is equal to
'voltsAC(3)', 'voltsDC(4)', 'amperes(5)', 'watts(6),
'hertz(7)', 'celsius(8)', or 'cmm(11)', then an object of
this type MUST contain a fixed point number ranging from
-999,999,999 to +999,999,999. The value -1000000000
indicates an underflow error. The value +1000000000
indicates an overflow error. The EntitySensorPrecision
indicates how many fractional digits are represented in the
associated EntitySensorValue object.
If the associated EntitySensorDataType object is equal to
'percentRH(9)', then an object of this type MUST contain a
number ranging from 0 to 100.
If the associated EntitySensorDataType object is equal to
'rpm(10)', then an object of this type MUST contain a number
ranging from -999,999,999 to +999,999,999.
If the associated EntitySensorDataType object is equal to
'truthvalue(12)', then an object of this type MUST contain
either the value 'true(1)' or the value 'false(2)'.
If the associated EntitySensorDataType object is equal to
'other(1)' or unknown(2)', then an object of this type MUST
contain a number ranging from -1000000000 to 1000000000."
SYNTAX Integer32 (-1000000000..1000000000)
EntitySensorStatus ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"An object using this data type represents the operational
status of a physical sensor.
The value 'ok(1)' indicates that the agent can obtain the
sensor value.
The value 'unavailable(2)' indicates that the agent
presently cannot obtain the sensor value.
The value 'nonoperational(3)' indicates that the agent
believes the sensor is broken. The sensor could have a hard
failure (disconnected wire), or a soft failure such as out-
of-range, jittery, or wildly fluctuating readings."
SYNTAX INTEGER {
ok(1),
unavailable(2),
nonoperational(3)
}
--
-- Entity Sensor Table
--
entPhySensorTable OBJECT-TYPE
SYNTAX SEQUENCE OF EntPhySensorEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table contains one row per physical sensor represented
by an associated row in the entPhysicalTable."
::= { entitySensorObjects 1 }
entPhySensorEntry OBJECT-TYPE
SYNTAX EntPhySensorEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Information about a particular physical sensor.
An entry in this table describes the present reading of a
sensor, the measurement units and scale, and sensor
operational status.
Entries are created in this table by the agent. An entry
for each physical sensor SHOULD be created at the same time
as the associated entPhysicalEntry. An entry SHOULD be
destroyed if the associated entPhysicalEntry is destroyed."
INDEX { entPhysicalIndex } -- SPARSE-AUGMENTS
::= { entPhySensorTable 1 }
EntPhySensorEntry ::= SEQUENCE {
entPhySensorType EntitySensorDataType,
entPhySensorScale EntitySensorDataScale,
entPhySensorPrecision EntitySensorPrecision,
entPhySensorValue EntitySensorValue,
entPhySensorOperStatus EntitySensorStatus,
entPhySensorUnitsDisplay SnmpAdminString,
entPhySensorValueTimeStamp TimeStamp,
entPhySensorValueUpdateRate Unsigned32
}
entPhySensorType OBJECT-TYPE
SYNTAX EntitySensorDataType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The type of data returned by the associated
entPhySensorValue object.
This object SHOULD be set by the agent during entry
creation, and the value SHOULD NOT change during operation."
::= { entPhySensorEntry 1 }
entPhySensorScale OBJECT-TYPE
SYNTAX EntitySensorDataScale
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The exponent to apply to values returned by the associated
entPhySensorValue object.
This object SHOULD be set by the agent during entry
creation, and the value SHOULD NOT change during operation."
::= { entPhySensorEntry 2 }
entPhySensorPrecision OBJECT-TYPE
SYNTAX EntitySensorPrecision
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of decimal places of precision in fixed-point
sensor values returned by the associated entPhySensorValue
object.
This object SHOULD be set to '0' when the associated
entPhySensorType value is not a fixed-point type: e.g.,
'percentRH(9)', 'rpm(10)', 'cmm(11)', or 'truthvalue(12)'.
This object SHOULD be set by the agent during entry
creation, and the value SHOULD NOT change during operation."
::= { entPhySensorEntry 3 }
entPhySensorValue OBJECT-TYPE
SYNTAX EntitySensorValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The most recent measurement obtained by the agent for this
sensor.
To correctly interpret the value of this object, the
associated entPhySensorType, entPhySensorScale, and
entPhySensorPrecision objects must also be examined."
::= { entPhySensorEntry 4 }
entPhySensorOperStatus OBJECT-TYPE
SYNTAX EntitySensorStatus
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The operational status of the sensor."
::= { entPhySensorEntry 5 }
entPhySensorUnitsDisplay OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A textual description of the data units that should be used
in the display of entPhySensorValue."
::= { entPhySensorEntry 6 }
entPhySensorValueTimeStamp OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime at the time the status and/or value
of this sensor was last obtained by the agent."
::= { entPhySensorEntry 7 }
entPhySensorValueUpdateRate OBJECT-TYPE
SYNTAX Unsigned32
UNITS "milliseconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An indication of the frequency that the agent updates the
associated entPhySensorValue object, representing in
milliseconds.
The value zero indicates:
- the sensor value is updated on demand (e.g.,
when polled by the agent for a get-request),
- the sensor value is updated when the sensor
value changes (event-driven),
- the agent does not know the update rate.
"
::= { entPhySensorEntry 8 }
--
-- Conformance Section
--
entitySensorCompliances OBJECT IDENTIFIER
::= { entitySensorConformance 1 }
entitySensorGroups OBJECT IDENTIFIER
::= { entitySensorConformance 2 }
entitySensorCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Describes the requirements for conformance to the Entity
Sensor MIB module."
MODULE -- this module
MANDATORY-GROUPS { entitySensorValueGroup }
MODULE ENTITY-MIB
MANDATORY-GROUPS { entityPhysicalGroup }
::= { entitySensorCompliances 1 }
-- Object Groups
entitySensorValueGroup OBJECT-GROUP
OBJECTS {
entPhySensorType,
entPhySensorScale,
entPhySensorPrecision,
entPhySensorValue,
entPhySensorOperStatus,
entPhySensorUnitsDisplay,
entPhySensorValueTimeStamp,
entPhySensorValueUpdateRate
}
STATUS current
DESCRIPTION
"A collection of objects representing physical entity sensor
information."
::= { entitySensorGroups 1 }
END

1814
priv/mibs/standard/IF-MIB Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,854 @@
SNMPv2-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
TimeTicks, Counter32, snmpModules, mib-2
FROM SNMPv2-SMI
DisplayString, TestAndIncr, TimeStamp
FROM SNMPv2-TC
MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
FROM SNMPv2-CONF;
snmpMIB MODULE-IDENTITY
LAST-UPDATED "200210160000Z"
ORGANIZATION "IETF SNMPv3 Working Group"
CONTACT-INFO
"WG-EMail: snmpv3@lists.tislabs.com
Subscribe: snmpv3-request@lists.tislabs.com
Co-Chair: Russ Mundy
Network Associates Laboratories
postal: 15204 Omega Drive, Suite 300
Rockville, MD 20850-4601
USA
EMail: mundy@tislabs.com
phone: +1 301 947-7107
Co-Chair: David Harrington
Enterasys Networks
postal: 35 Industrial Way
P. O. Box 5005
Rochester, NH 03866-5005
USA
EMail: dbh@enterasys.com
phone: +1 603 337-2614
Editor: Randy Presuhn
BMC Software, Inc.
postal: 2141 North First Street
San Jose, CA 95131
USA
EMail: randy_presuhn@bmc.com
phone: +1 408 546-1006"
DESCRIPTION
"The MIB module for SNMP entities.
Copyright (C) The Internet Society (2002). This
version of this MIB module is part of RFC 3418;
see the RFC itself for full legal notices.
"
REVISION "200210160000Z"
DESCRIPTION
"This revision of this MIB module was published as
RFC 3418."
REVISION "199511090000Z"
DESCRIPTION
"This revision of this MIB module was published as
RFC 1907."
REVISION "199304010000Z"
DESCRIPTION
"The initial revision of this MIB module was published
as RFC 1450."
::= { snmpModules 1 }
snmpMIBObjects OBJECT IDENTIFIER ::= { snmpMIB 1 }
-- ::= { snmpMIBObjects 1 } this OID is obsolete
-- ::= { snmpMIBObjects 2 } this OID is obsolete
-- ::= { snmpMIBObjects 3 } this OID is obsolete
-- the System group
--
-- a collection of objects common to all managed systems.
system OBJECT IDENTIFIER ::= { mib-2 1 }
sysDescr OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..255))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A textual description of the entity. This value should
include the full name and version identification of
the system's hardware type, software operating-system,
and networking software."
::= { system 1 }
sysObjectID OBJECT-TYPE
SYNTAX OBJECT IDENTIFIER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The vendor's authoritative identification of the
network management subsystem contained in the entity.
This value is allocated within the SMI enterprises
subtree (1.3.6.1.4.1) and provides an easy and
unambiguous means for determining `what kind of box' is
being managed. For example, if vendor `Flintstones,
Inc.' was assigned the subtree 1.3.6.1.4.1.424242,
it could assign the identifier 1.3.6.1.4.1.424242.1.1
to its `Fred Router'."
::= { system 2 }
sysUpTime OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The time (in hundredths of a second) since the
network management portion of the system was last
re-initialized."
::= { system 3 }
sysContact OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..255))
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The textual identification of the contact person for
this managed node, together with information on how
to contact this person. If no contact information is
known, the value is the zero-length string."
::= { system 4 }
sysName OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..255))
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"An administratively-assigned name for this managed
node. By convention, this is the node's fully-qualified
domain name. If the name is unknown, the value is
the zero-length string."
::= { system 5 }
sysLocation OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..255))
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The physical location of this node (e.g., 'telephone
closet, 3rd floor'). If the location is unknown, the
value is the zero-length string."
::= { system 6 }
sysServices OBJECT-TYPE
SYNTAX INTEGER (0..127)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A value which indicates the set of services that this
entity may potentially offer. The value is a sum.
This sum initially takes the value zero. Then, for
each layer, L, in the range 1 through 7, that this node
performs transactions for, 2 raised to (L - 1) is added
to the sum. For example, a node which performs only
routing functions would have a value of 4 (2^(3-1)).
In contrast, a node which is a host offering application
services would have a value of 72 (2^(4-1) + 2^(7-1)).
Note that in the context of the Internet suite of
protocols, values should be calculated accordingly:
layer functionality
1 physical (e.g., repeaters)
2 datalink/subnetwork (e.g., bridges)
3 internet (e.g., supports the IP)
4 end-to-end (e.g., supports the TCP)
7 applications (e.g., supports the SMTP)
For systems including OSI protocols, layers 5 and 6
may also be counted."
::= { system 7 }
-- object resource information
--
-- a collection of objects which describe the SNMP entity's
-- (statically and dynamically configurable) support of
-- various MIB modules.
sysORLastChange OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime at the time of the most recent
change in state or value of any instance of sysORID."
::= { system 8 }
sysORTable OBJECT-TYPE
SYNTAX SEQUENCE OF SysOREntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The (conceptual) table listing the capabilities of
the local SNMP application acting as a command
responder with respect to various MIB modules.
SNMP entities having dynamically-configurable support
of MIB modules will have a dynamically-varying number
of conceptual rows."
::= { system 9 }
sysOREntry OBJECT-TYPE
SYNTAX SysOREntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry (conceptual row) in the sysORTable."
INDEX { sysORIndex }
::= { sysORTable 1 }
SysOREntry ::= SEQUENCE {
sysORIndex INTEGER,
sysORID OBJECT IDENTIFIER,
sysORDescr DisplayString,
sysORUpTime TimeStamp
}
sysORIndex OBJECT-TYPE
SYNTAX INTEGER (1..2147483647)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The auxiliary variable used for identifying instances
of the columnar objects in the sysORTable."
::= { sysOREntry 1 }
sysORID OBJECT-TYPE
SYNTAX OBJECT IDENTIFIER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An authoritative identification of a capabilities
statement with respect to various MIB modules supported
by the local SNMP application acting as a command
responder."
::= { sysOREntry 2 }
sysORDescr OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A textual description of the capabilities identified
by the corresponding instance of sysORID."
::= { sysOREntry 3 }
sysORUpTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime at the time this conceptual
row was last instantiated."
::= { sysOREntry 4 }
-- the SNMP group
--
-- a collection of objects providing basic instrumentation and
-- control of an SNMP entity.
snmp OBJECT IDENTIFIER ::= { mib-2 11 }
snmpInPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of messages delivered to the SNMP
entity from the transport service."
::= { snmp 1 }
snmpInBadVersions OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of SNMP messages which were delivered
to the SNMP entity and were for an unsupported SNMP
version."
::= { snmp 3 }
snmpInBadCommunityNames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of community-based SNMP messages (for
example, SNMPv1) delivered to the SNMP entity which
used an SNMP community name not known to said entity.
Also, implementations which authenticate community-based
SNMP messages using check(s) in addition to matching
the community name (for example, by also checking
whether the message originated from a transport address
allowed to use a specified community name) MAY include
in this value the number of messages which failed the
additional check(s). It is strongly RECOMMENDED that
the documentation for any security model which is used
to authenticate community-based SNMP messages specify
the precise conditions that contribute to this value."
::= { snmp 4 }
snmpInBadCommunityUses OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of community-based SNMP messages (for
example, SNMPv1) delivered to the SNMP entity which
represented an SNMP operation that was not allowed for
the SNMP community named in the message. The precise
conditions under which this counter is incremented
(if at all) depend on how the SNMP entity implements
its access control mechanism and how its applications
interact with that access control mechanism. It is
strongly RECOMMENDED that the documentation for any
access control mechanism which is used to control access
to and visibility of MIB instrumentation specify the
precise conditions that contribute to this value."
::= { snmp 5 }
snmpInASNParseErrs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of ASN.1 or BER errors encountered by
the SNMP entity when decoding received SNMP messages."
::= { snmp 6 }
snmpEnableAuthenTraps OBJECT-TYPE
SYNTAX INTEGER { enabled(1), disabled(2) }
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Indicates whether the SNMP entity is permitted to
generate authenticationFailure traps. The value of this
object overrides any configuration information; as such,
it provides a means whereby all authenticationFailure
traps may be disabled.
Note that it is strongly recommended that this object
be stored in non-volatile memory so that it remains
constant across re-initializations of the network
management system."
::= { snmp 30 }
snmpSilentDrops OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of Confirmed Class PDUs (such as
GetRequest-PDUs, GetNextRequest-PDUs,
GetBulkRequest-PDUs, SetRequest-PDUs, and
InformRequest-PDUs) delivered to the SNMP entity which
were silently dropped because the size of a reply
containing an alternate Response Class PDU (such as a
Response-PDU) with an empty variable-bindings field
was greater than either a local constraint or the
maximum message size associated with the originator of
the request."
::= { snmp 31 }
snmpProxyDrops OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The total number of Confirmed Class PDUs
(such as GetRequest-PDUs, GetNextRequest-PDUs,
GetBulkRequest-PDUs, SetRequest-PDUs, and
InformRequest-PDUs) delivered to the SNMP entity which
were silently dropped because the transmission of
the (possibly translated) message to a proxy target
failed in a manner (other than a time-out) such that
no Response Class PDU (such as a Response-PDU) could
be returned."
::= { snmp 32 }
-- information for notifications
--
-- a collection of objects which allow the SNMP entity, when
-- supporting a notification originator application,
-- to be configured to generate SNMPv2-Trap-PDUs.
snmpTrap OBJECT IDENTIFIER ::= { snmpMIBObjects 4 }
snmpTrapOID OBJECT-TYPE
SYNTAX OBJECT IDENTIFIER
MAX-ACCESS accessible-for-notify
STATUS current
DESCRIPTION
"The authoritative identification of the notification
currently being sent. This variable occurs as
the second varbind in every SNMPv2-Trap-PDU and
InformRequest-PDU."
::= { snmpTrap 1 }
-- ::= { snmpTrap 2 } this OID is obsolete
snmpTrapEnterprise OBJECT-TYPE
SYNTAX OBJECT IDENTIFIER
MAX-ACCESS accessible-for-notify
STATUS current
DESCRIPTION
"The authoritative identification of the enterprise
associated with the trap currently being sent. When an
SNMP proxy agent is mapping an RFC1157 Trap-PDU
into a SNMPv2-Trap-PDU, this variable occurs as the
last varbind."
::= { snmpTrap 3 }
-- ::= { snmpTrap 4 } this OID is obsolete
-- well-known traps
snmpTraps OBJECT IDENTIFIER ::= { snmpMIBObjects 5 }
coldStart NOTIFICATION-TYPE
STATUS current
DESCRIPTION
"A coldStart trap signifies that the SNMP entity,
supporting a notification originator application, is
reinitializing itself and that its configuration may
have been altered."
::= { snmpTraps 1 }
warmStart NOTIFICATION-TYPE
STATUS current
DESCRIPTION
"A warmStart trap signifies that the SNMP entity,
supporting a notification originator application,
is reinitializing itself such that its configuration
is unaltered."
::= { snmpTraps 2 }
-- Note the linkDown NOTIFICATION-TYPE ::= { snmpTraps 3 }
-- and the linkUp NOTIFICATION-TYPE ::= { snmpTraps 4 }
-- are defined in RFC 2863 [RFC2863]
authenticationFailure NOTIFICATION-TYPE
STATUS current
DESCRIPTION
"An authenticationFailure trap signifies that the SNMP
entity has received a protocol message that is not
properly authenticated. While all implementations
of SNMP entities MAY be capable of generating this
trap, the snmpEnableAuthenTraps object indicates
whether this trap will be generated."
::= { snmpTraps 5 }
-- Note the egpNeighborLoss notification is defined
-- as { snmpTraps 6 } in RFC 1213
-- the set group
--
-- a collection of objects which allow several cooperating
-- command generator applications to coordinate their use of the
-- set operation.
snmpSet OBJECT IDENTIFIER ::= { snmpMIBObjects 6 }
snmpSetSerialNo OBJECT-TYPE
SYNTAX TestAndIncr
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"An advisory lock used to allow several cooperating
command generator applications to coordinate their
use of the SNMP set operation.
This object is used for coarse-grain coordination.
To achieve fine-grain coordination, one or more similar
objects might be defined within each MIB group, as
appropriate."
::= { snmpSet 1 }
-- conformance information
snmpMIBConformance
OBJECT IDENTIFIER ::= { snmpMIB 2 }
snmpMIBCompliances
OBJECT IDENTIFIER ::= { snmpMIBConformance 1 }
snmpMIBGroups OBJECT IDENTIFIER ::= { snmpMIBConformance 2 }
-- compliance statements
-- ::= { snmpMIBCompliances 1 } this OID is obsolete
snmpBasicCompliance MODULE-COMPLIANCE
STATUS deprecated
DESCRIPTION
"The compliance statement for SNMPv2 entities which
implement the SNMPv2 MIB.
This compliance statement is replaced by
snmpBasicComplianceRev2."
MODULE -- this module
MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup,
snmpBasicNotificationsGroup }
GROUP snmpCommunityGroup
DESCRIPTION
"This group is mandatory for SNMPv2 entities which
support community-based authentication."
::= { snmpMIBCompliances 2 }
snmpBasicComplianceRev2 MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for SNMP entities which
implement this MIB module."
MODULE -- this module
MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup,
snmpBasicNotificationsGroup }
GROUP snmpCommunityGroup
DESCRIPTION
"This group is mandatory for SNMP entities which
support community-based authentication."
GROUP snmpWarmStartNotificationGroup
DESCRIPTION
"This group is mandatory for an SNMP entity which
supports command responder applications, and is
able to reinitialize itself such that its
configuration is unaltered."
::= { snmpMIBCompliances 3 }
-- units of conformance
-- ::= { snmpMIBGroups 1 } this OID is obsolete
-- ::= { snmpMIBGroups 2 } this OID is obsolete
-- ::= { snmpMIBGroups 3 } this OID is obsolete
-- ::= { snmpMIBGroups 4 } this OID is obsolete
snmpGroup OBJECT-GROUP
OBJECTS { snmpInPkts,
snmpInBadVersions,
snmpInASNParseErrs,
snmpSilentDrops,
snmpProxyDrops,
snmpEnableAuthenTraps }
STATUS current
DESCRIPTION
"A collection of objects providing basic instrumentation
and control of an SNMP entity."
::= { snmpMIBGroups 8 }
snmpCommunityGroup OBJECT-GROUP
OBJECTS { snmpInBadCommunityNames,
snmpInBadCommunityUses }
STATUS current
DESCRIPTION
"A collection of objects providing basic instrumentation
of a SNMP entity which supports community-based
authentication."
::= { snmpMIBGroups 9 }
snmpSetGroup OBJECT-GROUP
OBJECTS { snmpSetSerialNo }
STATUS current
DESCRIPTION
"A collection of objects which allow several cooperating
command generator applications to coordinate their
use of the set operation."
::= { snmpMIBGroups 5 }
systemGroup OBJECT-GROUP
OBJECTS { sysDescr, sysObjectID, sysUpTime,
sysContact, sysName, sysLocation,
sysServices,
sysORLastChange, sysORID,
sysORUpTime, sysORDescr }
STATUS current
DESCRIPTION
"The system group defines objects which are common to all
managed systems."
::= { snmpMIBGroups 6 }
snmpBasicNotificationsGroup NOTIFICATION-GROUP
NOTIFICATIONS { coldStart, authenticationFailure }
STATUS current
DESCRIPTION
"The basic notifications implemented by an SNMP entity
supporting command responder applications."
::= { snmpMIBGroups 7 }
snmpWarmStartNotificationGroup NOTIFICATION-GROUP
NOTIFICATIONS { warmStart }
STATUS current
DESCRIPTION
"An additional notification for an SNMP entity supporting
command responder applications, if it is able to reinitialize
itself such that its configuration is unaltered."
::= { snmpMIBGroups 11 }
snmpNotificationGroup OBJECT-GROUP
OBJECTS { snmpTrapOID, snmpTrapEnterprise }
STATUS current
DESCRIPTION
"These objects are required for entities
which support notification originator applications."
::= { snmpMIBGroups 12 }
-- definitions in RFC 1213 made obsolete by the inclusion of a
-- subset of the snmp group in this MIB
snmpOutPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP Messages which were
passed from the SNMP protocol entity to the
transport service."
::= { snmp 2 }
-- { snmp 7 } is not used
snmpInTooBigs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP PDUs which were
delivered to the SNMP protocol entity and for
which the value of the error-status field was
`tooBig'."
::= { snmp 8 }
snmpInNoSuchNames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP PDUs which were
delivered to the SNMP protocol entity and for
which the value of the error-status field was
`noSuchName'."
::= { snmp 9 }
snmpInBadValues OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP PDUs which were
delivered to the SNMP protocol entity and for
which the value of the error-status field was
`badValue'."
::= { snmp 10 }
snmpInReadOnlys OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number valid SNMP PDUs which were delivered
to the SNMP protocol entity and for which the value
of the error-status field was `readOnly'. It should
be noted that it is a protocol error to generate an
SNMP PDU which contains the value `readOnly' in the
error-status field, as such this object is provided
as a means of detecting incorrect implementations of
the SNMP."
::= { snmp 11 }
snmpInGenErrs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP PDUs which were delivered
to the SNMP protocol entity and for which the value
of the error-status field was `genErr'."
::= { snmp 12 }
snmpInTotalReqVars OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of MIB objects which have been
retrieved successfully by the SNMP protocol entity
as the result of receiving valid SNMP Get-Request
and Get-Next PDUs."
::= { snmp 13 }
snmpInTotalSetVars OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of MIB objects which have been
altered successfully by the SNMP protocol entity as
the result of receiving valid SNMP Set-Request PDUs."
::= { snmp 14 }
snmpInGetRequests OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP Get-Request PDUs which
have been accepted and processed by the SNMP
protocol entity."
::= { snmp 15 }
snmpInGetNexts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP Get-Next PDUs which have been
accepted and processed by the SNMP protocol entity."
::= { snmp 16 }
snmpInSetRequests OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP Set-Request PDUs which
have been accepted and processed by the SNMP protocol
entity."
::= { snmp 17 }
snmpInGetResponses OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP Get-Response PDUs which
have been accepted and processed by the SNMP protocol
entity."
::= { snmp 18 }
snmpInTraps OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP Trap PDUs which have been
accepted and processed by the SNMP protocol entity."
::= { snmp 19 }
snmpOutTooBigs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP PDUs which were generated
by the SNMP protocol entity and for which the value
of the error-status field was `tooBig.'"
::= { snmp 20 }
snmpOutNoSuchNames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP PDUs which were generated
by the SNMP protocol entity and for which the value
of the error-status was `noSuchName'."
::= { snmp 21 }
snmpOutBadValues OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP PDUs which were generated
by the SNMP protocol entity and for which the value
of the error-status field was `badValue'."
::= { snmp 22 }
-- { snmp 23 } is not used
snmpOutGenErrs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP PDUs which were generated
by the SNMP protocol entity and for which the value
of the error-status field was `genErr'."
::= { snmp 24 }
snmpOutGetRequests OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP Get-Request PDUs which
have been generated by the SNMP protocol entity."
::= { snmp 25 }
snmpOutGetNexts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP Get-Next PDUs which have
been generated by the SNMP protocol entity."
::= { snmp 26 }
snmpOutSetRequests OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP Set-Request PDUs which
have been generated by the SNMP protocol entity."
::= { snmp 27 }
snmpOutGetResponses OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP Get-Response PDUs which
have been generated by the SNMP protocol entity."
::= { snmp 28 }
snmpOutTraps OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS obsolete
DESCRIPTION
"The total number of SNMP Trap PDUs which have
been generated by the SNMP protocol entity."
::= { snmp 29 }
snmpObsoleteGroup OBJECT-GROUP
OBJECTS { snmpOutPkts, snmpInTooBigs, snmpInNoSuchNames,
snmpInBadValues, snmpInReadOnlys, snmpInGenErrs,
snmpInTotalReqVars, snmpInTotalSetVars,
snmpInGetRequests, snmpInGetNexts, snmpInSetRequests,
snmpInGetResponses, snmpInTraps, snmpOutTooBigs,
snmpOutNoSuchNames, snmpOutBadValues,
snmpOutGenErrs, snmpOutGetRequests, snmpOutGetNexts,
snmpOutSetRequests, snmpOutGetResponses, snmpOutTraps
}
STATUS obsolete
DESCRIPTION
"A collection of objects from RFC 1213 made obsolete
by this MIB module."
::= { snmpMIBGroups 10 }
END

View file

@ -0,0 +1,201 @@
defmodule Towerops.Snmp.MibValidationTest do
@moduledoc """
Tests to validate that hardcoded OIDs in profile modules match the official MIB definitions.
This ensures our OID constants stay in sync with the authoritative MIB files.
"""
use ExUnit.Case, async: true
alias Towerops.Snmp.MibParser
@mibs_dir Application.app_dir(:towerops, "priv/mibs")
describe "Base profile OID validation" do
test "system OIDs match SNMPv2-MIB" do
mib_file = Path.join([@mibs_dir, "standard", "SNMPv2-MIB"])
# These are the OIDs we use in Base.discover_system_info
validations = [
{"sysDescr", "1.3.6.1.2.1.1.1.0"},
{"sysObjectID", "1.3.6.1.2.1.1.2.0"},
{"sysUpTime", "1.3.6.1.2.1.1.3.0"},
{"sysContact", "1.3.6.1.2.1.1.4.0"},
{"sysName", "1.3.6.1.2.1.1.5.0"},
{"sysLocation", "1.3.6.1.2.1.1.6.0"}
]
case MibParser.parse_mib_file(mib_file) do
{:ok, oids} ->
Enum.each(validations, fn {object_name, expected_oid} ->
# MIB defines the base OID, we add .0 for instance
base_expected = String.replace_suffix(expected_oid, ".0", "")
case Map.get(oids, object_name) do
^base_expected ->
:ok
nil ->
# Object might not be in this particular MIB file, skip
:ok
actual_oid ->
flunk("OID mismatch for #{object_name}: expected #{base_expected}, got #{actual_oid}")
end
end)
{:error, _reason} ->
# MIB parsing failed, skip this test (MIB file might not exist yet)
:ok
end
end
test "interface OIDs match IF-MIB" do
mib_file = Path.join([@mibs_dir, "standard", "IF-MIB"])
validations = [
{"ifIndex", "1.3.6.1.2.1.2.2.1.1"},
{"ifDescr", "1.3.6.1.2.1.2.2.1.2"},
{"ifType", "1.3.6.1.2.1.2.2.1.3"},
{"ifSpeed", "1.3.6.1.2.1.2.2.1.5"},
{"ifPhysAddress", "1.3.6.1.2.1.2.2.1.6"},
{"ifAdminStatus", "1.3.6.1.2.1.2.2.1.7"},
{"ifOperStatus", "1.3.6.1.2.1.2.2.1.8"},
{"ifName", "1.3.6.1.2.1.31.1.1.1.1"},
{"ifAlias", "1.3.6.1.2.1.31.1.1.1.18"}
]
validate_oids(mib_file, validations)
end
test "sensor OIDs match ENTITY-SENSOR-MIB" do
mib_file = Path.join([@mibs_dir, "standard", "ENTITY-SENSOR-MIB"])
validations = [
{"entPhySensorType", "1.3.6.1.2.1.99.1.1.1.1"},
{"entPhySensorScale", "1.3.6.1.2.1.99.1.1.1.2"},
{"entPhySensorValue", "1.3.6.1.2.1.99.1.1.1.4"},
{"entPhySensorOperStatus", "1.3.6.1.2.1.99.1.1.1.5"}
]
validate_oids(mib_file, validations)
end
end
describe "Cisco profile OID validation" do
test "Cisco sensor OIDs match CISCO-ENTITY-SENSOR-MIB" do
mib_file = Path.join([@mibs_dir, "cisco", "CISCO-ENTITY-SENSOR-MIB"])
validations = [
{"entSensorType", "1.3.6.1.4.1.9.9.91.1.1.1.1.1"},
{"entSensorScale", "1.3.6.1.4.1.9.9.91.1.1.1.1.2"},
{"entSensorValue", "1.3.6.1.4.1.9.9.91.1.1.1.1.4"},
{"entSensorStatus", "1.3.6.1.4.1.9.9.91.1.1.1.1.5"}
]
validate_oids(mib_file, validations)
end
end
describe "NetSnmp profile OID validation" do
test "LM-SENSORS OIDs match LM-SENSORS-MIB" do
mib_file = Path.join([@mibs_dir, "net-snmp", "LM-SENSORS-MIB"])
validations = [
{"lmTempSensorsDevice", "1.3.6.1.4.1.2021.13.16.2.1.2"},
{"lmTempSensorsValue", "1.3.6.1.4.1.2021.13.16.2.1.3"},
{"lmFanSensorsDevice", "1.3.6.1.4.1.2021.13.16.3.1.2"},
{"lmFanSensorsValue", "1.3.6.1.4.1.2021.13.16.3.1.3"},
{"lmVoltSensorsDevice", "1.3.6.1.4.1.2021.13.16.4.1.2"},
{"lmVoltSensorsValue", "1.3.6.1.4.1.2021.13.16.4.1.3"}
]
validate_oids(mib_file, validations)
end
test "UCD-SNMP OIDs match UCD-SNMP-MIB" do
mib_file = Path.join([@mibs_dir, "net-snmp", "UCD-SNMP-MIB"])
validations = [
{"laLoad1", "1.3.6.1.4.1.2021.10.1.3.1"},
{"laLoad5", "1.3.6.1.4.1.2021.10.1.3.2"},
{"laLoad15", "1.3.6.1.4.1.2021.10.1.3.3"},
{"memTotalReal", "1.3.6.1.4.1.2021.4.5.0"},
{"memAvailReal", "1.3.6.1.4.1.2021.4.6.0"}
]
# Remove .0 suffix for table entries
validations =
Enum.map(validations, fn {name, oid} ->
{name, String.replace_suffix(oid, ".0", "")}
end)
validate_oids(mib_file, validations)
end
end
describe "MIB parser functionality" do
test "can parse standard MIB files" do
mib_files = [
Path.join([@mibs_dir, "standard", "SNMPv2-MIB"]),
Path.join([@mibs_dir, "standard", "IF-MIB"]),
Path.join([@mibs_dir, "standard", "ENTITY-SENSOR-MIB"])
]
Enum.each(mib_files, fn mib_file ->
if File.exists?(mib_file) do
case MibParser.parse_mib_file(mib_file) do
{:ok, oids} ->
assert is_map(oids)
assert map_size(oids) > 0
{:error, reason} ->
flunk("Failed to parse #{Path.basename(mib_file)}: #{inspect(reason)}")
end
end
end)
end
test "list_mib_files returns all MIB files" do
mib_files = MibParser.list_mib_files()
assert is_list(mib_files)
# Should have at least the standard MIBs
assert Enum.any?(mib_files, &String.contains?(&1, "IF-MIB"))
assert Enum.any?(mib_files, &String.contains?(&1, "SNMPv2-MIB"))
end
end
# Helper function to validate a list of OIDs against a MIB file
defp validate_oids(mib_file, validations) do
case MibParser.parse_mib_file(mib_file) do
{:ok, oids} ->
Enum.each(validations, &validate_single_oid(mib_file, oids, &1))
{:error, :enoent} ->
# MIB file doesn't exist yet, skip validation
:ok
{:error, reason} ->
flunk("Failed to parse #{Path.basename(mib_file)}: #{inspect(reason)}")
end
end
defp validate_single_oid(mib_file, oids, {object_name, expected_oid}) do
case Map.get(oids, object_name) do
^expected_oid ->
:ok
nil ->
# Object might not be in this particular MIB file
# This is OK - some objects might be defined elsewhere
:ok
actual_oid ->
flunk(
"OID mismatch in #{Path.basename(mib_file)} for #{object_name}: expected #{expected_oid}, got #{actual_oid}"
)
end
end
end