From ef1bbf5ca41401ee4135a67e1a4d4465ff09b524 Mon Sep 17 00:00:00 2001 From: hasso Date: Fri, 8 Oct 2004 12:04:21 +0000 Subject: Merge svn revisions 1065 and 1066 from Zebra CVS. --- ospf6d/ChangeLog | 9 + ospf6d/Makefile.am | 6 +- ospf6d/OSPFV3-MIB.txt | 2758 +++++++++++++++++++++++++++++++++++++++++++++++++ ospf6d/ospf6_snmp.c | 304 ++++++ ospf6d/ospf6_snmp.h | 29 + ospf6d/ospf6d.c | 8 + 6 files changed, 3112 insertions(+), 2 deletions(-) create mode 100644 ospf6d/OSPFV3-MIB.txt create mode 100644 ospf6d/ospf6_snmp.c create mode 100644 ospf6d/ospf6_snmp.h diff --git a/ospf6d/ChangeLog b/ospf6d/ChangeLog index 7778c58a..ed23a2bc 100644 --- a/ospf6d/ChangeLog +++ b/ospf6d/ChangeLog @@ -1,3 +1,12 @@ +2004-10-06 Yasuhiro Ohara + + * ospf6_snmp.[ch], OSPFV3-MIB.txt: start supporting SNMP. + it follows draft-ietf-ospf-ospfv3-mib-08.txt, but change + OSPFv3 tree to {experimental 102} based on + http://www.iana.org/assignments/smi-numbers: + Prefix: iso.org.dod.internet.experimental (1.3.6.1.3.) + 102 OSPFv3 OSPF for IPv6 [Joyal] + 2004-10-03 Hasso Tepper * ospf6_zebra.c: Use router id from zebra daemon if it wasn't set in diff --git a/ospf6d/Makefile.am b/ospf6d/Makefile.am index bd3f07f8..d8d22ba9 100644 --- a/ospf6d/Makefile.am +++ b/ospf6d/Makefile.am @@ -11,13 +11,15 @@ libospf6_a_SOURCES = \ ospf6_network.c ospf6_message.c ospf6_lsa.c ospf6_lsdb.c \ ospf6_top.c ospf6_area.c ospf6_interface.c ospf6_neighbor.c \ ospf6_flood.c ospf6_route.c ospf6_intra.c ospf6_zebra.c \ - ospf6_spf.c ospf6_proto.c ospf6_asbr.c ospf6_abr.c ospf6d.c + ospf6_spf.c ospf6_proto.c ospf6_asbr.c ospf6_abr.c ospf6_snmp.c \ + ospf6d.c noinst_HEADERS = \ ospf6_network.h ospf6_message.h ospf6_lsa.h ospf6_lsdb.h \ ospf6_top.h ospf6_area.h ospf6_interface.h ospf6_neighbor.h \ ospf6_flood.h ospf6_route.h ospf6_intra.h ospf6_zebra.h \ - ospf6_spf.h ospf6_proto.h ospf6_asbr.h ospf6_abr.h ospf6d.h + ospf6_spf.h ospf6_proto.h ospf6_asbr.h ospf6_abr.h ospf6_snmp.c \ + ospf6d.h ospf6d_SOURCES = \ ospf6_main.c $(libospf6_a_SOURCES) diff --git a/ospf6d/OSPFV3-MIB.txt b/ospf6d/OSPFV3-MIB.txt new file mode 100644 index 00000000..ee66cffd --- /dev/null +++ b/ospf6d/OSPFV3-MIB.txt @@ -0,0 +1,2758 @@ +OSPFV3-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, mib-2, + Counter32, Gauge32, Integer32, IpAddress, + Unsigned32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TruthValue, StorageType, RowStatus + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + InterfaceIndex + FROM IF-MIB + InetAddressType, InetAddress, InetAddressPrefixLength + FROM INET-ADDRESS-MIB + AreaID, RouterID, Metric, BigMetric, Status, + HelloRange, DesignatedRouterPriority + FROM OSPF-MIB; + +ospfv3MIB MODULE-IDENTITY + LAST-UPDATED "200404081200Z" + ORGANIZATION "IETF OSPF Working Group" + CONTACT-INFO + "WG E-Mail: ospf@peach.ease.lsoft.com + WG Chairs: John.Moy@sycamorenet.com + acee@redback.com + rohit@xebeo.com + + Dan Joyal + Nortel Networks + 600 Technology Park Drive + Billerica, MA 01821, USA + djoyal@nortelnetworks.com + + Vishwas Manral + SiNett Corporation + 2/1, First Floor + Embassy Icon Annex + Infantry Road + Bangalore 560001 + vishwas@sinett.com" + + DESCRIPTION + "The MIB module to describe OSPF version 3" + REVISION "200404081200Z" + DESCRIPTION -- RFC Editor assigns RFC xxxx + "Initial version, published as RFC xxxx" + ::= { mib-2 xx } -- IANA assigns xx + +-- Texual conventions + +UpToRefreshInterval ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The values one might be able to configure for + variables bounded by the Refresh Interval" + SYNTAX Integer32 (1..1800) + +RouterDeadRange ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The range of intervals in seconds that a routers hello + must have not been seen before a neighbor declares the + router down" + SYNTAX Integer32 (1..ÆFFFFÆh) + + +-- Top-level structure of MIB +ospfv3Objects OBJECT IDENTIFIER ::= { ospfv3MIB 1 } +ospfv3Conformance OBJECT IDENTIFIER ::= { ospfv3MIB 2 } + +-- OSPFv3 General Variables + +-- These parameters apply globally to the Router's +-- OSPFv3 Process. + +ospfv3GeneralGroup OBJECT IDENTIFIER ::= { ospfv3Objects 1 } + +ospfv3RouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A 32-bit integer uniquely identifying the + router in the Autonomous System. + To ensure uniqueness, this may + default to the value of one of the + router's IPv4 interface addresses if IPv4 is + configured on the router." + ::= { ospfv3GeneralGroup 1 } + +ospfv3AdminStat OBJECT-TYPE + SYNTAX Status + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative status of OSPFv3 in the + router. The value 'enabled' denotes that the + OSPFv3 Process is active on at least one inter- + face; 'disabled' disables it on all inter- + faces." + ::= { ospfv3GeneralGroup 2 } + +ospfv3VersionNumber OBJECT-TYPE + SYNTAX INTEGER { version3(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of OSPF for IPv6 is 3." + ::= { ospfv3GeneralGroup 3 } + +ospfv3AreaBdrRtrStatus OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag to note whether this router is an area + border router." + REFERENCE + "OSPF Version 2, Section 3 Splitting the AS into + Areas" + ::= { ospfv3GeneralGroup 4 } + +ospfv3ASBdrRtrStatus OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A flag to note whether this router is config- + ured as an Autonomous System border router." + REFERENCE + "OSPF Version 2, Section 3.3 Classification of + routers" + ::= { ospfv3GeneralGroup 5 } + +ospfv3AsScopeLsaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of AS-Scope (e.g. AS-External) link-state + advertisements in the link-state database." + ::= { ospfv3GeneralGroup 6 } + +ospfv3AsScopeLsaCksumSum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 32-bit unsigned sum of the LS checksums of + the AS-scoped link-state advertisements con- + tained in the link-state database. This sum + can be used to determine if there has been a + change in a router's link state database, and + to compare the link-state database of two + routers." + ::= { ospfv3GeneralGroup 7 } + +ospfv3OriginateNewLsas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of new link-state advertisements + that have been originated. This number is in- + cremented each time the router originates a new + LSA." + ::= { ospfv3GeneralGroup 8 } + +ospfv3RxNewLsas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of link-state advertisements re- + ceived determined to be new instantiations. + This number does not include newer instantia- + tions of self-originated link-state advertise- + ments." + ::= { ospfv3GeneralGroup 9 } + +ospfv3ExtLsaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of External(LS type 0x4005) in the link- + state database" + ::= { ospfv3GeneralGroup 10 } + + +ospfv3ExtAreaLsdbLimit OBJECT-TYPE + SYNTAX Integer32 (-1..'7FFFFFFF'h) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of non-default AS- + external-LSAs entries that can be stored in the + link-state database. If the value is -1, then + there is no limit. + + When the number of non-default AS-external-LSAs + in a router's link-state database reaches + ospfv3ExtAreaLsdbLimit, the router enters Overflow- + State. The router never holds more than + ospfv3ExtAreaLsdbLimit non-default AS-external-LSAs + in its database. OspfExtAreaLsdbLimit MUST be set + identically in all routers attached to the OSPFv3 + backbone and/or any regular OSPFv3 area. (i.e., + OSPFv3 stub areas and NSSAs are excluded)." + ::= { ospfv3GeneralGroup 11 } + +ospfv3MulticastExtensions OBJECT-TYPE + SYNTAX BITS { + intraAreaMulticast(0), + interAreaMulticast(1), + interAsMulticast(2) + } + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A Bit Mask indicating whether the router is + forwarding IPv6 multicast datagrams + based on the algorithms defined in the Multi- + cast Extensions to OSPF. + + If intraAreaMulticast set, indicates that the router + can forward IPv6 multicast datagrams in the router's + directly attached areas (called intra-area mul- + ticast routing). + + If interAreaMulticast set, indicates that the router + can forward IPv6 multicast datagrams between OSPFv3 + areas (called inter-area multicast routing). + + If interAsMulticast set, indicates that the router can + forward IPv6 multicast datagrams between Auto- + nomous Systems (called inter-AS multicast rout- + ing). + + Only certain combinations of bit settings are + allowed, namely: + - All bits cleared (no multicasting) + - intraAreaMulticast only, + - intraAreaMulticast and interAreaMulticast, + - intraAreaMulticast and interAsMulticast + - intraAreaMulticast, interAreaMulticast and + interAsMulticast + By default, all bits are cleared." + ::= { ospfv3GeneralGroup 12 } + +ospfv3ExitOverflowInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of seconds that, after entering + OverflowState, a router will attempt to leave + OverflowState. This allows the router to again + originate non-default AS-External-LSAs. When + set to 0, the router will not leave Overflow- + State until restarted." + ::= { ospfv3GeneralGroup 13 } + +ospfv3DemandExtensions OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The router's support for demand routing." + REFERENCE + "OSPF Version 2, Appendix on Demand Routing" + ::= { ospfv3GeneralGroup 14 } + +ospfv3TrafficEngineeringSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The router's support for traffic engineering + extensions." + ::= { ospfv3GeneralGroup 15 } + +ospfv3ReferenceBandwidth OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Reference bandwidth in kilobits/second for + calculating default interface metrics. The + default value is 100,000 KBPS (100 MBPS)" + ::= { ospfv3GeneralGroup 16 } + +ospfv3RestartSupport OBJECT-TYPE + SYNTAX INTEGER { none (1), + plannedOnly (2), + plannedAndUnplanned (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The router's support for OSPF hitless restart. + Options include: no restart support, only planned + restarts or both planned and unplanned restarts." + ::= { ospfv3GeneralGroup 17 } + +ospfv3RestartInterval OBJECT-TYPE + SYNTAX UpToRefreshInterval + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Configured OSPF hitless restart timeout interval." + ::= { ospfv3GeneralGroup 18 } + +ospfv3RestartStatus OBJECT-TYPE + SYNTAX INTEGER { notRestarting (1), + plannedRestart (2), + unplannedRestart (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current status of OSPF hitless restart." + ::= { ospfv3GeneralGroup 19 } + +ospfv3RestartAge OBJECT-TYPE + SYNTAX UpToRefreshInterval + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Remaining time in current OSPF hitless restart + interval." + ::= { ospfv3GeneralGroup 20 } + +ospfv3RestartExitReason OBJECT-TYPE + SYNTAX INTEGER { none (1), -- none attempted + inProgress (2), -- restart in + -- progress + completed (3), -- successfully + -- completed + timedOut (4), -- timed out + topologyChanged (5) -- aborted due to + -- topologychange. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes the outcome of the last attempt at a + hitless restart. If the value is 'none', no restart + has yet been attempted. If the value is 'inProgress', + a restart attempt is currently underway." + ::= { ospfv3GeneralGroup 21 } + + +-- The OSPFv3 Area Data Structure contains information +-- regarding the various areas. The interfaces and +-- virtual links are configured as part of these areas. +-- Area 0.0.0.0, by definition, is the Backbone Area + +ospfv3AreaTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ospfv3AreaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the configured parame- + ters and cumulative statistics of the router's + attached areas." + REFERENCE + "OSPF Version 2, Section 6 The Area Data Struc- + ture" + ::= { ospfv3Objects 2 } + +ospfv3AreaEntry OBJECT-TYPE + SYNTAX Ospfv3AreaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the configured parame- + ters and cumulative statistics of one of the + router's attached areas." + INDEX { ospfv3AreaId } + ::= { ospfv3AreaTable 1 } + +Ospfv3AreaEntry ::= SEQUENCE { + ospfv3AreaId + AreaID, + ospfv3ImportAsExtern + INTEGER, + ospfv3AreaSpfRuns + Counter32, + ospfv3AreaBdrRtrCount + Gauge32, + ospfv3AreaAsBdrRtrCount + Gauge32, + ospfv3AreaScopeLsaCount + Gauge32, + ospfv3AreaScopeLsaCksumSum + Integer32, + ospfv3AreaSummary + INTEGER, + ospfv3AreaStatus + RowStatus, + ospfv3StubMetric + BigMetric, + ospfv3AreaNssaTranslatorRole + INTEGER, + ospfv3AreaNssaTranslatorState + INTEGER, + ospfv3AreaNssaTranslatorStabilityInterval + Unsigned32, + ospfv3AreaNssaTranslatorEvents + Counter32, + ospfv3AreaStubMetricType + INTEGER + } + +ospfv3AreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A 32-bit integer uniquely identifying an area. + Area ID 0.0.0.0 is used for the OSPFv3 backbone." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfv3AreaEntry 1 } + +ospfv3ImportAsExtern OBJECT-TYPE + SYNTAX INTEGER { + importExternal(1), -- normal area + importNoExternal(2), -- stub area + importNssa(3) -- not-so-stubby-area + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether an area is a Stub area, NSSA, or + standard area. AS-scope LSAs are not imported into Stub + Areas or NSSAs. NSSAs import AS-External data as Type-7 + LSAs which have Area-scope" + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + DEFVAL { importExternal } + ::= { ospfv3AreaEntry 2 } + +ospfv3AreaSpfRuns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that the intra-area route + table has been calculated using this area's + link-state database. This is typically done + using Dijkstra's algorithm." + ::= { ospfv3AreaEntry 3 } + +ospfv3AreaBdrRtrCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of area border routers reach- + able within this area. This is initially zero, + and is calculated in each SPF Pass." + ::= { ospfv3AreaEntry 4 } + +ospfv3AreaAsBdrRtrCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Autonomous System border + routers reachable within this area. This is + initially zero, and is calculated in each SPF + Pass." + ::= { ospfv3AreaEntry 5 } + +ospfv3AreaScopeLsaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Area-Scope link-state + advertisements in this area's link-state + database." + ::= { ospfv3AreaEntry 6 } + +ospfv3AreaScopeLsaCksumSum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 32-bit unsigned sum of the Area-Scope link-state + advertisements' LS checksums contained in this + area's link-state database. The sum can be used + to determine if there has been a change in a + router's link state database, and to compare the + link-state database of two routers." + ::= { ospfv3AreaEntry 7 } + +ospfv3AreaSummary OBJECT-TYPE + SYNTAX INTEGER { + noAreaSummary(1), + sendAreaSummary(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable ospfv3AreaSummary controls the im- + port of Inter-Area LSAs into stub areas. It has + no effect on other areas. + + If it is noAreaSummary, the router will neither + originate nor propagate Inter-Area LSAs into the + stub area. It will rely entirely on its de- + fault route. + + If it is sendAreaSummary, the router will both + summarize and propagate Inter-Area LSAs." + DEFVAL { sendAreaSummary } + ::= { ospfv3AreaEntry 8 } + +ospfv3AreaStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable controls the status of the en- + try. The use of RowStatus is covered in more detail + in [6]." + ::= { ospfv3AreaEntry 9 } + +ospfv3StubMetric OBJECT-TYPE + SYNTAX BigMetric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The metric value advertised for the default route + into Stub and NSSA areas." + ::= { ospfv3AreaEntry 10 } + +ospfv3AreaNssaTranslatorRole OBJECT-TYPE + SYNTAX INTEGER { always(1), candidate(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates an NSSA Border router's ability to + perform NSSA translation of type-7 LSAs into + type-5 LSAs." + DEFVAL { candidate } + ::= { ospfv3AreaEntry 11 } + +ospfv3AreaNssaTranslatorState OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + elected(2), + disabled(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates if and how an NSSA Border router is + performing NSSA translation of type-7 LSAs into type-5 + LSAs. When this object is set to enabled, the NSSA + Border router's ospfv3AreaNssTranslatorRole + has been set to always. When this object is set to + elected, a candidate NSSA Border router is translating + type-7 LSAs into type-5. When this object is set to + disabled, a candidate NSSA Border router is NOT + translating type-7 LSAs into type-5." + ::= { ospfv3AreaEntry 12 } + +ospfv3AreaNssaTranslatorStabilityInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds after an elected translator + determines its services are no longer required, that + it should continue to perform its translation duties." + DEFVAL { 40 } + ::= { ospfv3AreaEntry 13 } + +ospfv3AreaNssaTranslatorEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of Translator State changes + that have occurred since the last boot-up." + ::= { ospfv3AreaEntry 14 } + +ospfv3AreaStubMetricType OBJECT-TYPE + SYNTAX INTEGER { + ospfv3Metric (1), -- OSPF Metric + comparableCost (2), -- external type 1 + nonComparable (3) -- external type 2 + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable displays the type of metric ad- + vertised as a default route." + DEFVAL { ospfv3Metric } + ::= { ospfv3AreaEntry 15 } + +-- OSPFv3 AS-Scope Link State Database + +-- The Link State Database contains the AS-Scope Link State +-- Advertisements from throughout the areas that the +-- device is attached to. + +ospfv3AsLsdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ospfv3AsLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The OSPFv3 Process's AS-Scope Link State Database." + ::= { ospfv3Objects 3 } + +ospfv3AsLsdbEntry OBJECT-TYPE + SYNTAX Ospfv3AsLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single AS-Scope Link State Advertisement." + INDEX { ospfv3AsLsdbType, + ospfv3AsLsdbRouterId, + ospfv3AsLsdbLsid } + ::= { ospfv3AsLsdbTable 1 } + +Ospfv3AsLsdbEntry ::= SEQUENCE { + ospfv3AsLsdbType + Unsigned32, + ospfv3AsLsdbRouterId + RouterID, + ospfv3AsLsdbLsid + IpAddress, + ospfv3AsLsdbSequence + Integer32, + ospfv3AsLsdbAge + Integer32, + ospfv3AsLsdbChecksum + Integer32, + ospfv3AsLsdbAdvertisement + OCTET STRING, + ospfv3AsLsdbTypeKnown + TruthValue + } + +ospfv3AsLsdbType OBJECT-TYPE + SYNTAX Unsigned32(0..'FFFFFFFF'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the link state advertisement. + Each link state type has a separate advertise- + ment format. AS-Scope LSAs not recognized by + the router may be stored in the database." + ::= { ospfv3AsLsdbEntry 1 } + +ospfv3AsLsdbRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The 32 bit number that uniquely identifies the + originating router in the Autonomous System." + REFERENCE + "OSPF Version 2, Appendix C.1 Global parameters" + ::= { ospfv3AsLsdbEntry 2 } + +ospfv3AsLsdbLsid OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Link State ID is an LS Type Specific field + containing a unique identifier; + it identifies the piece of the routing domain + that is being described by the advertisement. + In contrast to OSPFv2, the LSID has no + addressing semantics." + ::= { ospfv3AsLsdbEntry 3 } + +-- Note that the OSPF Sequence Number is a 32 bit signed +-- integer. It starts with the value '80000001'h, +-- or -'7FFFFFFF'h, and increments until '7FFFFFFF'h +-- Thus, a typical sequence number will be very negative. + +ospfv3AsLsdbSequence OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number field is a signed 32-bit + integer. It is used to detect old and dupli- + cate link state advertisements. The space of + sequence numbers is linearly ordered. The + larger the sequence number the more recent the + advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.6 LS sequence + number" + ::= { ospfv3AsLsdbEntry 4 } + +ospfv3AsLsdbAge OBJECT-TYPE + SYNTAX Integer32 -- Should be 0..MaxAge + -- unless DoNotAge bit is set + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the age of the link state adver- + tisement in seconds." + REFERENCE + "OSPF Version 2, Section 12.1.1 LS age" + ::= { ospfv3AsLsdbEntry 5 } + +ospfv3AsLsdbChecksum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the checksum of the complete + contents of the advertisement, excepting the + age field. The age field is excepted so that + an advertisement's age can be incremented + without updating the checksum. The checksum + used is the same that is used for ISO connec- + tionless datagrams; it is commonly referred to + as the Fletcher checksum." + REFERENCE + "OSPF Version 2, Section 12.1.7 LS checksum" + ::= { ospfv3AsLsdbEntry 6 } + +ospfv3AsLsdbAdvertisement OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..65535)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The entire Link State Advertisement, including + its header." + ::= { ospfv3AsLsdbEntry 7 } + +ospfv3AsLsdbTypeKnown OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Is the LSA type recognized by this Router?" + ::= { ospfv3AsLsdbEntry 8 } + + +-- OSPFv3 Area-Scope Link State Database + +-- The Link State Database contains the Area-Scope Link State +-- Advertisements from throughout the area that the +-- device is attached to. + +ospfv3AreaLsdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ospfv3AreaLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The OSPFv3 Process's Area-Scope Link State Database." + ::= { ospfv3Objects 4 } + +ospfv3AreaLsdbEntry OBJECT-TYPE + SYNTAX Ospfv3AreaLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single Area-Scope Link State Advertisement." + INDEX { ospfv3AreaLsdbAreaId, + ospfv3AreaLsdbType, + ospfv3AreaLsdbRouterId, + ospfv3AreaLsdbLsid } + ::= { ospfv3AreaLsdbTable 1 } + +Ospfv3AreaLsdbEntry ::= SEQUENCE { + ospfv3AreaLsdbAreaId + AreaID, + ospfv3AreaLsdbType + Unsigned32, + ospfv3AreaLsdbRouterId + RouterID, + ospfv3AreaLsdbLsid + IpAddress, + ospfv3AreaLsdbSequence + Integer32, + ospfv3AreaLsdbAge + Integer32, + ospfv3AreaLsdbChecksum + Integer32, + ospfv3AreaLsdbAdvertisement + OCTET STRING, + ospfv3AreaLsdbTypeKnown + TruthValue + } + +ospfv3AreaLsdbAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The 32 bit identifier of the Area from which the + LSA was received." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfv3AreaLsdbEntry 1 } + +ospfv3AreaLsdbType OBJECT-TYPE + SYNTAX Unsigned32(0..'FFFFFFFF'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the link state advertisement. + Each link state type has a separate advertise- + ment format. Area-Scope LSAs unrecognized by the + router are also stored in this database." + ::= { ospfv3AreaLsdbEntry 2 } + +ospfv3AreaLsdbRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The 32 bit number that uniquely identifies the + originating router in the Autonomous System." + REFERENCE + "OSPF Version 2, Appendix C.1 Global parameters" + ::= { ospfv3AreaLsdbEntry 3 } + +ospfv3AreaLsdbLsid OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Link State ID is an LS Type Specific field + containing a unique identifier; + it identifies the piece of the routing domain + that is being described by the advertisement. + In contrast to OSPFv2, the LSID has no + addressing semantics." + ::= { ospfv3AreaLsdbEntry 4 } + +-- Note that the OSPF Sequence Number is a 32 bit signed +-- integer. It starts with the value '80000001'h, +-- or -'7FFFFFFF'h, and increments until '7FFFFFFF'h +-- Thus, a typical sequence number will be very negative. + +ospfv3AreaLsdbSequence OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number field is a signed 32-bit + integer. It is used to detect old and dupli- + cate link state advertisements. The space of + sequence numbers is linearly ordered. The + larger the sequence number the more recent the + advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.6 LS sequence + number" + ::= { ospfv3AreaLsdbEntry 5 } + +ospfv3AreaLsdbAge OBJECT-TYPE + SYNTAX Integer32 -- Should be 0..MaxAge + -- unless DoNotAge bit is set + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the age of the link state adver- + tisement in seconds." + REFERENCE + "OSPF Version 2, Section 12.1.1 LS age" + ::= { ospfv3AreaLsdbEntry 6 } + +ospfv3AreaLsdbChecksum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the checksum of the complete + contents of the advertisement, excepting the + age field. The age field is excepted so that + an advertisement's age can be incremented + without updating the checksum. The checksum + used is the same that is used for ISO connec- + tionless datagrams; it is commonly referred to + as the Fletcher checksum." + REFERENCE + "OSPF Version 2, Section 12.1.7 LS checksum" + ::= { ospfv3AreaLsdbEntry 7 } + +ospfv3AreaLsdbAdvertisement OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..65535)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The entire Link State Advertisement, including + its header." + ::= { ospfv3AreaLsdbEntry 8 } + +ospfv3AreaLsdbTypeKnown OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Is the LSA type recognized by this Router?" + ::= { ospfv3AreaLsdbEntry 9 } + +-- OSPFv3 Link-Scope Link State Database + +-- The Link State Database contains the Link-Scope Link State +-- Advertisements from the links that the +-- device is attached to. + +ospfv3LinkLsdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ospfv3LinkLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The OSPFv3 Process's Link-Scope Link State Database." + ::= { ospfv3Objects 5 } + +ospfv3LinkLsdbEntry OBJECT-TYPE + SYNTAX Ospfv3LinkLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single Link-Scope Link State Advertisement." + INDEX { ospfv3LinkLsdbIfIndex, + ospfv3LinkLsdbType, + ospfv3LinkLsdbRouterId, + ospfv3LinkLsdbLsid } + ::= { ospfv3LinkLsdbTable 1 } + +Ospfv3LinkLsdbEntry ::= SEQUENCE { + ospfv3LinkLsdbIfIndex + InterfaceIndex, + ospfv3LinkLsdbType + Unsigned32, + ospfv3LinkLsdbRouterId + RouterID, + ospfv3LinkLsdbLsid + IpAddress, + ospfv3LinkLsdbSequence + Integer32, + ospfv3LinkLsdbAge + Integer32, + ospfv3LinkLsdbChecksum + Integer32, + ospfv3LinkLsdbAdvertisement + OCTET STRING, + ospfv3LinkLsdbTypeKnown + TruthValue + } + +ospfv3LinkLsdbIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The identifier of the link from which the LSA + was received." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfv3LinkLsdbEntry 1 } + +ospfv3LinkLsdbType OBJECT-TYPE + SYNTAX Unsigned32(0..'FFFFFFFF'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the link state advertisement. + Each link state type has a separate advertise- + ment format. Link-Scope LSAs unrecognized by the + router are also stored in this database." + ::= { ospfv3LinkLsdbEntry 2 } + +ospfv3LinkLsdbRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The 32 bit number that uniquely identifies the + originating router in the Autonomous System." + REFERENCE + "OSPF Version 2, Appendix C.1 Global parameters" + ::= { ospfv3LinkLsdbEntry 3 } + +ospfv3LinkLsdbLsid OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Link State ID is an LS Type Specific field + containing a unique identifier; + it identifies the piece of the routing domain + that is being described by the advertisement. + In contrast to OSPFv2, the LSID has no + addressing semantics." + ::= { ospfv3LinkLsdbEntry 4 } + +-- Note that the OSPF Sequence Number is a 32 bit signed +-- integer. It starts with the value '80000001'h, +-- or -'7FFFFFFF'h, and increments until '7FFFFFFF'h +-- Thus, a typical sequence number will be very negative. + +ospfv3LinkLsdbSequence OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number field is a signed 32-bit + integer. It is used to detect old and dupli- + cate link state advertisements. The space of + sequence numbers is linearly ordered. The + larger the sequence number the more recent the + advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.6 LS sequence + number" + ::= { ospfv3LinkLsdbEntry 5 } + +ospfv3LinkLsdbAge OBJECT-TYPE + SYNTAX Integer32 -- Should be 0..MaxAge + -- unless DoNotAge bit is set + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the age of the link state + advertisement in seconds." + REFERENCE + "OSPF Version 2, Section 12.1.1 LS age" + ::= { ospfv3LinkLsdbEntry 6 } + +ospfv3LinkLsdbChecksum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the checksum of the complete + contents of the advertisement, excepting the + age field. The age field is excepted so that + an advertisement's age can be incremented + without updating the checksum. The checksum + used is the same that is used for ISO connec- + tionless datagrams; it is commonly referred to + as the Fletcher checksum." + REFERENCE + "OSPF Version 2, Section 12.1.7 LS checksum" + ::= { ospfv3LinkLsdbEntry 7 } + +ospfv3LinkLsdbAdvertisement OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..65535)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The entire Link State Advertisement, including + its header." + ::= { ospfv3LinkLsdbEntry 8 } + +ospfv3LinkLsdbTypeKnown OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the LSA type is recognized by this + Router." + ::= { ospfv3LinkLsdbEntry 9 } + + +-- OSPF Host Table + +-- The Host/Metric Table indicates what hosts are directly +-- attached to the Router, and what metrics and types of +-- service should be advertised for them. + +ospfv3HostTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ospfv3HostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The list of Hosts, and their metrics, that the + router will advertise as host routes." + REFERENCE + "OSPF Version 2, Appendix C.6 Host route param- + eters" + ::= { ospfv3Objects 6 } + +ospfv3HostEntry OBJECT-TYPE + SYNTAX Ospfv3HostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A metric to be advertised when a given host is + reachable." + INDEX { ospfv3HostAddressType, + ospfv3HostAddress } + ::= { ospfv3HostTable 1 } + +Ospfv3HostEntry ::= SEQUENCE { + ospfv3HostAddressType + InetAddressType, + ospfv3HostAddress + InetAddress, + ospfv3HostMetric + Metric, + ospfv3HostStatus + RowStatus, + ospfv3HostAreaID + AreaID + } + +ospfv3HostAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of ospfv3HostAddress. Only IPv6 + addresses without zone index are expected." + REFERENCE + "OSPF Version 2, Appendix C.6 Host route parame- + ters" + ::= { ospfv3HostEntry 1 } + + +ospfv3HostAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv6 Address of the Host. Must be a Global + or Site-local address." + REFERENCE + "OSPF Version 2, Appendix C.6 Host route parame- + ters" + ::= { ospfv3HostEntry 2 } + +ospfv3HostMetric OBJECT-TYPE + SYNTAX Metric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Metric to be advertised." + REFERENCE + "OSPF Version 2, Appendix C.6 Host route parame- + ters" + ::= { ospfv3HostEntry 3 } + +ospfv3HostStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable controls the status of the en- + try. The use of RowStatus is covered in more detail + in [6]." + ::= { ospfv3HostEntry 4 } + +ospfv3HostAreaID OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Area the Host Entry is to be found within. + By default, the area that a subsuming OSPFv3 in- + terface is in, or 0.0.0.0" + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfv3HostEntry 5 } + +-- OSPFv3 Interface Table + +ospfv3IfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ospfv3IfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The OSPFv3 Interface Table describes the inter- + faces from the viewpoint of OSPFv3." + REFERENCE + "OSPF Version 2, Appendix C.3 Router interface + parameters" + ::= { ospfv3Objects 7 } + +ospfv3IfEntry OBJECT-TYPE + SYNTAX Ospfv3IfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The OSPFv3 Interface Entry describes one inter- + face from the viewpoint of OSPFv3." + INDEX { ospfv3IfIndex } + ::= { ospfv3IfTable 1 } + + +Ospfv3IfEntry ::= SEQUENCE { + ospfv3IfIndex + InterfaceIndex, + ospfv3IfAreaId + AreaID, + ospfv3IfType + INTEGER, + ospfv3IfAdminStat + Status, + ospfv3IfRtrPriority + DesignatedRouterPriority, + ospfv3IfTransitDelay + UpToRefreshInterval, + ospfv3IfRetransInterval + UpToRefreshInterval, + ospfv3IfHelloInterval + HelloRange, + ospfv3IfRtrDeadInterval + RouterDeadRange, + ospfv3IfPollInterval + Unsigned32, + ospfv3IfState + INTEGER, + ospfv3IfDesignatedRouter + RouterID, + ospfv3IfBackupDesignatedRouter + RouterID, + ospfv3IfEvents + Counter32, + ospfv3IfStatus + RowStatus, + ospfv3IfMulticastForwarding + INTEGER, + ospfv3IfDemand + TruthValue, + ospfv3IfMetricValue + Metric, + ospfv3IfLinkScopeLsaCount + Gauge32, + ospfv3IfLinkLsaCksumSum + Integer32, + ospfv3IfInstId + Integer32, + ospfv3IfDemandNbrProbe + TruthValue, + ospfv3IfDemandNbrProbeRetxLimit + Unsigned32, + ospfv3IfDemandNbrProbeInterval + Unsigned32 + } + +ospfv3IfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface index of this OSPFv3 interface. + It corresponds to the interface index of the + IPv6 interface on which OSPFv3 is configured." + ::= { ospfv3IfEntry 1 } + +ospfv3IfAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A 32-bit integer uniquely identifying the area + to which the interface connects. Area ID + 0.0.0.0 is used for the OSPFv3 backbone." + DEFVAL { '00000000'H } -- 0.0.0.0 + ::= { ospfv3IfEntry 2 } + +ospfv3IfType OBJECT-TYPE + SYNTAX INTEGER { + broadcast(1), + nbma(2), + pointToPoint(3), + pointToMultipoint(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The OSPFv3 interface type." + ::= { ospfv3IfEntry 3 } + +ospfv3IfAdminStat OBJECT-TYPE + SYNTAX Status + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The OSPFv3 interface's administrative status. + The value formed on the interface, and the in- + terface will be advertised as an internal route + to some area. The value 'disabled' denotes + that the interface is external to OSPFv3." + DEFVAL { enabled } + ::= { ospfv3IfEntry 4 } + +ospfv3IfRtrPriority OBJECT-TYPE + SYNTAX DesignatedRouterPriority + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The priority of this interface. Used in + multi-access networks, this field is used in + the designated router election algorithm. The + value 0 signifies that the router is not eligi- + ble to become the designated router on this + particular network. In the event of a tie in + this value, routers will use their Router ID as + a tie breaker." + DEFVAL { 1 } + ::= { ospfv3IfEntry 5 } + +ospfv3IfTransitDelay OBJECT-TYPE + SYNTAX UpToRefreshInterval + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The estimated number of seconds it takes to + transmit a link state update packet over this + interface." + DEFVAL { 1 } + ::= { ospfv3IfEntry 6 } + +ospfv3IfRetransInterval OBJECT-TYPE + SYNTAX UpToRefreshInterval + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds between link-state ad- + vertisement retransmissions, for adjacencies + belonging to this interface. This value is + also used when retransmitting database descrip- + tion and link-state request packets." + DEFVAL { 5 } + ::= { ospfv3IfEntry 7 } + +ospfv3IfHelloInterval OBJECT-TYPE + SYNTAX HelloRange + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of time, in seconds, between the + Hello packets that the router sends on the in- + terface. This value must be the same for all + routers attached to a common network." + DEFVAL { 10 } + ::= { ospfv3IfEntry 8 } + +ospfv3IfRtrDeadInterval OBJECT-TYPE + SYNTAX RouterDeadRange + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds that a router's Hello + packets have not been seen before it's neigh- + bors declare the router down. This should be + some multiple of the Hello interval. This + value must be the same for all routers attached + to a common network." + DEFVAL { 40 } + ::= { ospfv3IfEntry 9 } + +ospfv3IfPollInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The larger time interval, in seconds, between + the Hello packets sent to an inactive non- + broadcast multi- access neighbor." + DEFVAL { 120 } + ::= { ospfv3IfEntry 10 } + +ospfv3IfState OBJECT-TYPE + SYNTAX INTEGER { + down(1), + loopback(2), + waiting(3), + pointToPoint(4), + designatedRouter(5), + backupDesignatedRouter(6), + otherDesignatedRouter(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The OSPFv3 Interface State." + ::= { ospfv3IfEntry 11 } + +ospfv3IfDesignatedRouter OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Router ID of the Designated Router." + ::= { ospfv3IfEntry 12 } + +ospfv3IfBackupDesignatedRouter OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Router ID of the Backup Designated + Router." + ::= { ospfv3IfEntry 14 } + +ospfv3IfEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this OSPF interface has + changed its state, or an error has occurred." + ::= { ospfv3IfEntry 15 } + + ospfv3IfStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable controls the status of the en- + try. The use of RowStatus is covered in more detail in + [6]." + ::= { ospfv3IfEntry 17 } + +ospfv3IfMulticastForwarding OBJECT-TYPE + SYNTAX INTEGER { + blocked(1), -- no multicast forwarding + multicast(2), -- using multicast address + unicast(3) -- to each OSPFv3 neighbor + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The way multicasts should forwarded on this + interface; not forwarded, forwarded as data + link multicasts, or forwarded as data link uni- + casts. Data link multicasting is not meaning- + ful on point to point and NBMA interfaces, and + setting ospfv3MulticastForwarding to 0 effective- + ly disables all multicast forwarding." + DEFVAL { blocked } + ::= { ospfv3IfEntry 18 } + +ospfv3IfDemand OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether Demand OSPFv3 procedures (hel- + lo suppression to FULL neighbors and setting the + DoNotAge flag on propagated LSAs) should be per- + formed on this interface." + DEFVAL { false } + ::= { ospfv3IfEntry 19 } + +ospfv3IfMetricValue OBJECT-TYPE + SYNTAX Metric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The metric assigned to this interface. + The default value of the Metric is + Reference Bandwidth / ifSpeed. The value of the + reference bandwidth is configured by the + ospfv3ReferenceBandwidth object." + ::= { ospfv3IfEntry 20 } + + ospfv3IfLinkScopeLsaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Link-Scope link-state + advertisements in this link's link-state database." + ::= { ospfv3IfEntry 21 } + + ospfv3IfLinkLsaCksumSum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 32-bit unsigned sum of the Link-Scope link-state + advertisements' LS checksums contained in this + link's link-state database. The sum can be used + to determine if there has been a change in a + router's link state database, and to compare the + link-state database of two routers." + ::= { ospfv3IfEntry 22 } + +ospfv3IfInstId OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Enables multiple instances of OSPFv3 to be run over + a single link. Each protocol instance would be assigned + a separate ID. This ID has local link significance + only." + DEFVAL { 0 } + ::= { ospfv3IfEntry 23 } + +ospfv3IfDemandNbrProbe OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " Indicates whether or not neighbor probing is + enabled to determine whether or not the neighbor + is inactive. Neighbor probing is disabled by + default." + DEFVAL { false } + ::= { ospfv3IfEntry 24 } + + ospfv3IfDemandNbrProbeRetxLimit OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " The number of consecutive LSA retransmissions before + the neighbor is deemed inactive and the neighbor + adjacency is brought down." + DEFVAL { 10 } + ::= { ospfv3IfEntry 25 } + + + ospfv3IfDemandNbrProbeInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " Defines how often the neighbor will be probed." + DEFVAL { 120 } + ::= { ospfv3IfEntry 26 } + + +-- OSPFv3 Virtual Interface Table + +-- The Virtual Interface Table describes the virtual +-- links that the OSPFv3 Process is configured to +-- carry on. + +ospfv3VirtIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ospfv3VirtIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about this router's virtual inter- + faces." + REFERENCE + "OSPF Version 2, Appendix C.4 Virtual link + parameters" + ::= { ospfv3Objects 8 } + +ospfv3VirtIfEntry OBJECT-TYPE + SYNTAX Ospfv3VirtIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single Virtual Interface." + INDEX { ospfv3VirtIfAreaId, + ospfv3VirtIfNeighbor } + ::= { ospfv3VirtIfTable 1 } + +Ospfv3VirtIfEntry ::= SEQUENCE { + ospfv3VirtIfAreaId + AreaID, + ospfv3VirtIfNeighbor + RouterID, + ospfv3VirtIfIndex + InterfaceIndex, + ospfv3VirtIfTransitDelay + UpToRefreshInterval, + ospfv3VirtIfRetransInterval + UpToRefreshInterval, + ospfv3VirtIfHelloInterval + HelloRange, + ospfv3VirtIfRtrDeadInterval + RouterDeadRange, + ospfv3VirtIfState + INTEGER, + ospfv3VirtIfEvents + Counter32, + ospfv3VirtIfStatus + RowStatus, + ospfv3VirtIfLinkScopeLsaCount + Gauge32, + ospfv3VirtIfLinkLsaCksumSum + Integer32 + } + +ospfv3VirtIfAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Transit Area that the Virtual Link + traverses. By definition, this is not 0.0.0.0" + ::= { ospfv3VirtIfEntry 1 } + +ospfv3VirtIfNeighbor OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Router ID of the Virtual Neighbor." + ::= { ospfv3VirtIfEntry 2 } + +ospfv3VirtIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interface ID assigned to this OSPFv3 virtual + interface. It is advertised in Hello's sent over + the virtal link and in the router's router-LSAs." + ::= { ospfv3VirtIfEntry 3 } + +ospfv3VirtIfTransitDelay OBJECT-TYPE + SYNTAX UpToRefreshInterval + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The estimated number of seconds it takes to + transmit a link- state update packet over this + interface." + DEFVAL { 1 } + ::= { ospfv3VirtIfEntry 4 } + +ospfv3VirtIfRetransInterval OBJECT-TYPE + SYNTAX UpToRefreshInterval + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds between link-state ad- + vertisement retransmissions, for adjacencies + belonging to this interface. This value is + also used when retransmitting database descrip- + tion and link-state request packets. This + value should be well over the expected round- + trip time." + DEFVAL { 5 } + ::= { ospfv3VirtIfEntry 5 } + +ospfv3VirtIfHelloInterval OBJECT-TYPE + SYNTAX HelloRange + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of time, in seconds, between the + Hello packets that the router sends on the in- + terface. This value must be the same for the + virtual neighbor." + DEFVAL { 10 } + ::= { ospfv3VirtIfEntry 6 } + +ospfv3VirtIfRtrDeadInterval OBJECT-TYPE + SYNTAX RouterDeadRange + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds that a router's Hello + packets have not been seen before it's neigh- + bors declare the router down. This should be + some multiple of the Hello interval. This + value must be the same for the virtual neigh- + bor." + DEFVAL { 60 } + ::= { ospfv3VirtIfEntry 7 } + +ospfv3VirtIfState OBJECT-TYPE + SYNTAX INTEGER { + down(1), -- these use the same encoding + pointToPoint(4) -- as the ospfv3IfTable + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "OSPF virtual interface states." + ::= { ospfv3VirtIfEntry 8 } + +ospfv3VirtIfEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of state changes or error events on + this Virtual Link" + ::= { ospfv3VirtIfEntry 9 } + +ospfv3VirtIfStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable controls the status of the en- + try. The use of RowStatus is covered in more detail + in [6]." + ::= { ospfv3VirtIfEntry 10 } + +ospfv3VirtIfLinkScopeLsaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Link-Scope link-state + advertisements in this virtual link's link-state + database." + ::= { ospfv3VirtIfEntry 11 } + +ospfv3VirtIfLinkLsaCksumSum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 32-bit unsigned sum of the Link-Scope link-state + advertisements' LS checksums contained in this + virtual link's link-state database. The sum can be used + to determine if there has been a change in a + router's link state database, and to compare the + link-state database of two routers." + ::= { ospfv3VirtIfEntry 12 } + + +-- OSPFv3 Neighbor Table + +-- The OSPFv3 Neighbor Table describes all neighbors in +-- the locality of the subject router. + +ospfv3NbrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ospfv3NbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of non-virtual neighbor information." + REFERENCE + "OSPF Version 2, Section 10 The Neighbor Data + Structure" + ::= { ospfv3Objects 9 } + +ospfv3NbrEntry OBJECT-TYPE + SYNTAX Ospfv3NbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The information regarding a single neighbor." + REFERENCE + "OSPF Version 2, Section 10 The Neighbor Data + Structure" + INDEX { ospfv3NbrIfIndex, + ospfv3NbrRtrId } + ::= { ospfv3NbrTable 1 } + +Ospfv3NbrEntry ::= SEQUENCE { + ospfv3NbrIfIndex + InterfaceIndex, + ospfv3NbrRtrId + RouterID, + ospfv3NbrAddressType + InetAddressType, + ospfv3NbrAddress + InetAddress, + ospfv3NbrOptions + Integer32, + ospfv3NbrPriority + DesignatedRouterPriority, + ospfv3NbrState + INTEGER, + ospfv3NbrEvents + Counter32, + ospfv3NbrLsRetransQLen + Gauge32, + ospfv3NbrHelloSuppressed + TruthValue, + ospfv3NbrIfId + InterfaceIndex, + ospfv3NbrRestartHelperStatus + INTEGER, + ospfv3NbrRestartHelperAge + UpToRefreshInterval, + ospfv3NbrRestartHelperExitReason + INTEGER + } + +ospfv3NbrIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local link ID of the link over which the + neighbor can be reached." + ::= { ospfv3NbrEntry 1 } + +ospfv3NbrRtrId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A 32-bit integer (represented as a type IpAd- + dress) uniquely identifying the neighboring + router in the Autonomous System." + ::= { ospfv3NbrEntry 2 } + +ospfv3NbrAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of ospfv3NbrAddress. Only IPv6 + addresses without zone index are expected." + ::= { ospfv3NbrEntry 3 } + +ospfv3NbrAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IPv6 address of the neighbor associated with + the local link." + ::= { ospfv3NbrEntry 4 } + +ospfv3NbrOptions OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A Bit Mask corresponding to the neighbor's op- + tions field." + REFERENCE + "OSPF Version 3, Appendix A.2 the Options field" + ::= { ospfv3NbrEntry 5 } + +ospfv3NbrPriority OBJECT-TYPE + SYNTAX DesignatedRouterPriority + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The priority of this neighbor in the designat- + ed router election algorithm. The value 0 sig- + nifies that the neighbor is not eligible to be- + come the designated router on this particular + network." + ::= { ospfv3NbrEntry 6 } + +ospfv3NbrState OBJECT-TYPE + SYNTAX INTEGER { + down(1), + attempt(2), + init(3), + twoWay(4), + exchangeStart(5), + exchange(6), + loading(7), + full(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The State of the relationship with this Neigh- + bor." + REFERENCE + "OSPF Version 2, Section 10.1 Neighbor States" + ::= { ospfv3NbrEntry 7 } + +ospfv3NbrEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this neighbor relationship + has changed state, or an error has occurred." + ::= { ospfv3NbrEntry 8 } + +ospfv3NbrLsRetransQLen OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current length of the retransmission + queue." + ::= { ospfv3NbrEntry 9 } + +ospfv3NbrHelloSuppressed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether Hellos are being suppressed + to the neighbor" + ::= { ospfv3NbrEntry 10 } + +ospfv3NbrIfId OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The interface ID that the neighbor advertises + in its Hello Packets on this link, that is, the + neighbor's local interface index." + ::= { ospfv3NbrEntry 11 } + +ospfv3NbrRestartHelperStatus OBJECT-TYPE + SYNTAX INTEGER { notHelping (1), + helping (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the router is acting + as a hitless restart helper for the neighbor." + ::= { ospfv3NbrEntry 12 } + +ospfv3NbrRestartHelperAge OBJECT-TYPE + SYNTAX UpToRefreshInterval + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Remaining time in current OSPF hitless restart + interval, if the router is acting as a restart + helper for the neighbor." + ::= { ospfv3NbrEntry 13 } + +ospfv3NbrRestartHelperExitReason OBJECT-TYPE + SYNTAX INTEGER { none (1), -- not attempted + inProgress (2), -- restart in + -- progress + completed (3), -- successfully + -- completed + timedOut (4), -- timed out + topologyChanged (5) -- aborted due to + -- topology + -- change. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes the outcome of the last attempt at acting + as a hitless restart helper for the neighbor." + ::= { ospfv3NbrEntry 14 } + + +-- OSPFv3 NBMA Neighbor Table + +-- The OSPFv3 NBMA Neighbor Table describes all configured +-- NBMA neighbors and neighbors dynamically discovered by +-- lower-level protocols such as Inverse Neighbor Discovery. + +ospfv3NbmaNbrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ospfv3NbmaNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of configured non-virtual neighbor + information and neighbors dynamically discovered + by lower-level protocols such as Inverse Neighbor + Discovery." + REFERENCE + "OSPF Version 2, Section 10 The Neighbor Data + Structure" + ::= { ospfv3Objects 10 } + +ospfv3NbmaNbrEntry OBJECT-TYPE + SYNTAX Ospfv3NbmaNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The information regarding a single configured + neighbor or neighbor discovered by lower-level + protocols such as Inverse Neighbor Discovery." + REFERENCE + "OSPF Version 2, Section 10 The Neighbor Data + Structure" + INDEX { ospfv3NbmaNbrIfIndex, + ospfv3NbmaNbrAddressType, + ospfv3NbmaNbrAddress } + ::= { ospfv3NbmaNbrTable 1 } + +Ospfv3NbmaNbrEntry ::= SEQUENCE { + ospfv3NbmaNbrIfIndex + InterfaceIndex, + ospfv3NbmaNbrAddressType + InetAddressType, + ospfv3NbmaNbrAddress + InetAddress, + ospfv3NbmaNbrPriority + DesignatedRouterPriority, + ospfv3NbmaNbrRtrId + RouterID, + ospfv3NbmaNbrState + INTEGER, + ospfv3NbmaNbrStorageType + StorageType, + ospfv3NbmaNbrStatus + RowStatus + } + +ospfv3NbmaNbrIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local link ID of the link over which the + neighbor can be reached." + ::= { ospfv3NbmaNbrEntry 1 } + +ospfv3NbmaNbrAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of ospfv3NbrAddress. Only IPv6 + addresses without zone index are expected." + ::= { ospfv3NbmaNbrEntry 2 } + +ospfv3NbmaNbrAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv6 address of the neighbor associated with + the local link." + ::= { ospfv3NbmaNbrEntry 3 } + +ospfv3NbmaNbrPriority OBJECT-TYPE + SYNTAX DesignatedRouterPriority + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The priority of this neighbor in the designat- + ed router election algorithm. The value 0 sig- + nifies that the neighbor is not eligible to be- + come the designated router on this particular + network." + DEFVAL { 1 } + ::= { ospfv3NbmaNbrEntry 4 } + +ospfv3NbmaNbrRtrId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A 32-bit integer (represented as a type IpAd- + dress) uniquely identifying the neighboring + router in the Autonomous System. A value of + 0.0.0.0 is returned until a Hello is received + from the configured neighbor." + ::= { ospfv3NbmaNbrEntry 5 } + +ospfv3NbmaNbrState OBJECT-TYPE + SYNTAX INTEGER { + down(1), + attempt(2), + init(3), + twoWay(4), + exchangeStart(5), + exchange(6), + loading(7), + full(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The State of the relationship with this Neigh- + bor." + REFERENCE + "OSPF Version 2, Section 10.1 Neighbor States" + ::= { ospfv3NbmaNbrEntry 6 } + +ospfv3NbmaNbrStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row. + Manually configured entries will have a storage type + of nonVolatile while entries dynamically created as a + result of a lower-level protocol such as Inverse + Neighbor Discovery will have a storage type of + volatile." + DEFVAL { nonVolatile } + ::= { ospfv3NbmaNbrEntry 7 } + +ospfv3NbmaNbrStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable controls the status of the en- + try. The use of RowStatus is covered in more detail + in [6]." + ::= { ospfv3NbmaNbrEntry 8 } + +-- OSPFv3 Virtual Neighbor Table + +-- This table describes all virtual neighbors. +-- Since Virtual Links are configured in the +-- virtual interface table, this table is read-only. + +ospfv3VirtNbrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ospfv3VirtNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of virtual neighbor information." + REFERENCE + "OSPF Version 2, Section 15 Virtual Links" + ::= { ospfv3Objects 11 } + +ospfv3VirtNbrEntry OBJECT-TYPE + SYNTAX Ospfv3VirtNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Virtual neighbor information." + INDEX { ospfv3VirtNbrArea, + ospfv3VirtNbrRtrId } + ::= { ospfv3VirtNbrTable 1 } + +Ospfv3VirtNbrEntry ::= SEQUENCE { + ospfv3VirtNbrArea + AreaID, + ospfv3VirtNbrRtrId + RouterID, + ospfv3VirtNbrIfIndex + InterfaceIndex, + ospfv3VirtNbrAddressType + InetAddressType, + ospfv3VirtNbrAddress + InetAddress, + ospfv3VirtNbrOptions + Integer32, + ospfv3VirtNbrState + INTEGER, + ospfv3VirtNbrEvents + Counter32, + ospfv3VirtNbrLsRetransQLen + Gauge32, + ospfv3VirtNbrHelloSuppressed + TruthValue, + ospfv3VirtNbrIfId + InterfaceIndex, + ospfv3VirtNbrRestartHelperStatus + INTEGER, + ospfv3VirtNbrRestartHelperAge + UpToRefreshInterval, + ospfv3VirtNbrRestartHelperExitReason + INTEGER + } + +ospfv3VirtNbrArea OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Transit Area Identifier." + ::= { ospfv3VirtNbrEntry 1 } + +ospfv3VirtNbrRtrId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A 32-bit integer uniquely identifying the + neighboring router in the Autonomous System." + ::= { ospfv3VirtNbrEntry 2 } + +ospfv3VirtNbrIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local interface ID for the virtual link over + which the neighbor can be reached." + ::= { ospfv3VirtNbrEntry 3 } + +ospfv3VirtNbrAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of ospfv3VirtNbrAddress. Only IPv6 + addresses without zone index are expected." + ::= { ospfv3VirtNbrEntry 4 } + +ospfv3VirtNbrAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IPv6 address advertised by this Virtual Neighbor. + It must be a Site-Local or Global scope address." + ::= { ospfv3VirtNbrEntry 5 } + +ospfv3VirtNbrOptions OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A Bit Mask corresponding to the neighbor's op- + tions field." + REFERENCE + "OSPF Version 3, Appendix A.2 the Options field" + ::= { ospfv3VirtNbrEntry 6 } + +ospfv3VirtNbrState OBJECT-TYPE + SYNTAX INTEGER { + down(1), + attempt(2), + init(3), + twoWay(4), + exchangeStart(5), + exchange(6), + loading(7), + full(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the Virtual Neighbor Relation- + ship." + ::= { ospfv3VirtNbrEntry 7 } + +ospfv3VirtNbrEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this virtual link has + changed its state, or an error has occurred." + ::= { ospfv3VirtNbrEntry 8 } + +ospfv3VirtNbrLsRetransQLen OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current length of the retransmission + queue." + ::= { ospfv3VirtNbrEntry 9 } + +ospfv3VirtNbrHelloSuppressed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether Hellos are being suppressed + to the neighbor" + ::= { ospfv3VirtNbrEntry 10 } + +ospfv3VirtNbrIfId OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The interface ID that the neighbor advertises + in its Hello Packets on this virtual link, that is, + the neighbor's local interface ID." + ::= { ospfv3VirtNbrEntry 11 } + + ospfv3VirtNbrRestartHelperStatus OBJECT-TYPE + SYNTAX INTEGER { notHelping (1), + helping (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the router is acting + as a hitless restart helper for the neighbor." + ::= { ospfv3VirtNbrEntry 12 } + +ospfv3VirtNbrRestartHelperAge OBJECT-TYPE + SYNTAX UpToRefreshInterval + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Remaining time in current OSPF hitless restart + interval, if the router is acting as a restart + helper for the neighbor." + ::= { ospfv3VirtNbrEntry 13 } + +ospfv3VirtNbrRestartHelperExitReason OBJECT-TYPE + SYNTAX INTEGER { none (1), -- not attempted + inProgress (2), -- restart in + -- progress + completed (3), -- successfully + -- completed + timedOut (4), -- timed out + topologyChanged (5) -- aborted due to + -- topology + -- change. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes the outcome of the last attempt at acting + as a hitless restart helper for the neighbor." + ::= { ospfv3VirtNbrEntry 14 } + + +-- +-- The OSPFv3 Area Aggregate Table +-- + +ospfv3AreaAggregateTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ospfv3AreaAggregateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A range of IPv6 prefixes specified by a + prefix/prefix length pair. Note that if + ranges are configured such that one range sub- + sumes another range the most specific match is + the preferred one." + ::= { ospfv3Objects 12 } + +ospfv3AreaAggregateEntry OBJECT-TYPE + SYNTAX Ospfv3AreaAggregateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A range of IPv6 prefixes specified by a + prefix/prefix length pair. Note that if + ranges are configured such that one range sub- + sumes another range the most specific match is + the preferred one." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + INDEX { ospfv3AreaAggregateAreaID, + ospfv3AreaAggregateAreaLsdbType, + ospfv3AreaAggregatePrefixType, + ospfv3AreaAggregatePrefix, + ospfv3AreaAggregatePrefixLength } + ::= { ospfv3AreaAggregateTable 1 } + +Ospfv3AreaAggregateEntry ::= SEQUENCE { + ospfv3AreaAggregateAreaID + AreaID, + ospfv3AreaAggregateAreaLsdbType + INTEGER, + ospfv3AreaAggregatePrefixType + InetAddressType, + ospfv3AreaAggregatePrefix + InetAddress, + ospfv3AreaAggregatePrefixLength + InetAddressPrefixLength, + ospfv3AreaAggregateStatus + RowStatus, + ospfv3AreaAggregateEffect + INTEGER, + ospfv3AreaAggregateRouteTag + INTEGER + } + +ospfv3AreaAggregateAreaID OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Area the Address Aggregate is to be found + within." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfv3AreaAggregateEntry 1 } + +ospfv3AreaAggregateAreaLsdbType OBJECT-TYPE + SYNTAX INTEGER { + interAreaPrefixLsa(8195), -- 0x2003 + nssaExternalLsa(8199) -- 0x2007 + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the Address Aggregate. This field + specifies the Area Lsdb type that this Address Ag- + gregate applies to." + REFERENCE + "OSPF Version 2, Appendix A.4.1 The Link State + Advertisement header" + ::= { ospfv3AreaAggregateEntry 2 } + +ospfv3AreaAggregatePrefixType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The prefix type of ospfv3AreaAggregatePrefix. Only + IPv6 addresses are expected." + ::= { ospfv3AreaAggregateEntry 4 } + +ospfv3AreaAggregatePrefix OBJECT-TYPE + SYNTAX InetAddress (SIZE (0..16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv6 Prefix." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfv3AreaAggregateEntry 5 } + +ospfv3AreaAggregatePrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength (3..128) + UNITS "bits" + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length of the prefix (in bits). A prefix can + not be shorter than 3 bits." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfv3AreaAggregateEntry 6 } + +ospfv3AreaAggregateStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable controls the status of the en- + try. The use of RowStatus is covered in more detail + in [6]." + ::= { ospfv3AreaAggregateEntry 7 } + +ospfv3AreaAggregateEffect OBJECT-TYPE + SYNTAX INTEGER { + advertiseMatching(1), + doNotAdvertiseMatching(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Prefixes subsumed by ranges either trigger the + advertisement of the indicated aggregate (ad- + vertiseMatching), or result in the prefix not + being advertised at all outside the area." + DEFVAL { advertiseMatching } + ::= { ospfv3AreaAggregateEntry 8 } + +ospfv3AreaAggregateRouteTag OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This tag is advertised only in the summarized + As-External LSA when summarizing from type-7 to + type-5." + DEFVAL { 0 } + ::= { ospfv3AreaAggregateEntry 9 } + + +-- conformance information + +ospfv3Groups OBJECT IDENTIFIER ::= { ospfv3Conformance 1 } +ospfv3Compliances OBJECT IDENTIFIER ::= { ospfv3Conformance 2 } + +-- compliance statements + +ospfv3Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement " + MODULE -- this module + MANDATORY-GROUPS { + ospfv3BasicGroup, + ospfv3AreaGroup, + ospfv3IfGroup, + ospfv3VirtIfGroup, + ospfv3NbrGroup, + ospfv3NbmaNbrGroup, + ospfv3VirtNbrGroup, + ospfv3AreaAggregateGroup + } + + GROUP ospfv3AsLsdbGroup + DESCRIPTION + "This group is required for OSPFv3 systems that + display their AS-scope link state database." + + GROUP ospfv3AreaLsdbGroup + DESCRIPTION + "This group is required for OSPFv3 systems that + display their Area-scope link state database." + + GROUP ospfv3LinkLsdbGroup + DESCRIPTION + "This group is required for OSPFv3 systems that + display their Link-scope link state database." + + GROUP ospfv3HostGroup + DESCRIPTION + "This group is required for OSPFv3 systems that + support attached hosts." + + OBJECT ospfv3NbrAddressType + SYNTAX InetAddressType { ipv6(2) } + DESCRIPTION + "An implementation is only required to support IPv6 + address without zone index." + + OBJECT ospfv3VirtNbrAddressType + SYNTAX InetAddressType { ipv6(2) } + DESCRIPTION + "An implementation is only required to support IPv6 + address without zone index." + + ::= { ospfv3Compliances 1 } + +-- units of conformance + +ospfv3BasicGroup OBJECT-GROUP + OBJECTS { + ospfv3RouterId, + ospfv3AdminStat, + ospfv3VersionNumber, + ospfv3AreaBdrRtrStatus, + ospfv3ASBdrRtrStatus, + ospfv3AsScopeLsaCount, + ospfv3AsScopeLsaCksumSum, + ospfv3OriginateNewLsas, + ospfv3RxNewLsas, + ospfv3ExtLsaCount, + ospfv3ExtAreaLsdbLimit, + ospfv3MulticastExtensions, + ospfv3ExitOverflowInterval, + ospfv3DemandExtensions, + ospfv3TrafficEngineeringSupport, + ospfv3ReferenceBandwidth, + ospfv3RestartSupport, + ospfv3RestartInterval, + ospfv3RestartStatus, + ospfv3RestartAge, + ospfv3RestartExitReason + } + STATUS current + DESCRIPTION + "These objects are required for OSPFv3 systems." + ::= { ospfv3Groups 1 } + + +ospfv3AreaGroup OBJECT-GROUP + OBJECTS { + ospfv3ImportAsExtern, + ospfv3AreaSpfRuns, + ospfv3AreaBdrRtrCount, + ospfv3AreaAsBdrRtrCount, + ospfv3AreaScopeLsaCount, + ospfv3AreaScopeLsaCksumSum, + ospfv3AreaSummary, + ospfv3AreaStatus, + ospfv3StubMetric, + ospfv3AreaNssaTranslatorRole, + ospfv3AreaNssaTranslatorState, + ospfv3AreaNssaTranslatorStabilityInterval, + ospfv3AreaNssaTranslatorEvents, + ospfv3AreaStubMetricType + } + STATUS current + DESCRIPTION + "These objects are required for OSPFv3 systems + supporting areas." + ::= { ospfv3Groups 2 } + +ospfv3AsLsdbGroup OBJECT-GROUP + OBJECTS { + ospfv3AsLsdbSequence, + ospfv3AsLsdbAge, + ospfv3AsLsdbChecksum, + ospfv3AsLsdbAdvertisement, + ospfv3AsLsdbTypeKnown + } + STATUS current + DESCRIPTION + "These objects are required for OSPFv3 systems + that display their AS-scope link state database." + ::= { ospfv3Groups 3 } + +ospfv3AreaLsdbGroup OBJECT-GROUP + OBJECTS { + ospfv3AreaLsdbSequence, + ospfv3AreaLsdbAge, + ospfv3AreaLsdbChecksum, + ospfv3AreaLsdbAdvertisement, + ospfv3AreaLsdbTypeKnown + } + STATUS current + DESCRIPTION + "These objects are required for OSPFv3 systems + that display their Area-scope link state database." + ::= { ospfv3Groups 4 } + +ospfv3LinkLsdbGroup OBJECT-GROUP + OBJECTS { + ospfv3LinkLsdbSequence, + ospfv3LinkLsdbAge, + ospfv3LinkLsdbChecksum, + ospfv3LinkLsdbAdvertisement, + ospfv3LinkLsdbTypeKnown + } + STATUS current + DESCRIPTION + "These objects are required for OSPFv3 systems + that display their Link-scope link state database." + ::= { ospfv3Groups 5 } + +ospfv3HostGroup OBJECT-GROUP + OBJECTS { + ospfv3HostMetric, + ospfv3HostStatus, + ospfv3HostAreaID + } + STATUS current + DESCRIPTION + "These objects are required for OSPFv3 systems + that support attached hosts." + ::= { ospfv3Groups 6 } + +ospfv3IfGroup OBJECT-GROUP + OBJECTS { + ospfv3IfAreaId, + ospfv3IfType, + ospfv3IfAdminStat, + ospfv3IfRtrPriority, + ospfv3IfTransitDelay, + ospfv3IfRetransInterval, + ospfv3IfHelloInterval, + ospfv3IfRtrDeadInterval, + ospfv3IfPollInterval, + ospfv3IfState, + ospfv3IfDesignatedRouter, + ospfv3IfBackupDesignatedRouter, + ospfv3IfEvents, + ospfv3IfStatus, + ospfv3IfMulticastForwarding, + ospfv3IfDemand, + ospfv3IfMetricValue, + ospfv3IfLinkScopeLsaCount, + ospfv3IfLinkLsaCksumSum, + ospfv3IfInstId, + ospfv3IfDemandNbrProbe, + ospfv3IfDemandNbrProbeRetxLimit, + ospfv3IfDemandNbrProbeInterval + } + STATUS current + DESCRIPTION + "These interface objects are required for + OSPFv3 systems." + ::= { ospfv3Groups 7 } + +ospfv3VirtIfGroup OBJECT-GROUP + OBJECTS { + ospfv3VirtIfIndex, + ospfv3VirtIfTransitDelay, + ospfv3VirtIfRetransInterval, + ospfv3VirtIfHelloInterval, + ospfv3VirtIfRtrDeadInterval, + ospfv3VirtIfState, + ospfv3VirtIfEvents, + ospfv3VirtIfStatus, + ospfv3VirtIfLinkScopeLsaCount, + ospfv3VirtIfLinkLsaCksumSum + } + STATUS current + DESCRIPTION + "These virtual interface objects are required for + OSPFv3 systems." + ::= { ospfv3Groups 8 } + +ospfv3NbrGroup OBJECT-GROUP + OBJECTS { + ospfv3NbrAddressType, + ospfv3NbrAddress, + ospfv3NbrOptions, + ospfv3NbrPriority, + ospfv3NbrState, + ospfv3NbrEvents, + ospfv3NbrLsRetransQLen, + ospfv3NbrHelloSuppressed, + ospfv3NbrIfId, + ospfv3NbrRestartHelperStatus, + ospfv3NbrRestartHelperAge, + ospfv3NbrRestartHelperExitReason + } + STATUS current + DESCRIPTION + "These neighbor objects are required for + OSPFv3 systems." + ::= { ospfv3Groups 9 } + +ospfv3NbmaNbrGroup OBJECT-GROUP + OBJECTS { + ospfv3NbmaNbrPriority, + ospfv3NbmaNbrRtrId, + ospfv3NbmaNbrState, + ospfv3NbmaNbrStorageType, + ospfv3NbmaNbrStatus + } + STATUS current + DESCRIPTION + "These NBMA neighbor objects are required for + OSPFv3 systems." + ::= { ospfv3Groups 10 } + +ospfv3VirtNbrGroup OBJECT-GROUP + OBJECTS { + ospfv3VirtNbrIfIndex, + ospfv3VirtNbrAddressType, + ospfv3VirtNbrAddress, + ospfv3VirtNbrOptions, + ospfv3VirtNbrState, + ospfv3VirtNbrEvents, + ospfv3VirtNbrLsRetransQLen, + ospfv3VirtNbrHelloSuppressed, + ospfv3VirtNbrIfId, + ospfv3VirtNbrRestartHelperStatus, + ospfv3VirtNbrRestartHelperAge, + ospfv3VirtNbrRestartHelperExitReason + } + STATUS current + DESCRIPTION + "These virtual neighbor objects are required for + OSPFv3 systems." + ::= { ospfv3Groups 11 } + +ospfv3AreaAggregateGroup OBJECT-GROUP + OBJECTS { + ospfv3AreaAggregateStatus, + ospfv3AreaAggregateEffect, + ospfv3AreaAggregateRouteTag + } + STATUS current + DESCRIPTION + "These area aggregate objects are required for + OSPFv3 systems." + ::= { ospfv3Groups 12 } + +END diff --git a/ospf6d/ospf6_snmp.c b/ospf6d/ospf6_snmp.c new file mode 100644 index 00000000..186c8e2f --- /dev/null +++ b/ospf6d/ospf6_snmp.c @@ -0,0 +1,304 @@ +/* OSPFv3 SNMP support + * Copyright (C) 2004 Yasuhiro Ohara + * + * This file is part of GNU Zebra. + * + * GNU Zebra is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * GNU Zebra is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Zebra; see the file COPYING. If not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +#ifdef HAVE_SNMP + +#ifdef HAVE_NETSNMP +#include +#endif /*HAVE_NETSNMP*/ + +#include +#include +#include + +#include "log.h" +#include "vty.h" +#include "linklist.h" +#include "smux.h" + +#include "ospf6_proto.h" +#include "ospf6_lsa.h" +#include "ospf6_lsdb.h" +#include "ospf6_route.h" +#include "ospf6_top.h" +#include "ospf6_area.h" +#include "ospf6_interface.h" +#include "ospf6_message.h" +#include "ospf6_neighbor.h" +#include "ospf6d.h" + +/* OSPFv3-MIB */ +#define OSPFv3MIB 1,3,6,1,3,102 + +/* Zebra enterprise ospf6d MIB */ +#define OSPF6DOID 1,3,6,1,4,1,3317,1,2,6 + +/* OSPFv3 MIB General Group values. */ +#define OSPFv3ROUTERID 1 +#define OSPFv3ADMINSTAT 2 +#define OSPFv3VERSIONNUMBER 3 +#define OSPFv3AREABDRRTRSTATUS 4 +#define OSPFv3ASBDRRTRSTATUS 5 +#define OSPFv3ASSCOPELSACOUNT 6 +#define OSPFv3ASSCOPELSACHECKSUMSUM 7 +#define OSPFv3ORIGINATENEWLSAS 8 +#define OSPFv3RXNEWLSAS 9 +#define OSPFv3EXTLSACOUNT 10 +#define OSPFv3EXTAREALSDBLIMIT 11 +#define OSPFv3MULTICASTEXTENSIONS 12 +#define OSPFv3EXITOVERFLOWINTERVAL 13 +#define OSPFv3DEMANDEXTENSIONS 14 +#define OSPFv3TRAFFICENGINEERINGSUPPORT 15 +#define OSPFv3REFERENCEBANDWIDTH 16 +#define OSPFv3RESTARTSUPPORT 17 +#define OSPFv3RESTARTINTERVAL 18 +#define OSPFv3RESTARTSTATUS 19 +#define OSPFv3RESTARTAGE 20 +#define OSPFv3RESTARTEXITREASON 21 + +/* OSPFv3 MIB Area Table values. */ +#define OSPFv3AREAID 1 +#define OSPFv3IMPORTASEXTERN 2 + +/* SYNTAX Status from OSPF-MIB. */ +#define OSPF_STATUS_ENABLED 1 +#define OSPF_STATUS_DISABLED 2 + +/* SNMP value hack. */ +#define COUNTER ASN_COUNTER +#define INTEGER ASN_INTEGER +#define GAUGE ASN_GAUGE +#define TIMETICKS ASN_TIMETICKS +#define IPADDRESS ASN_IPADDRESS +#define STRING ASN_OCTET_STR + +/* For return values e.g. SNMP_INTEGER macro */ +SNMP_LOCAL_VARIABLES + +static struct in_addr tmp; +#define INT32_INADDR(x) \ + (tmp.s_addr = (x), tmp) + +/* OSPFv3-MIB instances. */ +oid ospfv3_oid [] = { OSPFv3MIB }; +oid ospf6d_oid [] = { OSPF6DOID }; + +/* empty ID 0.0.0.0 e.g. empty router-id */ +static struct in_addr ospf6_empty_id = {0}; + +/* Hook functions. */ +static u_char *ospfv3GeneralGroup (); +static u_char *ospfv3AreaEntry (); + +struct variable ospfv3_variables[] = +{ + /* OSPF general variables */ + {OSPFv3ROUTERID, IPADDRESS, RWRITE, ospfv3GeneralGroup, + 3, {1, 1, 1}}, + {OSPFv3ADMINSTAT, INTEGER, RWRITE, ospfv3GeneralGroup, + 3, {1, 1, 2}}, + {OSPFv3VERSIONNUMBER, INTEGER, RONLY, ospfv3GeneralGroup, + 3, {1, 1, 3}}, + {OSPFv3AREABDRRTRSTATUS, INTEGER, RONLY, ospfv3GeneralGroup, + 3, {1, 1, 4}}, + {OSPFv3ASBDRRTRSTATUS, INTEGER, RWRITE, ospfv3GeneralGroup, + 3, {1, 1, 5}}, + {OSPFv3ASSCOPELSACOUNT, GAUGE, RONLY, ospfv3GeneralGroup, + 3, {1, 1, 6}}, + {OSPFv3ASSCOPELSACHECKSUMSUM, INTEGER, RONLY, ospfv3GeneralGroup, + 3, {1, 1, 7}}, + {OSPFv3ORIGINATENEWLSAS, COUNTER, RONLY, ospfv3GeneralGroup, + 3, {1, 1, 8}}, + {OSPFv3RXNEWLSAS, COUNTER, RONLY, ospfv3GeneralGroup, + 3, {1, 1, 9}}, + {OSPFv3EXTLSACOUNT, GAUGE, RONLY, ospfv3GeneralGroup, + 3, {1, 1, 10}}, + {OSPFv3EXTAREALSDBLIMIT, INTEGER, RWRITE, ospfv3GeneralGroup, + 3, {1, 1, 11}}, + {OSPFv3MULTICASTEXTENSIONS, INTEGER, RWRITE, ospfv3GeneralGroup, + 3, {1, 1, 12}}, + {OSPFv3EXITOVERFLOWINTERVAL, INTEGER, RWRITE, ospfv3GeneralGroup, + 3, {1, 1, 13}}, + {OSPFv3DEMANDEXTENSIONS, INTEGER, RWRITE, ospfv3GeneralGroup, + 3, {1, 1, 14}}, + {OSPFv3TRAFFICENGINEERINGSUPPORT, INTEGER, RWRITE, ospfv3GeneralGroup, + 3, {1, 1, 15}}, + {OSPFv3REFERENCEBANDWIDTH, INTEGER, RWRITE, ospfv3GeneralGroup, + 3, {1, 1, 16}}, + {OSPFv3RESTARTSUPPORT, INTEGER, RWRITE, ospfv3GeneralGroup, + 3, {1, 1, 17}}, + {OSPFv3RESTARTINTERVAL, INTEGER, RWRITE, ospfv3GeneralGroup, + 3, {1, 1, 18}}, + {OSPFv3RESTARTSTATUS, INTEGER, RONLY, ospfv3GeneralGroup, + 3, {1, 1, 19}}, + {OSPFv3RESTARTAGE, INTEGER, RONLY, ospfv3GeneralGroup, + 3, {1, 1, 20}}, + {OSPFv3RESTARTEXITREASON, INTEGER, RONLY, ospfv3GeneralGroup, + 3, {1, 1, 21}}, + + /* OSPFv3 Area Data Structure */ + {OSPFv3AREAID, IPADDRESS, RONLY, ospfv3AreaEntry, + 4, {1, 2, 1, 1}}, + {OSPFv3IMPORTASEXTERN, INTEGER, RONLY, ospfv3AreaEntry, + 4, {1, 2, 1, 2}}, +}; + +static u_char * +ospfv3GeneralGroup (struct variable *v, oid *name, size_t *length, + int exact, size_t *var_len, WriteMethod **write_method) +{ + /* Check whether the instance identifier is valid */ + if (smux_header_generic (v, name, length, exact, var_len, write_method) + == MATCH_FAILED) + return NULL; + + /* Return the current value of the variable */ + switch (v->magic) + { + case OSPFv3ROUTERID: /* 1*/ + /* Router-ID of this OSPF instance. */ + if (ospf6) + return SNMP_IPADDRESS (INT32_INADDR (ospf6->router_id)); + else + return SNMP_IPADDRESS (ospf6_empty_id); + break; + case OSPFv3ADMINSTAT: /* 2*/ + break; + case OSPFv3VERSIONNUMBER: /* 3*/ + break; + case OSPFv3AREABDRRTRSTATUS: /* 4*/ + break; + case OSPFv3ASBDRRTRSTATUS: /* 5*/ + break; + case OSPFv3ASSCOPELSACOUNT: /* 6*/ + break; + case OSPFv3ASSCOPELSACHECKSUMSUM: /* 7*/ + break; + case OSPFv3ORIGINATENEWLSAS: /* 8*/ + break; + case OSPFv3RXNEWLSAS: /* 9*/ + break; + case OSPFv3EXTLSACOUNT: /*10*/ + break; + case OSPFv3EXTAREALSDBLIMIT: /*11*/ + break; + case OSPFv3MULTICASTEXTENSIONS: /*12*/ + break; + case OSPFv3EXITOVERFLOWINTERVAL: /*13*/ + break; + case OSPFv3DEMANDEXTENSIONS: /*14*/ + break; + case OSPFv3TRAFFICENGINEERINGSUPPORT: /*15*/ + break; + case OSPFv3REFERENCEBANDWIDTH: /*16*/ + break; + case OSPFv3RESTARTSUPPORT: /*17*/ + break; + case OSPFv3RESTARTINTERVAL: /*18*/ + break; + case OSPFv3RESTARTSTATUS: /*19*/ + break; + case OSPFv3RESTARTAGE: /*20*/ + break; + case OSPFv3RESTARTEXITREASON: /*21*/ + break; + default: + return NULL; + } + return NULL; +} + +static u_char * +ospfv3AreaEntry (struct variable *v, oid *name, size_t *length, + int exact, size_t *var_len, WriteMethod **write_method) +{ + struct ospf6_area *oa, *area = NULL; + u_int32_t area_id = 0; + listnode node; + int len; + + if (ospf6 == NULL) + return NULL; + + len = *length - v->namelen; + len = (len >= sizeof (u_int32_t) ? sizeof (u_int32_t) : 0); + if (exact && len != sizeof (u_int32_t)) + return NULL; + if (len) + oid2in_addr (name + v->namelen, len, (struct in_addr *) &area_id); + + zlog_info ("SNMP access by area: %s, exact=%d len=%d length=%d", + inet_ntoa (* (struct in_addr *) &area_id), + exact, len, *length); + + for (node = listhead (ospf6->area_list); node; nextnode (node)) + { + oa = (struct ospf6_area *) getdata (node); + if (area == NULL) + { + if (len == 0) /* return first area entry */ + area = oa; + else if (exact && ntohl (oa->area_id) == ntohl (area_id)) + area = oa; + else if (ntohl (oa->area_id) > ntohl (area_id)) + area = oa; + } + } + + if (area == NULL) + return NULL; + + *length = v->namelen + sizeof (u_int32_t); + oid_copy_addr (name + v->namelen, (struct in_addr *) &area->area_id, + sizeof (u_int32_t)); + + zlog_info ("SNMP found area: %s, exact=%d len=%d length=%d", + inet_ntoa (* (struct in_addr *) &area->area_id), + exact, len, *length); + + switch (v->magic) + { + case OSPFv3AREAID: /* 1*/ + return SNMP_IPADDRESS (INT32_INADDR (area->area_id)); + break; + case OSPFv3IMPORTASEXTERN: /* 2*/ + return SNMP_INTEGER (ospf6->external_table->count); + break; + default: + return NULL; + break; + } + return NULL; +} + +/* Register OSPFv3-MIB. */ +void +ospf6_snmp_init () +{ + smux_init (ospf6d_oid, sizeof (ospf6d_oid) / sizeof (oid)); + REGISTER_MIB ("OSPFv3MIB", ospfv3_variables, variable, ospfv3_oid); + smux_start (); +} + +#endif /* HAVE_SNMP */ + diff --git a/ospf6d/ospf6_snmp.h b/ospf6d/ospf6_snmp.h new file mode 100644 index 00000000..89c8c478 --- /dev/null +++ b/ospf6d/ospf6_snmp.h @@ -0,0 +1,29 @@ +/* OSPFv3 SNMP support + * Copyright (C) 2004 Yasuhiro Ohara + * + * This file is part of GNU Zebra. + * + * GNU Zebra is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * GNU Zebra is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Zebra; see the file COPYING. If not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef OSPF6_SNMP_H +#define OSPF6_SNMP_H + +void ospf6_snmp_init (); + +#endif /*OSPF6_SNMP_H*/ + + diff --git a/ospf6d/ospf6d.c b/ospf6d/ospf6d.c index e94a036b..695e8eca 100644 --- a/ospf6d/ospf6d.c +++ b/ospf6d/ospf6d.c @@ -44,6 +44,10 @@ #include "ospf6_flood.h" #include "ospf6d.h" +#ifdef HAVE_SNMP +#include "ospf6_snmp.h" +#endif /*HAVE_SNMP*/ + char ospf6_daemon_version[] = OSPF6_DAEMON_VERSION; void @@ -1812,6 +1816,10 @@ ospf6_init () ospf6_asbr_init (); ospf6_abr_init (); +#ifdef HAVE_SNMP + ospf6_snmp_init (); +#endif /*HAVE_SNMP*/ + install_node (&debug_node, config_write_ospf6_debug); install_element_ospf6_debug_message (); -- cgit v1.2.1