--
-- RFC 2465
--

 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
