diff --git a/ospf6d/OSPFv3-MIB.txt b/ospf6d/OSPFv3-MIB.txt
index 80e6cb2..258f533 100644
--- a/ospf6d/OSPFv3-MIB.txt
+++ b/ospf6d/OSPFv3-MIB.txt
@@ -1,2758 +1,3951 @@
-OSPFV3-MIB DEFINITIONS ::= BEGIN 
- 
-IMPORTS 
-        MODULE-IDENTITY, OBJECT-TYPE, mib-2, experimental,
-        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; 
+ OSPFV3-MIB DEFINITIONS ::= BEGIN
 
-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" 
-         ::= { experimental 102 } -- 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) 
+ IMPORTS
+         MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, mib-2,
+         Counter32, Gauge32, Integer32, Unsigned32
+                 FROM SNMPv2-SMI
+         TEXTUAL-CONVENTION, TruthValue, RowStatus, TimeStamp
+                 FROM SNMPv2-TC
+         MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
+                 FROM SNMPv2-CONF
+         InterfaceIndex
+                 FROM IF-MIB
+         InetAddressType, InetAddress, InetAddressPrefixLength,
+         InetAddressIPv6
+                 FROM INET-ADDRESS-MIB
+         Metric, BigMetric, Status,
+         HelloRange, DesignatedRouterPriority
+                 FROM OSPF-MIB;
 
- 
--- 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      read-only 
-        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 } 
+ ospfv3MIB MODULE-IDENTITY
+         LAST-UPDATED "200908130000Z"
+         ORGANIZATION "IETF OSPF Working Group"
+         CONTACT-INFO
+             "WG E-Mail: ospf@ietf.org
+              WG Chairs: Acee Lindem
+                         acee@redback.com
 
-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 } 
+                         Abhay Roy
+                         akr@cisco.com
 
--- 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..4294967295)
-        MAX-ACCESS      read-only 
-        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      read-only 
-        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      read-only 
-        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      read-only 
-        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..4294967295)
-        MAX-ACCESS      read-only 
-        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      read-only 
-        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      read-only 
-        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     read-only 
-        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..4294967295)
-        MAX-ACCESS      read-only 
-        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      read-only 
-        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    read-only 
-        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      read-only 
-        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      read-only 
-        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      read-only 
-        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      read-only 
-        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      read-only 
-        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      read-only 
-        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      read-only 
-        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      read-only 
-        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      read-only 
-        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      read-only 
-        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      read-only 
-        STATUS          current 
-        DESCRIPTION 
-            "The Transit Area Identifier." 
-        ::= { ospfv3VirtNbrEntry 1 } 
- 
-ospfv3VirtNbrRtrId OBJECT-TYPE 
-        SYNTAX          RouterID 
-        MAX-ACCESS      read-only 
-        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      read-only 
-        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      read-only 
-        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      read-only 
-        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      read-only 
-        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      read-only 
-        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 } 
-         
+              Editors:   Dan Joyal
+                         Nortel
+                         600 Technology Park Drive
+                         Billerica, MA  01821, USA
+                         djoyal@nortel.com
 
--- 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 
+                         Vishwas Manral
+                         IP Infusion
+                         Almora, Uttarakhand
+                         India
+                         vishwas@ipinfusion.com"
+          DESCRIPTION
+             "The MIB module for OSPF version 3.
+
+              Copyright (c) 2009 IETF Trust and the persons
+              identified as authors of the code.  All rights
+              reserved.
+
+              Redistribution and use in source and binary forms, with
+              or without modification, are permitted provided that
+              the following conditions are met:
+
+              - Redistributions of source code must retain the above
+                copyright notice, this list of conditions and the
+                following disclaimer.
+
+             - Redistributions in binary form must reproduce the
+               above copyright notice, this list of conditions and
+               the following disclaimer in the documentation and/or
+               other materials provided with the distribution.
+
+             - Neither the name of Internet Society, IETF or IETF
+               Trust, nor the names of specific contributors, may be
+               used to endorse or promote products derived from this
+               software without specific prior written permission.
+
+               THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+               CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED
+               WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+               WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+               PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+               THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
+               DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+               CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+               PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+               USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+               HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+               IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+               NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+               USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+               POSSIBILITY OF SUCH DAMAGE.
+
+               This version of this MIB module is part of RFC 5643;
+               see the RFC itself for full legal notices."
+
+          REVISION "200908130000Z"
+          DESCRIPTION
+              "Initial version, published as RFC 5643"
+          ::= { mib-2 191 }
+
+ -- Textual conventions
+
+ Ospfv3UpToRefreshIntervalTC ::= TEXTUAL-CONVENTION
+          DISPLAY-HINT "d"
+          STATUS        current
+          DESCRIPTION
+               "The values one might be able to configure for
+               variables bounded by the Refresh Interval."
+          REFERENCE
+               "OSPF Version 2, Appendix B, Architectural Constants"
+          SYNTAX      Unsigned32 (1..1800)
+
+ Ospfv3DeadIntervalRangeTC ::= TEXTUAL-CONVENTION
+          DISPLAY-HINT "d"
+          STATUS        current
+          DESCRIPTION
+               "The range, in seconds, of dead interval value."
+          REFERENCE
+               "OSPF for IPv6, Appendix C.3, Router Interface
+               Parameters"
+          SYNTAX      Unsigned32 (1..'FFFF'h)
+
+ Ospfv3RouterIdTC ::= TEXTUAL-CONVENTION
+          DISPLAY-HINT "d"
+          STATUS      current
+          DESCRIPTION
+               "A 32-bit, unsigned 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 host addresses if IPv4 is
+               configured on the router."
+          REFERENCE
+               "OSPF for IPv6, Appendix C.1, Global Parameters"
+          SYNTAX      Unsigned32 (1..'FFFFFFFF'h)
+
+ Ospfv3LsIdTC ::= TEXTUAL-CONVENTION
+          DISPLAY-HINT "d"
+          STATUS      current
+          DESCRIPTION
+               "A unique 32-bit identifier of the piece of the
+               routing domain that is being described by a link
+               state advertisement.  In contrast to OSPFv2, the
+               Link State ID (LSID) has no addressing semantics."
+          REFERENCE
+               "OSPF Version 2, Section 12.1.4, Link State ID"
+          SYNTAX      Unsigned32 (1..'FFFFFFFF'h)
+
+ Ospfv3AreaIdTC ::= TEXTUAL-CONVENTION
+          DISPLAY-HINT "d"
+          STATUS      current
+          DESCRIPTION
+               "An OSPFv3 Area Identifier.  A value of zero
+               identifies the backbone area."
+          REFERENCE
+               "OSPF for IPv6, Appendix C.3 Router Interface
+               Parameters"
+          SYNTAX      Unsigned32 (0..'FFFFFFFF'h)
+
+ Ospfv3IfInstIdTC ::= TEXTUAL-CONVENTION
+          DISPLAY-HINT "d"
+          STATUS      current
+          DESCRIPTION
+               "An OSPFv3 Interface Instance ID."
+          REFERENCE
+               "OSPF for IPv6, Appendix C.3, Router Interface
+               Parameters"
+          SYNTAX      Unsigned32 (0..255)
+
+ Ospfv3LsaSequenceTC ::= TEXTUAL-CONVENTION
+          DISPLAY-HINT "d"
+          STATUS      current
+          DESCRIPTION
+             "The sequence number field is a signed 32-bit
+             integer.  It is used to detect old and duplicate
+             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"
+          SYNTAX      Integer32
+
+ Ospfv3LsaAgeTC ::= TEXTUAL-CONVENTION
+          DISPLAY-HINT "d"
+          STATUS      current
+          DESCRIPTION
+             "The age of the link state advertisement in
+             seconds.  The high-order bit of the LS age
+             field is considered the DoNotAge bit for
+             support of on-demand circuits."
+          REFERENCE
+             "OSPF Version 2, Section 12.1.1, LS age;
+              Extending OSPF to Support Demand Circuits,
+              Section 2.2, The LS age field"
+          SYNTAX      Unsigned32 (0..3600 | 32768..36368)
+
+ -- Top-level structure of MIB
+ ospfv3Notifications  OBJECT IDENTIFIER ::= { ospfv3MIB 0 }
+ 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         Ospfv3RouterIdTC
+         MAX-ACCESS     read-write
+         STATUS         current
+         DESCRIPTION
+             "A 32-bit unsigned integer uniquely identifying
+             the router in the Autonomous System.  To ensure
+             uniqueness, this may default to the 32-bit
+             unsigned integer representation of one of
+             the router's IPv4 interface addresses (if IPv4
+             is configured on the router).
+
+             This object is persistent, and when written, the
+             entity SHOULD save the change to non-volatile
+             storage."
+         REFERENCE
+               "OSPF for IPv6, Appendix C.1, Global Parameters"
+         ::= { ospfv3GeneralGroup 1 }
+
+ ospfv3AdminStatus 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
+             interface; 'disabled' disables it on all
+             interfaces.
+
+             This object is persistent, and when written, the
+             entity SHOULD save the change to non-volatile
+             storage."
+         ::= { 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 denote whether this router is an area
+             border router.  The value of this object is true (1)
+             when the 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
+             configured as an Autonomous System border router.
+
+             This object is persistent, and when written, the
+             entity SHOULD save the change to non-volatile
+             storage."
+         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          Unsigned32
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The 32-bit unsigned sum of the LS checksums of
+             the AS-scoped link state advertisements
+             contained 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 or
+             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
+             incremented each time the router originates a new
+             LSA.
+
+             Discontinuities in the value of this counter
+             can occur at re-initialization of the management
+             system and at other times as indicated by the
+             value of ospfv3DiscontinuityTime."
+         ::= { ospfv3GeneralGroup 8 }
+
+ ospfv3RxNewLsas OBJECT-TYPE
+         SYNTAX          Counter32
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The number of link state advertisements
+             received that are determined to be new
+             instantiations.  This number does not include
+             newer instantiations of self-originated link state
+             advertisements.
+
+             Discontinuities in the value of this counter
+             can occur at re-initialization of the management
+             system and at other times as indicated by the
+             value of ospfv3DiscontinuityTime."
+         ::= { 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-LSA 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.  ospfv3ExtAreaLsdbLimit MUST be set
+             identically in all routers attached to the OSPFv3
+             backbone and/or any regular OSPFv3 area (i.e.,
+             OSPFv3 stub areas and not-so-stubby-areas (NSSAs)
+             are excluded).
+
+             This object is persistent, and when written, the
+             entity SHOULD save the change to non-volatile
+             storage."
+         ::= { ospfv3GeneralGroup 11 }
+
+ ospfv3ExitOverflowInterval OBJECT-TYPE
+         SYNTAX          Unsigned32
+         UNITS           "seconds"
+         MAX-ACCESS      read-write
+         STATUS          current
+         DESCRIPTION
+             "The number of seconds that, after entering
+             Overflow state, a router will attempt to leave
+             Overflow state.  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.
+
+             This object is persistent, and when written, the
+             entity SHOULD save the change to non-volatile
+             storage."
+         ::= { ospfv3GeneralGroup 12 }
+
+ ospfv3DemandExtensions OBJECT-TYPE
+         SYNTAX         TruthValue
+         MAX-ACCESS     read-write
+         STATUS         current
+         DESCRIPTION
+             "The router's support for demand circuits.
+             The value of this object is true (1) when
+             demand circuits are supported.
+
+             This object is persistent, and when written, the
+             entity SHOULD save the change to non-volatile
+             storage."
+         REFERENCE
+             "OSPF Version 2; Extending OSPF to Support Demand
+             Circuits"
+         ::= { ospfv3GeneralGroup 13 }
+
+ ospfv3ReferenceBandwidth OBJECT-TYPE
+        SYNTAX       Unsigned32
+        UNITS        "kilobits per second"
+        MAX-ACCESS   read-write
+        STATUS       current
+        DESCRIPTION
+            "Reference bandwidth in kilobits per second for
+            calculating default interface metrics.  The
+            default value is 100,000 KBPS (100 MBPS).
+
+            This object is persistent, and when written, the
+            entity SHOULD save the change to non-volatile
+            storage."
+        REFERENCE
+            "OSPF Version 2, Appendix C.3, Router interface
+            parameters"
+        DEFVAL { 100000 }
+     ::= { ospfv3GeneralGroup 14 }
+
+ ospfv3RestartSupport OBJECT-TYPE
+        SYNTAX       INTEGER { none(1),
+                               plannedOnly(2),
+                               plannedAndUnplanned(3)
+                          }
+        MAX-ACCESS   read-write
+        STATUS       current
+        DESCRIPTION
+            "The router's support for OSPF graceful restart.
+            Options include no restart support, only planned
+
+            restarts, or both planned and unplanned restarts.
+
+            This object is persistent, and when written, the
+            entity SHOULD save the change to non-volatile
+            storage."
+        REFERENCE "Graceful OSPF Restart, Appendix B.1, Global
+                     Parameters (Minimum subset)"
+        ::= { ospfv3GeneralGroup 15 }
+
+ ospfv3RestartInterval OBJECT-TYPE
+        SYNTAX       Ospfv3UpToRefreshIntervalTC
+        UNITS        "seconds"
+        MAX-ACCESS   read-write
+        STATUS       current
+        DESCRIPTION
+            "Configured OSPF graceful restart timeout interval.
+
+            This object is persistent, and when written, the
+            entity SHOULD save the change to non-volatile
+            storage."
+        REFERENCE "Graceful OSPF Restart, Appendix B.1, Global
+                  Parameters (Minimum subset)"
+        DEFVAL { 120 }
+        ::= { ospfv3GeneralGroup 16 }
+
+ ospfv3RestartStrictLsaChecking OBJECT-TYPE
+       SYNTAX       TruthValue
+       MAX-ACCESS   read-write
+       STATUS       current
+       DESCRIPTION
+          "Indicates if strict LSA checking is enabled for
+          graceful restart.  A value of true (1) indicates that
+          strict LSA checking is enabled.
+
+          This object is persistent, and when written,
+          the entity SHOULD save the change to non-volatile
+          storage."
+       REFERENCE "Graceful OSPF Restart, Appendix B.2, Global
+                 Parameters (Optional)"
+       DEFVAL { true }
+       ::= { ospfv3GeneralGroup 17 }
+
+ ospfv3RestartStatus OBJECT-TYPE
+        SYNTAX       INTEGER { notRestarting(1),
+                               plannedRestart(2),
+                               unplannedRestart(3)
+                             }
+        MAX-ACCESS   read-only
+        STATUS       current
+        DESCRIPTION
+           "The current status of OSPF graceful restart capability."
+        ::= { ospfv3GeneralGroup 18 }
+
+ ospfv3RestartAge OBJECT-TYPE
+        SYNTAX       Ospfv3UpToRefreshIntervalTC
+        UNITS        "seconds"
+        MAX-ACCESS   read-only
+        STATUS       current
+        DESCRIPTION
+           "Remaining time in the current OSPF graceful restart
+           interval."
+        ::= { ospfv3GeneralGroup 19 }
+
+ ospfv3RestartExitReason OBJECT-TYPE
+        SYNTAX       INTEGER { none(1),
+                               inProgress(2),
+                               completed(3),
+                               timedOut(4),
+                               topologyChanged(5)
+                             }
+        MAX-ACCESS   read-only
+        STATUS       current
+        DESCRIPTION
+           "Describes the outcome of the last attempt at a
+           graceful restart.
+
+           none:            no restart has yet been attempted.
+           inProgress:      a restart attempt is currently underway.
+           completed:       the last restart completed successfully.
+           timedOut:        the last restart timed out.
+           topologyChanged: the last restart was aborted due to
+                            a topology change."
+     ::= { ospfv3GeneralGroup 20 }
+
+ ospfv3NotificationEnable OBJECT-TYPE
+        SYNTAX TruthValue
+        MAX-ACCESS read-write
+        STATUS current
+        DESCRIPTION
+            "This object provides a coarse level of control
+             over the generation of OSPFv3 notifications.
+
+             If this object is set to true (1), then it enables
+             the generation of OSPFv3 notifications.  If it is
+             set to false (2), these notifications are not
+             generated.
+
+             This object is persistent, and when written, the
+             entity SHOULD save the change to non-volatile
+             storage."
+    ::= { ospfv3GeneralGroup 21 }
+
+ospfv3StubRouterSupport OBJECT-TYPE
+     SYNTAX       TruthValue
+     MAX-ACCESS   read-only
+     STATUS       current
+     DESCRIPTION
+         "The router's support for stub router functionality.  An
+         object value of true (1) indicates that stub router
+         functionality is supported."
+     REFERENCE
+         "OSPF Stub Router Advertisement"
+     ::= { ospfv3GeneralGroup 22 }
+
+ ospfv3StubRouterAdvertisement OBJECT-TYPE
+     SYNTAX       INTEGER {
+                        doNotAdvertise(1),
+                        advertise(2)
+                        }
+     MAX-ACCESS   read-write
+     STATUS       current
+     DESCRIPTION
+         "This object controls the advertisement of
+         stub LSAs by the router.  The value
+         doNotAdvertise (1) will result in the advertisement
+         of standard LSAs and is the default value.
+
+         This object is persistent, and when written,
+         the entity SHOULD save the change to non-volatile
+         storage."
+     REFERENCE
+         "OSPF Stub Router Advertisement, Section 2, Proposed
+         Solution"
+     DEFVAL { doNotAdvertise }
+     ::= { ospfv3GeneralGroup 23 }
+
+ospfv3DiscontinuityTime OBJECT-TYPE
+    SYNTAX     TimeStamp
+    MAX-ACCESS read-only
+    STATUS     current
+    DESCRIPTION
+       "The value of sysUpTime on the most recent occasion
+        at which any one of this MIB's counters suffered
+        a discontinuity.
+
+        If no such discontinuities have occurred since the last
+        re-initialization of the local management subsystem,
+        then this object contains a zero value."
+    ::= { ospfv3GeneralGroup 24 }
+
+  ospfv3RestartTime OBJECT-TYPE
+      SYNTAX     TimeStamp
+      MAX-ACCESS read-only
+      STATUS     current
+      DESCRIPTION
+         "The value of sysUpTime on the most recent occasion
+          at which the ospfv3RestartExitReason was updated."
+      ::= { ospfv3GeneralGroup 25 }
+
+ -- 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, by definition, is the backbone area.
+
+ ospfv3AreaTable OBJECT-TYPE
+         SYNTAX          SEQUENCE OF Ospfv3AreaEntry
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "Information describing the configured
+             parameters and cumulative statistics of the router's
+             attached areas.  The interfaces and
+             virtual links are configured as part of these areas.
+             Area 0, by definition, is the backbone area."
+         REFERENCE
+             "OSPF Version 2, Section 6, The Area Data
+             Structure"
+         ::= { ospfv3Objects 2 }
+
+ ospfv3AreaEntry OBJECT-TYPE
+         SYNTAX          Ospfv3AreaEntry
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "Information describing the configured
+             parameters and cumulative statistics of one of the
+             router's attached areas.
+
+             The information in this table is persistent,
+             and when written, the entity SHOULD save the a
+             change to non-volatile storage."
+         INDEX           { ospfv3AreaId }
+         ::= { ospfv3AreaTable 1 }
+
+ Ospfv3AreaEntry ::= SEQUENCE {
+         ospfv3AreaId
+                 Ospfv3AreaIdTC,
+         ospfv3AreaImportAsExtern
+                 INTEGER,
+         ospfv3AreaSpfRuns
+                 Counter32,
+         ospfv3AreaBdrRtrCount
+                 Gauge32,
+         ospfv3AreaAsBdrRtrCount
+                 Gauge32,
+         ospfv3AreaScopeLsaCount
+                 Gauge32,
+         ospfv3AreaScopeLsaCksumSum
+                 Unsigned32,
+         ospfv3AreaSummary
+                 INTEGER,
+         ospfv3AreaRowStatus
+                 RowStatus,
+         ospfv3AreaStubMetric
+                 BigMetric,
+         ospfv3AreaNssaTranslatorRole
+                 INTEGER,
+         ospfv3AreaNssaTranslatorState
+                 INTEGER,
+         ospfv3AreaNssaTranslatorStabInterval
+                 Unsigned32,
+         ospfv3AreaNssaTranslatorEvents
+                 Counter32,
+         ospfv3AreaStubMetricType
+                 INTEGER,
+         ospfv3AreaTEEnabled
+                 TruthValue
+         }
+
+ ospfv3AreaId OBJECT-TYPE
+         SYNTAX          Ospfv3AreaIdTC
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "A 32-bit unsigned integer uniquely identifying an area.
+             Area ID 0 is used for the OSPFv3 backbone."
+         REFERENCE
+             "OSPF Version 2, Appendix C.2, Area parameters"
+         ::= { ospfv3AreaEntry 1 }
+
+ ospfv3AreaImportAsExtern 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 NSSA
+             LSAs that 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.
+
+             Discontinuities in the value of this counter
+             can occur at re-initialization of the management
+             system and at other times as indicated by the
+             value of ospfv3DiscontinuityTime."
+         ::= { ospfv3AreaEntry 3 }
+
+ ospfv3AreaBdrRtrCount OBJECT-TYPE
+         SYNTAX          Gauge32
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The total number of area border routers
+             reachable within this area.  This is initially zero,
+             and is calculated in each Shortest Path First (SPF)
+             pass."
+         DEFVAL { 0 }
+         ::= { 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."
+         DEFVAL { 0 }
+         ::= { 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."
+          DEFVAL { 0 }
+         ::= { ospfv3AreaEntry 6 }
+
+ ospfv3AreaScopeLsaCksumSum OBJECT-TYPE
+         SYNTAX          Unsigned32
+         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 or 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
+             import of Inter-Area LSAs into stub and
+             NSSA 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 or NSSA area.  It will only advertise a
+             default route.
+
+             If it is sendAreaSummary, the router will both
+             summarize and propagate Inter-Area LSAs."
+         DEFVAL   { sendAreaSummary }
+         ::= { ospfv3AreaEntry 8 }
+
+ ospfv3AreaRowStatus OBJECT-TYPE
+         SYNTAX          RowStatus
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "This object permits management of the table by
+             facilitating actions such as row creation,
+             construction, and destruction.
+
+             The value of this object has no effect on
+             whether other objects in this conceptual row can be
+             modified."
+         ::= { ospfv3AreaEntry 9 }
+
+ ospfv3AreaStubMetric OBJECT-TYPE
+         SYNTAX          BigMetric
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "The metric value advertised for the default route
+             into stub and NSSA areas.  By default, this equals the
+             least metric among the interfaces to other 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 policy to
+             perform NSSA translation of NSSA-LSAs into
+             AS-External-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 NSSA-LSAs into
+              AS-External-LSAs.  When this object is set to
+              'enabled', the NSSA border router's
+              ospfv3AreaNssaTranslatorRole has been set to 'always'.
+              When this object is set to 'elected', a candidate
+              NSSA border router is translating NSSA-LSAs into
+              AS-External-LSAs.  When this object is set to
+              'disabled', a candidate NSSA Border router is NOT
+              translating NSSA-LSAs into AS-External-LSAs."
+         ::= { ospfv3AreaEntry 12 }
+
+ ospfv3AreaNssaTranslatorStabInterval OBJECT-TYPE
+         SYNTAX          Unsigned32
+         UNITS           "seconds"
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "The stability interval defined as 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 start-up of the
+             OSPFv3 routing process.
+
+             Discontinuities in the value of this counter
+             can occur at re-initialization of the management
+             system and at other times as indicated by the
+             value of ospfv3DiscontinuityTime."
+         ::= { 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 assigns the type of metric
+             advertised as a default route."
+         DEFVAL { ospfv3Metric }
+         ::= { ospfv3AreaEntry 15 }
+
+ ospfv3AreaTEEnabled OBJECT-TYPE
+         SYNTAX          TruthValue
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+                "Indicates whether or not traffic engineering
+                is enabled in the area.  The object is set
+                to the value true (1) to enable traffic engineering.
+                Traffic engineering is disabled by default."
+         DEFVAL { false }
+         ::= { ospfv3AreaEntry 16 }
+
+ -- OSPFv3 AS-Scope Link State Database
+
+ ospfv3AsLsdbTable OBJECT-TYPE
+         SYNTAX          SEQUENCE OF Ospfv3AsLsdbEntry
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The OSPFv3 Process's AS-scope link state database
+             (LSDB).  The LSDB contains the AS-scope link state
+             advertisements from throughout the areas that the
+             device is attached to."
+         ::= { 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
+                 Ospfv3RouterIdTC,
+         ospfv3AsLsdbLsid
+                 Ospfv3LsIdTC,
+         ospfv3AsLsdbSequence
+                 Ospfv3LsaSequenceTC,
+         ospfv3AsLsdbAge
+                 Ospfv3LsaAgeTC,
+         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
+             advertisement format.  AS-scope LSAs not recognized
+             by the router may be stored in the database."
+         ::= { ospfv3AsLsdbEntry 1 }
+
+ ospfv3AsLsdbRouterId OBJECT-TYPE
+         SYNTAX          Ospfv3RouterIdTC
+         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          Ospfv3LsIdTC
+         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          Ospfv3LsaSequenceTC
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The sequence number field is a signed 32-bit
+             integer.  It is used to detect old and duplicate
+             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          Ospfv3LsaAgeTC
+         UNITS           "seconds"
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "This field is the age of the link state
+             advertisement in seconds.  The high-order bit
+             of the LS age field is considered the DoNotAge
+             bit for support of on-demand circuits."
+         REFERENCE
+             "OSPF Version 2, Section 12.1.1, LS age;
+              Extending OSPF to Support Demand Circuits,
+              Section 2.2, The LS age field."
+         ::= { 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
+             connectionless 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
+             "The value true (1) indicates that the LSA type
+             is recognized by this router."
+         ::= { ospfv3AsLsdbEntry 8 }
+
+  --  OSPFv3 Area-Scope Link State Database
+
+ ospfv3AreaLsdbTable OBJECT-TYPE
+         SYNTAX          SEQUENCE OF Ospfv3AreaLsdbEntry
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The OSPFv3 Process's Area-scope LSDB.
+             The LSDB contains the Area-scope link state
+             advertisements from throughout the area that the
+             device is attached to."
+         ::= { 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
+                 Ospfv3AreaIdTC,
+         ospfv3AreaLsdbType
+                 Unsigned32,
+         ospfv3AreaLsdbRouterId
+                 Ospfv3RouterIdTC,
+         ospfv3AreaLsdbLsid
+                 Ospfv3LsIdTC,
+         ospfv3AreaLsdbSequence
+                 Ospfv3LsaSequenceTC,
+         ospfv3AreaLsdbAge
+                 Ospfv3LsaAgeTC,
+         ospfv3AreaLsdbChecksum
+                 Integer32,
+         ospfv3AreaLsdbAdvertisement
+                 OCTET STRING,
+         ospfv3AreaLsdbTypeKnown
+                 TruthValue
+         }
+
+ ospfv3AreaLsdbAreaId OBJECT-TYPE
+         SYNTAX          Ospfv3AreaIdTC
+         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
+             advertisement format.  Area-scope LSAs unrecognized
+             by the router are also stored in this database."
+         ::= { ospfv3AreaLsdbEntry 2 }
+
+ ospfv3AreaLsdbRouterId OBJECT-TYPE
+         SYNTAX          Ospfv3RouterIdTC
+         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          Ospfv3LsIdTC
+         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          Ospfv3LsaSequenceTC
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The sequence number field is a signed 32-bit
+             integer.  It is used to detect old and
+             duplicate 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          Ospfv3LsaAgeTC
+         UNITS           "seconds"
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "This field is the age of the link state
+             advertisement in seconds.  The high-order bit
+             of the LS age field is considered the DoNotAge
+             bit for support of on-demand circuits."
+         REFERENCE
+             "OSPF Version 2, Section 12.1.1, LS age;
+              Extending OSPF to Support Demand Circuits,
+              Section 2.2, The LS age field."
+         ::= { 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
+             connectionless 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
+             "The value true (1) indicates that the LSA type is
+             recognized by this router."
+         ::= { ospfv3AreaLsdbEntry 9 }
+
+ -- OSPFv3 Link-Scope Link State Database, for non-virtual interfaces
+
+ ospfv3LinkLsdbTable OBJECT-TYPE
+         SYNTAX          SEQUENCE OF Ospfv3LinkLsdbEntry
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The OSPFv3 Process's Link-scope LSDB for non-virtual
+             interfaces.  The LSDB contains the Link-scope link
+             state advertisements from the interfaces that the
+             device is attached to."
+         ::= { ospfv3Objects 5 }
+
+ ospfv3LinkLsdbEntry OBJECT-TYPE
+         SYNTAX          Ospfv3LinkLsdbEntry
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "A single Link-scope link state advertisement."
+         INDEX           { ospfv3LinkLsdbIfIndex,
+                           ospfv3LinkLsdbIfInstId,
+                           ospfv3LinkLsdbType,
+                           ospfv3LinkLsdbRouterId,
+                           ospfv3LinkLsdbLsid }
+         ::= { ospfv3LinkLsdbTable 1 }
+
+ Ospfv3LinkLsdbEntry ::= SEQUENCE {
+         ospfv3LinkLsdbIfIndex
+                 InterfaceIndex,
+         ospfv3LinkLsdbIfInstId
+                 Ospfv3IfInstIdTC,
+         ospfv3LinkLsdbType
+                 Unsigned32,
+         ospfv3LinkLsdbRouterId
+                 Ospfv3RouterIdTC,
+         ospfv3LinkLsdbLsid
+                 Ospfv3LsIdTC,
+         ospfv3LinkLsdbSequence
+                 Ospfv3LsaSequenceTC,
+         ospfv3LinkLsdbAge
+                 Ospfv3LsaAgeTC,
+         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."
+         ::= { ospfv3LinkLsdbEntry 1 }
+
+ ospfv3LinkLsdbIfInstId OBJECT-TYPE
+         SYNTAX         Ospfv3IfInstIdTC
+         MAX-ACCESS     not-accessible
+         STATUS         current
+         DESCRIPTION
+             "The identifier of the interface instance from
+             which the LSA was received."
+         ::= { ospfv3LinkLsdbEntry 2 }
+
+ 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
+             advertisement format.  Link-scope LSAs unrecognized
+             by the router are also stored in this database."
+         ::= { ospfv3LinkLsdbEntry 3 }
+
+ ospfv3LinkLsdbRouterId OBJECT-TYPE
+         SYNTAX          Ospfv3RouterIdTC
+         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 4 }
+
+ ospfv3LinkLsdbLsid OBJECT-TYPE
+         SYNTAX        Ospfv3LsIdTC
+         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.  However, in OSPFv3
+             the Link State ID always contains the flooding
+             scope of the LSA."
+         ::= { ospfv3LinkLsdbEntry 5 }
+
+ -- 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          Ospfv3LsaSequenceTC
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The sequence number field is a signed 32-bit
+             integer.  It is used to detect old and duplicate
+             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 6 }
+
+ ospfv3LinkLsdbAge OBJECT-TYPE
+         SYNTAX          Ospfv3LsaAgeTC
+         UNITS           "seconds"
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "This field is the age of the link state
+             advertisement in seconds.  The high-order bit
+             of the LS age field is considered the DoNotAge
+             bit for support of on-demand circuits."
+         REFERENCE
+             "OSPF Version 2, Section 12.1.1, LS age;
+              Extending OSPF to Support Demand Circuits,
+              Section 2.2, The LS age field."
+         ::= { ospfv3LinkLsdbEntry 7 }
+
+ 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
+             connectionless datagrams; it is commonly
+             referred to as the Fletcher checksum."
+         REFERENCE
+             "OSPF Version 2, Section 12.1.7, LS checksum"
+         ::= { ospfv3LinkLsdbEntry 8 }
+
+ 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 9 }
+
+ ospfv3LinkLsdbTypeKnown OBJECT-TYPE
+         SYNTAX          TruthValue
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The value true (1) indicates that the LSA type is
+             recognized by this router."
+         ::= { ospfv3LinkLsdbEntry 10 }
+
+ -- OSPF Host Table
+
+ ospfv3HostTable OBJECT-TYPE
+         SYNTAX          SEQUENCE OF Ospfv3HostEntry
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The Host/Metric Table indicates what hosts are
+             directly attached to the router and their
+             corresponding metrics."
+         REFERENCE
+             "OSPF Version 2, Appendix C.7, Host route
+             parameters"
+         ::= { 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.
+
+             The information in this table is persistent, and
+             when written, the entity SHOULD save the change
+             to non-volatile storage."
+         INDEX           { ospfv3HostAddressType,
+                           ospfv3HostAddress }
+         ::= { ospfv3HostTable 1 }
+
+ Ospfv3HostEntry ::= SEQUENCE {
+         ospfv3HostAddressType
+                 InetAddressType,
+         ospfv3HostAddress
+                 InetAddress,
+         ospfv3HostMetric
+                 Metric,
+         ospfv3HostRowStatus
+                 RowStatus,
+         ospfv3HostAreaID
+                 Ospfv3AreaIdTC
+         }
+
+ ospfv3HostAddressType OBJECT-TYPE
+         SYNTAX          InetAddressType
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The address type of ospfv3HostAddress.  Only IPv6
+             global address type is expected."
+         REFERENCE
+             "OSPF Version 2, Appendix C.7, Host route
+             parameters"
+         ::= { ospfv3HostEntry 1 }
+
+ ospfv3HostAddress OBJECT-TYPE
+         SYNTAX          InetAddress
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The IPv6 address of the host.  Must be an
+             IPv6 global address."
+         REFERENCE
+             "OSPF Version 2, Appendix C.7, Host route
+             parameters"
+         ::= { 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.7, Host route
+             parameters"
+         ::= { ospfv3HostEntry 3 }
+
+ ospfv3HostRowStatus OBJECT-TYPE
+         SYNTAX          RowStatus
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "This object permits management of the table by
+             facilitating actions such as row creation,
+             construction, and destruction.
+
+             The value of this object has no effect on
+             whether other objects in this conceptual row can be
+             modified."
+         ::= { ospfv3HostEntry 4 }
+
+ ospfv3HostAreaID OBJECT-TYPE
+         SYNTAX          Ospfv3AreaIdTC
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "The Area the host entry is to be found within.
+             By default, the area for the subsuming OSPFv3
+             interface, or Area 0 if there is no subsuming
+             interface."
+         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
+             interfaces from the viewpoint of OSPFv3."
+         REFERENCE
+             "OSPF for IPv6, 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
+             interface from the viewpoint of OSPFv3.
+
+             The information in this table is persistent,
+             and when written, the entity SHOULD save the
+             change to non-volatile storage."
+         INDEX           { ospfv3IfIndex,
+                           ospfv3IfInstId }
+         ::= { ospfv3IfTable 1 }
+
+ Ospfv3IfEntry ::= SEQUENCE {
+         ospfv3IfIndex
+                 InterfaceIndex,
+         ospfv3IfInstId
+                 Ospfv3IfInstIdTC,
+         ospfv3IfAreaId
+                 Ospfv3AreaIdTC,
+         ospfv3IfType
+                 INTEGER,
+         ospfv3IfAdminStatus
+                 Status,
+         ospfv3IfRtrPriority
+                 DesignatedRouterPriority,
+         ospfv3IfTransitDelay
+                 Ospfv3UpToRefreshIntervalTC,
+         ospfv3IfRetransInterval
+                 Ospfv3UpToRefreshIntervalTC,
+         ospfv3IfHelloInterval
+                 HelloRange,
+         ospfv3IfRtrDeadInterval
+                  Ospfv3DeadIntervalRangeTC,
+         ospfv3IfPollInterval
+                 Unsigned32,
+         ospfv3IfState
+                 INTEGER,
+         ospfv3IfDesignatedRouter
+                 Ospfv3RouterIdTC,
+         ospfv3IfBackupDesignatedRouter
+                 Ospfv3RouterIdTC,
+         ospfv3IfEvents
+                 Counter32,
+         ospfv3IfRowStatus
+                 RowStatus,
+         ospfv3IfDemand
+                 TruthValue,
+         ospfv3IfMetricValue
+                 Metric,
+         ospfv3IfLinkScopeLsaCount
+                 Gauge32,
+         ospfv3IfLinkLsaCksumSum
+                 Unsigned32,
+         ospfv3IfDemandNbrProbe
+                 TruthValue,
+         ospfv3IfDemandNbrProbeRetransLimit
+                 Unsigned32,
+         ospfv3IfDemandNbrProbeInterval
+                 Unsigned32,
+         ospfv3IfTEDisabled
+                 TruthValue,
+         ospfv3IfLinkLSASuppression
+                 TruthValue
+         }
+
+ 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 }
+
+ ospfv3IfInstId OBJECT-TYPE
+         SYNTAX          Ospfv3IfInstIdTC
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "Enables multiple interface instances of OSPFv3
+             to be run over a single link.  Each interface
+             instance would be assigned a separate ID.  This ID
+             has local link significance only."
+         ::= { ospfv3IfEntry 2 }
+
+ ospfv3IfAreaId OBJECT-TYPE
+         SYNTAX          Ospfv3AreaIdTC
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "A 32-bit integer uniquely identifying the area
+             to which the interface connects.  Area ID
+             0 is used for the OSPFv3 backbone."
+         DEFVAL          { 0 }
+         ::= { ospfv3IfEntry 3 }
+
+ 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 4 }
+
+ ospfv3IfAdminStatus OBJECT-TYPE
+         SYNTAX          Status
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "The OSPFv3 interface's administrative status.
+             The value formed on the interface; the interface
+             will be advertised as an internal route to some
+             area.  The value 'disabled' denotes that the
+             interface is external to OSPFv3.
+
+             Note that a value of 'disabled' for the object
+             ospfv3AdminStatus will override a value of
+             'enabled' for the interface."
+         DEFVAL          { enabled }
+         ::= { ospfv3IfEntry 5 }
+
+ 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
+             eligible 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 6 }
+
+ ospfv3IfTransitDelay OBJECT-TYPE
+         SYNTAX          Ospfv3UpToRefreshIntervalTC
+         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.  LSAs
+             contained in the update packet must have their age
+             incremented by this amount before transmission.  This
+             value should take into account the transmission and
+             propagation delays of the interface."
+         REFERENCE
+             "OSPF for IPv6, Appendix C.3, Router Interface
+             Parameters."
+         DEFVAL          { 1 }
+         ::= { ospfv3IfEntry 7 }
+
+ ospfv3IfRetransInterval OBJECT-TYPE
+         SYNTAX          Ospfv3UpToRefreshIntervalTC
+         UNITS           "seconds"
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "The number of seconds between link state
+             advertisement retransmissions for adjacencies
+
+             belonging to this interface.  This value is
+             also used when retransmitting database
+             description and Link State Request packets."
+         DEFVAL          { 5 }
+         ::= { ospfv3IfEntry 8 }
+
+ 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
+             interface.  This value must be the same for all
+             routers attached to a common network."
+         DEFVAL          { 10 }
+         ::= { ospfv3IfEntry 9 }
+
+ ospfv3IfRtrDeadInterval OBJECT-TYPE
+         SYNTAX          Ospfv3DeadIntervalRangeTC
+         UNITS           "seconds"
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "The number of seconds that a router's Hello
+             packets have not been seen before its
+             neighbors declare the router down on the interface.
+             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 10 }
+
+ 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 11 }
+
+ ospfv3IfState OBJECT-TYPE
+         SYNTAX          INTEGER {
+                         down(1),
+                         loopback(2),
+                         waiting(3),
+                         pointToPoint(4),
+                         designatedRouter(5),
+                         backupDesignatedRouter(6),
+                         otherDesignatedRouter(7),
+                         standby(8)
+                         }
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The OSPFv3 interface state.  An interface may be
+             in standby state if there are multiple interfaces
+             on the link and another interface is active.  The
+             interface may be in Down state if the underlying
+             IPv6 interface is down or if the admin status is
+             'disabled' either globally or for the interface."
+         ::= { ospfv3IfEntry 12 }
+
+ ospfv3IfDesignatedRouter OBJECT-TYPE
+         SYNTAX          Ospfv3RouterIdTC
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The Router ID of the Designated Router."
+         ::= { ospfv3IfEntry 13 }
+
+ ospfv3IfBackupDesignatedRouter OBJECT-TYPE
+         SYNTAX          Ospfv3RouterIdTC
+         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 OSPFv3 interface has
+             changed its state or an error has occurred.
+
+             Discontinuities in the value of this counter
+             can occur at re-initialization of the management
+             system and at other times as indicated by the
+             value of ospfv3DiscontinuityTime."
+         ::= { ospfv3IfEntry 15 }
+
+  ospfv3IfRowStatus OBJECT-TYPE
+         SYNTAX          RowStatus
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "This object permits management of the table by
+             facilitating actions such as row creation,
+             construction, and destruction.
+
+             The value of this object has no effect on
+             whether other objects in this conceptual row can be
+             modified."
+         ::= { ospfv3IfEntry 16 }
+
+ ospfv3IfDemand OBJECT-TYPE
+         SYNTAX          TruthValue
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "Indicates whether Demand OSPFv3 procedures
+             (Hello suppression to FULL neighbors and
+             setting the DoNotAge flag on propagated LSAs)
+             should be performed on this interface."
+         DEFVAL { false }
+         ::= { ospfv3IfEntry 17 }
+
+ 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 can be set
+              in the ospfv3ReferenceBandwidth object."
+         ::= { ospfv3IfEntry 18 }
+
+  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 19 }
+
+  ospfv3IfLinkLsaCksumSum OBJECT-TYPE
+         SYNTAX          Unsigned32
+         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 or to compare the
+             link state database of two routers."
+         ::= { ospfv3IfEntry 20 }
+
+ 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 21 }
+
+ospfv3IfDemandNbrProbeRetransLimit OBJECT-TYPE
+        SYNTAX       Unsigned32
+        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 22}
+
+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 23 }
+
+ ospfv3IfTEDisabled OBJECT-TYPE
+        SYNTAX          TruthValue
+        MAX-ACCESS      read-create
+        STATUS          current
+        DESCRIPTION
+           "Indicates whether or not traffic engineering
+           is disabled on the interface when traffic
+           engineering is enabled in the area where the
+           interface is attached.  The object is set
+           to the value true (1) to disable traffic engineering
+           on the interface.  Traffic engineering is enabled
+           by default on the interface when traffic engineering
+           is enabled in the area where the interface is
+           attached."
+        DEFVAL { false }
+        ::= { ospfv3IfEntry 24 }
+
+ ospfv3IfLinkLSASuppression OBJECT-TYPE
+        SYNTAX          TruthValue
+        MAX-ACCESS      read-create
+        STATUS          current
+        DESCRIPTION
+           "Specifies whether or not link LSA origination is
+           suppressed for broadcast or NBMA interface types.
+           The object is set to value true (1) to suppress
+           the origination."
+        REFERENCE
+             "OSPF for IPv6, Appendix C.3, Router Interface
+                 Parameters"
+        DEFVAL { false }
+        ::= { ospfv3IfEntry 25 }
+
+ -- OSPFv3 Virtual Interface Table
+
+ ospfv3VirtIfTable OBJECT-TYPE
+         SYNTAX          SEQUENCE OF Ospfv3VirtIfEntry
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "Information about this router's virtual
+             interfaces that the OSPFv3 Process is configured
+             to carry on."
+         REFERENCE
+             "OSPF for IPv6, 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.
+
+             The information in this table is persistent,
+             and when written, the entity SHOULD save the
+             change to non-volatile storage."
+         INDEX           { ospfv3VirtIfAreaId,
+                           ospfv3VirtIfNeighbor }
+         ::= { ospfv3VirtIfTable 1 }
+
+ Ospfv3VirtIfEntry ::= SEQUENCE {
+         ospfv3VirtIfAreaId
+                 Ospfv3AreaIdTC,
+         ospfv3VirtIfNeighbor
+                 Ospfv3RouterIdTC,
+         ospfv3VirtIfIndex
+                 InterfaceIndex,
+         ospfv3VirtIfInstId
+                 Ospfv3IfInstIdTC,
+         ospfv3VirtIfTransitDelay
+                 Ospfv3UpToRefreshIntervalTC,
+         ospfv3VirtIfRetransInterval
+                 Ospfv3UpToRefreshIntervalTC,
+         ospfv3VirtIfHelloInterval
+                 HelloRange,
+         ospfv3VirtIfRtrDeadInterval
+                 Ospfv3DeadIntervalRangeTC,
+         ospfv3VirtIfState
+                 INTEGER,
+         ospfv3VirtIfEvents
+                 Counter32,
+         ospfv3VirtIfRowStatus
+                 RowStatus,
+         ospfv3VirtIfLinkScopeLsaCount
+                 Gauge32,
+         ospfv3VirtIfLinkLsaCksumSum
+                 Unsigned32
+         }
+
+ ospfv3VirtIfAreaId OBJECT-TYPE
+         SYNTAX          Ospfv3AreaIdTC
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The transit area that the virtual link
+             traverses.  By definition, this is not
+             Area 0."
+         ::= { ospfv3VirtIfEntry 1 }
+
+ ospfv3VirtIfNeighbor OBJECT-TYPE
+         SYNTAX          Ospfv3RouterIdTC
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The Router ID of the virtual neighbor."
+         ::= { ospfv3VirtIfEntry 2 }
+
+ ospfv3VirtIfIndex OBJECT-TYPE
+         SYNTAX          InterfaceIndex
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The local interface index assigned by the
+             OSPFv3 Process to this OSPFv3 virtual interface.
+             It is advertised in Hellos sent over the virtual
+             link and in the router's router-LSAs."
+         ::= { ospfv3VirtIfEntry 3 }
+
+ ospfv3VirtIfInstId OBJECT-TYPE
+         SYNTAX          Ospfv3IfInstIdTC
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The local Interface Instance ID assigned by the
+             OSPFv3 Process to this OSPFv3 virtual interface."
+         ::= { ospfv3VirtIfEntry 4 }
+
+ ospfv3VirtIfTransitDelay OBJECT-TYPE
+         SYNTAX          Ospfv3UpToRefreshIntervalTC
+         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 5 }
+
+ ospfv3VirtIfRetransInterval OBJECT-TYPE
+         SYNTAX          Ospfv3UpToRefreshIntervalTC
+         UNITS           "seconds"
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "The number of seconds between link state
+             advertisement retransmissions for adjacencies
+             belonging to this interface.  This value is
+             also used when retransmitting database
+             description and Link State Request packets.  This
+             value should be well over the expected
+             round-trip time."
+         DEFVAL          { 5 }
+         ::= { ospfv3VirtIfEntry 6 }
+
+ 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
+             interface.  This value must be the same for the
+             virtual neighbor."
+         DEFVAL          { 10 }
+         ::= { ospfv3VirtIfEntry 7 }
+
+ ospfv3VirtIfRtrDeadInterval OBJECT-TYPE
+         SYNTAX          Ospfv3DeadIntervalRangeTC
+         UNITS           "seconds"
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "The number of seconds that a router's Hello
+             packets have not been seen before its
+             neighbors declare the router down.  This should
+             be some multiple of the Hello interval.  This
+             value must be the same for the virtual
+             neighbor."
+         DEFVAL          { 60 }
+         ::= { ospfv3VirtIfEntry 8 }
+
+ ospfv3VirtIfState OBJECT-TYPE
+         SYNTAX          INTEGER {
+                         down(1),
+                         pointToPoint(4)
+                         }
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "OSPF virtual interface states.  The same encoding
+             as the ospfV3IfTable is used."
+         ::= { ospfv3VirtIfEntry 9 }
+
+ ospfv3VirtIfEvents OBJECT-TYPE
+         SYNTAX          Counter32
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The number of state changes or error events on
+             this virtual link.
+
+             Discontinuities in the value of this counter
+             can occur at re-initialization of the management
+             system and at other times as indicated by the
+             value of ospfv3DiscontinuityTime."
+         ::= { ospfv3VirtIfEntry 10 }
+
+ ospfv3VirtIfRowStatus OBJECT-TYPE
+         SYNTAX          RowStatus
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "This object permits management of the table by
+             facilitating actions such as row creation,
+             construction, and destruction.
+
+             The value of this object has no effect on
+             whether other objects in this conceptual row can be
+             modified."
+         ::= { ospfv3VirtIfEntry 11 }
+
+ 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 12 }
+
+ ospfv3VirtIfLinkLsaCksumSum OBJECT-TYPE
+         SYNTAX          Unsigned32
+         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 or to compare the
+             link state database of two routers."
+         ::= { ospfv3VirtIfEntry 13 }
+
+ -- OSPFv3 Neighbor Table
+
+ ospfv3NbrTable OBJECT-TYPE
+         SYNTAX          SEQUENCE OF Ospfv3NbrEntry
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "A table describing all neighbors in the
+             locality of the OSPFv3 router."
+         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,
+                           ospfv3NbrIfInstId,
+                           ospfv3NbrRtrId }
+         ::= { ospfv3NbrTable 1 }
+
+ Ospfv3NbrEntry ::= SEQUENCE {
+         ospfv3NbrIfIndex
+                 InterfaceIndex,
+         ospfv3NbrIfInstId
+                 Ospfv3IfInstIdTC,
+         ospfv3NbrRtrId
+                 Ospfv3RouterIdTC,
+         ospfv3NbrAddressType
+                 InetAddressType,
+         ospfv3NbrAddress
+                 InetAddress,
+         ospfv3NbrOptions
+                 Integer32,
+         ospfv3NbrPriority
+                 DesignatedRouterPriority,
+         ospfv3NbrState
+                 INTEGER,
+         ospfv3NbrEvents
+                 Counter32,
+         ospfv3NbrLsRetransQLen
+                 Gauge32,
+         ospfv3NbrHelloSuppressed
+                 TruthValue,
+         ospfv3NbrIfId
+                 InterfaceIndex,
+         ospfv3NbrRestartHelperStatus
+                 INTEGER,
+         ospfv3NbrRestartHelperAge
+                 Ospfv3UpToRefreshIntervalTC,
+         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 }
+
+ ospfv3NbrIfInstId OBJECT-TYPE
+         SYNTAX          Ospfv3IfInstIdTC
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "Interface instance over which the neighbor
+             can be reached.  This ID has local link
+             significance only."
+         ::= { ospfv3NbrEntry 2 }
+
+ ospfv3NbrRtrId OBJECT-TYPE
+         SYNTAX          Ospfv3RouterIdTC
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "A 32-bit unsigned integer uniquely identifying the
+             neighboring router in the Autonomous System."
+         ::= { ospfv3NbrEntry 3 }
+
+ 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 4 }
+
+ ospfv3NbrAddress OBJECT-TYPE
+         SYNTAX          InetAddress
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The IPv6 address of the neighbor associated with
+             the local link."
+         ::= { ospfv3NbrEntry 5 }
+
+ ospfv3NbrOptions OBJECT-TYPE
+         SYNTAX          Integer32
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "A bit mask corresponding to the neighbor's
+             options field."
+         REFERENCE
+             "OSPF for IPv6, Appendix A.2, The Options Field"
+         ::= { ospfv3NbrEntry 6 }
+
+ ospfv3NbrPriority OBJECT-TYPE
+         SYNTAX          DesignatedRouterPriority
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The priority of this neighbor in the designated-
+             router election algorithm.  The value 0 signifies
+             that the neighbor is not eligible to become the
+             Designated Router on this particular network."
+         ::= { ospfv3NbrEntry 7 }
+
+ 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
+             neighbor."
+         REFERENCE
+             "OSPF Version 2, Section 10.1, Neighbor states"
+         ::= { ospfv3NbrEntry 8 }
+
+ 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.
+
+             Discontinuities in the value of this counter
+             can occur at re-initialization of the management
+             system and at other times as indicated by the
+             value of ospfv3DiscontinuityTime."
+         ::= { ospfv3NbrEntry 9 }
+
+ ospfv3NbrLsRetransQLen OBJECT-TYPE
+         SYNTAX          Gauge32
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The current length of the retransmission
+             queue."
+         ::= { ospfv3NbrEntry 10 }
+
+ ospfv3NbrHelloSuppressed OBJECT-TYPE
+         SYNTAX          TruthValue
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "Indicates whether Hellos are being suppressed
+             to the neighbor."
+         ::= { ospfv3NbrEntry 11 }
+
+ 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 12 }
+
+ ospfv3NbrRestartHelperStatus OBJECT-TYPE
+        SYNTAX       INTEGER { notHelping(1),
+                               helping(2)
+                             }
+        MAX-ACCESS   read-only
+        STATUS       current
+        DESCRIPTION
+           "Indicates whether the router is acting
+           as a graceful restart helper for the neighbor."
+           ::= { ospfv3NbrEntry 13 }
+
+ ospfv3NbrRestartHelperAge OBJECT-TYPE
+        SYNTAX       Ospfv3UpToRefreshIntervalTC
+        UNITS        "seconds"
+        MAX-ACCESS   read-only
+        STATUS       current
+        DESCRIPTION
+           "Remaining time in current OSPF graceful restart
+           interval, if the router is acting as a restart
+           helper for the neighbor."
+        ::= { ospfv3NbrEntry 14 }
+
+ ospfv3NbrRestartHelperExitReason OBJECT-TYPE
+        SYNTAX       INTEGER { none(1),
+                               inProgress(2),
+                               completed(3),
+                               timedOut(4),
+                               topologyChanged(5)
+                             }
+        MAX-ACCESS   read-only
+        STATUS       current
+        DESCRIPTION
+           "Describes the outcome of the last attempt at acting
+           as a graceful restart helper for the neighbor.
+
+           none:            no restart has yet been attempted.
+           inProgress:      a restart attempt is currently underway.
+           completed:       the last restart completed successfully.
+           timedOut:        the last restart timed out.
+           topologyChanged: the last restart was aborted due to
+                            a topology change."
+     ::= { ospfv3NbrEntry 15 }
+
+ -- OSPFv3 Configured Neighbor Table
+
+ ospfv3CfgNbrTable OBJECT-TYPE
+         SYNTAX          SEQUENCE OF Ospfv3CfgNbrEntry
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "A table describing all configured neighbors.
+
+             The Configured Neighbors table just gives
+             OSPFv3 information for sending OSPFv3 packets
+             to potential neighbors and is typically used
+             on NBMA and Point-to-Multipoint networks.
+             Once a Hello is received from a neighbor in
+             the Configured Neighbor table, an entry for
+             that neighbor is created in the Neighbor table
+             and adjacency state is maintained there.
+             Neighbors on multi-access or Point-to-Point
+             networks can use multicast addressing, so only
+             Neighbor table entries are created for them."
+         REFERENCE
+             "OSPF Version 2, Section 10, The Neighbor Data
+             Structure"
+         ::= { ospfv3Objects 10 }
+
+ ospfv3CfgNbrEntry OBJECT-TYPE
+         SYNTAX          Ospfv3CfgNbrEntry
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The information regarding a single configured
+             neighbor.
+
+             The information in this table is persistent,
+             and when written, the entity SHOULD save the
+             change to non-volatile storage."
+         REFERENCE
+             "OSPF Version 2, Section 10, The Neighbor Data
+             Structure"
+         INDEX           { ospfv3CfgNbrIfIndex,
+                           ospfv3CfgNbrIfInstId,
+                           ospfv3CfgNbrAddressType,
+                           ospfv3CfgNbrAddress }
+         ::= { ospfv3CfgNbrTable 1 }
+
+ Ospfv3CfgNbrEntry ::= SEQUENCE {
+         ospfv3CfgNbrIfIndex
+                 InterfaceIndex,
+         ospfv3CfgNbrIfInstId
+                 Ospfv3IfInstIdTC,
+         ospfv3CfgNbrAddressType
+                 InetAddressType,
+         ospfv3CfgNbrAddress
+                 InetAddress,
+         ospfv3CfgNbrPriority
+                 DesignatedRouterPriority,
+         ospfv3CfgNbrRowStatus
+                 RowStatus
+         }
+
+ ospfv3CfgNbrIfIndex 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."
+         ::= { ospfv3CfgNbrEntry 1 }
+
+ ospfv3CfgNbrIfInstId OBJECT-TYPE
+         SYNTAX          Ospfv3IfInstIdTC
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "Interface instance over which the neighbor
+             can be reached.  This ID has local link
+             significance only."
+         ::= { ospfv3CfgNbrEntry 2 }
+
+ ospfv3CfgNbrAddressType OBJECT-TYPE
+         SYNTAX          InetAddressType
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The address type of ospfv3NbrAddress.  Only IPv6
+             addresses without zone index are expected."
+         ::= { ospfv3CfgNbrEntry 3 }
+
+ ospfv3CfgNbrAddress OBJECT-TYPE
+         SYNTAX          InetAddress
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The IPv6 address of the neighbor associated with
+             the local link."
+         ::= { ospfv3CfgNbrEntry 4 }
+
+ ospfv3CfgNbrPriority OBJECT-TYPE
+         SYNTAX          DesignatedRouterPriority
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "The priority of this neighbor in the designated-
+             router election algorithm.  The value 0 signifies
+             that the neighbor is not eligible to become the
+             Designated Router on this particular network."
+         DEFVAL          { 1 }
+         ::= { ospfv3CfgNbrEntry 5 }
+
+ ospfv3CfgNbrRowStatus OBJECT-TYPE
+         SYNTAX          RowStatus
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "This object permits management of the table by
+             facilitating actions such as row creation,
+             construction, and destruction.
+
+             The value of this object has no effect on
+             whether other objects in this conceptual row can be
+             modified."
+         ::= { ospfv3CfgNbrEntry 6 }
+
+ -- OSPFv3 Virtual Neighbor Table
+
+ ospfv3VirtNbrTable OBJECT-TYPE
+         SYNTAX          SEQUENCE OF Ospfv3VirtNbrEntry
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "A table describing all virtual neighbors."
+         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
+                 Ospfv3AreaIdTC,
+         ospfv3VirtNbrRtrId
+                 Ospfv3RouterIdTC,
+         ospfv3VirtNbrIfIndex
+                 InterfaceIndex,
+         ospfv3VirtNbrIfInstId
+                 Ospfv3IfInstIdTC,
+         ospfv3VirtNbrAddressType
+                 InetAddressType,
+         ospfv3VirtNbrAddress
+                 InetAddress,
+         ospfv3VirtNbrOptions
+                 Integer32,
+         ospfv3VirtNbrState
+                 INTEGER,
+         ospfv3VirtNbrEvents
+                 Counter32,
+         ospfv3VirtNbrLsRetransQLen
+                 Gauge32,
+         ospfv3VirtNbrHelloSuppressed
+                 TruthValue,
+         ospfv3VirtNbrIfId
+                 InterfaceIndex,
+         ospfv3VirtNbrRestartHelperStatus
+                 INTEGER,
+         ospfv3VirtNbrRestartHelperAge
+                 Ospfv3UpToRefreshIntervalTC,
+         ospfv3VirtNbrRestartHelperExitReason
+                 INTEGER
+         }
+
+ ospfv3VirtNbrArea OBJECT-TYPE
+         SYNTAX          Ospfv3AreaIdTC
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The transit area Identifier."
+         ::= { ospfv3VirtNbrEntry 1 }
+
+ ospfv3VirtNbrRtrId OBJECT-TYPE
+         SYNTAX          Ospfv3RouterIdTC
+         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 }
+
+ ospfv3VirtNbrIfInstId OBJECT-TYPE
+         SYNTAX          Ospfv3IfInstIdTC
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The interface instance for the virtual link over
+             which the neighbor can be reached."
+         ::= { ospfv3VirtNbrEntry 4 }
+
+ 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 5 }
+
+ ospfv3VirtNbrAddress OBJECT-TYPE
+         SYNTAX          InetAddress
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The IPv6 address advertised by this virtual neighbor.
+             It must be a global scope address."
+         ::= { ospfv3VirtNbrEntry 6 }
+
+ ospfv3VirtNbrOptions OBJECT-TYPE
+         SYNTAX          Integer32
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "A bit mask corresponding to the neighbor's options
+             field."
+         REFERENCE
+             "OSPF for IPv6, Appendix A.2, The Options Field"
+         ::= { ospfv3VirtNbrEntry 7 }
+
+ 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 relationship."
+         ::= { ospfv3VirtNbrEntry 8 }
+
+ 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.
+
+             Discontinuities in the value of this counter
+             can occur at re-initialization of the management
+             system and at other times as indicated by the
+             value of ospfv3DiscontinuityTime."
+         ::= { ospfv3VirtNbrEntry 9 }
+
+ ospfv3VirtNbrLsRetransQLen OBJECT-TYPE
+         SYNTAX          Gauge32
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The current length of the retransmission
+             queue."
+         ::= { ospfv3VirtNbrEntry 10 }
+
+ ospfv3VirtNbrHelloSuppressed OBJECT-TYPE
+         SYNTAX          TruthValue
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "Indicates whether Hellos are being suppressed
+             to the neighbor."
+         ::= { ospfv3VirtNbrEntry 11 }
+
+ 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 12 }
+
+ospfv3VirtNbrRestartHelperStatus OBJECT-TYPE
+        SYNTAX       INTEGER { notHelping(1),
+                               helping(2)
+                             }
+        MAX-ACCESS   read-only
+        STATUS       current
+        DESCRIPTION
+            "Indicates whether the router is acting
+            as a graceful restart helper for the neighbor."
+           ::= { ospfv3VirtNbrEntry 13 }
+
+ ospfv3VirtNbrRestartHelperAge OBJECT-TYPE
+        SYNTAX       Ospfv3UpToRefreshIntervalTC
+        UNITS        "seconds"
+        MAX-ACCESS   read-only
+        STATUS       current
+        DESCRIPTION
+            "Remaining time in the current OSPF graceful restart
+            interval, if the router is acting as a restart
+            helper for the neighbor."
+        ::= { ospfv3VirtNbrEntry 14 }
+
+ ospfv3VirtNbrRestartHelperExitReason OBJECT-TYPE
+        SYNTAX       INTEGER { none(1),
+                               inProgress(2),
+                               completed(3),
+                               timedOut(4),
+                               topologyChanged(5)
+                             }
+        MAX-ACCESS   read-only
+        STATUS       current
+        DESCRIPTION
+            "Describes the outcome of the last attempt at acting
+            as a graceful restart helper for the neighbor.
+
+            none:            no restart has yet been attempted.
+            inProgress:      a restart attempt is currently underway.
+            completed:       the last restart completed successfully.
+            timedOut:        the last restart timed out.
+            topologyChanged: the last restart was aborted due to
+                             a topology change."
+     ::= { ospfv3VirtNbrEntry 15 }
+
+ --
+ -- The OSPFv3 Area Aggregate Table
+ --
+
+ ospfv3AreaAggregateTable OBJECT-TYPE
+         SYNTAX          SEQUENCE OF Ospfv3AreaAggregateEntry
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The Area Aggregate Table acts as an adjunct
+             to the Area Table.  It describes those address
+             aggregates that are configured to be propagated
+             from an area.  Its purpose is to reduce the amount
+             of information that is known beyond an area's
+             borders.
+
+             A range of IPv6 prefixes specified by a
+             prefix / prefix length pair.  Note that if
+             ranges are configured such that one range
+             subsumes 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 single area aggregate entry.
+
+             Information in this table is persistent, and
+             when this object is written, the entity SHOULD
+             save the change to non-volatile storage."
+         REFERENCE
+             "OSPF Version 2, Appendix C.2, Area parameters"
+         INDEX           { ospfv3AreaAggregateAreaID,
+                           ospfv3AreaAggregateAreaLsdbType,
+                           ospfv3AreaAggregatePrefixType,
+                           ospfv3AreaAggregatePrefix,
+                           ospfv3AreaAggregatePrefixLength }
+         ::= { ospfv3AreaAggregateTable 1 }
+
+ Ospfv3AreaAggregateEntry ::= SEQUENCE {
+         ospfv3AreaAggregateAreaID
+                 Ospfv3AreaIdTC,
+         ospfv3AreaAggregateAreaLsdbType
+                 INTEGER,
+         ospfv3AreaAggregatePrefixType
+                 InetAddressType,
+         ospfv3AreaAggregatePrefix
+                 InetAddress,
+         ospfv3AreaAggregatePrefixLength
+                 InetAddressPrefixLength,
+         ospfv3AreaAggregateRowStatus
+                 RowStatus,
+         ospfv3AreaAggregateEffect
+                 INTEGER,
+         ospfv3AreaAggregateRouteTag
+                 Unsigned32
+         }
+
+ ospfv3AreaAggregateAreaID OBJECT-TYPE
+         SYNTAX          Ospfv3AreaIdTC
+         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
+             Aggregate applies to."
+         REFERENCE
+             "OSPF Version 2, Appendix A.4.1, The LSA 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 3 }
+
+ 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 4 }
+
+ 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 5 }
+
+ ospfv3AreaAggregateRowStatus OBJECT-TYPE
+         SYNTAX          RowStatus
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "This object permits management of the table by
+             facilitating actions such as row creation,
+             construction, and destruction.
+
+             The value of this object has no effect on
+             whether other objects in this conceptual row can be
+             modified."
+         ::= { ospfv3AreaAggregateEntry 6 }
+
+ ospfv3AreaAggregateEffect OBJECT-TYPE
+         SYNTAX          INTEGER {
+                         advertiseMatching(1),
+                         doNotAdvertiseMatching(2)
+                         }
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "Prefixes subsumed by ranges will either trigger the
+             advertisement of the indicated aggregate
+             (advertiseMatching) or result in the prefix not
+             being advertised at all outside the area."
+         DEFVAL          { advertiseMatching }
+         ::= { ospfv3AreaAggregateEntry 7 }
+
+ ospfv3AreaAggregateRouteTag OBJECT-TYPE
+         SYNTAX          Unsigned32
+         MAX-ACCESS      read-create
+         STATUS          current
+         DESCRIPTION
+             "This tag is advertised only in the summarized
+             As-External LSA when summarizing from NSSA-LSAs to
+             AS-External-LSAs."
+         DEFVAL         { 0 }
+         ::= { ospfv3AreaAggregateEntry 8 }
+
+ -- OSPFv3 Link-Scope Link State Database, for virtual interfaces
+
+ ospfv3VirtLinkLsdbTable OBJECT-TYPE
+         SYNTAX          SEQUENCE OF Ospfv3VirtLinkLsdbEntry
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The OSPFv3 Process's Link-scope LSDB for virtual
+             interfaces.  The LSDB contains the Link-scope link
+             state advertisements from virtual interfaces."
+         ::= { ospfv3Objects 13 }
+
+ ospfv3VirtLinkLsdbEntry OBJECT-TYPE
+         SYNTAX          Ospfv3VirtLinkLsdbEntry
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "A single Link-scope link state advertisement
+             for a virtual interface."
+         INDEX           { ospfv3VirtLinkLsdbIfAreaId,
+                           ospfv3VirtLinkLsdbIfNeighbor,
+                           ospfv3VirtLinkLsdbType,
+                           ospfv3VirtLinkLsdbRouterId,
+                           ospfv3VirtLinkLsdbLsid }
+         ::= { ospfv3VirtLinkLsdbTable 1 }
+
+ Ospfv3VirtLinkLsdbEntry ::= SEQUENCE {
+         ospfv3VirtLinkLsdbIfAreaId
+                 Ospfv3AreaIdTC,
+         ospfv3VirtLinkLsdbIfNeighbor
+                 Ospfv3RouterIdTC,
+         ospfv3VirtLinkLsdbType
+                 Unsigned32,
+         ospfv3VirtLinkLsdbRouterId
+                 Ospfv3RouterIdTC,
+         ospfv3VirtLinkLsdbLsid
+                 Ospfv3LsIdTC,
+         ospfv3VirtLinkLsdbSequence
+                 Ospfv3LsaSequenceTC,
+         ospfv3VirtLinkLsdbAge
+                 Ospfv3LsaAgeTC,
+         ospfv3VirtLinkLsdbChecksum
+                 Integer32,
+         ospfv3VirtLinkLsdbAdvertisement
+                 OCTET STRING,
+         ospfv3VirtLinkLsdbTypeKnown
+                 TruthValue
+         }
+
+ ospfv3VirtLinkLsdbIfAreaId OBJECT-TYPE
+         SYNTAX          Ospfv3AreaIdTC
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The transit area that the virtual link
+             traverses.  By definition, this is not
+             Area 0."
+         ::= { ospfv3VirtLinkLsdbEntry 1 }
+
+ ospfv3VirtLinkLsdbIfNeighbor OBJECT-TYPE
+         SYNTAX          Ospfv3RouterIdTC
+         MAX-ACCESS      not-accessible
+         STATUS          current
+         DESCRIPTION
+             "The Router ID of the virtual neighbor."
+         ::= { ospfv3VirtLinkLsdbEntry 2 }
+
+ ospfv3VirtLinkLsdbType 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
+             advertisement format.  Link-scope LSAs unrecognized
+             by the router are also stored in this database."
+         ::= { ospfv3VirtLinkLsdbEntry 3 }
+
+ ospfv3VirtLinkLsdbRouterId OBJECT-TYPE
+         SYNTAX          Ospfv3RouterIdTC
+         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"
+         ::= { ospfv3VirtLinkLsdbEntry 4 }
+
+ ospfv3VirtLinkLsdbLsid OBJECT-TYPE
+         SYNTAX        Ospfv3LsIdTC
+         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."
+         ::= { ospfv3VirtLinkLsdbEntry 5 }
+
+ -- 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.
+
+ ospfv3VirtLinkLsdbSequence OBJECT-TYPE
+         SYNTAX          Ospfv3LsaSequenceTC
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The sequence number field is a signed 32-bit
+             integer.  It is used to detect old and duplicate
+             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"
+         ::= { ospfv3VirtLinkLsdbEntry 6 }
+
+ ospfv3VirtLinkLsdbAge OBJECT-TYPE
+         SYNTAX          Ospfv3LsaAgeTC
+         UNITS           "seconds"
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "This field is the age of the link state
+             advertisement in seconds.  The high-order bit
+             of the LS age field is considered the DoNotAge
+             bit for support of on-demand circuits."
+         REFERENCE
+             "OSPF Version 2, Section 12.1.1, LS age;
+              Extending OSPF to Support Demand Circuits,
+              Section 2.2, The LS age field."
+         ::= { ospfv3VirtLinkLsdbEntry 7 }
+
+ ospfv3VirtLinkLsdbChecksum 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
+             connectionless datagrams; it is commonly
+             referred to as the Fletcher checksum."
+         REFERENCE
+             "OSPF Version 2, Section 12.1.7, LS checksum"
+         ::= { ospfv3VirtLinkLsdbEntry 8 }
+
+ ospfv3VirtLinkLsdbAdvertisement OBJECT-TYPE
+         SYNTAX          OCTET STRING (SIZE (1..65535))
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The entire link state advertisement, including
+             its header."
+         ::= { ospfv3VirtLinkLsdbEntry 9 }
+
+ ospfv3VirtLinkLsdbTypeKnown OBJECT-TYPE
+         SYNTAX          TruthValue
+         MAX-ACCESS      read-only
+         STATUS          current
+         DESCRIPTION
+             "The value true (1) indicates that the LSA type is
+             recognized by this router."
+         ::= { ospfv3VirtLinkLsdbEntry 10 }
+
+ -- The Ospfv3 Notification Table
+
+ -- The Ospfv3 Notification Table records fields that are
+ -- required for notifications.
+
+ ospfv3NotificationEntry OBJECT IDENTIFIER
+         ::= { ospfv3Objects 14 }
+
+ ospfv3ConfigErrorType OBJECT-TYPE
+     SYNTAX       INTEGER {
+                     badVersion(1),
+                     areaMismatch(2),
+                     unknownNbmaNbr(3), -- Router is DR eligible
+                     unknownVirtualNbr(4),
+                     helloIntervalMismatch(5),
+                     deadIntervalMismatch(6),
+                     optionMismatch(7),
+                     mtuMismatch(8),
+                     duplicateRouterId(9),
+                     noError(10) }
+     MAX-ACCESS   accessible-for-notify
+     STATUS   current
+     DESCRIPTION
+         "Potential types of configuration conflicts.
+         Used by the ospfv3ConfigError and
+         ospfv3ConfigVirtError notifications."
+     ::= { ospfv3NotificationEntry 1 }
+
+ ospfv3PacketType OBJECT-TYPE
+     SYNTAX       INTEGER {
+                     hello(1),
+                     dbDescript(2),
+                     lsReq(3),
+                     lsUpdate(4),
+                     lsAck(5),
+                     nullPacket(6) }
+     MAX-ACCESS   accessible-for-notify
+     STATUS       current
+     DESCRIPTION
+         "OSPFv3 packet types."
+     ::= { ospfv3NotificationEntry 2 }
+
+ ospfv3PacketSrc  OBJECT-TYPE
+     SYNTAX       InetAddressIPv6
+     MAX-ACCESS   accessible-for-notify
+     STATUS       current
+     DESCRIPTION
+         "The IPv6 address of an inbound packet that cannot
+         be identified by a neighbor instance.
+
+         Only IPv6 addresses without zone index are expected."
+     ::= { ospfv3NotificationEntry 3 }
+
+ -- Notification Definitions
+
+ -- The notifications need to be throttled so as to not overwhelm the
+ -- management agent in case of rapid changes to the OSPFv3 module.
+
+ospfv3VirtIfStateChange NOTIFICATION-TYPE
+     OBJECTS { ospfv3RouterId,  -- The originator of the notification
+               ospfv3VirtIfState  -- The new state
+        }
+     STATUS       current
+     DESCRIPTION
+         "An ospfv3VirtIfStateChange notification signifies that
+         there has been a change in the state of an OSPFv3 virtual
+         interface.
+
+         This notification should be generated when the interface
+         state regresses (e.g., goes from Point-to-Point to Down)
+         or progresses to a terminal state (i.e., Point-to-Point)."
+     ::= { ospfv3Notifications 1 }
+
+ospfv3NbrStateChange NOTIFICATION-TYPE
+     OBJECTS { ospfv3RouterId, -- The originator of the notification
+               ospfv3NbrState  -- The new state
+
+        }
+     STATUS       current
+     DESCRIPTION
+         "An ospfv3NbrStateChange notification signifies that
+         there has been a change in the state of a
+         non-virtual OSPFv3 neighbor.  This notification should be
+         generated when the neighbor state regresses
+         (e.g., goes from Attempt or Full to 1-Way or
+         Down) or progresses to a terminal state (e.g.,
+         2-Way or Full).  When a neighbor transitions
+         from or to Full on non-broadcast multi-access
+         and broadcast networks, the notification should be
+         generated by the Designated Router.  A Designated
+         Router transitioning to Down will be noted by
+         ospfIfStateChange."
+     ::= { ospfv3Notifications 2 }
+
+ospfv3VirtNbrStateChange NOTIFICATION-TYPE
+     OBJECTS { ospfv3RouterId, -- The originator of the notification
+               ospfv3VirtNbrState  -- The new state
+        }
+     STATUS       current
+     DESCRIPTION
+         "An ospfv3VirtNbrStateChange notification signifies
+         that there has been a change in the state of an OSPFv3
+         virtual neighbor.  This notification should be generated
+         when the neighbor state regresses (e.g., goes
+         from Attempt or Full to 1-Way or Down) or
+         progresses to a terminal state (e.g., Full)."
+     ::= { ospfv3Notifications 3 }
+
+ospfv3IfConfigError NOTIFICATION-TYPE
+     OBJECTS { ospfv3RouterId, -- The originator of the notification
+        ospfv3IfState,         -- State of the interface
+        ospfv3PacketSrc,       -- IPv6 address of source
+        ospfv3ConfigErrorType, -- Type of error
+        ospfv3PacketType       -- Type of packet
+        }
+     STATUS       current
+     DESCRIPTION
+         "An ospfv3IfConfigError notification signifies that a
+         packet has been received on a non-virtual
+         interface from a router whose configuration
+         parameters conflict with this router's
+         configuration parameters.  Note that the event
+         optionMismatch should cause a notification only if it
+         prevents an adjacency from forming."
+     ::= { ospfv3Notifications 4 }
+
+ospfv3VirtIfConfigError NOTIFICATION-TYPE
+     OBJECTS { ospfv3RouterId, -- The originator of the notification
+        ospfv3VirtIfState,     -- State of the interface
+        ospfv3ConfigErrorType, -- Type of error
+        ospfv3PacketType
+        }
+     STATUS       current
+     DESCRIPTION
+         "An ospfv3VirtIfConfigError notification signifies that a
+         packet has been received on a virtual interface
+         from a router whose configuration parameters
+         conflict with this router's configuration
+         parameters.  Note that the event optionMismatch
+         should cause a notification only if it prevents an
+         adjacency from forming."
+     ::= { ospfv3Notifications 5 }
+
+ospfv3IfRxBadPacket NOTIFICATION-TYPE
+     OBJECTS { ospfv3RouterId, -- The originator of the notification
+        ospfv3IfState,         -- State of the interface
+        ospfv3PacketSrc,       -- The source IPv6 address
+        ospfv3PacketType       -- Type of packet
+        }
+     STATUS       current
+     DESCRIPTION
+         "An ospfv3IfRxBadPacket notification signifies that an
+         OSPFv3 packet that cannot be parsed has been received on a
+         non-virtual interface."
+     ::= { ospfv3Notifications 6 }
+
+ospfv3VirtIfRxBadPacket NOTIFICATION-TYPE
+     OBJECTS { ospfv3RouterId, -- The originator of the notification
+       ospfv3VirtIfState,      -- State of the interface
+       ospfv3PacketType        -- Type of packet
+       }
+     STATUS       current
+     DESCRIPTION
+         "An ospfv3VirtIfRxBadPacket notification signifies
+         that an OSPFv3 packet that cannot be parsed has been
+         received on a virtual interface."
+     ::= { ospfv3Notifications 7 }
+
+ospfv3LsdbOverflow NOTIFICATION-TYPE
+     OBJECTS { ospfv3RouterId, -- The originator of the notification
+        ospfv3ExtAreaLsdbLimit -- Limit on External LSAs
+        }
+     STATUS       current
+     DESCRIPTION
+         "An ospfv3LsdbOverflow notification signifies that the
+         number of LSAs in the router's link state
+         database has exceeded ospfv3ExtAreaLsdbLimit."
+     ::= { ospfv3Notifications 8 }
+
+ospfv3LsdbApproachingOverflow NOTIFICATION-TYPE
+     OBJECTS { ospfv3RouterId, -- The originator of the notification
+        ospfv3ExtAreaLsdbLimit
+        }
+     STATUS       current
+     DESCRIPTION
+         "An ospfv3LsdbApproachingOverflow notification signifies
+         that the number of LSAs in the router's
+         link state database has exceeded ninety percent of
+         ospfv3ExtAreaLsdbLimit."
+     ::= { ospfv3Notifications 9 }
+
+ospfv3IfStateChange NOTIFICATION-TYPE
+     OBJECTS { ospfv3RouterId, -- The originator of the notification
+        ospfv3IfState   -- The new state
+        }
+     STATUS       current
+     DESCRIPTION
+         "An ospfv3IfStateChange notification signifies that there
+         has been a change in the state of a non-virtual
+         OSPFv3 interface.  This notification should be generated
+         when the interface state regresses (e.g., goes
+         from DR to Down) or progresses to a terminal
+         state (i.e., Point-to-Point, DR Other, DR, or
+         Backup)."
+     ::= { ospfv3Notifications 10 }
+
+ospfv3NssaTranslatorStatusChange NOTIFICATION-TYPE
+     OBJECTS { ospfv3RouterId, -- The originator of the notification
+        ospfv3AreaNssaTranslatorState  -- new state
+        }
+     STATUS       current
+     DESCRIPTION
+         "An ospfv3NssaTranslatorStatusChange notification
+         indicates that there has been a change in the router's
+         ability to translate OSPFv3 NSSA LSAs into OSPFv3 External
+         LSAs.  This notification should be generated when the
+         Translator Status transitions from or to any defined
+         status on a per-area basis."
+     ::= { ospfv3Notifications 11 }
+
+ospfv3RestartStatusChange NOTIFICATION-TYPE
+     OBJECTS { ospfv3RouterId, -- The originator of the notification
+               ospfv3RestartStatus,  -- new status
+               ospfv3RestartInterval,
+               ospfv3RestartExitReason
+             }
+     STATUS       current
+     DESCRIPTION
+         "An ospfv3RestartStatusChange notification signifies that
+         there has been a change in the graceful restart
+         state for the router.  This notification should be
+         generated when the router restart status
+         changes."
+     ::= { ospfv3Notifications 12 }
+
+ospfv3NbrRestartHelperStatusChange NOTIFICATION-TYPE
+     OBJECTS { ospfv3RouterId, -- The originator of the notification
+               ospfv3NbrRestartHelperStatus,  -- new status
+               ospfv3NbrRestartHelperAge,
+               ospfv3NbrRestartHelperExitReason
+             }
+     STATUS       current
+     DESCRIPTION
+         "An ospfv3NbrRestartHelperStatusChange notification
+         signifies that there has been a change in the
+         graceful restart helper state for the neighbor.
+         This notification should be generated when the
+         neighbor restart helper status transitions for a neighbor."
+     ::= { ospfv3Notifications 13 }
+
+ospfv3VirtNbrRestartHelperStatusChange NOTIFICATION-TYPE
+     OBJECTS { ospfv3RouterId, -- The originator of the notification
+               ospfv3VirtNbrRestartHelperStatus,  -- new status
+               ospfv3VirtNbrRestartHelperAge,
+               ospfv3VirtNbrRestartHelperExitReason
+             }
+     STATUS       current
+     DESCRIPTION
+         "An ospfv3VirtNbrRestartHelperStatusChange
+         notification signifies that there has been a
+         change in the graceful restart helper state for
+         the virtual neighbor.  This notification should be
+         generated when the virtual neighbor restart helper status
+         transitions for a virtual neighbor."
+     ::= { ospfv3Notifications 14 }
+
+ -- Conformance Information
+
+ ospfv3Groups      OBJECT IDENTIFIER ::= { ospfv3Conformance 1 }
+ ospfv3Compliances OBJECT IDENTIFIER ::= { ospfv3Conformance 2 }
+
+ -- Compliance Statements
+
+ ospfv3FullCompliance MODULE-COMPLIANCE
+         STATUS          current
+         DESCRIPTION     "The compliance statement"
+         MODULE          -- this module
+         MANDATORY-GROUPS {
+                         ospfv3BasicGroup,
+                         ospfv3AreaGroup,
+                         ospfv3IfGroup,
+                         ospfv3VirtIfGroup,
+                         ospfv3NbrGroup,
+                         ospfv3CfgNbrGroup,
+                         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
+             for non-virtual interfaces."
+
+         GROUP           ospfv3VirtLinkLsdbGroup
+         DESCRIPTION
+             "This group is required for OSPFv3 systems that
+             display their Link-scope link state database
+             for virtual interfaces."
+
+         GROUP           ospfv3HostGroup
+         DESCRIPTION
+             "This group is required for OSPFv3 systems that
+             support attached hosts."
+
+         GROUP           ospfv3NotificationObjectGroup
+         DESCRIPTION
+             "This group is required for OSPFv3 systems that
+             support OSPFv3 notifications."
+
+         GROUP           ospfv3NotificationGroup
+         DESCRIPTION
+             "This group is required for OSPFv3 systems that
+             support OSPFv3 notifications."
+
+         OBJECT          ospfv3NbrAddressType
+         SYNTAX          InetAddressType { ipv6(2) }
+         DESCRIPTION
+             "An implementation is only required to support IPv6
+             address without zone index."
+
+         OBJECT          ospfv3NbrAddress
+         SYNTAX          InetAddress (SIZE (16))
+         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."
+
+         OBJECT          ospfv3VirtNbrAddress
+         SYNTAX          InetAddress (SIZE (16))
+         DESCRIPTION
+             "An implementation is only required to support IPv6
+             address without zone index."
+         ::= { ospfv3Compliances 1 }
+
+    ospfv3ReadOnlyCompliance MODULE-COMPLIANCE
+       STATUS     current
+       DESCRIPTION
+               "When this MIB module is implemented without
+               support for read-create (i.e., in read-only
+               mode), the implementation can claim read-only
+               compliance.  Such a device can then be monitored,
+               but cannot be configured with this MIB."
+
+       MODULE -- this module
+            MANDATORY-GROUPS {
+                    ospfv3BasicGroup,
+                    ospfv3AreaGroup,
+                    ospfv3IfGroup,
+                    ospfv3VirtIfGroup,
+                    ospfv3NbrGroup,
+                    ospfv3CfgNbrGroup,
+                    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
+           for non-virtual interfaces."
+
+       GROUP           ospfv3VirtLinkLsdbGroup
+       DESCRIPTION
+           "This group is required for OSPFv3 systems that
+           display their Link-scope link state database
+           for virtual interfaces."
+
+       GROUP           ospfv3HostGroup
+       DESCRIPTION
+           "This group is required for OSPFv3 systems that
+           support attached hosts."
+
+       GROUP           ospfv3NotificationObjectGroup
+       DESCRIPTION
+           "This group is required for OSPFv3 systems that
+           support OSPFv3 notifications."
+
+       GROUP           ospfv3NotificationGroup
+       DESCRIPTION
+           "This group is required for OSPFv3 systems that
+           support OSPFv3 notifications."
+
+       OBJECT ospfv3RouterId
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3AdminStatus
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3ExtAreaLsdbLimit
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3ExitOverflowInterval
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3DemandExtensions
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3ReferenceBandwidth
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3RestartSupport
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3RestartInterval
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3RestartStrictLsaChecking
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3NotificationEnable
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3StubRouterAdvertisement
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3AreaImportAsExtern
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3AreaSummary
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3AreaRowStatus
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3AreaStubMetric
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3AreaNssaTranslatorRole
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3AreaNssaTranslatorStabInterval
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3AreaStubMetricType
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3AreaTEEnabled
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3HostMetric
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3HostRowStatus
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3HostAreaID
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfAreaId
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfType
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfAdminStatus
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfRtrPriority
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfTransitDelay
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfRetransInterval
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfHelloInterval
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfRtrDeadInterval
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfPollInterval
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfRowStatus
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfDemand
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfMetricValue
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfDemandNbrProbe
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfDemandNbrProbeRetransLimit
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfDemandNbrProbeInterval
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfTEDisabled
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3IfLinkLSASuppression
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3VirtIfTransitDelay
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3VirtIfRetransInterval
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3VirtIfHelloInterval
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3VirtIfRtrDeadInterval
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3VirtIfRowStatus
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3CfgNbrPriority
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3CfgNbrRowStatus
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3AreaAggregateRowStatus
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3AreaAggregateEffect
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+
+       OBJECT ospfv3AreaAggregateRouteTag
+       MIN-ACCESS read-only
+       DESCRIPTION
+            "Write access is not required."
+    ::= { ospfv3Compliances 2 }
+
+ -- units of conformance
+
+ ospfv3BasicGroup OBJECT-GROUP
+         OBJECTS         {
+                         ospfv3RouterId,
+                         ospfv3AdminStatus,
+                         ospfv3VersionNumber,
+                         ospfv3AreaBdrRtrStatus,
+                         ospfv3ASBdrRtrStatus,
+                         ospfv3AsScopeLsaCount,
+                         ospfv3AsScopeLsaCksumSum,
+                         ospfv3OriginateNewLsas,
+                         ospfv3RxNewLsas,
+                         ospfv3ExtLsaCount,
+                         ospfv3ExtAreaLsdbLimit,
+                         ospfv3ExitOverflowInterval,
+                         ospfv3DemandExtensions,
+                         ospfv3ReferenceBandwidth,
+                         ospfv3RestartSupport,
+                         ospfv3RestartInterval,
+                         ospfv3RestartStrictLsaChecking,
+                         ospfv3RestartStatus,
+                         ospfv3RestartAge,
+                         ospfv3RestartExitReason,
+                         ospfv3NotificationEnable,
+                         ospfv3StubRouterSupport,
+                         ospfv3StubRouterAdvertisement,
+                         ospfv3DiscontinuityTime,
+                         ospfv3RestartTime
+                         }
+         STATUS          current
+         DESCRIPTION
+             "These objects are used for managing/monitoring
+             OSPFv3 global parameters."
+         ::= { ospfv3Groups 1 }
+
+ ospfv3AreaGroup OBJECT-GROUP
+         OBJECTS         {
+                         ospfv3AreaImportAsExtern,
+                         ospfv3AreaSpfRuns,
+                         ospfv3AreaBdrRtrCount,
+                         ospfv3AreaAsBdrRtrCount,
+                         ospfv3AreaScopeLsaCount,
+                         ospfv3AreaScopeLsaCksumSum,
+                         ospfv3AreaSummary,
+                         ospfv3AreaRowStatus,
+                         ospfv3AreaStubMetric,
+                         ospfv3AreaNssaTranslatorRole,
+                         ospfv3AreaNssaTranslatorState,
+                         ospfv3AreaNssaTranslatorStabInterval,
+                         ospfv3AreaNssaTranslatorEvents,
+                         ospfv3AreaStubMetricType,
+                         ospfv3AreaTEEnabled
+                         }
+         STATUS          current
+         DESCRIPTION
+             "These objects are used for OSPFv3 systems
+             supporting areas."
+         ::= { ospfv3Groups 2 }
+
+ ospfv3AsLsdbGroup OBJECT-GROUP
+         OBJECTS         {
+                         ospfv3AsLsdbSequence,
+                         ospfv3AsLsdbAge,
+                         ospfv3AsLsdbChecksum,
+                         ospfv3AsLsdbAdvertisement,
+                         ospfv3AsLsdbTypeKnown
+                         }
+         STATUS          current
+         DESCRIPTION
+             "These objects are used 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 used 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 used for OSPFv3 systems
+             that display their Link-scope link state database
+             for non-virtual interfaces."
+         ::= { ospfv3Groups 5 }
+
+ ospfv3HostGroup OBJECT-GROUP
+         OBJECTS         {
+                         ospfv3HostMetric,
+                         ospfv3HostRowStatus,
+                         ospfv3HostAreaID
+                         }
+         STATUS          current
+         DESCRIPTION
+             "These objects are used for OSPFv3 systems
+             that support attached hosts."
+         ::= { ospfv3Groups 6 }
+
+ ospfv3IfGroup OBJECT-GROUP
+         OBJECTS         {
+                         ospfv3IfAreaId,
+                         ospfv3IfType,
+                         ospfv3IfAdminStatus,
+                         ospfv3IfRtrPriority,
+                         ospfv3IfTransitDelay,
+                         ospfv3IfRetransInterval,
+                         ospfv3IfHelloInterval,
+                         ospfv3IfRtrDeadInterval,
+                         ospfv3IfPollInterval,
+                         ospfv3IfState,
+                         ospfv3IfDesignatedRouter,
+                         ospfv3IfBackupDesignatedRouter,
+                         ospfv3IfEvents,
+                         ospfv3IfRowStatus,
+                         ospfv3IfDemand,
+                         ospfv3IfMetricValue,
+                         ospfv3IfLinkScopeLsaCount,
+                         ospfv3IfLinkLsaCksumSum,
+                         ospfv3IfDemandNbrProbe,
+                         ospfv3IfDemandNbrProbeRetransLimit,
+                         ospfv3IfDemandNbrProbeInterval,
+                         ospfv3IfTEDisabled,
+                         ospfv3IfLinkLSASuppression
+                         }
+         STATUS          current
+         DESCRIPTION
+             "These interface objects are used for
+             managing/monitoring OSPFv3 interfaces."
+         ::= { ospfv3Groups 7 }
+
+ ospfv3VirtIfGroup OBJECT-GROUP
+         OBJECTS         {
+                         ospfv3VirtIfIndex,
+                         ospfv3VirtIfInstId,
+                         ospfv3VirtIfTransitDelay,
+                         ospfv3VirtIfRetransInterval,
+                         ospfv3VirtIfHelloInterval,
+                         ospfv3VirtIfRtrDeadInterval,
+                         ospfv3VirtIfState,
+                         ospfv3VirtIfEvents,
+                         ospfv3VirtIfRowStatus,
+                         ospfv3VirtIfLinkScopeLsaCount,
+                         ospfv3VirtIfLinkLsaCksumSum
+                         }
+         STATUS          current
+         DESCRIPTION
+             "These virtual interface objects are used for
+             managing/monitoring OSPFv3 virtual interfaces."
+         ::= { 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 used for
+             managing/monitoring OSPFv3 neighbors."
+         ::= { ospfv3Groups 9 }
+
+ ospfv3CfgNbrGroup OBJECT-GROUP
+         OBJECTS         {
+                         ospfv3CfgNbrPriority,
+                         ospfv3CfgNbrRowStatus
+                         }
+         STATUS          current
+         DESCRIPTION
+             "These configured neighbor objects are used for
+             managing/monitoring OSPFv3-configured neighbors."
+         ::= { ospfv3Groups 10 }
+
+ ospfv3VirtNbrGroup OBJECT-GROUP
+         OBJECTS         {
+                         ospfv3VirtNbrIfIndex,
+                         ospfv3VirtNbrIfInstId,
+                         ospfv3VirtNbrAddressType,
+                         ospfv3VirtNbrAddress,
+                         ospfv3VirtNbrOptions,
+                         ospfv3VirtNbrState,
+                         ospfv3VirtNbrEvents,
+                         ospfv3VirtNbrLsRetransQLen,
+                         ospfv3VirtNbrHelloSuppressed,
+                         ospfv3VirtNbrIfId,
+                         ospfv3VirtNbrRestartHelperStatus,
+                         ospfv3VirtNbrRestartHelperAge,
+                         ospfv3VirtNbrRestartHelperExitReason
+                         }
+         STATUS          current
+         DESCRIPTION
+             "These virtual neighbor objects are used for
+             managing/monitoring OSPFv3 virtual neighbors."
+         ::= { ospfv3Groups 11 }
+
+ ospfv3AreaAggregateGroup OBJECT-GROUP
+         OBJECTS         {
+                         ospfv3AreaAggregateRowStatus,
+                         ospfv3AreaAggregateEffect,
+                         ospfv3AreaAggregateRouteTag
+                         }
+         STATUS          current
+         DESCRIPTION
+             "These area aggregate objects are required for
+             aggregating OSPFv3 prefixes for summarization
+             across areas."
+         ::= { ospfv3Groups 12 }
+
+ ospfv3VirtLinkLsdbGroup OBJECT-GROUP
+         OBJECTS         {
+                         ospfv3VirtLinkLsdbSequence,
+                         ospfv3VirtLinkLsdbAge,
+                         ospfv3VirtLinkLsdbChecksum,
+                         ospfv3VirtLinkLsdbAdvertisement,
+                         ospfv3VirtLinkLsdbTypeKnown
+                         }
+         STATUS          current
+         DESCRIPTION
+             "These objects are used for OSPFv3 systems
+             that display their Link-scope link state database
+             for virtual interfaces."
+         ::= { ospfv3Groups 13 }
+
+ ospfv3NotificationObjectGroup OBJECT-GROUP
+         OBJECTS         {
+                         ospfv3ConfigErrorType,
+                         ospfv3PacketType,
+                         ospfv3PacketSrc
+                         }
+         STATUS          current
+         DESCRIPTION
+             "These objects are used to record notification
+             parameters."
+         ::= { ospfv3Groups 14 }
+
+ ospfv3NotificationGroup NOTIFICATION-GROUP
+         NOTIFICATIONS   {
+                         ospfv3VirtIfStateChange,
+                         ospfv3NbrStateChange,
+                         ospfv3VirtNbrStateChange,
+                         ospfv3IfConfigError,
+                         ospfv3VirtIfConfigError,
+                         ospfv3IfRxBadPacket,
+                         ospfv3VirtIfRxBadPacket,
+                         ospfv3LsdbOverflow,
+                         ospfv3LsdbApproachingOverflow,
+                         ospfv3IfStateChange,
+                         ospfv3NssaTranslatorStatusChange,
+                         ospfv3RestartStatusChange,
+                         ospfv3NbrRestartHelperStatusChange,
+                         ospfv3VirtNbrRestartHelperStatusChange
+                         }
+         STATUS          current
+         DESCRIPTION
+             "This group is used for OSPFv3 notifications."
+         ::= { ospfv3Groups 15 }
+
+ END
diff --git a/ospf6d/ospf6_area.h b/ospf6d/ospf6_area.h
index c7c5ee3..e8a4fbd 100644
--- a/ospf6d/ospf6_area.h
+++ b/ospf6d/ospf6_area.h
@@ -57,6 +57,7 @@
 
   struct thread  *thread_spf_calculation;
   struct thread  *thread_route_calculation;
+  u_int32_t spf_calculation;	/* SPF calculation count */
 
   struct thread *thread_router_lsa;
   struct thread *thread_intra_prefix_lsa;
diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c
index 71aa685..40cda24 100644
--- a/ospf6d/ospf6_interface.c
+++ b/ospf6d/ospf6_interface.c
@@ -394,6 +394,7 @@
 		  ospf6_interface_state_str[prev_state],
 		  ospf6_interface_state_str[next_state]);
     }
+  oi->state_change++;
 
   if ((prev_state == OSPF6_INTERFACE_DR ||
        prev_state == OSPF6_INTERFACE_BDR) &&
@@ -420,6 +421,17 @@
       OSPF6_INTRA_PREFIX_LSA_SCHEDULE_TRANSIT (oi);
       OSPF6_INTRA_PREFIX_LSA_SCHEDULE_STUB (oi->area);
     }
+
+#ifdef HAVE_SNMP
+  /* Terminal state or regression */ 
+  if ((next_state == OSPF6_INTERFACE_POINTTOPOINT) ||
+      (next_state == OSPF6_INTERFACE_DROTHER) ||
+      (next_state == OSPF6_INTERFACE_BDR) ||
+      (next_state == OSPF6_INTERFACE_DR) ||
+      (next_state < prev_state))
+    ospf6TrapIfStateChange (oi);
+#endif
+
 }
 
 
diff --git a/ospf6d/ospf6_interface.h b/ospf6d/ospf6_interface.h
index 2d1ff34..d80b073 100644
--- a/ospf6d/ospf6_interface.h
+++ b/ospf6d/ospf6_interface.h
@@ -64,6 +64,8 @@
   u_int16_t dead_interval;
   u_int32_t rxmt_interval;
 
+  u_int32_t state_change;
+
   /* Cost */
   u_int32_t cost;
 
diff --git a/ospf6d/ospf6_neighbor.c b/ospf6d/ospf6_neighbor.c
index f6c3aea..806767d 100644
--- a/ospf6d/ospf6_neighbor.c
+++ b/ospf6d/ospf6_neighbor.c
@@ -89,6 +89,7 @@
             buf, oi->interface->name);
   on->ospf6_if = oi;
   on->state = OSPF6_NEIGHBOR_DOWN;
+  on->state_change = 0;
   quagga_gettime (QUAGGA_CLK_MONOTONIC, &on->last_changed);
   on->router_id = router_id;
 
@@ -154,6 +155,7 @@
   if (prev_state == next_state)
     return;
 
+  on->state_change++;
   quagga_gettime (QUAGGA_CLK_MONOTONIC, &on->last_changed);
 
   /* log */
@@ -180,6 +182,15 @@
       (next_state != OSPF6_NEIGHBOR_EXCHANGE &&
        next_state != OSPF6_NEIGHBOR_LOADING))
     ospf6_maxage_remove (on->ospf6_if->area->ospf6);
+
+#ifdef HAVE_SNMP
+  /* Terminal state or regression */ 
+  if ((next_state == OSPF6_NEIGHBOR_FULL)  ||
+      (next_state == OSPF6_NEIGHBOR_TWOWAY) ||
+      (next_state < prev_state))
+    ospf6TrapNbrStateChange (on);
+#endif
+
 }
 
 /* RFC2328 section 10.4 */
diff --git a/ospf6d/ospf6_neighbor.h b/ospf6d/ospf6_neighbor.h
index b3bd173..5f46c6f 100644
--- a/ospf6d/ospf6_neighbor.h
+++ b/ospf6d/ospf6_neighbor.h
@@ -46,6 +46,7 @@
   u_char state;
 
   /* timestamp of last changing state */
+  u_int32_t state_change;
   struct timeval last_changed;
 
   /* Neighbor Router ID */
diff --git a/ospf6d/ospf6_snmp.c b/ospf6d/ospf6_snmp.c
index d252f54..f8a3b92 100644
--- a/ospf6d/ospf6_snmp.c
+++ b/ospf6d/ospf6_snmp.c
@@ -44,7 +44,7 @@
 #include "ospf6_snmp.h"
 
 /* OSPFv3-MIB */
-#define OSPFv3MIB 1,3,6,1,3,102
+#define OSPFv3MIB 1,3,6,1,2,1,191
 
 /* OSPFv3 MIB General Group values. */
 #define OSPFv3ROUTERID                   1
@@ -58,19 +58,22 @@
 #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
+#define OSPFv3EXITOVERFLOWINTERVAL      12
+#define OSPFv3DEMANDEXTENSIONS          13
+#define OSPFv3REFERENCEBANDWIDTH        14
+#define OSPFv3RESTARTSUPPORT            15
+#define OSPFv3RESTARTINTERVAL           16
+#define OSPFv3RESTARTSTRICTLSACHECKING  17
+#define OSPFv3RESTARTSTATUS             18
+#define OSPFv3RESTARTAGE                19
+#define OSPFv3RESTARTEXITREASON         20
+#define OSPFv3NOTIFICATIONENABLE        21
+#define OSPFv3STUBROUTERSUPPORT         22
+#define OSPFv3STUBROUTERADVERTISEMENT   23
+#define OSPFv3DISCONTINUITYTIME         24
+#define OSPFv3RESTARTTIME               25
 
-/* OSPFv3 MIB Area Table values. */
-#define OSPFv3AREAID                     1
+/* OSPFv3 MIB Area Table values: ospfv3AreaTable */
 #define OSPFv3IMPORTASEXTERN             2
 #define OSPFv3AREASPFRUNS                3
 #define OSPFv3AREABDRRTRCOUNT            4
@@ -78,24 +81,110 @@
 #define OSPFv3AREASCOPELSACOUNT          6
 #define OSPFv3AREASCOPELSACKSUMSUM       7
 #define OSPFv3AREASUMMARY                8
-#define OSPFv3AREASTATUS                 9
-#define OSPFv3STUBMETRIC                10
+#define OSPFv3AREAROWSTATUS              9
+#define OSPFv3AREASTUBMETRIC            10
 #define OSPFv3AREANSSATRANSLATORROLE    11
 #define OSPFv3AREANSSATRANSLATORSTATE   12
-#define OSPFv3AREANSSATRANSLATORSTABILITYINTERVAL    13
+#define OSPFv3AREANSSATRANSLATORSTABINTERVAL    13
 #define OSPFv3AREANSSATRANSLATOREVENTS  14
 #define OSPFv3AREASTUBMETRICTYPE        15
+#define OSPFv3AREATEENABLED             16
 
-/* OSPFv3 MIB Area Lsdb Table values. */
-#define OSPFv3AREALSDBAREAID             1
-#define OSPFv3AREALSDBTYPE               2
-#define OSPFv3AREALSDBROUTERID           3
-#define OSPFv3AREALSDBLSID               4
-#define OSPFv3AREALSDBSEQUENCE           5
-#define OSPFv3AREALSDBAGE                6
-#define OSPFv3AREALSDBCHECKSUM           7
-#define OSPFv3AREALSDBADVERTISEMENT      8
-#define OSPFv3AREALSDBTYPEKNOWN          9
+/* OSPFv3 MIB * Lsdb Table values: ospfv3*LsdbTable */
+#define OSPFv3WWLSDBSEQUENCE             1
+#define OSPFv3WWLSDBAGE                  2
+#define OSPFv3WWLSDBCHECKSUM             3
+#define OSPFv3WWLSDBADVERTISEMENT        4
+#define OSPFv3WWLSDBTYPEKNOWN            5
+
+/* Three first bits are to identify column */
+#define OSPFv3WWCOLUMN 0x7
+/* Then we use other bits to identify table */
+#define OSPFv3WWASTABLE   (1 << 3)
+#define OSPFv3WWAREATABLE (1 << 4)
+#define OSPFv3WWLINKTABLE (1 << 5)
+#define OSPFv3WWVIRTLINKTABLE (1 << 6)
+
+/* OSPFv3 MIB Host Table values: ospfv3HostTable */
+#define OSPFv3HOSTMETRIC                 3
+#define OSPFv3HOSTROWSTATUS              4
+#define OSPFv3HOSTAREAID                 5
+
+/* OSPFv3 MIB Interface Table values: ospfv3IfTable */
+#define OSPFv3IFAREAID                   3
+#define OSPFv3IFTYPE                     4
+#define OSPFv3IFADMINSTATUS              5
+#define OSPFv3IFRTRPRIORITY              6
+#define OSPFv3IFTRANSITDELAY             7
+#define OSPFv3IFRETRANSINTERVAL          8
+#define OSPFv3IFHELLOINTERVAL            9
+#define OSPFv3IFRTRDEADINTERVAL         10
+#define OSPFv3IFPOLLINTERVAL            11
+#define OSPFv3IFSTATE                   12
+#define OSPFv3IFDESIGNATEDROUTER        13
+#define OSPFv3IFBACKUPDESIGNATEDROUTER  14
+#define OSPFv3IFEVENTS                  15
+#define OSPFv3IFROWSTATUS               16
+#define OSPFv3IFDEMAND                  17
+#define OSPFv3IFMETRICVALUE             18
+#define OSPFv3IFLINKSCOPELSACOUNT       19
+#define OSPFv3IFLINKLSACKSUMSUM         20
+#define OSPFv3IFDEMANDNBRPROBE          21
+#define OSPFv3IFDEMANDNBRPROBERETRANSLIMIT 22
+#define OSPFv3IFDEMANDNBRPROBEINTERVAL  23
+#define OSPFv3IFTEDISABLED              24
+#define OSPFv3IFLINKLSASUPPRESSION      25
+
+/* OSPFv3 MIB Virtual Interface Table values: ospfv3VirtIfTable */
+#define OSPFv3VIRTIFINDEX           3
+#define OSPFv3VIRTIFINSTID          4
+#define OSPFv3VIRTIFTRANSITDELAY    5
+#define OSPFv3VIRTIFRETRANSINTERVAL 6
+#define OSPFv3VIRTIFHELLOINTERVAL   7
+#define OSPFv3VIRTIFRTRDEADINTERVAL 8
+#define OSPFv3VIRTIFSTATE           9
+#define OSPFv3VIRTIFEVENTS         10
+#define OSPFv3VIRTIFROWSTATUS      11
+#define OSPFv3VIRTIFLINKSCOPELSACOUNT 12
+#define OSPFv3VIRTIFLINKLSACKSUMSUM   13
+
+/* OSPFv3 MIB Neighbors Table values: ospfv3NbrTable */
+#define OSPFv3NBRADDRESSTYPE      4
+#define OSPFv3NBRADDRESS          5
+#define OSPFv3NBROPTIONS          6
+#define OSPFv3NBRPRIORITY         7
+#define OSPFv3NBRSTATE            8
+#define OSPFv3NBREVENTS           9
+#define OSPFv3NBRLSRETRANSQLEN   10
+#define OSPFv3NBRHELLOSUPPRESSED 11
+#define OSPFv3NBRIFID            12
+#define OSPFv3NBRRESTARTHELPERSTATUS     13
+#define OSPFv3NBRRESTARTHELPERAGE        14
+#define OSPFv3NBRRESTARTHELPEREXITREASON 15
+
+/* OSPFv3 MIB Configured Neighbors Table values: ospfv3CfgNbrTable */
+#define OSPFv3CFGNBRPRIORITY  5
+#define OSPFv3CFGNBRROWSTATUS 6
+
+/* OSPFv3 MIB Virtual Neighbors Table values: ospfv3VirtNbrTable */
+#define OSPFv3VIRTNBRIFINDEX          3
+#define OSPFv3VIRTNBRIFINSTID         4
+#define OSPFv3VIRTNBRADDRESSTYPE      5
+#define OSPFv3VIRTNBRADDRESS          6
+#define OSPFv3VIRTNBROPTIONS          7
+#define OSPFv3VIRTNBRSTATE            8
+#define OSPFv3VIRTNBREVENTS           9
+#define OSPFv3VIRTNBRLSRETRANSQLEN   10
+#define OSPFv3VIRTNBRHELLOSUPPRESSED 11
+#define OSPFv3VIRTNBRIFID            12
+#define OSPFv3VIRTNBRRESTARTHELPERSTATUS     13
+#define OSPFv3VIRTNBRRESTARTHELPERAGE        14
+#define OSPFv3VIRTNBRRESTARTHELPEREXITREASON 15
+
+/* OSPFv3 MIB Area Aggregate Table values: ospfv3AreaAggregateTable */
+#define OSPFv3AREAAGGREGATEROWSTATUS  6
+#define OSPFv3AREAAGGREGATEEFFECT     7
+#define OSPFv3AREAAGGREGATEROUTETAG   8
 
 /* SYNTAX Status from OSPF-MIB. */
 #define OSPF_STATUS_ENABLED  1
@@ -105,6 +194,7 @@
 #define COUNTER     ASN_COUNTER
 #define INTEGER     ASN_INTEGER
 #define GAUGE       ASN_GAUGE
+#define UNSIGNED    ASN_UNSIGNED
 #define TIMETICKS   ASN_TIMETICKS
 #define IPADDRESS   ASN_IPADDRESS
 #define STRING      ASN_OCTET_STR
@@ -112,28 +202,26 @@
 /* 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 };
-
-/* empty ID 0.0.0.0 e.g. empty router-id */
-static struct in_addr ospf6_empty_id = {0};
+oid ospfv3_trap_oid [] = { OSPFv3MIB, 0 };
 
 /* Hook functions. */
 static u_char *ospfv3GeneralGroup (struct variable *, oid *, size_t *,
 				   int, size_t *, WriteMethod **);
 static u_char *ospfv3AreaEntry (struct variable *, oid *, size_t *,
 				int, size_t *, WriteMethod **);
-static u_char *ospfv3AreaLsdbEntry (struct variable *, oid *, size_t *,
-				    int, size_t *, WriteMethod **);
+static u_char *ospfv3WwLsdbEntry (struct variable *, oid *, size_t *,
+				  int, size_t *, WriteMethod **);
+static u_char *ospfv3NbrEntry (struct variable *, oid *, size_t *,
+			       int, size_t *, WriteMethod **);
+static u_char *ospfv3IfEntry (struct variable *, oid *, size_t *,
+			      int, size_t *, WriteMethod **);
 
 struct variable ospfv3_variables[] =
 {
   /* OSPF general variables */
-  {OSPFv3ROUTERID,              IPADDRESS, RWRITE, ospfv3GeneralGroup,
+  {OSPFv3ROUTERID,             UNSIGNED,   RWRITE, ospfv3GeneralGroup,
    3, {1, 1, 1}},
   {OSPFv3ADMINSTAT,             INTEGER,   RWRITE, ospfv3GeneralGroup,
    3, {1, 1, 2}},
@@ -145,7 +233,7 @@
    3, {1, 1, 5}},
   {OSPFv3ASSCOPELSACOUNT,       GAUGE,     RONLY,  ospfv3GeneralGroup,
    3, {1, 1, 6}},
-  {OSPFv3ASSCOPELSACHECKSUMSUM, INTEGER,   RONLY,  ospfv3GeneralGroup,
+  {OSPFv3ASSCOPELSACHECKSUMSUM,UNSIGNED,   RONLY,  ospfv3GeneralGroup,
    3, {1, 1, 7}},
   {OSPFv3ORIGINATENEWLSAS,      COUNTER,   RONLY,  ospfv3GeneralGroup,
    3, {1, 1, 8}},
@@ -155,30 +243,36 @@
    3, {1, 1, 10}},
   {OSPFv3EXTAREALSDBLIMIT,      INTEGER,   RWRITE, ospfv3GeneralGroup,
    3, {1, 1, 11}},
-  {OSPFv3MULTICASTEXTENSIONS,   INTEGER,   RWRITE, ospfv3GeneralGroup,
+  {OSPFv3EXITOVERFLOWINTERVAL, UNSIGNED,   RWRITE, ospfv3GeneralGroup,
    3, {1, 1, 12}},
-  {OSPFv3EXITOVERFLOWINTERVAL,  INTEGER,   RWRITE, ospfv3GeneralGroup,
-   3, {1, 1, 13}},
   {OSPFv3DEMANDEXTENSIONS,      INTEGER,   RWRITE, ospfv3GeneralGroup,
+   3, {1, 1, 13}},
+  {OSPFv3REFERENCEBANDWIDTH,   UNSIGNED, 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, 15}},
+  {OSPFv3RESTARTINTERVAL,      UNSIGNED, RWRITE, ospfv3GeneralGroup,
+   3, {1, 1, 16}},
+  {OSPFv3RESTARTSTRICTLSACHECKING, INTEGER, RWRITE, ospfv3GeneralGroup,
    3, {1, 1, 17}},
-  {OSPFv3RESTARTINTERVAL,       INTEGER, RWRITE, ospfv3GeneralGroup,
-   3, {1, 1, 18}},
   {OSPFv3RESTARTSTATUS,         INTEGER, RONLY,  ospfv3GeneralGroup,
+   3, {1, 1, 18}},
+  {OSPFv3RESTARTAGE,           UNSIGNED, RONLY,  ospfv3GeneralGroup,
    3, {1, 1, 19}},
-  {OSPFv3RESTARTAGE,            INTEGER, RONLY,  ospfv3GeneralGroup,
-   3, {1, 1, 20}},
   {OSPFv3RESTARTEXITREASON,     INTEGER, RONLY,  ospfv3GeneralGroup,
+   3, {1, 1, 20}},
+  {OSPFv3NOTIFICATIONENABLE,    INTEGER, RWRITE, ospfv3GeneralGroup,
    3, {1, 1, 21}},
+  {OSPFv3STUBROUTERSUPPORT,     INTEGER, RONLY,  ospfv3GeneralGroup,
+   3, {1, 1, 22}},
+  {OSPFv3STUBROUTERADVERTISEMENT, INTEGER, RWRITE, ospfv3GeneralGroup,
+   3, {1, 1, 23}},
+  {OSPFv3DISCONTINUITYTIME,     TIMETICKS, RONLY,  ospfv3GeneralGroup,
+   3, {1, 1, 24}},
+  {OSPFv3RESTARTTIME,           TIMETICKS, RONLY,  ospfv3GeneralGroup,
+   3, {1, 1, 25}},
 
   /* OSPFv3 Area Data Structure */
-  {OSPFv3AREAID,                IPADDRESS, RONLY,  ospfv3AreaEntry,
-   4, {1, 2, 1, 1}},
   {OSPFv3IMPORTASEXTERN,        INTEGER,   RWRITE, ospfv3AreaEntry,
    4, {1, 2, 1, 2}},
   {OSPFv3AREASPFRUNS,           COUNTER,   RONLY,  ospfv3AreaEntry,
@@ -189,50 +283,146 @@
    4, {1, 2, 1, 5}},
   {OSPFv3AREASCOPELSACOUNT,     GAUGE,     RONLY,  ospfv3AreaEntry,
    4, {1, 2, 1, 6}},
-  {OSPFv3AREASCOPELSACKSUMSUM,  INTEGER,   RONLY,  ospfv3AreaEntry,
+  {OSPFv3AREASCOPELSACKSUMSUM, UNSIGNED,   RONLY,  ospfv3AreaEntry,
    4, {1, 2, 1, 7}},
   {OSPFv3AREASUMMARY,           INTEGER,   RWRITE, ospfv3AreaEntry,
    4, {1, 2, 1, 8}},
-  {OSPFv3AREASTATUS,            INTEGER,   RWRITE, ospfv3AreaEntry,
+  {OSPFv3AREAROWSTATUS,         INTEGER,   RWRITE, ospfv3AreaEntry,
    4, {1, 2, 1, 9}},
-  {OSPFv3STUBMETRIC,            INTEGER,   RWRITE, ospfv3AreaEntry,
+  {OSPFv3AREASTUBMETRIC,        INTEGER,   RWRITE, ospfv3AreaEntry,
    4, {1, 2, 1, 10}},
   {OSPFv3AREANSSATRANSLATORROLE, INTEGER,  RWRITE, ospfv3AreaEntry,
    4, {1, 2, 1, 11}},
   {OSPFv3AREANSSATRANSLATORSTATE, INTEGER, RONLY,  ospfv3AreaEntry,
    4, {1, 2, 1, 12}},
-  {OSPFv3AREANSSATRANSLATORSTABILITYINTERVAL, INTEGER, RWRITE, ospfv3AreaEntry,
+  {OSPFv3AREANSSATRANSLATORSTABINTERVAL, UNSIGNED, RWRITE, ospfv3AreaEntry,
    4, {1, 2, 1, 13}},
   {OSPFv3AREANSSATRANSLATOREVENTS, COUNTER, RONLY, ospfv3AreaEntry,
    4, {1, 2, 1, 14}},
   {OSPFv3AREASTUBMETRICTYPE,    INTEGER, RWRITE, ospfv3AreaEntry,
    4, {1, 2, 1, 15}},
+  {OSPFv3AREATEENABLED,         INTEGER, RWRITE, ospfv3AreaEntry,
+   4, {1, 2, 1, 16}},
 
-  {OSPFv3AREALSDBAREAID,        IPADDRESS, RONLY,  ospfv3AreaLsdbEntry,
-   4, {1, 4, 1, 1}},
-  {OSPFv3AREALSDBTYPE,          GAUGE,     RONLY,  ospfv3AreaLsdbEntry,
-   4, {1, 4, 1, 2}},
-  {OSPFv3AREALSDBROUTERID,      IPADDRESS, RONLY,  ospfv3AreaLsdbEntry,
-   4, {1, 4, 1, 3}},
-  {OSPFv3AREALSDBLSID,          IPADDRESS, RONLY,  ospfv3AreaLsdbEntry,
-   4, {1, 4, 1, 4}},
-  {OSPFv3AREALSDBSEQUENCE,      INTEGER,   RONLY,  ospfv3AreaLsdbEntry,
+  /* OSPFv3 AS LSDB */
+  {OSPFv3WWLSDBSEQUENCE | OSPFv3WWASTABLE,      INTEGER,   RONLY,  ospfv3WwLsdbEntry,
+   4, {1, 3, 1, 4}},
+  {OSPFv3WWLSDBAGE | OSPFv3WWASTABLE,           UNSIGNED,  RONLY,  ospfv3WwLsdbEntry,
+   4, {1, 3, 1, 5}},
+  {OSPFv3WWLSDBCHECKSUM | OSPFv3WWASTABLE,      INTEGER,   RONLY,  ospfv3WwLsdbEntry,
+   4, {1, 3, 1, 6}},
+  {OSPFv3WWLSDBADVERTISEMENT | OSPFv3WWASTABLE, STRING,    RONLY,  ospfv3WwLsdbEntry,
+   4, {1, 3, 1, 7}},
+  {OSPFv3WWLSDBTYPEKNOWN | OSPFv3WWASTABLE,     INTEGER,   RONLY,  ospfv3WwLsdbEntry,
+   4, {1, 3, 1, 8}},
+
+  /* OSPFv3 Area LSDB */
+  {OSPFv3WWLSDBSEQUENCE | OSPFv3WWAREATABLE,      INTEGER,   RONLY,  ospfv3WwLsdbEntry,
    4, {1, 4, 1, 5}},
-  {OSPFv3AREALSDBAGE,           INTEGER,   RONLY,  ospfv3AreaLsdbEntry,
+  {OSPFv3WWLSDBAGE | OSPFv3WWAREATABLE,           UNSIGNED,  RONLY,  ospfv3WwLsdbEntry,
    4, {1, 4, 1, 6}},
-  {OSPFv3AREALSDBCHECKSUM,      INTEGER,   RONLY,  ospfv3AreaLsdbEntry,
+  {OSPFv3WWLSDBCHECKSUM | OSPFv3WWAREATABLE,      INTEGER,   RONLY,  ospfv3WwLsdbEntry,
    4, {1, 4, 1, 7}},
-  {OSPFv3AREALSDBADVERTISEMENT, STRING,    RONLY,  ospfv3AreaLsdbEntry,
+  {OSPFv3WWLSDBADVERTISEMENT | OSPFv3WWAREATABLE, STRING,    RONLY,  ospfv3WwLsdbEntry,
    4, {1, 4, 1, 8}},
-  {OSPFv3AREALSDBTYPEKNOWN,     INTEGER,   RONLY,  ospfv3AreaLsdbEntry,
+  {OSPFv3WWLSDBTYPEKNOWN | OSPFv3WWAREATABLE,     INTEGER,   RONLY,  ospfv3WwLsdbEntry,
    4, {1, 4, 1, 9}},
 
+  /* OSPFv3 Link LSDB */
+  {OSPFv3WWLSDBSEQUENCE | OSPFv3WWLINKTABLE,      INTEGER,   RONLY,  ospfv3WwLsdbEntry,
+   4, {1, 5, 1, 6}},
+  {OSPFv3WWLSDBAGE | OSPFv3WWLINKTABLE,           UNSIGNED,  RONLY,  ospfv3WwLsdbEntry,
+   4, {1, 5, 1, 7}},
+  {OSPFv3WWLSDBCHECKSUM | OSPFv3WWLINKTABLE,      INTEGER,   RONLY,  ospfv3WwLsdbEntry,
+   4, {1, 5, 1, 8}},
+  {OSPFv3WWLSDBADVERTISEMENT | OSPFv3WWLINKTABLE, STRING,    RONLY,  ospfv3WwLsdbEntry,
+   4, {1, 5, 1, 9}},
+  {OSPFv3WWLSDBTYPEKNOWN | OSPFv3WWLINKTABLE,     INTEGER,   RONLY,  ospfv3WwLsdbEntry,
+   4, {1, 5, 1, 10}},
+
+  /* OSPFv3 interfaces */
+  {OSPFv3IFAREAID,             UNSIGNED, RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 3}},
+  {OSPFv3IFTYPE,               INTEGER,  RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 4}},
+  {OSPFv3IFADMINSTATUS,        INTEGER,  RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 5}},
+  {OSPFv3IFRTRPRIORITY,        INTEGER,  RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 6}},
+  {OSPFv3IFTRANSITDELAY,       UNSIGNED, RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 7}},
+  {OSPFv3IFRETRANSINTERVAL,    UNSIGNED, RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 8}},
+  {OSPFv3IFHELLOINTERVAL,      INTEGER,  RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 9}},
+  {OSPFv3IFRTRDEADINTERVAL,    UNSIGNED, RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 10}},
+  {OSPFv3IFPOLLINTERVAL,       UNSIGNED, RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 11}},
+  {OSPFv3IFSTATE,              INTEGER,  RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 12}},
+  {OSPFv3IFDESIGNATEDROUTER,   UNSIGNED, RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 13}},
+  {OSPFv3IFBACKUPDESIGNATEDROUTER, UNSIGNED, RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 14}},
+  {OSPFv3IFEVENTS,             COUNTER,  RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 15}},
+  {OSPFv3IFROWSTATUS,          INTEGER,  RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 16}},
+  {OSPFv3IFDEMAND,             INTEGER,  RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 17}},
+  {OSPFv3IFMETRICVALUE,        INTEGER,  RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 18}},
+  {OSPFv3IFLINKSCOPELSACOUNT,  GAUGE,    RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 19}},
+  {OSPFv3IFLINKLSACKSUMSUM,    UNSIGNED, RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 20}},
+  {OSPFv3IFDEMANDNBRPROBE,     INTEGER,  RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 21}},
+  {OSPFv3IFDEMANDNBRPROBERETRANSLIMIT, UNSIGNED, RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 22}},
+  {OSPFv3IFDEMANDNBRPROBEINTERVAL, UNSIGNED, RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 23}},
+  {OSPFv3IFTEDISABLED,         INTEGER,  RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 24}},
+  {OSPFv3IFLINKLSASUPPRESSION, INTEGER,  RONLY, ospfv3IfEntry,
+   4, {1, 7, 1, 25}},
+
+  /* OSPFv3 neighbors */
+  {OSPFv3NBRADDRESSTYPE,        INTEGER,   RONLY,  ospfv3NbrEntry,
+   4, {1, 9, 1, 4}},
+  {OSPFv3NBRADDRESS,            STRING,    RONLY,  ospfv3NbrEntry,
+   4, {1, 9, 1, 5}},
+  {OSPFv3NBROPTIONS,            INTEGER,   RONLY,  ospfv3NbrEntry,
+   4, {1, 9, 1, 6}},
+  {OSPFv3NBRPRIORITY,           INTEGER,   RONLY,  ospfv3NbrEntry,
+   4, {1, 9, 1, 7}},
+  {OSPFv3NBRSTATE,              INTEGER,   RONLY,  ospfv3NbrEntry,
+   4, {1, 9, 1, 8}},
+  {OSPFv3NBREVENTS,             COUNTER,   RONLY,  ospfv3NbrEntry,
+   4, {1, 9, 1, 9}},
+  {OSPFv3NBRLSRETRANSQLEN,        GAUGE,   RONLY,  ospfv3NbrEntry,
+   4, {1, 9, 1, 10}},
+  {OSPFv3NBRHELLOSUPPRESSED,    INTEGER,   RONLY,  ospfv3NbrEntry,
+   4, {1, 9, 1, 11}},
+  {OSPFv3NBRIFID,               INTEGER,   RONLY,  ospfv3NbrEntry,
+   4, {1, 9, 1, 12}},
+  {OSPFv3NBRRESTARTHELPERSTATUS, INTEGER,  RONLY,  ospfv3NbrEntry,
+   4, {1, 9, 1, 13}},
+  {OSPFv3NBRRESTARTHELPERAGE,  UNSIGNED,   RONLY,  ospfv3NbrEntry,
+   4, {1, 9, 1, 14}},
+  {OSPFv3NBRRESTARTHELPEREXITREASON, INTEGER, RONLY, ospfv3NbrEntry,
+   4, {1, 9, 1, 15}},
 };
 
 static u_char *
 ospfv3GeneralGroup (struct variable *v, oid *name, size_t *length,
                     int exact, size_t *var_len, WriteMethod **write_method)
 {
+  u_int16_t sum;
+  u_int32_t count;
+  struct ospf6_lsa *lsa = NULL;
+
   /* Check whether the instance identifier is valid */
   if (smux_header_generic (v, name, length, exact, var_len, write_method)
       == MATCH_FAILED)
@@ -241,54 +431,76 @@
   /* Return the current value of the variable */
   switch (v->magic)
     {
-    case OSPFv3ROUTERID:                  /* 1*/
+    case OSPFv3ROUTERID:
       /* 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 SNMP_INTEGER (ntohl (ospf6->router_id));
+      return SNMP_INTEGER (0);
+    case OSPFv3ADMINSTAT:
+      if (ospf6)
+	return SNMP_INTEGER (CHECK_FLAG (ospf6->flag, OSPF6_DISABLED)?
+			     OSPF_STATUS_DISABLED:OSPF_STATUS_ENABLED);
+      return SNMP_INTEGER (OSPF_STATUS_DISABLED);
+    case OSPFv3VERSIONNUMBER:
+      return SNMP_INTEGER (3);
+    case OSPFv3AREABDRRTRSTATUS:
+      if (ospf6)
+	return SNMP_INTEGER (ospf6_is_router_abr (ospf6)?SNMP_TRUE:SNMP_FALSE);
+      return SNMP_INTEGER (SNMP_FALSE);
+    case OSPFv3ASBDRRTRSTATUS:
+      if (ospf6)
+	return SNMP_INTEGER (ospf6_asbr_is_asbr (ospf6)?SNMP_TRUE:SNMP_FALSE);
+      return SNMP_INTEGER (SNMP_FALSE);
+    case OSPFv3ASSCOPELSACOUNT:
+      if (ospf6)
+	return SNMP_INTEGER (ospf6->lsdb->count);
+      return SNMP_INTEGER (0);
+    case OSPFv3ASSCOPELSACHECKSUMSUM:
+      if (ospf6)
+        {
+          for (sum = 0, lsa = ospf6_lsdb_head (ospf6->lsdb);
+               lsa;
+               lsa = ospf6_lsdb_next (lsa))
+            sum += ntohs (lsa->header->checksum);
+          return SNMP_INTEGER (sum);
+        }
+      return SNMP_INTEGER (0);
+    case OSPFv3ORIGINATENEWLSAS:
+      return SNMP_INTEGER (0);	/* Don't know where to get this value... */
+    case OSPFv3RXNEWLSAS:
+      return SNMP_INTEGER (0);	/* Don't know where to get this value... */
+    case OSPFv3EXTLSACOUNT:
+      if (ospf6)
+        {
+          for (count = 0, lsa = ospf6_lsdb_type_head (htons (OSPF6_LSTYPE_AS_EXTERNAL),
+                                                      ospf6->lsdb);
+               lsa;
+               lsa = ospf6_lsdb_type_next (htons (OSPF6_LSTYPE_AS_EXTERNAL),
+                                           lsa))
+            count += 1;
+          return SNMP_INTEGER (count);
+        }
+      return SNMP_INTEGER (0);
+    case OSPFv3EXTAREALSDBLIMIT:
+      return SNMP_INTEGER (-1);
+    case OSPFv3EXITOVERFLOWINTERVAL:
+      return SNMP_INTEGER (0);	/* Not supported */
+    case OSPFv3DEMANDEXTENSIONS:
+      return SNMP_INTEGER (0);	/* Not supported */
+    case OSPFv3REFERENCEBANDWIDTH:
+      return SNMP_INTEGER (100000);
+    case OSPFv3RESTARTSUPPORT:
+    case OSPFv3RESTARTINTERVAL:
+    case OSPFv3RESTARTSTRICTLSACHECKING:
+    case OSPFv3RESTARTSTATUS:
+    case OSPFv3RESTARTAGE:
+    case OSPFv3RESTARTEXITREASON:
+    case OSPFv3NOTIFICATIONENABLE:
+    case OSPFv3STUBROUTERSUPPORT:
+    case OSPFv3STUBROUTERADVERTISEMENT:
+    case OSPFv3DISCONTINUITYTIME:
+    case OSPFv3RESTARTTIME:
+      /* TODO: Not implemented */
       return NULL;
     }
   return NULL;
@@ -299,9 +511,14 @@
                  int exact, size_t *var_len, WriteMethod **write_method)
 {
   struct ospf6_area *oa, *area = NULL;
+  struct ospf6_lsa *lsa = NULL;
   u_int32_t area_id = 0;
+  u_int32_t count;
+  u_int16_t sum;
   struct listnode *node;
   unsigned int len;
+  char a[16];
+  struct ospf6_route *ro;
 
   if (ospf6 == NULL)
     return NULL;
@@ -311,15 +528,15 @@
     return NULL;
 
   len = *length - v->namelen;
-  len = (len >= sizeof (u_int32_t) ? sizeof (u_int32_t) : 0);
-  if (exact && len != sizeof (u_int32_t))
+  len = (len >= 1 ? sizeof 1 : 0);
+  if (exact && len != 1)
     return NULL;
   if (len)
-    oid2in_addr (name + v->namelen, len, (struct in_addr *) &area_id);
+    area_id  = htonl (name[v->namelen]);
 
+  inet_ntop (AF_INET, &area_id, a, sizeof (a));
   zlog_debug ("SNMP access by area: %s, exact=%d len=%d length=%lu",
-	      inet_ntoa (* (struct in_addr *) &area_id),
-	      exact, len, (u_long)*length);
+	      a, exact, len, (u_long)*length);
 
   for (ALL_LIST_ELEMENTS_RO (ospf6->area_list, node, oa))
     {
@@ -337,53 +554,88 @@
   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));
+  *length = v->namelen + 1;
+  name[v->namelen] = ntohl (area->area_id);
 
+  inet_ntop (AF_INET, &area->area_id, a, sizeof (a));
   zlog_debug ("SNMP found area: %s, exact=%d len=%d length=%lu",
-	      inet_ntoa (* (struct in_addr *) &area->area_id),
-	      exact, len, (u_long)*length);
+	      a, exact, len, (u_long)*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:
+    case OSPFv3IMPORTASEXTERN:
+      /* No NSSA support */
+      return SNMP_INTEGER (IS_AREA_STUB(area)?2:1);
+    case OSPFv3AREASPFRUNS:
+      return SNMP_INTEGER (area->spf_calculation);
+    case OSPFv3AREABDRRTRCOUNT:
+    case OSPFv3AREAASBDRRTRCOUNT:
+      count = 0;
+      for (ro = ospf6_route_head (ospf6->brouter_table); ro;
+	   ro = ospf6_route_next (ro))
+        {
+          if (ntohl (ro->path.area_id) != ntohl (area->area_id)) continue;
+          if (v->magic == OSPFv3AREABDRRTRCOUNT &&
+              CHECK_FLAG (ro->path.router_bits, OSPF6_ROUTER_BIT_B))
+            count++;
+          if (v->magic == OSPFv3AREAASBDRRTRCOUNT &&
+              CHECK_FLAG (ro->path.router_bits, OSPF6_ROUTER_BIT_E))
+            count++;
+        }
+      return SNMP_INTEGER (count);
+    case OSPFv3AREASCOPELSACOUNT:
+      return SNMP_INTEGER (area->lsdb->count);
+    case OSPFv3AREASCOPELSACKSUMSUM:
+      for (sum = 0, lsa = ospf6_lsdb_head (area->lsdb);
+	   lsa;
+	   lsa = ospf6_lsdb_next (lsa))
+	sum += ntohs (lsa->header->checksum);
+      return SNMP_INTEGER (sum);
+    case OSPFv3AREASUMMARY:
+      return SNMP_INTEGER (2); /* sendAreaSummary */
+    case OSPFv3AREAROWSTATUS:
+      return SNMP_INTEGER (1); /* Active */
+    case OSPFv3AREASTUBMETRIC:
+    case OSPFv3AREANSSATRANSLATORROLE:
+    case OSPFv3AREANSSATRANSLATORSTATE:
+    case OSPFv3AREANSSATRANSLATORSTABINTERVAL:
+    case OSPFv3AREANSSATRANSLATOREVENTS:
+    case OSPFv3AREASTUBMETRICTYPE:
+    case OSPFv3AREATEENABLED:
+      /* Not implemented. */
       return NULL;
-      break;
     }
   return NULL;
 }
 
+static int
+if_icmp_func (struct interface *ifp1, struct interface *ifp2)
+{
+  return (ifp1->ifindex - ifp2->ifindex);
+}
+
 static u_char *
-ospfv3AreaLsdbEntry (struct variable *v, oid *name, size_t *length,
+ospfv3WwLsdbEntry (struct variable *v, oid *name, size_t *length,
                      int exact, size_t *var_len, WriteMethod **write_method)
 {
   struct ospf6_lsa *lsa = NULL;
-  struct in_addr area_id;
+  u_int32_t ifindex, area_id, id, instid, adv_router;
   u_int16_t type;
-  struct in_addr id;
-  struct in_addr adv_router;
   int len;
   oid *offset;
   int offsetlen;
   char a[16], b[16], c[16];
   struct ospf6_area *oa;
   struct listnode *node;
+  struct interface *iif;
+  struct ospf6_interface *oi = NULL;
+  struct list *ifslist;
 
   if (smux_header_table(v, name, length, exact, var_len, write_method)
       == MATCH_FAILED)
     return NULL;
 
-  memset (&area_id, 0, sizeof (struct in_addr));
-  type = 0;
-  memset (&id, 0, sizeof (struct in_addr));
-  memset (&adv_router, 0, sizeof (struct in_addr));
+  instid = ifindex = area_id = type = id = adv_router = 0;
 
   /* Check OSPFv3 instance. */
   if (ospf6 == NULL)
@@ -393,137 +645,528 @@
   offset = name + v->namelen;
   offsetlen = *length - v->namelen;
 
-#define OSPFV3_AREA_LSDB_ENTRY_EXACT_OFFSET \
-  (IN_ADDR_SIZE + 1 + IN_ADDR_SIZE + IN_ADDR_SIZE)
-
-  if (exact && offsetlen != OSPFV3_AREA_LSDB_ENTRY_EXACT_OFFSET)
+  if (exact && (v->magic & OSPFv3WWASTABLE) && offsetlen != 3)
+    return NULL;
+  if (exact && (v->magic & OSPFv3WWAREATABLE) && offsetlen != 4)
+    return NULL;
+  if (exact && (v->magic & OSPFv3WWLINKTABLE) && offsetlen != 5)
     return NULL;
 
-  /* Parse area-id */
-  len = (offsetlen < IN_ADDR_SIZE ? offsetlen : IN_ADDR_SIZE);
-  if (len)
-    oid2in_addr (offset, len, &area_id);
-  offset += len;
-  offsetlen -= len;
+  if (v->magic & OSPFv3WWLINKTABLE)
+    {
+      /* Parse ifindex */
+      len = (offsetlen < 1 ? 0 : 1);
+      if (len)
+        ifindex = *offset;
+      offset += len;
+      offsetlen -= len;
+
+      /* Parse instance ID */
+      len = (offsetlen < 1 ? 0 : 1);
+      if (len)
+        instid = *offset;
+      offset += len;
+      offsetlen -= len;
+    }
+  else if (v->magic & OSPFv3WWAREATABLE)
+    {
+      /* Parse area-id */
+      len = (offsetlen < 1 ? 0 : 1);
+      if (len)
+        area_id = htonl (*offset);
+      offset += len;
+      offsetlen -= len;
+    }
 
   /* Parse type */
-  len = (offsetlen < 1 ? offsetlen : 1);
+  len = (offsetlen < 1 ? 0 : 1);
   if (len)
     type = htons (*offset);
   offset += len;
   offsetlen -= len;
 
   /* Parse Router-ID */
-  len = (offsetlen < IN_ADDR_SIZE ? offsetlen : IN_ADDR_SIZE);
+  len = (offsetlen < 1 ? 0 : 1);
   if (len)
-    oid2in_addr (offset, len, &adv_router);
+    adv_router = htonl (*offset);
   offset += len;
   offsetlen -= len;
 
   /* Parse LS-ID */
-  len = (offsetlen < IN_ADDR_SIZE ? offsetlen : IN_ADDR_SIZE);
+  len = (offsetlen < 1 ? 0 : 1);
   if (len)
-    oid2in_addr (offset, len, &id);
+    id = htonl (*offset);
   offset += len;
   offsetlen -= len;
 
-  inet_ntop (AF_INET, &area_id, a, sizeof (a));
-  inet_ntop (AF_INET, &adv_router, b, sizeof (b));
-  inet_ntop (AF_INET, &id, c, sizeof (c));
-  zlog_debug ("SNMP access by lsdb: area=%s exact=%d length=%lu magic=%d"
-	      " type=%#x adv_router=%s id=%s",
-	      a, exact, (u_long)*length, v->magic, ntohs (type), b, c);
-
   if (exact)
     {
-      oa = ospf6_area_lookup (area_id.s_addr, ospf6);
-      lsa = ospf6_lsdb_lookup (type, id.s_addr, adv_router.s_addr, oa->lsdb);
+      if (v->magic & OSPFv3WWASTABLE)
+        {
+          lsa = ospf6_lsdb_lookup (type, id, adv_router, ospf6->lsdb);
+        }
+      else if (v->magic & OSPFv3WWAREATABLE)
+        {
+          oa = ospf6_area_lookup (area_id, ospf6);
+          if (!oa) return NULL;
+          lsa = ospf6_lsdb_lookup (type, id, adv_router, oa->lsdb);
+        }
+      else if (v->magic & OSPFv3WWLINKTABLE)
+        {
+          oi = ospf6_interface_lookup_by_ifindex (ifindex);
+          if (!oi || oi->instance_id != instid) return NULL;
+          lsa = ospf6_lsdb_lookup (type, id, adv_router, oi->lsdb);
+        }
     }
   else
     {
-      for (ALL_LIST_ELEMENTS_RO (ospf6->area_list, node, oa))
-        {
-          if (lsa)
-            continue;
-          if (ntohl (oa->area_id) < ntohl (area_id.s_addr))
-            continue;
+      if (v->magic & OSPFv3WWASTABLE)
+	{
+	  if (ospf6->lsdb->count)
+	    lsa = ospf6_lsdb_lookup_next (type, id, adv_router,
+					  ospf6->lsdb);
+	}
+      else if (v->magic & OSPFv3WWAREATABLE)
+	for (ALL_LIST_ELEMENTS_RO (ospf6->area_list, node, oa))
+          {
+            if (oa->area_id < area_id)
+              continue;
 
-          lsa = ospf6_lsdb_lookup_next (type, id.s_addr, adv_router.s_addr,
-                                        oa->lsdb);
-          if (! lsa)
+            if (oa->lsdb->count)
+              lsa = ospf6_lsdb_lookup_next (type, id, adv_router,
+                                            oa->lsdb);
+            if (lsa) break;
+            type = 0;
+            id = 0;
+            adv_router = 0;
+          }
+      else if (v->magic & OSPFv3WWLINKTABLE)
+        {
+          /* We build a sorted list of interfaces */
+          ifslist = list_new ();
+          if (!ifslist) return NULL;
+          ifslist->cmp = (int (*)(void *, void *))if_icmp_func;
+          for (ALL_LIST_ELEMENTS_RO (iflist, node, iif))
+            listnode_add_sort (ifslist, iif);
+          
+          for (ALL_LIST_ELEMENTS_RO (ifslist, node, iif))
             {
+              if (!iif->ifindex) continue;
+              oi = ospf6_interface_lookup_by_ifindex (iif->ifindex);
+              if (!oi) continue;
+              if (iif->ifindex < ifindex) continue;
+              if (oi->instance_id < instid) continue;
+              
+              if (oi->lsdb->count)
+                lsa = ospf6_lsdb_lookup_next (type, id, adv_router,
+                                            oi->lsdb);
+              if (lsa) break;
               type = 0;
-              memset (&id, 0, sizeof (struct in_addr));
-              memset (&adv_router, 0, sizeof (struct in_addr));
+              id = 0;
+              adv_router = 0;
+              oi = NULL;
             }
+
+          list_delete_all_node (ifslist);
         }
     }
 
   if (! lsa)
-    {
-      zlog_debug ("SNMP respond: No LSA to return");
       return NULL;
+
+  /* Add indexes */
+  if (v->magic & OSPFv3WWASTABLE)
+    {
+      *length = v->namelen + 3;
+      offset = name + v->namelen;
     }
-  oa = OSPF6_AREA (lsa->lsdb->data);
-
-  zlog_debug ("SNMP respond: area: %s lsa: %s", oa->name, lsa->name);
-
-  /* Add Index (AreaId, Type, RouterId, Lsid) */
-  *length = v->namelen + OSPFV3_AREA_LSDB_ENTRY_EXACT_OFFSET;
-  offset = name + v->namelen;
-  oid_copy_addr (offset, (struct in_addr *) &oa->area_id, IN_ADDR_SIZE);
-  offset += IN_ADDR_SIZE;
+  else if (v->magic & OSPFv3WWAREATABLE)
+    {
+      *length = v->namelen + 4;
+      offset = name + v->namelen;
+      *offset = ntohl (oa->area_id);
+      offset++;
+    }
+  else if (v->magic & OSPFv3WWLINKTABLE)
+    {
+      *length = v->namelen + 5;
+      offset = name + v->namelen;
+      *offset = oi->interface->ifindex;
+      offset++;
+      *offset = oi->instance_id;
+      offset++;
+    }
   *offset = ntohs (lsa->header->type);
   offset++;
-  oid_copy_addr (offset, (struct in_addr *) &lsa->header->adv_router,
-                 IN_ADDR_SIZE);
-  offset += IN_ADDR_SIZE;
-  oid_copy_addr (offset, (struct in_addr *) &lsa->header->id, IN_ADDR_SIZE);
-  offset += IN_ADDR_SIZE;
+  *offset = ntohl (lsa->header->adv_router);
+  offset++;
+  *offset = ntohl (lsa->header->id);
+  offset++;
 
   /* Return the current value of the variable */
-  switch (v->magic)
+  switch (v->magic & OSPFv3WWCOLUMN)
     {
-    case OSPFv3AREALSDBAREAID:        /* 1 */
-      area_id.s_addr = OSPF6_AREA (lsa->lsdb->data)->area_id;
-      return SNMP_IPADDRESS (area_id);
+    case OSPFv3WWLSDBSEQUENCE:
+      return SNMP_INTEGER (ntohl (lsa->header->seqnum));
       break;
-    case OSPFv3AREALSDBTYPE:          /* 2 */
-      return SNMP_INTEGER (ntohs (lsa->header->type));
-      break;
-    case OSPFv3AREALSDBROUTERID:      /* 3 */
-      adv_router.s_addr = lsa->header->adv_router;
-      return SNMP_IPADDRESS (adv_router);
-      break;
-    case OSPFv3AREALSDBLSID:          /* 4 */
-      id.s_addr = lsa->header->id;
-      return SNMP_IPADDRESS (id);
-      break;
-    case OSPFv3AREALSDBSEQUENCE:      /* 5 */
-      return SNMP_INTEGER (lsa->header->seqnum);
-      break;
-    case OSPFv3AREALSDBAGE:           /* 6 */
+    case OSPFv3WWLSDBAGE:
       ospf6_lsa_age_current (lsa);
-      return SNMP_INTEGER (lsa->header->age);
+      return SNMP_INTEGER (ntohs (lsa->header->age));
       break;
-    case OSPFv3AREALSDBCHECKSUM:      /* 7 */
-      return SNMP_INTEGER (lsa->header->checksum);
+    case OSPFv3WWLSDBCHECKSUM:
+      return SNMP_INTEGER (ntohs (lsa->header->checksum));
       break;
-    case OSPFv3AREALSDBADVERTISEMENT: /* 8 */
+    case OSPFv3WWLSDBADVERTISEMENT:
       *var_len = ntohs (lsa->header->length);
       return (u_char *) lsa->header;
       break;
-    case OSPFv3AREALSDBTYPEKNOWN:     /* 9 */
+    case OSPFv3WWLSDBTYPEKNOWN:
       return SNMP_INTEGER (OSPF6_LSA_IS_KNOWN (lsa->header->type) ?
                            SNMP_TRUE : SNMP_FALSE);
       break;
-    default:
-      return NULL;
-      break;
     }
   return NULL;
 }
 
+static u_char *
+ospfv3IfEntry (struct variable *v, oid *name, size_t *length,
+		int exact, size_t *var_len, WriteMethod **write_method)
+{
+  unsigned int ifindex, instid;
+  struct ospf6_interface *oi = NULL;
+  struct ospf6_lsa *lsa = NULL;
+  struct interface      *iif;
+  struct listnode *i;
+  struct list *ifslist;
+  oid *offset;
+  int offsetlen, len;
+  u_int32_t sum;
+
+  if (smux_header_table (v, name, length, exact, var_len, write_method)
+      == MATCH_FAILED)
+    return NULL;
+
+  ifindex = instid = 0;
+
+  /* Check OSPFv3 instance. */
+  if (ospf6 == NULL)
+    return NULL;
+
+  /* Get variable length. */
+  offset = name + v->namelen;
+  offsetlen = *length - v->namelen;
+
+  if (exact && offsetlen != 2)
+    return NULL;
+
+  /* Parse if index */
+  len = (offsetlen < 1 ? 0 : 1);
+  if (len)
+    ifindex = *offset;
+  offset += len;
+  offsetlen -= len;
+
+  /* Parse instance ID */
+  len = (offsetlen < 1 ? 0 : 1);
+  if (len)
+    instid = *offset;
+  offset += len;
+  offsetlen -= len;
+
+  if (exact)
+    {
+      oi = ospf6_interface_lookup_by_ifindex (ifindex);
+      if (!oi || oi->instance_id != instid) return NULL;
+    }
+  else
+    {
+      /* We build a sorted list of interfaces */
+      ifslist = list_new ();
+      if (!ifslist) return NULL;
+      ifslist->cmp = (int (*)(void *, void *))if_icmp_func;
+      for (ALL_LIST_ELEMENTS_RO (iflist, i, iif))
+	listnode_add_sort (ifslist, iif);
+
+      for (ALL_LIST_ELEMENTS_RO (ifslist, i, iif))
+        {
+          if (!iif->ifindex) continue;
+          oi = ospf6_interface_lookup_by_ifindex (iif->ifindex);
+          if (!oi) continue;
+          if (iif->ifindex > ifindex ||
+              (iif->ifindex == ifindex &&
+               (oi->instance_id > instid)))
+            break;
+          oi = NULL;
+        }
+
+      list_delete_all_node (ifslist);
+    }
+
+  if (!oi) return NULL;
+
+  /* Add Index (IfIndex, IfInstId) */
+  *length = v->namelen + 2;
+  offset = name + v->namelen;
+  *offset = oi->interface->ifindex;
+  offset++;
+  *offset = oi->instance_id;
+  offset++;
+
+  /* Return the current value of the variable */
+  switch (v->magic)
+    {
+    case OSPFv3IFAREAID:
+      if (oi->area)
+	return SNMP_INTEGER (ntohl (oi->area->area_id));
+      break;
+    case OSPFv3IFTYPE:
+      if (if_is_broadcast (oi->interface))
+	return SNMP_INTEGER (1);
+      else if (if_is_pointopoint (oi->interface))
+	return SNMP_INTEGER (3);
+      else break;		/* Unknown, don't put anything */
+    case OSPFv3IFADMINSTATUS:
+      if (oi->area)
+	return SNMP_INTEGER (OSPF_STATUS_ENABLED);
+      return SNMP_INTEGER (OSPF_STATUS_DISABLED);
+    case OSPFv3IFRTRPRIORITY:
+      return SNMP_INTEGER (oi->priority);
+    case OSPFv3IFTRANSITDELAY:
+      return SNMP_INTEGER (oi->transdelay);
+    case OSPFv3IFRETRANSINTERVAL:
+      return SNMP_INTEGER (oi->rxmt_interval);
+    case OSPFv3IFHELLOINTERVAL:
+      return SNMP_INTEGER (oi->hello_interval);
+    case OSPFv3IFRTRDEADINTERVAL:
+      return SNMP_INTEGER (oi->dead_interval);
+    case OSPFv3IFPOLLINTERVAL:
+      /* No support for NBMA */
+      break;
+    case OSPFv3IFSTATE:
+      return SNMP_INTEGER (oi->state);
+    case OSPFv3IFDESIGNATEDROUTER:
+      return SNMP_INTEGER (ntohl (oi->drouter));
+    case OSPFv3IFBACKUPDESIGNATEDROUTER:
+      return SNMP_INTEGER (ntohl (oi->bdrouter));
+    case OSPFv3IFEVENTS:
+      return SNMP_INTEGER (oi->state_change);
+    case OSPFv3IFROWSTATUS:
+      return SNMP_INTEGER (1);
+    case OSPFv3IFDEMAND:
+      return SNMP_INTEGER (SNMP_FALSE);
+    case OSPFv3IFMETRICVALUE:
+      return SNMP_INTEGER (oi->cost);
+    case OSPFv3IFLINKSCOPELSACOUNT:
+      return SNMP_INTEGER (oi->lsdb->count);
+    case OSPFv3IFLINKLSACKSUMSUM:
+      for (sum = 0, lsa = ospf6_lsdb_head (oi->lsdb);
+	   lsa;
+	   lsa = ospf6_lsdb_next (lsa))
+	sum += ntohs (lsa->header->checksum);
+      return SNMP_INTEGER (sum);
+    case OSPFv3IFDEMANDNBRPROBE:
+    case OSPFv3IFDEMANDNBRPROBERETRANSLIMIT:
+    case OSPFv3IFDEMANDNBRPROBEINTERVAL:
+    case OSPFv3IFTEDISABLED:
+    case OSPFv3IFLINKLSASUPPRESSION:
+      /* Not implemented. Only works if all the last ones are not
+	 implemented! */
+      return NULL;
+    }
+
+  /* Try an internal getnext. Some columns are missing in this table. */
+  if (!exact && (name[*length-1] < MAX_SUBID))
+    return ospfv3IfEntry(v, name, length,
+			 exact, var_len, write_method);
+  return NULL;
+}
+
+static u_char *
+ospfv3NbrEntry (struct variable *v, oid *name, size_t *length,
+		int exact, size_t *var_len, WriteMethod **write_method)
+{
+  unsigned int ifindex, instid, rtrid;
+  struct ospf6_interface *oi = NULL;
+  struct ospf6_neighbor  *on = NULL;
+  struct interface      *iif;
+  struct listnode *i, *j;
+  struct list *ifslist;
+  oid *offset;
+  int offsetlen, len;
+
+  if (smux_header_table (v, name, length, exact, var_len, write_method)
+      == MATCH_FAILED)
+    return NULL;
+
+  ifindex = instid = rtrid = 0;
+
+  /* Check OSPFv3 instance. */
+  if (ospf6 == NULL)
+    return NULL;
+
+  /* Get variable length. */
+  offset = name + v->namelen;
+  offsetlen = *length - v->namelen;
+
+  if (exact && offsetlen != 3)
+    return NULL;
+
+  /* Parse if index */
+  len = (offsetlen < 1 ? 0 : 1);
+  if (len)
+    ifindex = *offset;
+  offset += len;
+  offsetlen -= len;
+
+  /* Parse instance ID */
+  len = (offsetlen < 1 ? 0 : 1);
+  if (len)
+    instid = *offset;
+  offset += len;
+  offsetlen -= len;
+
+  /* Parse router ID */
+  len = (offsetlen < 1 ? 0 : 1);
+  if (len)
+    rtrid = htonl (*offset);
+  offset += len;
+  offsetlen -= len;
+
+  if (exact)
+    {
+      oi = ospf6_interface_lookup_by_ifindex (ifindex);
+      if (!oi || oi->instance_id != instid) return NULL;
+      on = ospf6_neighbor_lookup (rtrid, oi);
+    }
+  else
+    {
+      /* We build a sorted list of interfaces */
+      ifslist = list_new ();
+      if (!ifslist) return NULL;
+      ifslist->cmp = (int (*)(void *, void *))if_icmp_func;
+      for (ALL_LIST_ELEMENTS_RO (iflist, i, iif))
+	listnode_add_sort (ifslist, iif);
+
+      for (ALL_LIST_ELEMENTS_RO (ifslist, i, iif))
+        {
+          if (!iif->ifindex) continue;
+          oi = ospf6_interface_lookup_by_ifindex (iif->ifindex);
+          if (!oi) continue;
+          for (ALL_LIST_ELEMENTS_RO (oi->neighbor_list, j, on)) {
+            if (iif->ifindex > ifindex ||
+                (iif->ifindex == ifindex &&
+                 (oi->instance_id > instid ||
+                  (oi->instance_id == instid &&
+                   ntohl (on->router_id) > ntohl (rtrid)))))
+              break;
+          }
+          if (on) break;
+          oi = NULL;
+          on = NULL;
+        }
+
+      list_delete_all_node (ifslist);
+    }
+
+  if (!oi || !on) return NULL;
+
+  /* Add Index (IfIndex, IfInstId, RtrId) */
+  *length = v->namelen + 3;
+  offset = name + v->namelen;
+  *offset = oi->interface->ifindex;
+  offset++;
+  *offset = oi->instance_id;
+  offset++;
+  *offset = ntohl (on->router_id);
+  offset++;
+
+  /* Return the current value of the variable */
+  switch (v->magic)
+    {
+    case OSPFv3NBRADDRESSTYPE:
+      return SNMP_INTEGER (2);	/* IPv6 only */
+    case OSPFv3NBRADDRESS:
+      *var_len = sizeof (struct in6_addr);
+      return (u_char *) &on->linklocal_addr;
+    case OSPFv3NBROPTIONS:
+      return SNMP_INTEGER (on->options[2]);
+    case OSPFv3NBRPRIORITY:
+      return SNMP_INTEGER (on->priority);
+    case OSPFv3NBRSTATE:
+      return SNMP_INTEGER (on->state);
+    case OSPFv3NBREVENTS:
+      return SNMP_INTEGER (on->state_change);
+    case OSPFv3NBRLSRETRANSQLEN:
+      return SNMP_INTEGER (on->retrans_list->count);
+    case OSPFv3NBRHELLOSUPPRESSED:
+      return SNMP_INTEGER (SNMP_FALSE);
+    case OSPFv3NBRIFID:
+      return SNMP_INTEGER (on->ifindex);
+    case OSPFv3NBRRESTARTHELPERSTATUS:
+    case OSPFv3NBRRESTARTHELPERAGE:
+    case OSPFv3NBRRESTARTHELPEREXITREASON:
+      /* Not implemented. Only works if all the last ones are not
+	 implemented! */
+      return NULL;
+    }
+
+  return NULL;
+}
+
+/* OSPF Traps. */
+#define NBRSTATECHANGE      2
+#define IFSTATECHANGE      10
+
+static struct trap_object ospf6NbrTrapList[] =
+{
+  {-3, {1, 1, OSPFv3ROUTERID}},
+  {4, {1, 9, 1, OSPFv3NBRADDRESSTYPE}},
+  {4, {1, 9, 1, OSPFv3NBRADDRESS}},
+  {4, {1, 9, 1, OSPFv3NBRSTATE}}
+};
+
+static struct trap_object ospf6IfTrapList[] =
+{
+  {-3, {1, 1, OSPFv3ROUTERID}},
+  {4, {1, 7, 1, OSPFv3IFSTATE}},
+  {4, {1, 7, 1, OSPFv3IFADMINSTATUS}},
+  {4, {1, 7, 1, OSPFv3IFAREAID}}
+};
+
+void
+ospf6TrapNbrStateChange (struct ospf6_neighbor *on)
+{
+  oid index[3];
+
+  index[0] = on->ospf6_if->interface->ifindex;
+  index[1] = on->ospf6_if->instance_id;
+  index[2] = ntohl (on->router_id);
+
+  smux_trap (ospfv3_variables, sizeof ospfv3_variables / sizeof (struct variable),
+	     ospfv3_trap_oid, sizeof ospfv3_trap_oid / sizeof (oid),
+	     ospfv3_oid, sizeof ospfv3_oid / sizeof (oid),
+             index,  3,
+             ospf6NbrTrapList, 
+             sizeof ospf6NbrTrapList / sizeof (struct trap_object),
+             NBRSTATECHANGE);
+}
+
+void
+ospf6TrapIfStateChange (struct ospf6_interface *oi)
+{
+  oid index[2];
+
+  index[0] = oi->interface->ifindex;
+  index[1] = oi->instance_id;
+
+  smux_trap (ospfv3_variables, sizeof ospfv3_variables / sizeof (struct variable),
+	     ospfv3_trap_oid, sizeof ospfv3_trap_oid / sizeof (oid),
+	     ospfv3_oid, sizeof ospfv3_oid / sizeof (oid),
+             index,  2,
+             ospf6IfTrapList, 
+             sizeof ospf6IfTrapList / sizeof (struct trap_object),
+             IFSTATECHANGE);
+}
 
 /* Register OSPFv3-MIB. */
 void
diff --git a/ospf6d/ospf6_snmp.h b/ospf6d/ospf6_snmp.h
index 5c67893..fa1b0c3 100644
--- a/ospf6d/ospf6_snmp.h
+++ b/ospf6d/ospf6_snmp.h
@@ -22,6 +22,8 @@
 #ifndef OSPF6_SNMP_H
 #define OSPF6_SNMP_H
 
+extern void ospf6TrapNbrStateChange (struct ospf6_neighbor *);
+extern void ospf6TrapIfStateChange (struct ospf6_interface *);
 extern void ospf6_snmp_init (struct thread_master *);
 
 #endif /*OSPF6_SNMP_H*/
diff --git a/ospf6d/ospf6_spf.c b/ospf6d/ospf6_spf.c
index a4a5b72..da0ee13 100644
--- a/ospf6d/ospf6_spf.c
+++ b/ospf6d/ospf6_spf.c
@@ -473,6 +473,8 @@
     }
 
   pqueue_delete (candidate_list);
+
+  oa->spf_calculation++;
 }
 
 static void
