-- *****************************************************************
-- Extracted from RFC-2465.
-- 
-- Copyright (c) 2006 by cisco Systems, Inc.
-- All rights reserved.
--
-- *****************************************************************

         IPV6-MIB DEFINITIONS ::= BEGIN

         IMPORTS
             MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
             mib-2, Counter32, Unsigned32, Integer32,
             Gauge32                               FROM SNMPv2-SMI
             DisplayString, PhysAddress, TruthValue, TimeStamp,
             VariablePointer, RowPointer           FROM SNMPv2-TC
             MODULE-COMPLIANCE, OBJECT-GROUP,
             NOTIFICATION-GROUP                    FROM SNMPv2-CONF
             Ipv6IfIndex, Ipv6Address, Ipv6AddressPrefix,
             Ipv6AddressIfIdentifier,
             Ipv6IfIndexOrZero                     FROM IPV6-TC;

         ipv6MIB MODULE-IDENTITY
             LAST-UPDATED "9802052155Z"
             ORGANIZATION "IETF IPv6 Working Group"
             CONTACT-INFO
               "           Dimitry Haskin

                   Postal: Bay Networks, Inc.
                           660 Techology Park Drive.
                           Billerica, MA  01821
                           US

                      Tel: +1-978-916-8124
                   E-mail: dhaskin@baynetworks.com

                           Steve Onishi

                   Postal: Bay Networks, Inc.
                           3 Federal Street
                           Billerica, MA 01821
                           US

                      Tel: +1-978-916-3816
                   E-mail: sonishi@baynetworks.com"
             DESCRIPTION
               "The MIB module for entities implementing the IPv6
                protocol."
             ::= { mib-2 55 }


         -- the IPv6 general group

         ipv6MIBObjects OBJECT IDENTIFIER   ::= { ipv6MIB 1 }


         ipv6Forwarding OBJECT-TYPE
             SYNTAX      INTEGER {
                          forwarding(1),    -- acting as a router

                                            -- NOT acting as
                          notForwarding(2)  -- a router
                         }
              MAX-ACCESS read-write
              STATUS     current
              DESCRIPTION
                "The indication of whether this entity is acting
                as an IPv6 router in respect to the forwarding of
                datagrams received by, but not addressed to, this
                entity.  IPv6 routers forward datagrams.  IPv6
                hosts do not (except those source-routed via the
                host).

                Note that for some managed nodes, this object may
                take on only a subset of the values possible.
                Accordingly, it is appropriate for an agent to
                return a `wrongValue' response if a management
                station attempts to change this object to an
                inappropriate value."
              ::= { ipv6MIBObjects 1 }

         ipv6DefaultHopLimit OBJECT-TYPE
             SYNTAX      INTEGER(0..255)
             MAX-ACCESS  read-write
              STATUS     current
             DESCRIPTION
                "The default value inserted into the Hop Limit
                field of the IPv6 header of datagrams originated
                at this entity, whenever a Hop Limit value is not
                supplied by the transport layer protocol."
             DEFVAL  { 64 }
             ::= { ipv6MIBObjects 2 }

        ipv6Interfaces OBJECT-TYPE
             SYNTAX      Unsigned32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
               "The number of IPv6 interfaces (regardless of
                their current state) present on this system."
             ::= { ipv6MIBObjects 3 }

        ipv6IfTableLastChange OBJECT-TYPE
             SYNTAX      TimeStamp
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
               "The value of sysUpTime at the time of the last
               insertion or removal of an entry in the
               ipv6IfTable. If the number of entries has been
               unchanged since the last re-initialization of
               the local network management subsystem, then this
               object contains a zero value."
             ::= { ipv6MIBObjects 4 }


        -- the IPv6 Interfaces table

        ipv6IfTable OBJECT-TYPE
             SYNTAX     SEQUENCE OF Ipv6IfEntry
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
               "The IPv6 Interfaces table contains information
               on the entity's internetwork-layer interfaces.
               An IPv6 interface constitutes a logical network
               layer attachment to the layer immediately below
               IPv6 including internet layer 'tunnels', such as
               tunnels over IPv4 or IPv6 itself."
             ::= { ipv6MIBObjects 5 }

         ipv6IfEntry OBJECT-TYPE
             SYNTAX     Ipv6IfEntry
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
               "An interface entry containing objects
                about a particular IPv6 interface."
             INDEX   { ipv6IfIndex }
             ::= { ipv6IfTable 1 }

         Ipv6IfEntry ::= SEQUENCE {
                 ipv6IfIndex              Ipv6IfIndex,
                 ipv6IfDescr              DisplayString,
                 ipv6IfLowerLayer         VariablePointer,
                 ipv6IfEffectiveMtu       Unsigned32,
                 ipv6IfReasmMaxSize       Unsigned32,
                 ipv6IfIdentifier         Ipv6AddressIfIdentifier,
                 ipv6IfIdentifierLength   INTEGER,
                 ipv6IfPhysicalAddress    PhysAddress,
                 ipv6IfAdminStatus        INTEGER,
                 ipv6IfOperStatus         INTEGER,
                 ipv6IfLastChange         TimeStamp
             }

         ipv6IfIndex OBJECT-TYPE
             SYNTAX     Ipv6IfIndex
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
               "A unique non-zero value identifying
                the particular IPv6 interface."
             ::= { ipv6IfEntry 1 }

         ipv6IfDescr OBJECT-TYPE
             SYNTAX     DisplayString
             MAX-ACCESS read-write
             STATUS     current
             DESCRIPTION
               "A textual string containing information about the
               interface.  This string may be set by the network
               management system."
             ::= { ipv6IfEntry 2 }

         ipv6IfLowerLayer OBJECT-TYPE
            SYNTAX      VariablePointer
            MAX-ACCESS  read-only
            STATUS      current
            DESCRIPTION
              "This object identifies the protocol layer over
               which this network interface operates.  If this
               network interface operates over the data-link
               layer, then the value of this object refers to an
               instance of ifIndex [6]. If this network interface
               operates over an IPv4 interface, the value of this
               object refers to an instance of ipAdEntAddr [3].

               If this network interface operates over another
               IPv6 interface, the value of this object refers to
               an instance of ipv6IfIndex.  If this network
               interface is not currently operating over an active
               protocol layer, then the value of this object
               should be set to the OBJECT ID { 0 0 }."
            ::= { ipv6IfEntry 3 }

         ipv6IfEffectiveMtu OBJECT-TYPE
            SYNTAX      Unsigned32
            UNITS       "octets"
            MAX-ACCESS  read-only
            STATUS      current
            DESCRIPTION
              "The size of the largest IPv6 packet which can be
              sent/received on the interface, specified in
              octets."
         ::= { ipv6IfEntry 4 }

         ipv6IfReasmMaxSize OBJECT-TYPE
            SYNTAX      Unsigned32 (0..65535)
            UNITS       "octets"
            MAX-ACCESS  read-only
            STATUS      current
            DESCRIPTION
              "The size of the largest IPv6 datagram which this
              entity can re-assemble from incoming IPv6 fragmented
              datagrams received on this interface."
         ::= { ipv6IfEntry 5 }

         ipv6IfIdentifier OBJECT-TYPE
             SYNTAX      Ipv6AddressIfIdentifier
             MAX-ACCESS  read-write
             STATUS      current
             DESCRIPTION
                "The Interface Identifier for this interface that
                is (at least) unique on the link this interface is
                attached to. The Interface Identifier is combined
                with an address prefix to form an interface address.

                By default, the Interface Identifier is autoconfigured
                according to the rules of the link type this
                interface is attached to."
             ::= { ipv6IfEntry 6 }

         ipv6IfIdentifierLength OBJECT-TYPE
             SYNTAX      INTEGER (0..64)
             UNITS       "bits"
             MAX-ACCESS  read-write
             STATUS      current
             DESCRIPTION
               "The length of the Interface Identifier in bits."
             ::= { ipv6IfEntry 7 }

         ipv6IfPhysicalAddress OBJECT-TYPE
             SYNTAX      PhysAddress
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
               "The interface's physical address. For example, for
               an IPv6 interface attached to an 802.x link, this
               object normally contains a MAC address. Note that
               in some cases this address may differ from the
               address of the interface's protocol sub-layer.  The
               interface's media-specific MIB must define the bit
               and byte ordering and the format of the value of
               this object. For interfaces which do not have such
               an address (e.g., a serial line), this object should
               contain an octet string of zero length."
             ::= { ipv6IfEntry 8 }

        ipv6IfAdminStatus OBJECT-TYPE
            SYNTAX  INTEGER {
                     up(1),       -- ready to pass packets
                     down(2)
                    }
            MAX-ACCESS  read-write
            STATUS      current
            DESCRIPTION
              "The desired state of the interface.  When a managed
              system initializes,  all IPv6 interfaces start with
              ipv6IfAdminStatus in the down(2) state.  As a result
              of either explicit management action or per
              configuration information retained by the managed
              system,  ipv6IfAdminStatus is then changed to
              the up(1) state (or remains in the down(2) state)."
            ::= { ipv6IfEntry 9 }

        ipv6IfOperStatus OBJECT-TYPE
            SYNTAX  INTEGER {
                     up(1),             -- ready to pass packets

                     down(2),

                     noIfIdentifier(3), -- no interface identifier

                                        -- status can not be
                                        -- determined for some
                     unknown(4),        -- reason

                                        -- some component is
                     notPresent(5)      -- missing
                    }
            MAX-ACCESS  read-only
            STATUS      current
            DESCRIPTION
              "The current operational state of the interface.
              The noIfIdentifier(3) state indicates that no valid
              Interface Identifier is assigned to the interface.
              This state usually indicates that the link-local
              interface address failed Duplicate Address Detection.
              If ipv6IfAdminStatus is down(2) then ipv6IfOperStatus
              should be down(2).  If ipv6IfAdminStatus is changed
              to up(1) then ipv6IfOperStatus should change to up(1)
              if the interface is ready to transmit and receive
              network traffic; it should remain in the down(2) or
              noIfIdentifier(3) state if and only if there is a
              fault that prevents it from going to the up(1) state;
              it should remain in the notPresent(5) state if
              the interface has missing (typically, lower layer)
              components."
            ::= { ipv6IfEntry 10 }

        ipv6IfLastChange OBJECT-TYPE
            SYNTAX      TimeStamp
            MAX-ACCESS  read-only
            STATUS      current
            DESCRIPTION
                "The value of sysUpTime at the time the interface
                entered its current operational state.  If the
                current state was entered prior to the last
                re-initialization of the local network management
                subsystem, then this object contains a zero
                value."
            ::= { ipv6IfEntry 11 }

         --  IPv6 Interface Statistics table

         ipv6IfStatsTable OBJECT-TYPE
             SYNTAX     SEQUENCE OF Ipv6IfStatsEntry
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
                 "IPv6 interface traffic statistics."
             ::= { ipv6MIBObjects 6 }

         ipv6IfStatsEntry OBJECT-TYPE
             SYNTAX     Ipv6IfStatsEntry
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
                 "An interface statistics entry containing objects
                 at a particular IPv6 interface."
             AUGMENTS { ipv6IfEntry }
             ::= { ipv6IfStatsTable 1 }

         Ipv6IfStatsEntry ::= SEQUENCE {
                 ipv6IfStatsInReceives
                     Counter32,
                 ipv6IfStatsInHdrErrors
                     Counter32,
                 ipv6IfStatsInTooBigErrors
                     Counter32,
                 ipv6IfStatsInNoRoutes
                     Counter32,
                 ipv6IfStatsInAddrErrors
                     Counter32,
                 ipv6IfStatsInUnknownProtos
                     Counter32,
                 ipv6IfStatsInTruncatedPkts
                     Counter32,
                 ipv6IfStatsInDiscards
                     Counter32,
                 ipv6IfStatsInDelivers
                     Counter32,
                 ipv6IfStatsOutForwDatagrams
                     Counter32,
                 ipv6IfStatsOutRequests
                     Counter32,
                 ipv6IfStatsOutDiscards
                     Counter32,
                 ipv6IfStatsOutFragOKs
                     Counter32,
                 ipv6IfStatsOutFragFails
                     Counter32,
                 ipv6IfStatsOutFragCreates
                     Counter32,
                 ipv6IfStatsReasmReqds
                     Counter32,
                 ipv6IfStatsReasmOKs
                     Counter32,
                 ipv6IfStatsReasmFails
                     Counter32,
                 ipv6IfStatsInMcastPkts
                     Counter32,
                 ipv6IfStatsOutMcastPkts
                     Counter32
             }

         ipv6IfStatsInReceives OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
                "The total number of input datagrams received by
                the interface, including those received in error."
             ::= { ipv6IfStatsEntry 1 }

         ipv6IfStatsInHdrErrors OBJECT-TYPE
             SYNTAX     Counter32
             MAX-ACCESS read-only
             STATUS     current
             DESCRIPTION
                "The number of input datagrams discarded due to
                errors in their IPv6 headers, including version
                number mismatch, other format errors, hop count
                exceeded, errors discovered in processing their
                IPv6 options, etc."
             ::= { ipv6IfStatsEntry 2 }

         ipv6IfStatsInTooBigErrors OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
               "The number of input datagrams that could not be
               forwarded because their size exceeded the link MTU
               of outgoing interface."
             ::= { ipv6IfStatsEntry 3 }

         ipv6IfStatsInNoRoutes OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
                "The number of input datagrams discarded because no
                 route could be found to transmit them to their
                 destination."
             ::= { ipv6IfStatsEntry 4 }

         ipv6IfStatsInAddrErrors OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
                "The number of input datagrams discarded because
                the IPv6 address in their IPv6 header's destination
                field was not a valid address to be received at
                this entity.  This count includes invalid
                addresses (e.g., ::0) and unsupported addresses
                (e.g., addresses with unallocated prefixes).  For
                entities which are not IPv6 routers and therefore
                do not forward datagrams, this counter includes
                datagrams discarded because the destination address
                was not a local address."
             ::= { ipv6IfStatsEntry 5 }

         ipv6IfStatsInUnknownProtos OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
                "The number of locally-addressed datagrams
                received successfully but discarded because of an
                unknown or unsupported protocol. This counter is
                incremented at the interface to which these
                datagrams were addressed which might not be
                necessarily the input interface for some of
                the datagrams."
             ::= { ipv6IfStatsEntry 6 }


         ipv6IfStatsInTruncatedPkts OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
                "The number of input datagrams discarded because
                 datagram frame didn't carry enough data."
             ::= { ipv6IfStatsEntry 7 }

         ipv6IfStatsInDiscards OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
                "The number of input IPv6 datagrams for which no
                problems were encountered to prevent their
                continued processing, but which were discarded
                (e.g., for lack of buffer space).  Note that this
                counter does not include any datagrams discarded
                while awaiting re-assembly."
             ::= { ipv6IfStatsEntry 8 }

         ipv6IfStatsInDelivers OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
              "The total number of datagrams successfully
              delivered to IPv6 user-protocols (including ICMP).
              This counter is incremented at the interface to
              which these datagrams were addressed which might
              not be necessarily the input interface for some of
              the datagrams."
             ::= { ipv6IfStatsEntry 9 }

         ipv6IfStatsOutForwDatagrams OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
                "The number of output datagrams which this
                entity received and forwarded to their final
                destinations.  In entities which do not act
                as IPv6 routers, this counter will include
                only those packets which were Source-Routed
                via this entity, and the Source-Route
                processing was successful.  Note that for
                a successfully forwarded datagram the counter
                of the outgoing interface is incremented."
             ::= { ipv6IfStatsEntry 10 }

         ipv6IfStatsOutRequests OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
              "The total number of IPv6 datagrams which local IPv6
              user-protocols (including ICMP) supplied to IPv6 in
              requests for transmission.  Note that this counter
              does not include any datagrams counted in
              ipv6IfStatsOutForwDatagrams."
             ::= { ipv6IfStatsEntry 11 }

         ipv6IfStatsOutDiscards OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
                 "The number of output IPv6 datagrams for which no
                 problem was encountered to prevent their
                 transmission to their destination, but which were
                 discarded (e.g., for lack of buffer space).  Note
                 that this counter would include datagrams counted
                 in ipv6IfStatsOutForwDatagrams if any such packets
                 met this (discretionary) discard criterion."
             ::= { ipv6IfStatsEntry 12 }

         ipv6IfStatsOutFragOKs OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
                "The number of IPv6 datagrams that have been
                 successfully fragmented at this output interface."
             ::= { ipv6IfStatsEntry 13 }

         ipv6IfStatsOutFragFails OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
                "The number of IPv6 datagrams that have been
                 discarded because they needed to be fragmented
                 at this output interface but could not be."
             ::= { ipv6IfStatsEntry 14 }

         ipv6IfStatsOutFragCreates OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
                "The number of output datagram fragments that have
                 been generated as a result of fragmentation at
                 this output interface."
             ::= { ipv6IfStatsEntry 15 }

         ipv6IfStatsReasmReqds OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
                "The number of IPv6 fragments received which needed
                 to be reassembled at this interface.  Note that this
                 counter is incremented at the interface to which
                 these fragments were addressed which might not
                 be necessarily the input interface for some of
                 the fragments."
             ::= { ipv6IfStatsEntry 16 }

         ipv6IfStatsReasmOKs OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
               "The number of IPv6 datagrams successfully
               reassembled.  Note that this counter is incremented
               at the interface to which these datagrams were
               addressed which might not be necessarily the input
               interface for some of the fragments."
             ::= { ipv6IfStatsEntry 17 }

         ipv6IfStatsReasmFails OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
                "The number of failures detected by the IPv6 re-
                assembly algorithm (for whatever reason: timed
                out, errors, etc.).  Note that this is not
                necessarily a count of discarded IPv6 fragments
                since some algorithms (notably the algorithm in
                RFC 815) can lose track of the number of fragments
                by combining them as they are received.
                This counter is incremented at the interface to which
                these fragments were addressed which might not be
                necessarily the input interface for some of the
                fragments."
             ::= { ipv6IfStatsEntry 18 }

         ipv6IfStatsInMcastPkts OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS     current
             DESCRIPTION
                "The number of multicast packets received
                 by the interface"
             ::= { ipv6IfStatsEntry 19 }

         ipv6IfStatsOutMcastPkts OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
                "The number of multicast packets transmitted
                 by the interface"
             ::= { ipv6IfStatsEntry 20 }



         -- Address Prefix table

         -- The IPv6 Address Prefix table contains information on
         -- the entity's IPv6 Address Prefixes that are associated
         -- with IPv6 interfaces.

         ipv6AddrPrefixTable OBJECT-TYPE
             SYNTAX  SEQUENCE OF Ipv6AddrPrefixEntry
             MAX-ACCESS  not-accessible
             STATUS      current
             DESCRIPTION
                 "The list of IPv6 address prefixes of
                 IPv6 interfaces."
             ::= { ipv6MIBObjects 7 }

         ipv6AddrPrefixEntry OBJECT-TYPE
             SYNTAX  Ipv6AddrPrefixEntry
             MAX-ACCESS  not-accessible
             STATUS      current
             DESCRIPTION
                 "An interface entry containing objects of
                 a particular IPv6 address prefix."
             INDEX   { ipv6IfIndex,
                       ipv6AddrPrefix,
                       ipv6AddrPrefixLength }
             ::= { ipv6AddrPrefixTable 1 }

         Ipv6AddrPrefixEntry ::= SEQUENCE {
              ipv6AddrPrefix                     Ipv6AddressPrefix,
              ipv6AddrPrefixLength               INTEGER (0..128),
              ipv6AddrPrefixOnLinkFlag           TruthValue,
              ipv6AddrPrefixAutonomousFlag       TruthValue,
              ipv6AddrPrefixAdvPreferredLifetime Unsigned32,
              ipv6AddrPrefixAdvValidLifetime     Unsigned32
             }

         ipv6AddrPrefix OBJECT-TYPE
             SYNTAX      Ipv6AddressPrefix
             MAX-ACCESS  not-accessible
             STATUS      current
             DESCRIPTION
               "The prefix associated with the this interface."
             ::= { ipv6AddrPrefixEntry 1 }

         ipv6AddrPrefixLength OBJECT-TYPE
             SYNTAX      INTEGER (0..128)
             UNITS       "bits"
             MAX-ACCESS  not-accessible
             STATUS      current
             DESCRIPTION
               "The length of the prefix (in bits)."
             ::= { ipv6AddrPrefixEntry 2 }

         ipv6AddrPrefixOnLinkFlag OBJECT-TYPE
             SYNTAX      TruthValue
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
               "This object has the value 'true(1)', if this
               prefix can be used  for on-link determination
               and the value 'false(2)' otherwise."
             ::= { ipv6AddrPrefixEntry 3 }

         ipv6AddrPrefixAutonomousFlag OBJECT-TYPE
             SYNTAX      TruthValue
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
               "Autonomous address configuration flag. When
               true(1), indicates that this prefix can be used
               for autonomous address configuration (i.e. can
               be used to form a local interface address).
               If false(2), it is not used to autoconfigure
               a local interface address."
             ::= { ipv6AddrPrefixEntry 4 }

         ipv6AddrPrefixAdvPreferredLifetime OBJECT-TYPE
             SYNTAX      Unsigned32
             UNITS       "seconds"
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
                "It is the length of time in seconds that this
                prefix will remain preferred, i.e. time until
                deprecation.  A value of 4,294,967,295 represents
                infinity.

                The address generated from a deprecated prefix
                should no longer be used as a source address in
                new communications, but packets received on such
                an interface are processed as expected."
             ::= { ipv6AddrPrefixEntry 5 }

         ipv6AddrPrefixAdvValidLifetime OBJECT-TYPE
             SYNTAX      Unsigned32
             UNITS       "seconds"
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
               "It is the length of time in seconds that this
               prefix will remain valid, i.e. time until
               invalidation.  A value of 4,294,967,295 represents
               infinity.

               The address generated from an invalidated prefix
               should not appear as the destination or source
               address of a packet."
             ::= { ipv6AddrPrefixEntry 6 }


         -- the IPv6 Address table

         -- The IPv6 address table contains this node's IPv6
         -- addressing information.

         ipv6AddrTable OBJECT-TYPE
            SYNTAX      SEQUENCE OF Ipv6AddrEntry
            MAX-ACCESS  not-accessible
            STATUS      current
            DESCRIPTION
              "The table of addressing information relevant to
              this node's interface addresses."
            ::= { ipv6MIBObjects 8 }

         ipv6AddrEntry OBJECT-TYPE
            SYNTAX      Ipv6AddrEntry
            MAX-ACCESS  not-accessible
            STATUS      current
            DESCRIPTION
                "The addressing information for one of this
                node's interface addresses."
            INDEX   { ipv6IfIndex, ipv6AddrAddress }
            ::= { ipv6AddrTable 1 }

         Ipv6AddrEntry ::=
            SEQUENCE {
                 ipv6AddrAddress        Ipv6Address,
                 ipv6AddrPfxLength      INTEGER,
                 ipv6AddrType           INTEGER,
                 ipv6AddrAnycastFlag    TruthValue,
                 ipv6AddrStatus         INTEGER
                }

         ipv6AddrAddress OBJECT-TYPE
            SYNTAX      Ipv6Address
            MAX-ACCESS  not-accessible
            STATUS      current
            DESCRIPTION
              "The IPv6 address to which this entry's addressing
              information pertains."
            ::= { ipv6AddrEntry 1 }

         ipv6AddrPfxLength OBJECT-TYPE
            SYNTAX      INTEGER(0..128)
            UNITS       "bits"
            MAX-ACCESS  read-only
            STATUS      current
            DESCRIPTION
              "The length of the prefix (in bits) associated with
              the IPv6 address of this entry."
            ::= { ipv6AddrEntry 2 }

         ipv6AddrType OBJECT-TYPE
            SYNTAX      INTEGER {
                                -- address has been formed
                                -- using stateless
                 stateless(1),  -- autoconfiguration

                                -- address has been acquired
                                -- by stateful means
                                -- (e.g. DHCPv6, manual
                 stateful(2),   -- configuration)

                                -- type can not be determined
                 unknown(3)     -- for some reason.
               }
            MAX-ACCESS  read-only
            STATUS      current
            DESCRIPTION
               "The type of address. Note that 'stateless(1)'
               refers to an address that was statelessly
               autoconfigured; 'stateful(2)' refers to a address
               which was acquired by via a stateful protocol
               (e.g. DHCPv6, manual configuration)."
            ::= { ipv6AddrEntry 3 }

         ipv6AddrAnycastFlag OBJECT-TYPE
             SYNTAX      TruthValue
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
               "This object has the value 'true(1)', if this
               address is an anycast address and the value
               'false(2)' otherwise."
             ::= { ipv6AddrEntry 4 }

         ipv6AddrStatus OBJECT-TYPE
            SYNTAX      INTEGER {
                     preferred(1),

                     deprecated(2),

                     invalid(3),

                     inaccessible(4),

                     unknown(5)   -- status can not be determined
                                  -- for some reason.
                    }
            MAX-ACCESS  read-only
            STATUS      current
            DESCRIPTION
              "Address status.  The preferred(1) state indicates
              that this is a valid address that can appear as
              the destination or source address of a packet.
              The deprecated(2) state indicates that this is
              a valid but deprecated address that should no longer
              be used as a source address in new communications,
              but packets addressed to such an address are
              processed as expected. The invalid(3) state indicates
              that this is not valid address which should not
              appear as the destination or source address of
              a packet. The inaccessible(4) state indicates that
              the address is not accessible because the interface
              to which this address is assigned is not operational."
            ::= { ipv6AddrEntry 5 }


         -- IPv6 Routing objects

         ipv6RouteNumber OBJECT-TYPE
             SYNTAX      Gauge32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
               "The number of current ipv6RouteTable entries.
               This is primarily to avoid having to read
               the table in order to determine this number."
             ::= { ipv6MIBObjects 9 }

         ipv6DiscardedRoutes OBJECT-TYPE
             SYNTAX      Counter32
             MAX-ACCESS  read-only
             STATUS      current
             DESCRIPTION
               "The number of routing entries which were chosen
                to be discarded even though they are valid.  One
                possible reason for discarding such an entry could
                be to free-up buffer space for other routing
                entries."
             ::= { ipv6MIBObjects 10 }


         -- IPv6 Routing table

         ipv6RouteTable OBJECT-TYPE
             SYNTAX     SEQUENCE OF Ipv6RouteEntry
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
               "IPv6 Routing table. This table contains
               an entry for each valid IPv6 unicast route
               that can be used for packet forwarding
               determination."
             ::= { ipv6MIBObjects 11 }

         ipv6RouteEntry OBJECT-TYPE
             SYNTAX     Ipv6RouteEntry
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
                     "A routing entry."
             INDEX   { ipv6RouteDest,
                       ipv6RoutePfxLength,
                       ipv6RouteIndex }
             ::= { ipv6RouteTable 1 }

         Ipv6RouteEntry ::= SEQUENCE {
                 ipv6RouteDest           Ipv6Address,
                 ipv6RoutePfxLength      INTEGER,
                 ipv6RouteIndex          Unsigned32,
                 ipv6RouteIfIndex        Ipv6IfIndexOrZero,
                 ipv6RouteNextHop        Ipv6Address,
                 ipv6RouteType           INTEGER,
                 ipv6RouteProtocol       INTEGER,
                 ipv6RoutePolicy         Integer32,
                 ipv6RouteAge            Unsigned32,
                 ipv6RouteNextHopRDI     Unsigned32,
                 ipv6RouteMetric         Unsigned32,
                 ipv6RouteWeight         Unsigned32,
                 ipv6RouteInfo           RowPointer,
                 ipv6RouteValid          TruthValue
             }

         ipv6RouteDest OBJECT-TYPE
             SYNTAX     Ipv6Address
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
               "The destination IPv6 address of this route.
               This object may not take a Multicast address
               value."
             ::= { ipv6RouteEntry 1 }

         ipv6RoutePfxLength OBJECT-TYPE
             SYNTAX     INTEGER(0..128)
             UNITS      "bits"
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
               "Indicates the prefix length of the destination
               address."
             ::= { ipv6RouteEntry 2 }

         ipv6RouteIndex OBJECT-TYPE
             SYNTAX     Unsigned32
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
               "The value which uniquely identifies the route
               among the routes to the same network layer
               destination.  The way this value is chosen is
               implementation specific but it must be unique for
               ipv6RouteDest/ipv6RoutePfxLength pair and remain
               constant for the life of the route."
             ::= { ipv6RouteEntry 3 }

         ipv6RouteIfIndex OBJECT-TYPE
             SYNTAX     Ipv6IfIndexOrZero
             MAX-ACCESS read-only
             STATUS     current
             DESCRIPTION
               "The index value which uniquely identifies the local
               interface through which the next hop of this
               route should be reached.  The interface identified
               by a particular value of this index is the same
               interface as identified by the same value of
               ipv6IfIndex.  For routes of the discard type this
               value can be zero."
             ::= { ipv6RouteEntry 4 }

         ipv6RouteNextHop OBJECT-TYPE
             SYNTAX     Ipv6Address
             MAX-ACCESS read-only
             STATUS     current
             DESCRIPTION
               "On remote routes, the address of the next
               system en route;  otherwise, ::0
               ('00000000000000000000000000000000'H in ASN.1
               string representation)."
             ::= { ipv6RouteEntry 5 }

         ipv6RouteType OBJECT-TYPE
             SYNTAX     INTEGER {
                other(1),     -- none of the following

                              -- an route indicating that
                              -- packets to destinations
                              -- matching this route are
                discard(2),   -- to be discarded

                              -- route to directly
                local(3),     -- connected (sub-)network

                              -- route to a remote

                remote(4)     -- destination

             }
             MAX-ACCESS read-only
             STATUS     current
             DESCRIPTION
                "The type of route. Note that 'local(3)' refers
                to a route for which the next hop is the final
                destination; 'remote(4)' refers to a route for
                which  the  next  hop is not the final
                destination; 'discard(2)' refers to a route
                indicating that packets to destinations matching
                this route are to be discarded (sometimes called
                black-hole route)."
             ::= { ipv6RouteEntry 6 }

         ipv6RouteProtocol OBJECT-TYPE
             SYNTAX     INTEGER {
               other(1),   -- none of the following

                           -- non-protocol information,
                           -- e.g., manually configured
               local(2),   -- entries

               netmgmt(3), -- static route

                           -- obtained via Neighbor
                           -- Discovery protocol,
               ndisc(4),   -- e.g., result of Redirect

                           -- the following are all
                           -- dynamic routing protocols
               rip(5),     -- RIPng
               ospf(6),    -- Open Shortest Path First
               bgp(7),     -- Border Gateway Protocol
               idrp(8),    -- InterDomain Routing Protocol
               igrp(9)     -- InterGateway Routing Protocol
             }
             MAX-ACCESS read-only
             STATUS     current
             DESCRIPTION
               "The routing mechanism via which this route was
               learned."
             ::= { ipv6RouteEntry 7 }

         ipv6RoutePolicy OBJECT-TYPE
             SYNTAX     Integer32
             MAX-ACCESS read-only
             STATUS     current
             DESCRIPTION
              "The general set of conditions that would cause the
              selection of one multipath route (set of next hops
              for a given destination) is referred to as 'policy'.
              Unless the mechanism indicated by ipv6RouteProtocol
              specified otherwise, the policy specifier is the
              8-bit Traffic Class field of the IPv6 packet header
              that is zero extended at the left to a 32-bit value.

              Protocols defining 'policy' otherwise must either
              define a set of values which are valid for
              this object or must implement an integer-
              instanced  policy table for which this object's
              value acts as an index."
             ::= { ipv6RouteEntry 8 }

         ipv6RouteAge OBJECT-TYPE
             SYNTAX     Unsigned32
             UNITS      "seconds"
             MAX-ACCESS read-only
             STATUS     current
             DESCRIPTION
                "The number of seconds since this route was last
                updated or otherwise determined to be correct.
                Note that no semantics of `too old' can be implied
                except through knowledge of the routing protocol
                by which the route was learned."
             ::= { ipv6RouteEntry 9 }

         ipv6RouteNextHopRDI OBJECT-TYPE
             SYNTAX     Unsigned32
             MAX-ACCESS read-only
             STATUS     current
             DESCRIPTION
                "The Routing Domain ID of the Next Hop.
                The  semantics of this object are determined by
                the routing-protocol specified in  the  route's
                ipv6RouteProtocol value.   When  this object is
                unknown or not relevant its value should be set
                to zero."
             ::= { ipv6RouteEntry 10 }

         ipv6RouteMetric OBJECT-TYPE
             SYNTAX     Unsigned32
             MAX-ACCESS read-only
             STATUS     current
             DESCRIPTION
                "The routing metric for this route. The
                semantics of this metric are determined by the
                routing protocol specified in the route's
                ipv6RouteProtocol value.  When this is unknown
                or not relevant to the protocol indicated by
                ipv6RouteProtocol, the object value should be
                set to its maximum value (4,294,967,295)."
             ::= { ipv6RouteEntry 11 }

         ipv6RouteWeight OBJECT-TYPE
             SYNTAX     Unsigned32
             MAX-ACCESS read-only
             STATUS     current
             DESCRIPTION
                "The system internal weight value for this route.
                The semantics of this value are determined by
                the implementation specific rules. Generally,
                within routes with the same ipv6RoutePolicy value,
                the lower the weight value the more preferred is
                the route."
             ::= { ipv6RouteEntry 12 }

         ipv6RouteInfo OBJECT-TYPE
             SYNTAX     RowPointer
             MAX-ACCESS read-only
             STATUS     current
             DESCRIPTION
                "A reference to MIB definitions specific to the
                particular routing protocol which is responsible
                for this route, as determined by the  value
                specified  in the route's ipv6RouteProto value.
                If this information is not present,  its  value
                should be set to the OBJECT ID { 0 0 },
                which is a syntactically valid object  identifier,
                and any implementation conforming to ASN.1
                and the Basic Encoding Rules must  be  able  to
                generate and recognize this value."
             ::= { ipv6RouteEntry 13 }

         ipv6RouteValid OBJECT-TYPE
             SYNTAX     TruthValue
             MAX-ACCESS read-write
             STATUS     current
             DESCRIPTION
                "Setting this object to the value 'false(2)' has
                the effect of invalidating the corresponding entry
                in the ipv6RouteTable object.  That is, it
                effectively disassociates the destination
                identified with said entry from the route
                identified with said entry.  It is an
                implementation-specific matter as to whether the
                agent removes an invalidated entry from the table.
                Accordingly, management stations must be prepared
                to receive tabular information from agents that
                corresponds to entries not currently in use.
                Proper interpretation of such entries requires
                examination of the relevant ipv6RouteValid
                object."
             DEFVAL  { true }
             ::= { ipv6RouteEntry 14 }


         -- IPv6 Address Translation table

         ipv6NetToMediaTable OBJECT-TYPE
             SYNTAX      SEQUENCE OF Ipv6NetToMediaEntry
             MAX-ACCESS  not-accessible
             STATUS      current
             DESCRIPTION
               "The IPv6 Address Translation table used for
               mapping from IPv6 addresses to physical addresses.

               The IPv6 address translation table contain the
               Ipv6Address to `physical' address equivalencies.
               Some interfaces do not use translation tables
               for determining address equivalencies; if all
               interfaces are of this type, then the Address
               Translation table is empty, i.e., has zero
               entries."
             ::= { ipv6MIBObjects 12 }

         ipv6NetToMediaEntry OBJECT-TYPE
             SYNTAX     Ipv6NetToMediaEntry
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
               "Each entry contains one IPv6 address to `physical'
               address equivalence."
             INDEX   { ipv6IfIndex,
                       ipv6NetToMediaNetAddress }
             ::= { ipv6NetToMediaTable 1 }

         Ipv6NetToMediaEntry ::= SEQUENCE {
                 ipv6NetToMediaNetAddress
                     Ipv6Address,
                 ipv6NetToMediaPhysAddress
                     PhysAddress,
                 ipv6NetToMediaType
                     INTEGER,
                 ipv6IfNetToMediaState
                     INTEGER,
                 ipv6IfNetToMediaLastUpdated
                     TimeStamp,
                 ipv6NetToMediaValid
                     TruthValue
             }

         ipv6NetToMediaNetAddress OBJECT-TYPE
             SYNTAX     Ipv6Address
             MAX-ACCESS not-accessible
             STATUS     current
             DESCRIPTION
                "The IPv6 Address corresponding to
                the media-dependent `physical' address."
             ::= { ipv6NetToMediaEntry 1 }

         ipv6NetToMediaPhysAddress OBJECT-TYPE
             SYNTAX     PhysAddress
             MAX-ACCESS read-only
             STATUS     current
             DESCRIPTION
               "The media-dependent `physical' address."
             ::= { ipv6NetToMediaEntry 2 }

         ipv6NetToMediaType OBJECT-TYPE
             SYNTAX     INTEGER {
                         other(1),    -- none of the following
                         dynamic(2),  -- dynamically resolved
                         static(3),   -- statically configured
                         local(4)     -- local interface
                        }
             MAX-ACCESS read-only
             STATUS     current
             DESCRIPTION
                     "The type of the mapping. The 'dynamic(2)' type
                     indicates that the IPv6 address to physical
                     addresses mapping has been dynamically
                     resolved using the IPv6 Neighbor Discovery
                     protocol. The static(3)' types indicates that
                     the mapping has been statically configured.
                     The local(4) indicates that the mapping is
                     provided for an entity's own interface address."
             ::= { ipv6NetToMediaEntry 3 }

        ipv6IfNetToMediaState OBJECT-TYPE
            SYNTAX      INTEGER {
                     reachable(1), -- confirmed reachability

                     stale(2),     -- unconfirmed reachability

                     delay(3),     -- waiting for reachability
                                   -- confirmation before entering
                                   -- the probe state

                     probe(4),     -- actively probing

                     invalid(5),   -- an invalidated mapping

                     unknown(6)    -- state can not be determined
                                   -- for some reason.
                    }
            MAX-ACCESS  read-only
            STATUS      current
            DESCRIPTION
                "The Neighbor Unreachability Detection [8] state
                for the interface when the address mapping in
                this entry is used."
            ::= { ipv6NetToMediaEntry 4 }

        ipv6IfNetToMediaLastUpdated OBJECT-TYPE
            SYNTAX      TimeStamp
            MAX-ACCESS  read-only
            STATUS      current
            DESCRIPTION
                "The value of sysUpTime at the time this entry
                was last updated.  If this entry was updated prior
                to the last re-initialization of the local network
                management subsystem, then this object contains
                a zero value."
            ::= { ipv6NetToMediaEntry 5 }

         ipv6NetToMediaValid OBJECT-TYPE
             SYNTAX     TruthValue
             MAX-ACCESS read-write
             STATUS     current
             DESCRIPTION
              "Setting this object to the value 'false(2)' has
              the effect of invalidating the corresponding entry
              in the ipv6NetToMediaTable.  That is, it effectively
              disassociates the interface identified with said
              entry from the mapping identified with said entry.
              It is an implementation-specific matter as to
              whether the agent removes an invalidated entry
              from the table.  Accordingly, management stations
              must be prepared to receive tabular information
              from agents that corresponds to entries not
              currently in use.  Proper interpretation of such
              entries requires examination of the relevant
              ipv6NetToMediaValid object."
             DEFVAL  { true }
             ::= { ipv6NetToMediaEntry 6 }


        -- definition of IPv6-related notifications.
        -- Note that we need ipv6NotificationPrefix with the 0
        -- sub-identifier to make this MIB to translate to
        -- an SNMPv1 format in a reversible way. For example
        -- it is needed for proxies that convert SNMPv1 traps
        -- to SNMPv2 notifications without MIB knowledge.

        ipv6Notifications      OBJECT IDENTIFIER
             ::= { ipv6MIB 2 }
        ipv6NotificationPrefix OBJECT IDENTIFIER
             ::= { ipv6Notifications 0 }

        ipv6IfStateChange NOTIFICATION-TYPE
             OBJECTS {
                      ipv6IfDescr,
                      ipv6IfOperStatus -- the new state of the If.
                     }
             STATUS             current
             DESCRIPTION
                "An ipv6IfStateChange notification signifies
                that there has been a change in the state of
                an ipv6 interface.  This notification should
                be generated when the interface's operational
                status transitions to or from the up(1) state."

             ::= { ipv6NotificationPrefix 1 }


        -- conformance information

        ipv6Conformance OBJECT IDENTIFIER ::= { ipv6MIB 3 }

        ipv6Compliances OBJECT IDENTIFIER ::= { ipv6Conformance 1 }
        ipv6Groups      OBJECT IDENTIFIER ::= { ipv6Conformance 2 }

        -- compliance statements

        ipv6Compliance MODULE-COMPLIANCE
            STATUS  current
            DESCRIPTION
              "The compliance statement for SNMPv2 entities which
              implement ipv6 MIB."
            MODULE  -- this module
                MANDATORY-GROUPS { ipv6GeneralGroup,
                                   ipv6NotificationGroup }
                  OBJECT    ipv6Forwarding
                    MIN-ACCESS  read-only
                    DESCRIPTION
                       "An agent is not required to provide write
                        access to this object"
                  OBJECT    ipv6DefaultHopLimit
                    MIN-ACCESS  read-only
                    DESCRIPTION
                       "An agent is not required to provide write
                        access to this object"
                  OBJECT    ipv6IfDescr
                    MIN-ACCESS  read-only
                    DESCRIPTION
                       "An agent is not required to provide write
                        access to this object"
                  OBJECT    ipv6IfIdentifier
                    MIN-ACCESS  read-only
                    DESCRIPTION
                       "An agent is not required to provide write
                        access to this object"
                  OBJECT    ipv6IfIdentifierLength
                    MIN-ACCESS  read-only
                    DESCRIPTION
                       "An agent is not required to provide write
                        access to this object"

                  OBJECT    ipv6IfAdminStatus
                    MIN-ACCESS  read-only
                    DESCRIPTION
                       "An agent is not required to provide write
                        access to this object"
                  OBJECT    ipv6RouteValid
                    MIN-ACCESS  read-only
                    DESCRIPTION
                       "An agent is not required to provide write
                        access to this object"
                  OBJECT    ipv6NetToMediaValid
                    MIN-ACCESS  read-only
                    DESCRIPTION
                       "An agent is not required to provide write
                        access to this object"
            ::= { ipv6Compliances 1 }

        ipv6GeneralGroup OBJECT-GROUP
            OBJECTS { ipv6Forwarding,
                      ipv6DefaultHopLimit,
                      ipv6Interfaces,
                      ipv6IfTableLastChange,
                      ipv6IfDescr,
                      ipv6IfLowerLayer,
                      ipv6IfEffectiveMtu,
                      ipv6IfReasmMaxSize,
                      ipv6IfIdentifier,
                      ipv6IfIdentifierLength,
                      ipv6IfPhysicalAddress,
                      ipv6IfAdminStatus,
                      ipv6IfOperStatus,
                      ipv6IfLastChange,
                      ipv6IfStatsInReceives,
                      ipv6IfStatsInHdrErrors,
                      ipv6IfStatsInTooBigErrors,
                      ipv6IfStatsInNoRoutes,
                      ipv6IfStatsInAddrErrors,
                      ipv6IfStatsInUnknownProtos,
                      ipv6IfStatsInTruncatedPkts,
                      ipv6IfStatsInDiscards,
                      ipv6IfStatsInDelivers,
                      ipv6IfStatsOutForwDatagrams,
                      ipv6IfStatsOutRequests,
                      ipv6IfStatsOutDiscards,
                      ipv6IfStatsOutFragOKs,
                      ipv6IfStatsOutFragFails,
                      ipv6IfStatsOutFragCreates,
                      ipv6IfStatsReasmReqds,
                      ipv6IfStatsReasmOKs,
                      ipv6IfStatsReasmFails,
                      ipv6IfStatsInMcastPkts,
                      ipv6IfStatsOutMcastPkts,
                      ipv6AddrPrefixOnLinkFlag,
                      ipv6AddrPrefixAutonomousFlag,
                      ipv6AddrPrefixAdvPreferredLifetime,
                      ipv6AddrPrefixAdvValidLifetime,
                      ipv6AddrPfxLength,
                      ipv6AddrType,
                      ipv6AddrAnycastFlag,
                      ipv6AddrStatus,
                      ipv6RouteNumber,
                      ipv6DiscardedRoutes,
                      ipv6RouteIfIndex,
                      ipv6RouteNextHop,
                      ipv6RouteType,
                      ipv6RouteProtocol,
                      ipv6RoutePolicy,
                      ipv6RouteAge,
                      ipv6RouteNextHopRDI,
                      ipv6RouteMetric,
                      ipv6RouteWeight,
                      ipv6RouteInfo,
                      ipv6RouteValid,
                      ipv6NetToMediaPhysAddress,
                      ipv6NetToMediaType,
                      ipv6IfNetToMediaState,
                      ipv6IfNetToMediaLastUpdated,
                      ipv6NetToMediaValid }
            STATUS    current
            DESCRIPTION
                 "The IPv6 group of objects providing for basic
                  management of IPv6 entities."
            ::= { ipv6Groups 1 }

        ipv6NotificationGroup NOTIFICATION-GROUP
            NOTIFICATIONS { ipv6IfStateChange }
            STATUS    current
            DESCRIPTION
                 "The notification that an IPv6 entity is required
                  to implement."


            ::= { ipv6Groups 2 }

         END
