DVMRP-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, experimental,
    Integer32, Counter32, Gauge32
    IpAddress, TimeTicks             FROM SNMPv2-SMI
    DisplayString, RowStatus         FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP  FROM SNMPv2-CONF;

dvmrpMIB MODULE-IDENTITY
    LAST-UPDATED "9511211400Z"
    ORGANIZATION "IETF IDMR Working Group."
    CONTACT-INFO
            " Dave Thaler
              University of Michigan
              1301 Beal Ave.
              Ann Arbor, MI 48109-2122
              EMail: thalerd@eecs.umich.edu"
    DESCRIPTION
            "The MIB module for management of DVMRP routers."
    ::= { experimental 62 }

dvmrpMIBObjects OBJECT IDENTIFIER ::= { dvmrpMIB 1 }

dvmrp           OBJECT IDENTIFIER ::= { dvmrpMIBObjects 1 }

dvmrpVersion OBJECT-TYPE
    SYNTAX     DisplayString
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The router's version number."
    ::= { dvmrp 1 }

dvmrpGenerationId OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
            "The generation identifier for the routing process.  This is
            used by neighboring routers to detect whether pruning
            information should be resent.  Writing a new value to this
            object will cause the multicast router to be restarted."
    ::= { dvmrp 2 }


-- The DVMRP Virtual Interface Table

dvmrpVInterfaceTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF DvmrpVInterfaceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the router's DVMRP virtual
            interfaces."
    ::= { dvmrp 3 }

dvmrpVInterfaceEntry OBJECT-TYPE
    SYNTAX     DvmrpVInterfaceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the dvmrpVInterfaceTable.
            This row augments ipMRouteInterfaceEntry in the IP
            Multicast MIB, where the threshold object resides."
    INDEX      { dvmrpVInterfaceVifIndex }
    ::= { dvmrpVInterfaceTable 1 }

DvmrpVInterfaceEntry ::= SEQUENCE {
    dvmrpVInterfaceVifIndex           Integer32,
    dvmrpVInterfaceType               INTEGER,
    dvmrpVInterfaceOperState          INTEGER,
    dvmrpVInterfaceLocalAddress       IpAddress,
    dvmrpVInterfaceRemoteAddress      IpAddress,
    dvmrpVInterfaceRemoteSubnetMask   IpAddress,
    dvmrpVInterfaceMetric             Integer32,
    dvmrpVInterfaceRateLimit          Integer32,
    dvmrpVInterfaceInPkts             Counter32,
    dvmrpVInterfaceOutPkts            Counter32,
    dvmrpVInterfaceInOctets           Counter32,
    dvmrpVInterfaceOutOctets          Counter32,
    dvmrpVInterfaceStatus             RowStatus 
}

dvmrpVInterfaceVifIndex OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The ifIndex value of this DVMRP virtual interface."
    ::= { dvmrpVInterfaceEntry 1 }

dvmrpVInterfaceType OBJECT-TYPE
    SYNTAX     INTEGER { tunnel(1), srcrt(2), querier(3), subnet(4) }
    MAX-ACCESS read-only


    STATUS     current
    DESCRIPTION
            "The type of this DVMRP virtual interface, whether it uses
            a tunnel, source routing, a physical interface for which
            we are a querier, or a physical interface for which we are
            not a querier."
    DEFVAL     { tunnel }
    ::= { dvmrpVInterfaceEntry 2 }

dvmrpVInterfaceOperState OBJECT-TYPE
    SYNTAX     INTEGER { up(1), down(2) }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The current operational state of this DVMRP virtual
            interface."
    ::= { dvmrpVInterfaceEntry 3 }

dvmrpVInterfaceLocalAddress OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The IP address of the local end of this DVMRP virtual
            interface."
    ::= { dvmrpVInterfaceEntry 4 }

dvmrpVInterfaceRemoteAddress OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The IP address of the remote end of this DVMRP virtual
            interface.  For a tunnel (including source routed), this
            is the IP address of the neighboring router.  For a subnet,
            this is the subnet address."
    ::= { dvmrpVInterfaceEntry 5 }

dvmrpVInterfaceRemoteSubnetMask OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The subnet mask for a directly connected subnet.  For
            a tunnel, this should be 0.0.0.0."
    ::= { dvmrpVInterfaceEntry 6 }

dvmrpVInterfaceMetric OBJECT-TYPE


    SYNTAX     Integer32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The distance metric for this DVMRP virtual interface which
            is used to calculate distance vectors."
    DEFVAL     { 1 }
    ::= { dvmrpVInterfaceEntry 7 }

dvmrpVInterfaceRateLimit OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The rate-limit, in kilobits per second, of forwarded
            multicast traffic on the DVMRP virtual interface.  A rate-
            limit of 0 indicates that no rate limiting is done."
    DEFVAL     { 500 }
    ::= { dvmrpVInterfaceEntry 8 }

dvmrpVInterfaceInPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of packets that have arrived on the DVMRP
            virtual interface."
    ::= { dvmrpVInterfaceEntry 9 }

dvmrpVInterfaceOutPkts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of packets that have been sent on the DVMRP
            virtual interface."
    ::= { dvmrpVInterfaceEntry 10 }

dvmrpVInterfaceInOctets OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of octets that have arrived on the DVMRP
            virtual interface."
    ::= { dvmrpVInterfaceEntry 11 }

dvmrpVInterfaceOutOctets OBJECT-TYPE


    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of octets that have been sent on the DVMRP
            virtual interface."
    ::= { dvmrpVInterfaceEntry 12 }

dvmrpVInterfaceStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The status of this row, by which new entries may be
            created, or old entries deleted from this table.  A
            vif can be disabled by setting this to notInService,
            and as such the value of this object reflects the
            AdminState as opposed to the OperState.  Only vifs of
            type tunnel can be created or destroyed."
    ::= { dvmrpVInterfaceEntry 13 }

-- The DVMRP Neighbor Table

dvmrpNeighborTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF DvmrpNeighborEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the router's DVMRP
            neighbors."
    ::= { dvmrp 4 }

dvmrpNeighborEntry OBJECT-TYPE
    SYNTAX     DvmrpNeighborEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the dvmrpNeighborTable."
    INDEX      { dvmrpNeighborVifIndex, dvmrpNeighborAddress }
    ::= { dvmrpNeighborTable 1 }

DvmrpNeighborEntry ::= SEQUENCE {
    dvmrpNeighborVifIndex        Integer32,
    dvmrpNeighborAddress         IpAddress,
    dvmrpNeighborUpTime          TimeTicks,
    dvmrpNeighborExpiryTime      TimeTicks,
    dvmrpNeighborVersion         DisplayString,


    dvmrpNeighborGenerationId    Integer32 
}

dvmrpNeighborVifIndex OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The value of VifIndex for the virtual interface used to
            reach this DVMRP neighbor."
    ::= { dvmrpNeighborEntry 1 }

dvmrpNeighborAddress OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The IP address of the DVMRP neighbor for which this entry
            contains information."
    ::= { dvmrpNeighborEntry 2 }

dvmrpNeighborUpTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time since this DVMRP neighbor (last) became a neighbor
            of the local router."
    ::= { dvmrpNeighborEntry 3 }

dvmrpNeighborExpiryTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The minimum time remaining before this DVMRP neighbor will
            be aged out."
    ::= { dvmrpNeighborEntry 4 }

dvmrpNeighborVersion OBJECT-TYPE
    SYNTAX     DisplayString
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The neighoring router's version number."
    ::= { dvmrpNeighborEntry 5 }

dvmrpNeighborGenerationId OBJECT-TYPE
    SYNTAX     Integer32


    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The neighboring router's generation identifier."
    ::= { dvmrpNeighborEntry 6 }

-- The DVMRP Route Table

dvmrpRouteTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF DvmrpRouteEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The routing table used by DVMRP in place of the unicast
            routing table."
    ::= { dvmrp 5 }

dvmrpRouteEntry OBJECT-TYPE
    SYNTAX     DvmrpRouteEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) containing the multicast routing
            information used by DVMRP in place of the unicast routing
            information."
    INDEX      { dvmrpRouteSource, dvmrpRouteSourceMask }
    ::= { dvmrpRouteTable 1 }

DvmrpRouteEntry ::= SEQUENCE {
    dvmrpRouteSource             IpAddress,
    dvmrpRouteSourceMask         IpAddress,
    dvmrpRouteUpstreamNeighbor   IpAddress,
    dvmrpRouteVifIndex           Integer32,
    dvmrpRouteMetric             Integer32,
    dvmrpRouteExpiryTime         TimeTicks 
}

dvmrpRouteSource OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The network address which when combined with the
            corresponding value of dvmrpRouteSourceMask identifies the
            sources for which this entry contains multicast routing
            information."
    ::= { dvmrpRouteEntry 1 }


dvmrpRouteSourceMask OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The network mask which when combined with the corresponding
            value of dvmrpRouteSource identifies the sources for which
            this entry contains multicast routing information."
    ::= { dvmrpRouteEntry 2 }

dvmrpRouteUpstreamNeighbor OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The address of the upstream neighbor (e.g., RPF neighbor)
            from which IP datagrams from these sources are received."
    ::= { dvmrpRouteEntry 3 }

dvmrpRouteVifIndex OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of dvmrpVInterfaceVifIndex for the virtual
            interface on which IP datagrams sent by these sources are
            received."
    ::= { dvmrpRouteEntry 4 }

dvmrpRouteMetric OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The distance in hops to the source subnet."
    ::= { dvmrpRouteEntry 5 }

dvmrpRouteExpiryTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The minimum amount of time remaining before this entry will
            be aged out."
    ::= { dvmrpRouteEntry 6 }

-- The DVMRP Routing Next Hop Table


dvmrpRouteNextHopTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF DvmrpRouteNextHopEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table containing information on the next
            hops on outgoing interfaces for routing IP multicast
            datagrams."
    ::= { dvmrp 6 }

dvmrpRouteNextHopEntry OBJECT-TYPE
    SYNTAX     DvmrpRouteNextHopEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the list of next hops on
            outgoing interfaces to which IP multicast datagrams from
            particular sources are routed."
    INDEX      { dvmrpRouteNextHopSource, dvmrpRouteNextHopSourceMask,
                 dvmrpRouteNextHopVifIndex }
    ::= { dvmrpRouteNextHopTable 1 }

DvmrpRouteNextHopEntry ::= SEQUENCE {
    dvmrpRouteNextHopSource             IpAddress,
    dvmrpRouteNextHopSourceMask         IpAddress,
    dvmrpRouteNextHopVifIndex           Integer32,
    dvmrpRouteNextHopType               INTEGER 
}

dvmrpRouteNextHopSource OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The network address which when combined with the
            corresponding value of dvmrpRouteNextHopSourceMask
            identifies the sources for which this entry specifies
            a next hop on an outgoing interface."
    ::= { dvmrpRouteNextHopEntry 1 }

dvmrpRouteNextHopSourceMask OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The network mask which when combined with the corresponding
            value of dvmrpRouteNextHopSource identifies the sources for
            which this entry specifies a next hop on an outgoing
            interface."


    ::= { dvmrpRouteNextHopEntry 2 }

dvmrpRouteNextHopVifIndex OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The dvmrpVInterfaceVifIndex value of the virtual interface
            for the outgoing interface for this next hop."
    ::= { dvmrpRouteNextHopEntry 3 }

dvmrpRouteNextHopType OBJECT-TYPE
    SYNTAX     INTEGER { leaf(1), branch(2) }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Type is leaf if no neighbors exist on the outgoing virtual
            interface.  Otherwise, type is branch."
    ::= { dvmrpRouteNextHopEntry 4 }

-- The DVMRP Boundary Table

dvmrpBoundaryTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF DvmrpBoundaryEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the router's DVMRP
            virtual interface boundaries."
    ::= { dvmrp 7 }

dvmrpBoundaryEntry OBJECT-TYPE
    SYNTAX     DvmrpBoundaryEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the dvmrpBoundaryTable."
    INDEX      { dvmrpBoundaryVifIndex, dvmrpBoundaryAddress,
                 dvmrpBoundaryAddressMask }
    ::= { dvmrpBoundaryTable 1 }

DvmrpBoundaryEntry ::= SEQUENCE {
    dvmrpBoundaryVifIndex           Integer32,
    dvmrpBoundaryAddress            IpAddress,
    dvmrpBoundaryAddressMask        IpAddress,
    dvmrpBoundaryStatus             RowStatus 
}

dvmrpBoundaryVifIndex OBJECT-TYPE


    SYNTAX     Integer32
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The VifIndex value of the DVMRP virtual interface to
            which this boundary applies.  Packets with a destination
            address in the associated address/mask range will not
            be forwarded out this virtual interface."
    ::= { dvmrpBoundaryEntry 1 }

dvmrpBoundaryAddress OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The group address of the scoped boundary."
    ::= { dvmrpBoundaryEntry 2 }

dvmrpBoundaryAddressMask OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The group address mask of the scoped boundary."
    ::= { dvmrpBoundaryEntry 3 }

dvmrpBoundaryStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The status of this row, by which new entries may be
            created, or old entries deleted from this table."
    ::= { dvmrpBoundaryEntry 4 }

-- The DVMRP Alternate Subnet Table

dvmrpAltNetTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF DvmrpAltNetEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the router's alternate
            subnets on physical interfaces for use in constructing
            the routing tables."
    ::= { dvmrp 8 }

dvmrpAltNetEntry OBJECT-TYPE


    SYNTAX     DvmrpAltNetEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the dvmrpAltNetTable."
    INDEX      { dvmrpAltNetVifIndex, dvmrpAltNetAddress,
                 dvmrpAltNetMask }
    ::= { dvmrpAltNetTable 1 }

DvmrpAltNetEntry ::= SEQUENCE {
    dvmrpAltNetVifIndex           Integer32,
    dvmrpAltNetAddress            IpAddress,
    dvmrpAltNetMask               IpAddress,
    dvmrpAltNetStatus             RowStatus 
}

dvmrpAltNetVifIndex OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The VifIndex value of the DVMRP virtual interface to
            which this alternate subnet applies."
    ::= { dvmrpAltNetEntry 1 }

dvmrpAltNetAddress OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The subnet address of the alternate subnet."
    ::= { dvmrpAltNetEntry 2 }

dvmrpAltNetMask OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The subnet mask of the alternate subnet."
    ::= { dvmrpAltNetEntry 3 }

dvmrpAltNetStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The status of this row, by which new entries may be
            created, or old entries deleted from this table."
    ::= { dvmrpAltNetEntry 4 }


-- dvmrp statistics

dvmrpNumRoutes OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of entries in the routing table.  This can
            be used to monitor the routing table size to detect
            illegal advertisements of unicast routes."
    ::= { dvmrp 9 }

dvmrpReachableRoutes OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of entries in the routing table with non
            infinite metrics.  This can be used to detect network
            partitions by observing the ratio of reachable routes
            to total routes."
    ::= { dvmrp 10 }

-- conformance information

dvmrpMIBConformance OBJECT IDENTIFIER ::= { dvmrpMIB 2 }

dvmrpMIBCompliances OBJECT IDENTIFIER ::= { dvmrpMIBConformance 1 }

dvmrpMIBGroups      OBJECT IDENTIFIER ::= { dvmrpMIBConformance 2 }

-- compliance statements

dvmrpMIBCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
            "The compliance statement for the DVMRP MIB."
    MODULE  -- this module
        MANDATORY-GROUPS { dvmrpMIBGroup }

    ::= { dvmrpMIBCompliances 1 }

-- units of conformance

dvmrpMIBGroup OBJECT-GROUP
    OBJECTS { dvmrpVersion, dvmrpGenerationId,


              dvmrpVInterfaceType, dvmrpVInterfaceOperState,
              dvmrpVInterfaceLocalAddress, dvmrpVInterfaceRemoteAddress,
              dvmrpVInterfaceRemoteSubnetMask,
              dvmrpVInterfaceMetric, dvmrpVInterfaceRateLimit,
              dvmrpVInterfaceInPkts, dvmrpVInterfaceOutPkts,
              dvmrpVInterfaceInOctets, dvmrpVInterfaceOutOctets,
              dvmrpVInterfaceAdminState, dvmrpVInterfaceStatus,
              dvmrpNeighborUpTime,
              dvmrpNeighborExpiryTime, dvmrpNeighborVersion,
              dvmrpNeighborGenerationId,
              dvmrpRouteUpstreamNeighbor, dvmrpRouteVifIndex,
              dvmrpRouteMetric, dvmrpRouteExpiryTime,
              dvmrpRouteNextHopType,
              dvmrpBoundaryStatus, dvmrpAltNetStatus,
              dvmrpNumRoutes, dvmrpReachableRoutes
            }
    STATUS  current
    DESCRIPTION
            "A collection of objects to support management of DVMRP
            routers."
    ::= { dvmrpMIBGroups 1 }

END
