PIM WG                                                       R. Sivaramu
Internet-Draft                                             Cisco Systems
Expires: October 31, 2005 January 16, 2006                                     J. Lingard
                                                     Data Connection Ltd
                                                                B. Joshi
                                                Infosys Technologies Ltd
                                                          April 29,
                                                           July 15, 2005

                   Protocol Independent Multicast MIB
                      draft-ietf-pim-mib-v2-02.txt
                      draft-ietf-pim-mib-v2-03.txt

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on October 31, 2005. January 16, 2006.

Copyright Notice

   Copyright (C) The Internet Society (2005).

Abstract

   This memo defines a portion of the Management Information Base (MIB)
   for use with network management protocols in the Internet community.
   In particular, it describes managed objects used for managing the
   Protocol Independent Multicast (PIM) protocols (PIM-SM and BIDIR-
   PIM).  This document obsoletes RFC 2934.

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  The Internet-Standard Management Framework . . . . . . . . . .  3
   3.  Overview . . . . . . . . . . . . . . . . . . . . . . . . . . .  3  4
   4.  Definitions  . . . . . . . . . . . . . . . . . . . . . . . . .  4  5
   5.  Security Considerations  . . . . . . . . . . . . . . . . . . . 39 63
   6.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 40 63
   7.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 40 64
   8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 40 64
     8.1   Normative References . . . . . . . . . . . . . . . . . . . 40 64
     8.2   Informative References . . . . . . . . . . . . . . . . . . 41 65
       Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 41 65
       Intellectual Property and Copyright Statements . . . . . . . . 43 67

1.  Introduction

   This memo defines a portion of the Management Information Base (MIB)
   for use with network management protocols in the Internet community.
   In particular, it describes managed objects used for managing the
   Protocol Independent Multicast (PIM) protocols (PIM-SM [I-D.ietf-pim-
   sm-v2-new] and BIDIR-PIM [I-D.ietf-pim-bidir]).

   This document obsoletes RFC 2934 [RFC2934].  RFC 2934 defined an
   experimental MIB module for managing the PIM protocols.  The MIB
   module defined by this document is a complete re-working of the MIB
   module from RFC 2934, with major changes that include the following.

   o  This MIB module is independent of IP version, whereas RFC 2934
      only supported IPv4.

   o  This MIB module includes support for managing BIDIR-PIM.

   o  This MIB module does not include support for managing PIM-DM.

   o  This MIB module does not include support for managing PIM-SM v1.

   o  This MIB module does not depend on the IPv4 Multicast Routing MIB
      defined in RFC 2932 [RFC2932].

   o  This MIB module includes support for configuring SSM ranges and
      static RPs.

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

2.  The Internet-Standard Management Framework

   For a detailed overview of the documents that describe the current
   Internet-Standard Management Framework, please refer to section 7 of
   RFC 3410 [RFC3410].

   Managed objects are accessed via a virtual information store, termed
   the Management Information Base or MIB.  MIB objects are generally
   accessed through the Simple Network Management Protocol (SNMP).
   Objects in the MIB are defined using the mechanisms defined in the
   Structure of Management Information (SMI).  This memo specifies a MIB
   module that is compliant to the SMIv2, which is described in STD 58,
   RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580
   [RFC2580].

3.  Overview

   This MIB module contains the following tables.

   1.   The PIM Interface Table, which contains one row per IP version
        for each interface of the router which is running PIM.

   2.   The PIM Neighbor Table, which contains one row for each of the
        router's PIM neighbors.

   3.   The PIM Neighbor Secondary Address Table, which contains one row
        for each secondary address advertised by each of the router's
        PIM neighbors.

   4.   The PIM Multicast Route (*,G) State Table, which contains one row for each
       multicast routing entry created by PIM. group
        for which PIM has (*,G) state.

   5.   The PIM Next Hop (*,G,I) State Table, which contains one row for each outgoing
       interface list entry in the multicast routing table whose
        group and interface is running PIM. for which PIM has interface-specific (*,G)
        state.

   6.   The PIM (S,G) State Table, which contains one row for each
        source and group for which PIM has (S,G) state.

   7.   The PIM (S,G,I) State Table, which contains one row for each
        source, group and interface for which PIM has interface-specific
        (S,G) state.

   8.   The PIM (S,G,rpt) State Table, which contains one row for each
        source and group for which PIM has (S,G,rpt) state.

   9.   The PIM (S,G,rpt,I) State Table, which contains one row for each
        source, group and interface for which PIM has interface-specific
        (S,G,rpt) state.

   10.  The PIM Bidir DF-Election Table, which contains one row per
        interface for each Rendezvous Point (RP) for which Bidirectional-
       PIM
        Bidirectional-PIM Designated Forwarder (DF) election state is
        maintained.

   7.

   11.  The PIM RP-Set SSM Range Table, which contains information about all the
       available Rendezvous Points for IP one row per range of
        multicast group addresses with to which SSM semantics [RFC3569]
        should be applied.

   12.  The PIM Static RP Table, which contains one row per range of
        multicast group addresses for which a particular address prefixes.

   8. configured RP
        should be used.

   13.  The PIM Candidate-RP Group Mapping Table, which contains one row for each
        mapping from a multicast group address prefix to the IP PIM mode
        and RP address to use for groups within that group prefix,
        regardless of the source of the group mapping information.

   14.  The BSR Candidate-RP Table, which contains one row for each
        multicast group
       prefixes address prefix for which the local router is to
        advertise itself as a Candidate-RP.

   9.

   15.  The PIM Scope Zone BSR RP-Set Table, which contains one row for each of the
       admin scoped zones in the PIM domain to group
        mapping that was learned via BSR.

   16.  The BSR Candidate-BSR Table, which contains Candidate-BSR
        configuration for the router is
       connected. local router.

   17.  The BSR Elected BSR Table, which contains one row for each
        elected BSR.

   This MIB module uses textual conventions defined in the IF-MIB
   [RFC2863] and
   [RFC2863], the INET-ADDRESS-MIB [RFC4001]. [RFC4001] and the IANA-RTPROTO-MIB.

4.  Definitions

PIM-STD-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, mib-2,
    NOTIFICATION-TYPE,
    Unsigned32, TimeTicks            FROM SNMPv2-SMI
    TEXTUAL-CONVENTION,
    RowStatus, TruthValue            FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP,
    NOTIFICATION-GROUP               FROM SNMPv2-CONF
    InterfaceIndexOrZero,
    InterfaceIndex                   FROM IF-MIB
    InetAddressType,
    InetAddressPrefixLength,
    InetAddress, InetVersion         FROM INET-ADDRESS-MIB; INET-ADDRESS-MIB
    IANAipRouteProtocol              FROM IANA-RTPROTO-MIB;

pimStdMIB MODULE-IDENTITY
    LAST-UPDATED "200504290000Z" "200507150000Z" -- April 29, July 15, 2005
    ORGANIZATION "IETF PIM Working Group"
    CONTACT-INFO
            "Email: pim@ietf.org"
    DESCRIPTION
            "The MIB module for management of PIM routers.

            Copyright (C) The Internet Society (2005).  This version of
            this MIB module is part of RFC yyyy; see the RFC itself for
            full legal notices."
-- RFC Ed.: replace yyyy with actual RFC number & remove this note
    REVISION     "200404290000Z"     "200507150000Z" -- April 29, July 15, 2005
    DESCRIPTION  "Initial version, published as RFC yyyy."
-- RFC Ed.: replace yyyy with actual RFC number & remove this note
    ::= { mib-2 XXX }
-- RFC Ed.: replace XXX with IANA-assigned number & remove this note

pimMIBObjects OBJECT IDENTIFIER ::= { pimStdMIB 1 }
pimTraps      OBJECT IDENTIFIER ::= { pimMIBObjects 0 }
pim           OBJECT IDENTIFIER ::= { pimMIBObjects 1 }

--
-- Textual Conventions
--

PimMode ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
            "The PIM mode in which a group is operating.

            none(1)      The group is not using PIM, which may be the
                         case if, for example, it is a link-local or
                         unroutable group address.

            ssm(2)       Source-Specific Multicast (SSM), with PIM
                         Sparse Mode.

            asm(3)       Any Source Multicast (ASM), with PIM Sparse
                         Mode.

            bidir(4)     Bi-directional PIM.

            other(5)     Any other PIM mode."
    SYNTAX     INTEGER {
                  none(1),
                  ssm(2),
                  asm(3),
                  bidir(4),
                  other(5)
               }

PimGroupMappingOriginType ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
            "The mechanism by which a PIM group mapping was learned.

            fixed(1)     Statically created link-local or unroutable
                         group mappings.

            config(2)    Local configuration.

            bsr(3)       The PIM Bootstrap Router (BSR) mechanism
                         [I-D.ietf-pim-sm-bsr].

            autoRP(4)    Cisco's Auto-RP mechanism.

            embedded(5)  The Embedded-RP mechanism [RFC3956] where the
                         RP address is embedded in the multicast group
                         address.

            other(6)     Any other mechanism."
    SYNTAX     INTEGER {
                  fixed(1),
                  config(2),
                  bsr(3),
                  autoRP(4),
                  embedded(5),
                  other(6)
               }

--
-- The PIM Interface Table
--

pimInterfaceTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimInterfaceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the router's PIM interfaces.
            PIM is enabled on all interfaces listed in this table."
    ::= { pim 1 }

pimInterfaceEntry OBJECT-TYPE
    SYNTAX     PimInterfaceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimInterfaceTable."
    INDEX      { pimInterfaceIfIndex,
                 pimInterfaceIPVersion }
    ::= { pimInterfaceTable 1 }

PimInterfaceEntry ::= SEQUENCE {
    pimInterfaceIfIndex              InterfaceIndex,
    pimInterfaceIPVersion            InetVersion,
    pimInterfaceAddressType          InetAddressType,
    pimInterfaceAddress              InetAddress,
    pimInterfaceNetMaskLength        InetAddressPrefixLength,
    pimInterfaceDR                   InetAddress,
    pimInterfaceHelloInterval        Unsigned32,
    pimInterfaceTrigHelloInterval    Unsigned32,
    pimInterfaceJoinPruneInterval    Unsigned32,
    pimInterfaceDFElectionRobustness Unsigned32,
    pimInterfaceHelloHoldtime        Unsigned32,
    pimInterfaceJoinPruneHoldtime    Unsigned32,
    pimInterfaceUseLanPruneDelay     TruthValue,
    pimInterfacePropagationDelay     Unsigned32,
    pimInterfaceOverrideInterval     Unsigned32,
    pimInterfaceUseGenerationID      TruthValue,
    pimInterfaceGenerationIDValue    Unsigned32,
    pimInterfaceUseDRPriority        TruthValue,
    pimInterfaceDRPriority           Unsigned32,
    pimInterfaceLanDelayEnabled      TruthValue,
    pimInterfaceEffectPropagDelay    Unsigned32,
    pimInterfaceEffectOverrideIvl    Unsigned32,
    pimInterfaceSuppressionEnabled   TruthValue,
    pimInterfaceBidirCapable         TruthValue,
    pimInterfaceDRPriorityEnabled    TruthValue,
    pimInterfaceBSRBorder            TruthValue,
    pimInterfaceStatus               RowStatus
}

pimInterfaceIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The ifIndex value of this PIM interface."
    ::= { pimInterfaceEntry 1 }

pimInterfaceIPVersion OBJECT-TYPE
    SYNTAX     InetVersion
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The IP version of this PIM interface.  A physical interface
            may be configured in multiple modes concurrently, e.g. IPv4
            and IPv6, however the traffic is considered to be logically
            separate."
    ::= { pimInterfaceEntry 2 }

pimInterfaceAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The address type of this PIM interface."
    ::= { pimInterfaceEntry 3 }

pimInterfaceAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The primary IP address of this router on this PIM
            interface.  The InetAddressType is given by the
            pimInterfaceAddressType object."
    ::= { pimInterfaceEntry 4 }

pimInterfaceNetMaskLength OBJECT-TYPE
    SYNTAX     InetAddressPrefixLength
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The network mask length for the primary IP address of this
            router on this PIM interface.  The InetAddressType is given
            by the pimInterfaceAddressType object.  A value of 0
            indicates that the network mask length is unknown."
    ::= { pimInterfaceEntry 5 }

pimInterfaceDR OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The primary IP address of the Designated Router on this PIM
            interface.  The InetAddressType is given by the
            pimInterfaceAddressType object."
    ::= { pimInterfaceEntry 6 }

pimInterfaceHelloInterval OBJECT-TYPE
    SYNTAX     Unsigned32 (0..18000)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The frequency at which PIM Hello messages are transmitted
            on this interface.  This object corresponds to the
            'Hello_Period' timer value defined in the PIM-SM
            specification [I-D.ietf-pim-sm-v2-new].  A value of 0
            represents an 'infinite' interval, and indicates that
            periodic PIM Hello messages should not be sent on this
            interface."
    DEFVAL { 30 }
    ::= { pimInterfaceEntry 7 }

pimInterfaceTrigHelloInterval OBJECT-TYPE
    SYNTAX     Unsigned32 (0..60)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The maximum time before this router sends a triggered PIM
            Hello message on this interface.  This object corresponds to
            the 'Trigered_Hello_Delay' timer value defined in the PIM-SM
            specification [I-D.ietf-pim-sm-v2-new].  A value of 0 has
            no special meaning and indicates that triggered PIM Hello
            messages should always be sent immediately."
    DEFVAL { 5 }
    ::= { pimInterfaceEntry 8 }

pimInterfaceJoinPruneInterval OBJECT-TYPE
    SYNTAX     Unsigned32 (0..18000)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The frequency at which this router sends PIM Join/Prune
            messages on this PIM interface.  This object corresponds to
            the 't_periodic' timer value defined in the PIM-SM
            specification [I-D.ietf-pim-sm-v2-new].  A value of 0
            represents an 'infinite' interval, and indicates that
            periodic PIM Join/Prune messages should not be sent on this
            interface."
    DEFVAL { 60 }
    ::= { pimInterfaceEntry 9 }

pimInterfaceDFElectionRobustness OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The minimum number of PIM DF-Election messages that must be
            lost in order for DF election on this interface to fail."
    DEFVAL { 3 }
    ::= { pimInterfaceEntry 10 }

pimInterfaceHelloHoldtime OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "seconds"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value set in the Holdtime field of PIM Hello messages
            transmitted on this interface.  A value of 65535 represents
            an 'infinite' holdtime.  Implementations are recommended
            to use a holdtime that is 3.5 times the value of
            pimInterfaceHelloInterval, or 65535 if
            pimInterfaceHelloInterval is set to 0."
    DEFVAL { 105 }
    ::= { pimInterfaceEntry 11 }

pimInterfaceJoinPruneHoldtime OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "seconds"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value inserted into the Holdtime field of a PIM
            Join/Prune message sent on this interface.  A value of 65535
            represents an 'infinite' holdtime.  Implementations are
            recommended to use a holdtime that is 3.5 times the value of
            pimInterfaceJoinPruneInterval, or 65535 if
            pimInterfaceJoinPruneInterval is set to 0."
    DEFVAL { 210 }
    ::= { pimInterfaceEntry 12 }

pimInterfaceUseLanPruneDelay OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Whether or not this router includes the LAN Prune Delay
            option in the PIM Hello messages it sends on this
            interface."
    DEFVAL { true }
    ::= { pimInterfaceEntry 13 }

pimInterfacePropagationDelay OBJECT-TYPE
    SYNTAX     Unsigned32 (0..32767)
    UNITS      "milliseconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The value this router inserts into the Propagation_Delay
            field of the LAN Prune Delay option in the PIM Hello
            messages it sends on this interface.  This object is only
            used if pimInterfaceUseLanPruneDelay is set to TRUE.
            Implementations should enforce a lower bound on the
            permitted values for this object to allow for scheduling and
            processing delays within the local router."
    DEFVAL { 500 }
    ::= { pimInterfaceEntry 14 }

pimInterfaceOverrideInterval OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "milliseconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The value this router inserts into the Override_Interval
            field of the LAN Prune Delay option in the PIM Hello
            messages it sends on this interface.  This object is only
            used if pimInterfaceUseLanPruneDelay is set to TRUE."
    DEFVAL { 2500 }
    ::= { pimInterfaceEntry 15 }

pimInterfaceUseGenerationID OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Whether or not this router includes the Generation ID
            option in the PIM Hello messages it sends on this
            interface."
    DEFVAL { true }
    ::= { pimInterfaceEntry 16 }

pimInterfaceGenerationIDValue OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of the Generation ID this router inserted in the
            last PIM Hello message it sent on this interface.  This
            object is 0 if pimInterfaceUseGenerationID is set to FALSE."
    ::= { pimInterfaceEntry 17 }

pimInterfaceUseDRPriority OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Whether or not this router includes the DR Priority option
            in the PIM Hello messages it sends on this interface."
    DEFVAL { true }
    ::= { pimInterfaceEntry 18 }

pimInterfaceDRPriority OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The Designated Router Priority value inserted into the DR
            Priority option on this interface.  Numerically higher
            values for this object indicate higher priorities.  This
            object is only used if pimInterfaceUseDRPriority is set to
            TRUE."
    DEFVAL { 1 }
    ::= { pimInterfaceEntry 19 }

pimInterfaceLanDelayEnabled OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Evaluates to TRUE if all routers on this interface are
            using the LAN Prune Delay option."
    ::= { pimInterfaceEntry 20 }

pimInterfaceEffectPropagDelay OBJECT-TYPE
    SYNTAX     Unsigned32 (0..32767)
    UNITS      "milliseconds"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The Effective Propagation Delay on this interface.  This
            object is always 500 if pimInterfaceLanDelayEnabled is
            FALSE."
    ::= { pimInterfaceEntry 21 }

pimInterfaceEffectOverrideIvl OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "milliseconds"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The Effective Override Interval on this interface.  This
            object is always 2500 if pimInterfaceLanDelayEnabled is
            FALSE."
    ::= { pimInterfaceEntry 22 }

pimInterfaceSuppressionEnabled OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Whether join suppression is enabled on this interface.
            This object is always TRUE if pimInterfaceLanDelayEnabled is
            FALSE."
    ::= { pimInterfaceEntry 23 }

pimInterfaceBidirCapable OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Evaluates to TRUE if all routers on this interface are
            using the Bidirectional-PIM Capable option."
    ::= { pimInterfaceEntry 24 }

pimInterfaceDRPriorityEnabled OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Evaluates to TRUE if all routers on this interface are
            using the DR Priority option."
    ::= { pimInterfaceEntry 25 }

pimInterfaceBSRBorder OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Whether or not this interface acts as a border for all PIM
            Bootstrap messages."
    DEFVAL { false }
    ::= { pimInterfaceEntry 26 }

pimInterfaceStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The status of this entry.  Creating the entry enables PIM
            on the interface; destroying the entry disables PIM on the
            interface."
    ::= { pimInterfaceEntry 27 }

--
-- The PIM Neighbor Table
--

pimNeighborTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimNeighborEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the router's PIM neighbors."
    ::= { pim 2 }

pimNeighborEntry OBJECT-TYPE
    SYNTAX     PimNeighborEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimNeighborTable."
    INDEX      { pimNeighborIfIndex,
                 pimNeighborAddressType,
                 pimNeighborAddress }
    ::= { pimNeighborTable 1 }

PimNeighborEntry ::= SEQUENCE {
    pimNeighborIfIndex              InterfaceIndex,
    pimNeighborAddressType          InetAddressType,
    pimNeighborAddress              InetAddress,
    pimNeighborUpTime               TimeTicks,
    pimNeighborExpiryTime           TimeTicks,
    pimNeighborLanPruneDelayPresent TruthValue,
    pimNeighborPropagationDelay     Unsigned32,
    pimNeighborOverrideInterval     Unsigned32,
    pimNeighborTBit                 TruthValue,
    pimNeighborGenerationIDPresent  TruthValue,
    pimNeighborGenerationIDValue    Unsigned32,
    pimNeighborBidirCapable         TruthValue,
    pimNeighborDRPriorityPresent    TruthValue,
    pimNeighborDRPriority           Unsigned32
}

pimNeighborIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The value of ifIndex for the interface used to reach this
            PIM neighbor."
    ::= { pimNeighborEntry 1 }

pimNeighborAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address type of this PIM neighbor."
    ::= { pimNeighborEntry 2 }

pimNeighborAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The primary IP address of this PIM neighbor.  The
            InetAddressType is given by the pimNeighborAddressType
            object."
    ::= { pimNeighborEntry 3 }

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

pimNeighborExpiryTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The minimum time remaining before this PIM neighbor will
            be aged out.  The value zero indicates that this PIM
            neighbor will never be aged out."
    ::= { pimNeighborEntry 5 }

pimNeighborLanPruneDelayPresent OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Evaluates to TRUE if this neighbor is using the LAN Prune
            Delay option."
    ::= { pimNeighborEntry 6 }

pimNeighborPropagationDelay OBJECT-TYPE
    SYNTAX     Unsigned32 (0..32767)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of the Propagation_Delay field of the LAN Prune
            Delay option received from this neighbor.  This object is
            always 0 if pimNeighborLanPruneDelayPresent is FALSE."
    ::= { pimNeighborEntry 7 }

pimNeighborOverrideInterval OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of the Override_Interval field of the LAN Prune
            Delay option received from this neighbor.  This object is
            always 0 if pimNeighborLanPruneDelayPresent is FALSE."
    ::= { pimNeighborEntry 8 }

pimNeighborTBit OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Whether the T bit was set in the LAN Prune Delay option
            received from this neighbor.  The T bit specifies the
            ability of the neighbor to disable join suppression.  This
            object is always TRUE if pimNeighborLanPruneDelayPresent is
            FALSE."
    ::= { pimNeighborEntry 9 }

pimNeighborGenerationIDPresent OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Evaluates to TRUE if this neighbor is using the Generation
            ID option."
    ::= { pimNeighborEntry 10 }

pimNeighborGenerationIDValue OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of the Generation ID from the last PIM Hello
            message received from this neighbor.  This object is always
            0 if pimNeighborGenerationIDPresent is FALSE."
    ::= { pimNeighborEntry 11 }

pimNeighborBidirCapable OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Evaluates to TRUE if this neighbor is using the
            Bidirectional-PIM Capable option."
    ::= { pimNeighborEntry 12 }

pimNeighborDRPriorityPresent OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Evaluates to TRUE if this neighbor is using the DR Priority
            option."
    ::= { pimNeighborEntry 13 }

pimNeighborDRPriority OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of the Designated Router Priority from the last
            PIM Hello message received from this neighbor.  This object
            is always 0 if pimNeighborDRPriorityPresent is FALSE."
    ::= { pimNeighborEntry 14 }

--
-- The PIM Neighbor Secondary Address Table
--

pimNbrSecAddressTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimNbrSecAddressEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the secondary addresses
            advertised by each PIM neighbor (on a subset of the rows of
            the pimNeighborTable defined above)."
    ::= { pim 3 }

pimNbrSecAddressEntry OBJECT-TYPE
    SYNTAX     PimNbrSecAddressEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimNbrSecAddressTable."

    INDEX      { pimNbrSecAddressIfIndex,
                 pimNbrSecAddressType,
                 pimNbrSecAddressPrimary,
                 pimNbrSecAddress }
    ::= { pimNbrSecAddressTable 1 }

PimNbrSecAddressEntry ::= SEQUENCE {
    pimNbrSecAddressIfIndex InterfaceIndex,
    pimNbrSecAddressType    InetAddressType,
    pimNbrSecAddressPrimary InetAddress,
    pimNbrSecAddress        InetAddress
}

pimNbrSecAddressIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The value of ifIndex for the interface used to reach this
            PIM neighbor."
    ::= { pimNbrSecAddressEntry 1 }

pimNbrSecAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address type of this PIM neighbor."
    ::= { pimNbrSecAddressEntry 2 }

pimNbrSecAddressPrimary OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The primary IP address of this PIM neighbor.  The
            InetAddressType is given by the pimNbrSecAddressType
            object."
    ::= { pimNbrSecAddressEntry 3 }

pimNbrSecAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The secondary IP address of this PIM neighbor.  The
            InetAddressType is given by the pimNbrSecAddressType
            object."

    ::= { pimNbrSecAddressEntry 4 }

--
-- The PIM Multicast Route (*,G) State Table
--

pimMRouteTable

pimStarGTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimMRouteEntry PimStarGEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing one row for each multicast
            routing entry created by PIM." the non-interface specific
            (*,G) state that PIM has."
    ::= { pim 4 }

pimMRouteEntry

pimStarGEntry OBJECT-TYPE
    SYNTAX     PimMRouteEntry     PimStarGEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimMRouteTable." pimStarGTable."
    INDEX      { pimMRouteAddressType,
                 pimMRouteGroup,
                 pimMRouteSource,
                 pimMRouteSourcePrefixLength pimStarGAddressType,
                 pimStarGGrpAddress }
    ::= { pimMRouteTable pimStarGTable 1 }

PimMRouteEntry

PimStarGEntry ::= SEQUENCE {
    pimMRouteAddressType
    pimStarGAddressType             InetAddressType,
    pimMRouteGroup                 InetAddress,
    pimMRouteSource
    pimStarGGrpAddress              InetAddress,
    pimMRouteSourcePrefixLength    InetAddressPrefixLength,
    pimMRouteUpTime                TimeTicks,
    pimMRouteExpiryTime
    pimStarGUpTime                  TimeTicks,
    pimMRouteType
    pimStarGPimMode                 PimMode,
    pimStarGRPAddress               InetAddress,
    pimStarGRPOrigin                PimGroupMappingOriginType,
    pimStarGRPIsLocal               TruthValue,
    pimStarGUpstreamJoinState       INTEGER,
    pimMRouteRPAddress
    pimStarGUpstreamJoinTimer       TimeTicks,
    pimStarGUpstreamNeighbor        InetAddress,
    pimMRouteRPFIfIndex
    pimStarGRPFIfIndex              InterfaceIndexOrZero,
    pimMRouteRPFNeighbor
    pimStarGRPFNextHop              InetAddress,
    pimMRouteUpstreamAssertTimer   TimeTicks,
    pimMRouteAssertRPTBit          TruthValue,
    pimMRouteAssertMetricPref      Unsigned32,
    pimMRouteAssertMetric
    pimStarGRPFRouteProtocol        IANAipRouteProtocol,
    pimStarGRPFRouteAddress         InetAddress,
    pimStarGRPFRoutePrefixLength    InetAddressPrefixLength,
    pimStarGRPFRouteMetricPref      Unsigned32,
    pimMRouteFlags                 BITS
    pimStarGRPFRouteMetric          Unsigned32
}

pimMRouteAddressType

pimStarGAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address type of this multicast routing entry." group."
    ::= { pimMRouteEntry pimStarGEntry 1 }

pimMRouteGroup

pimStarGGrpAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The IP multicast group address.  The InetAddressType is given
            by the pimStarGAddressType object."
    ::= { pimStarGEntry 2 }

pimStarGUpTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time since this entry was created by the local router."
    ::= { pimStarGEntry 3 }

pimStarGPimMode OBJECT-TYPE
    SYNTAX     PimMode { asm(3), bidir(4) }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Whether this entry represents an ASM (Any Source Multicast,
            used with PIM-SM) or BIDIR-PIM group."
    ::= { pimStarGEntry 4 }

pimStarGRPAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The address of the Rendezvous Point (RP) for the group.
            The InetAddressType is given by the pimStarGAddressType
            object.  This object is zero if the RP address is unknown."
    ::= { pimStarGEntry 5 }

pimStarGRPOrigin OBJECT-TYPE
    SYNTAX     PimGroupMappingOriginType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The mechanism by which this entry
            contains multicast routing information. the PIM mode and RP for the group
            were learned."

    ::= { pimStarGEntry 6 }

pimStarGRPIsLocal OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Whether the local router is the RP for the group."
    ::= { pimStarGEntry 7 }

pimStarGUpstreamJoinState OBJECT-TYPE
    SYNTAX     INTEGER {
                  notJoined (1),
                  joined (2)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Whether the local router should join the RP tree for the
            group.  This corresponds to the state of the upstream (*,G)
            state machine in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new]."
    ::= { pimStarGEntry 8 }

pimStarGUpstreamJoinTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time remaining before the local router next sends a
            periodic (*,G) Join message on pimStarGRPFIfIndex.  This
            timer is called the (*,G) Upstream Join Timer in the PIM-SM
            specification [I-D.ietf-pim-sm-v2-new].  This object is zero
            if the timer is not running."
    ::= { pimStarGEntry 9 }

pimStarGUpstreamNeighbor OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The primary address of the neighbor on pimStarGRPFIfIndex
            that the local router is sending periodic (*,G) Join
            messages to.  This is zero if the the RPF next hop is
            unknown or is not a PIM neighbor.  The InetAddressType is
            given by the pimMRouteAddressType object." pimStarGAddressType object.  This address is
            called RPF'(*,G) in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new]."

    ::= { pimMRouteEntry 2 pimStarGEntry 10 }

pimMRouteSource

pimStarGRPFIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndexOrZero
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of ifIndex for the RPF interface towards the RP,
            or zero if the RPF interface is unknown."
    ::= { pimStarGEntry 11 }

pimStarGRPFNextHop OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS not-accessible read-only
    STATUS     current
    DESCRIPTION
            "The address of the RPF next hop towards the RP, or zero if
            the the RPF next hop is unknown.  The InetAddressType is
            given by the pimStarGAddressType object.  This address is
            called MRIB.next_hop(RP(G)) in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new]."
    ::= { pimStarGEntry 12 }

pimStarGRPFRouteProtocol OBJECT-TYPE
    SYNTAX     IANAipRouteProtocol
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The routing mechanism via which the route used to find the
            RPF interface towards the RP was learned."
    ::= { pimStarGEntry 13 }

pimStarGRPFRouteAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The IP address which when combined with the corresponding
            value of pimMRouteSourcePrefixLength pimStarGRPFRoutePrefixLength identifies the sources
            for which this entry contains multicast routing information. route
            used to find the RPF interface towards the RP.  The
            InetAddressType is given by the pimMRouteAddressType pimStarGAddressType
            object."
    ::= { pimMRouteEntry 3 pimStarGEntry 14 }

pimMRouteSourcePrefixLength

pimStarGRPFRoutePrefixLength OBJECT-TYPE
    SYNTAX     InetAddressPrefixLength
    MAX-ACCESS not-accessible read-only
    STATUS     current
    DESCRIPTION
            "The prefix length which when combined with the
            corresponding value of pimMRouteSource pimStarGRPFRouteAddress identifies
            the
            sources for which this entry contains multicast routing
            information. route used to find the RPF interface towards the RP.
            The InetAddressType is given by the
            pimMRouteAddressType object.  A value pimStarGAddressType
            object."
    ::= { pimStarGEntry 15 }

pimStarGRPFRouteMetricPref OBJECT-TYPE
    SYNTAX     Unsigned32 (0..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The metric preference of zero indicates the route used to find the RPF
            interface towards the RP."
    ::= { pimStarGEntry 16 }

pimStarGRPFRouteMetric OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The routing metric of the route used to find the RPF
            interface towards the RP."
    ::= { pimStarGEntry 17 }

--
-- The PIM (*,G,I) State Table
--

pimStarGITable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimStarGIEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the interface-specific (*,G)
            state that PIM has."
    ::= { pim 5 }

pimStarGIEntry OBJECT-TYPE
    SYNTAX     PimStarGIEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimStarGITable."
    INDEX      { pimStarGAddressType,
                 pimStarGGrpAddress,
                 pimStarGIIfIndex }

    ::= { pimStarGITable 1 }

PimStarGIEntry ::= SEQUENCE {
    pimStarGIIfIndex                 InterfaceIndex,
    pimStarGIUpTime                  TimeTicks,
    pimStarGILocalMembership         TruthValue,
    pimStarGIJoinPruneState          INTEGER,
    pimStarGIPrunePendingTimer       TimeTicks,
    pimStarGIJoinExpiryTimer         TimeTicks,
    pimStarGIAssertState             INTEGER,
    pimStarGIAssertTimer             TimeTicks,
    pimStarGIAssertWinnerAddress     InetAddress,
    pimStarGIAssertWinnerMetricPref  Unsigned32,
    pimStarGIAssertWinnerMetric      Unsigned32
}

pimStarGIIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The ifIndex of the interface that this entry contains multicast routing information for all
            sources." corresponds
            to."
    ::= { pimMRouteEntry 4 pimStarGIEntry 1 }

pimMRouteUpTime

pimStarGIUpTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time since this multicast routing entry was created by the local router."
    ::= { pimMRouteEntry 5 pimStarGIEntry 2 }

pimStarGILocalMembership OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Whether the local router has (*,G) local membership on this
            interface (resulting from a mechanism such as IGMP or MLD).
            This corresponds to local_receiver_include(*,G,I) in the
            PIM-SM specification [I-D.ietf-pim-sm-v2-new]."
    ::= { pimStarGIEntry 3 }

pimMRouteExpiryTime

pimStarGIJoinPruneState OBJECT-TYPE
    SYNTAX     INTEGER {
                  noInfo (1),
                  join (2),
                  prunePending (3)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The state resulting from (*,G) Join/Prune messages
            received on this interface.  This corresponds to the state
            of the downstream per-interface (*,G) state machine in the
            PIM-SM specification [I-D.ietf-pim-sm-v2-new]."
    ::= { pimStarGIEntry 4 }

pimStarGIPrunePendingTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The minimum time remaining before the local router acts on a (*,G)
            Prune message received on this entry interface, during which the
            router is waiting to see whether another downstream router
            will be aged
            out.  The value override the Prune message.  This timer is called the
            (*,G) Prune-Pending Timer in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new].  This object is zero indicates that if the timer
            is not running."
    ::= { pimStarGIEntry 5 }

pimStarGIJoinExpiryTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time remaining before (*,G) Join state for this entry will never be
            aged out."
            interface expires.  This timer is called the (*,G) Join
            Expiry Timer in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new].  This object is zero if the timer
            is not running.  A value of 'FFFFFFFF'h indicates an
            infinite expiry time."
    ::= { pimMRouteEntry pimStarGIEntry 6 }

pimMRouteType

pimStarGIAssertState OBJECT-TYPE
    SYNTAX     INTEGER {
                  ssm
                  noInfo (1),
                  asm
                  iAmAssertWinner (2),
                  bidir
                  iAmAssertLoser (3)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "This
            "The (*,G) Assert state for this interface.  This
            corresponds to the state of the per-interface (*,G) Assert
            state machine in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new].  If pimStarGPimMode is 'bidir',
            this object indicates whether must be 'noInfo'."
    ::= { pimStarGIEntry 7 }

pimStarGIAssertTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "If pimStarGIAssertState is 'iAmAssertWinner', this is the
            time remaining before the local router next sends a (*,G)
            Assert message on this interface.  If pimStarGIAssertState
            is 'iAmAssertLoser', this is the time remaining before the
            (*,G) Assert state expires.  If pimStarGIAssertState is
            'noInfo', this is zero.  This timer is called the (*,G)
            Assert Timer in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new]."
    ::= { pimStarGIEntry 8 }

pimStarGIAssertWinnerAddress OBJECT-TYPE
    SYNTAX     InetAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "If pimStarGIAssertState is 'iAmAssertLoser', this is the
            address of the assert winner; otherwise, this object is
            zero.  The InetAddressType is given by the
            pimStarGAddressType object."
    ::= { pimStarGIEntry 9 }

pimStarGIAssertWinnerMetricPref OBJECT-TYPE
    SYNTAX     Unsigned32 (0..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "If pimStarGIAssertState is 'iAmAssertLoser', this is the
            metric preference of the route to the RP advertised by the
            assert winner; otherwise, this object is zero."
    ::= { pimStarGIEntry 11 }

pimStarGIAssertWinnerMetric OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "If pimStarGIAssertState is 'iAmAssertLoser', this is the
            routing metric of the route to the RP advertised by the
            assert winner; otherwise, this object is zero."
    ::= { pimStarGIEntry 12 }

--
-- The PIM (S,G) State Table
--

pimSGTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimSGEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the non-interface specific
            (S,G) state that PIM has."
    ::= { pim 6 }

pimSGEntry OBJECT-TYPE
    SYNTAX     PimSGEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry represents (conceptual row) in the pimSGTable."
    INDEX      { pimSGAddressType,
                 pimSGGrpAddress,
                 pimSGSrcAddress }
    ::= { pimSGTable 1 }

PimSGEntry ::= SEQUENCE {
    pimSGAddressType             InetAddressType,
    pimSGGrpAddress              InetAddress,
    pimSGSrcAddress              InetAddress,
    pimSGUpTime                  TimeTicks,
    pimSGPimMode                 PimMode,
    pimSGUpstreamJoinState       INTEGER,
    pimSGUpstreamJoinTimer       TimeTicks,
    pimSGUpstreamNeighbor        InetAddress,
    pimSGRPFIfIndex              InterfaceIndexOrZero,
    pimSGRPFNextHop              InetAddress,
    pimSGRPFRouteProtocol        IANAipRouteProtocol,
    pimSGRPFRouteAddress         InetAddress,
    pimSGRPFRoutePrefixLength    InetAddressPrefixLength,
    pimSGRPFRouteMetricPref      Unsigned32,
    pimSGRPFRouteMetric          Unsigned32,
    pimSGSPTBit                  TruthValue,
    pimSGKeepaliveTimer          TimeTicks,
    pimSGDRRegisterState         INTEGER,
    pimSGDRRegisterStopTimer     TimeTicks,
    pimSGRPRegisterPMBRAddress   InetAddress
}

pimSGAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address type of the source and multicast group for this
            entry."
    ::= { pimSGEntry 1 }

pimSGGrpAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The multicast group address for this entry.  The
            InetAddressType is given by the pimSGAddressType object."
    ::= { pimSGEntry 2 }

pimSGSrcAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The source address for this entry.  The InetAddressType is
            given by the pimSGAddressType object."
    ::= { pimSGEntry 3 }

pimSGUpTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time since this entry was created by the local router."
    ::= { pimSGEntry 4 }

pimSGPimMode OBJECT-TYPE
    SYNTAX     PimMode { ssm(2), asm(3) }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Whether pimSGGrpAddress is an SSM (Source Specific
            Multicast, used with PIM-SM), PIM-SM) or ASM (Any Source Multicast,
            used with PIM-SM) or group."
    ::= { pimSGEntry 5 }

pimSGUpstreamJoinState OBJECT-TYPE
    SYNTAX     INTEGER {
                  notJoined (1),
                  joined (2)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Whether the local router should join the shortest-path tree
            for the source and group represented by this entry.  This
            corresponds to the state of the upstream (S,G) state machine
            in the PIM-SM specification [I-D.ietf-pim-sm-v2-new]."
    ::= { pimSGEntry 6 }

pimSGUpstreamJoinTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time remaining before the local router next sends a BIDIR-PIM
            route."
            periodic (S,G) Join message on pimSGRPFIfIndex.  This timer
            is called the (S,G) Upstream Join Timer in the PIM-SM
            specification [I-D.ietf-pim-sm-v2-new].  This object is zero
            if the timer is not running."
    ::= { pimMRouteEntry pimSGEntry 7 }

pimMRouteRPAddress

pimSGUpstreamNeighbor OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The primary address of the Rendezvous Point (RP) for neighbor on pimSGRPFIfIndex that
            the group
            represented by pimMRouteGroup.  The InetAddressType local router is given
            by the pimMRouteAddressType object. sending periodic (S,G) Join messages to.
            This object is zero if
            pimMRouteType the the RPF next hop is 'ssm', unknown or if is not a
            PIM neighbor.  The InetAddressType is given by the RP
            pimSGAddressType object.  This address is unknown." called RPF'(S,G)
            in the PIM-SM specification [I-D.ietf-pim-sm-v2-new]."
    ::= { pimMRouteEntry pimSGEntry 8 }

pimMRouteRPFIfIndex

pimSGRPFIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndexOrZero
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of ifIndex for the RPF interface, from which IP
            datagrams sent by these sources to this multicast group
            address are accepted, interface towards the
            source, or zero if the RPF interface is unknown."
    ::= { pimMRouteEntry pimSGEntry 9 }

pimMRouteRPFNeighbor

pimSGRPFNextHop OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The address of the RPF neighbor, from which IP datagrams
            sent by these sources to this multicast group address are
            received, next hop towards the source, or zero
            if the the RPF neighbor is unknown or next hop is not
            a PIM neighbor. unknown.  The InetAddressType is
            given by the
            pimMRouteAddressType object." pimSGAddressType object.  This address is
            called MRIB.next_hop(S) in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new]."
    ::= { pimMRouteEntry pimSGEntry 10 }

pimMRouteUpstreamAssertTimer

pimSGRPFRouteProtocol OBJECT-TYPE
    SYNTAX     TimeTicks     IANAipRouteProtocol
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time remaining before routing mechanism via which the router changes its upstream
            neighbor back route used to its find the
            RPF neighbor.  This timer is called interface towards the
            Assert Timer in source was learned."
    ::= { pimSGEntry 11 }

pimSGRPFRouteAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The IP address which when combined with the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new].  A corresponding
            value of zero indicates that no
            assert has changed pimSGRPFRoutePrefixLength identifies the upstream neighbor away from route used
            to find the RPF
            neighbor." interface towards the source.  The
            InetAddressType is given by the pimSGAddressType object."
    ::= { pimMRouteEntry 11 pimSGEntry 12 }

pimMRouteAssertRPTBit

pimSGRPFRoutePrefixLength OBJECT-TYPE
    SYNTAX     TruthValue     InetAddressPrefixLength
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The prefix length which when combined with the
            corresponding value of pimSGRPFRouteAddress identifies the RPT bit advertised by
            route used to find the Assert Winner on RPF interface towards the upstream interface, or FALSE if no such assert source.
            The InetAddressType is in
            effect." given by the pimSGAddressType
            object."
    ::= { pimMRouteEntry 12 pimSGEntry 13 }

pimMRouteAssertMetricPref

pimSGRPFRouteMetricPref OBJECT-TYPE
    SYNTAX     Unsigned32 (0..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The metric preference advertised by of the Assert Winner on route used to find the upstream interface, or zero if no such assert is in
            effect." RPF
            interface towards the source."
    ::= { pimMRouteEntry 13 pimSGEntry 14 }

pimMRouteAssertMetric

pimSGRPFRouteMetric OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The routing metric advertised by of the Assert Winner route used to find the RPF
            interface towards the source."
    ::= { pimSGEntry 15 }

pimSGSPTBit OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Whether the SPT bit is set; and therefore whether
            forwarding is taking place on the upstream
            interface, shortest-path tree."
    ::= { pimSGEntry 16 }

pimSGKeepaliveTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time remaining before, in the absence of explicit (S,G)
            local membership or zero if no such assert (S,G) Join messages received to maintain
            it, this (S,G) state expires.  This timer is called the
            (S,G) Keepalive Timer in effect." the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new]."
    ::= { pimMRouteEntry 14 pimSGEntry 17 }

pimMRouteFlags

pimSGDRRegisterState OBJECT-TYPE
    SYNTAX     BITS     INTEGER {
                  rpt(0),
                  spt(1)
                  noInfo (1),
                  join (2),
                  joinPending (3),
                  prune (4)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "This object describes PIM-specific flags related
            "Whether the local router should encapsulate (S,G) data
            packets in Register messages and send them to the RP.  This
            corresponds to the state of the per-(S,G) Register state
            machine in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new].  This object is always 'noInfo'
            unless pimSGPimMode is 'asm'."
    ::= { pimSGEntry 18 }

pimSGDRRegisterStopTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "If pimSGDRRegisterState is 'prune', this is the time
            remaining before the local router sends a
            multicast routing entry.  See Null-Register
            message to the RP.  If pimSGDRRegisterState is
            'joinPending', this is the time remaining before the local
            router resumes encapsulating data packets and sending them
            to the RP.  Otherwise, this is zero.  This timer is called
            the Register-Stop Timer in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new]
            [I-D.ietf-pim-sm-v2-new]."
    ::= { pimSGEntry 19 }

pimSGRPRegisterPMBRAddress OBJECT-TYPE
    SYNTAX     InetAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The IP address of the first PIM Multicast Border Router to
            send a Register message with the Border bit set.  This
            object is zero if the local router is not the RP for the meaning of
            group.  The InetAddressType is given by the RPT and SPT
            bits." pimSGAddressType
            object."
    ::= { pimMRouteEntry 15 pimSGEntry 20 }

--
-- The PIM Next Hop (S,G,I) State Table
--

pimMRouteNextHopTable

pimSGITable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimMRouteNextHopEntry PimSGIEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table containing information on outgoing
            interfaces for routing IP multicast datagrams, on which listing the interface-specific (S,G)
            state that PIM
            Join/Prunes have been received." has."
    ::= { pim 5 7 }

pimMRouteNextHopEntry

pimSGIEntry OBJECT-TYPE
    SYNTAX     PimMRouteNextHopEntry     PimSGIEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimMRouteNextHopTable." pimSGITable."
    INDEX      { pimMRouteNextHopAddressType,
                 pimMRouteNextHopGroup,
                 pimMRouteNextHopSource,
                 pimMRouteNextHopSourcePrefixLength,
                 pimMRouteNextHopIfIndex pimSGAddressType,
                 pimSGGrpAddress,
                 pimSGSrcAddress,
                 pimSGIIfIndex }
    ::= { pimMRouteNextHopTable pimSGITable 1 }

PimMRouteNextHopEntry

PimSGIEntry ::= SEQUENCE {
    pimMRouteNextHopAddressType        InetAddressType,
    pimMRouteNextHopGroup              InetAddress,
    pimMRouteNextHopSource             InetAddress,
    pimMRouteNextHopSourcePrefixLength InetAddressPrefixLength,
    pimMRouteNextHopIfIndex
    pimSGIIfIndex                 InterfaceIndex,
    pimMRouteNextHopUpTime
    pimSGIUpTime                  TimeTicks,
    pimMRouteNextHopForwarding
    pimSGILocalMembership         TruthValue,
    pimMRouteNextHopJoinPruneTimer
    pimSGIJoinPruneState          INTEGER,
    pimSGIPrunePendingTimer       TimeTicks,
    pimMRouteNextHopAssertWinner       InetAddress,
    pimMRouteNextHopAssertTimer
    pimSGIJoinExpiryTimer         TimeTicks,
    pimMRouteNextHopAssertRPTBit       TruthValue,
    pimMRouteNextHopAssertMetricPref
    pimSGIAssertState             INTEGER,
    pimSGIAssertTimer             TimeTicks,
    pimSGIAssertWinnerAddress     InetAddress,
    pimSGIAssertWinnerMetricPref  Unsigned32,
    pimMRouteNextHopAssertMetric
    pimSGIAssertWinnerMetric      Unsigned32
}

pimMRouteNextHopAddressType

pimSGIIfIndex OBJECT-TYPE
    SYNTAX     InetAddressType     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address type ifIndex of the interface that this multicast routing entry." entry corresponds
            to."
    ::= { pimMRouteNextHopEntry pimSGIEntry 1 }

pimMRouteNextHopGroup

pimSGIUpTime OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))     TimeTicks
    MAX-ACCESS not-accessible read-only
    STATUS     current
    DESCRIPTION
            "The IP multicast group for which time since this entry specifies an
            outgoing interface.  The InetAddressType is given was created by the
            pimMRouteNextHopAddressType object." local router."
    ::= { pimMRouteNextHopEntry pimSGIEntry 2 }

pimMRouteNextHopSource

pimSGILocalMembership OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))     TruthValue
    MAX-ACCESS not-accessible read-only
    STATUS     current
    DESCRIPTION
            "Whether the local router has (S,G) local membership on this
            interface (resulting from a mechanism such as IGMPv3 or
            MLDv2).  This corresponds to local_receiver_include(S,G,I)
            in the PIM-SM specification [I-D.ietf-pim-sm-v2-new]."
    ::= { pimSGIEntry 3 }

pimSGIJoinPruneState OBJECT-TYPE
    SYNTAX     INTEGER {
                  noInfo (1),
                  join (2),
                  prunePending (3)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The network address which when combined with state resulting from (S,G) Join/Prune messages
            received on this interface.  This corresponds to the
            corresponding value state
            of pimMRouteNextHopSourcePrefixLength
            identifies the sources for downstream per-interface (S,G) state machine in the
            PIM-SM specification [I-D.ietf-pim-sm-v2-new]."
    ::= { pimSGIEntry 4 }

pimSGIPrunePendingTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time remaining before the local router acts on an (S,G)
            Prune message received on this interface, during which the
            router is waiting to see whether another downstream router
            will override the Prune message.  This timer is called the
            (S,G) Prune-Pending Timer in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new].  This object is zero if the timer
            is not running."
    ::= { pimSGIEntry 5 }

pimSGIJoinExpiryTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time remaining before (S,G) Join state for this entry specifies
            interface expires.  This timer is called the (S,G) Join
            Expiry Timer in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new].  This object is zero if the timer
            is not running.  A value of 'FFFFFFFF'h indicates an
            outgoing
            infinite expiry time."
    ::= { pimSGIEntry 6 }

pimSGIAssertState OBJECT-TYPE
    SYNTAX     INTEGER {
                  noInfo (1),
                  iAmAssertWinner (2),
                  iAmAssertLoser (3)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The (S,G) Assert state for this interface.  This
            corresponds to the state of the per-interface (S,G) Assert
            state machine in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new]."
    ::= { pimSGIEntry 7 }

pimSGIAssertTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "If pimSGIAssertState is 'iAmAssertWinner', this is the time
            remaining before the local router next sends a (S,G) Assert
            message on this interface.  If pimSGIAssertState is
            'iAmAssertLoser', this is the time remaining before the
            (S,G) Assert state expires.  If pimSGIAssertState is
            'noInfo', this is zero.  This timer is called the (S,G)
            Assert Timer in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new]."
    ::= { pimSGIEntry 8 }

pimSGIAssertWinnerAddress OBJECT-TYPE
    SYNTAX     InetAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "If pimSGIAssertState is 'iAmAssertLoser', this is the
            address of the assert winner; otherwise, this object is
            zero.  The InetAddressType is given by the
            pimMRouteNextHopAddressType pimSGAddressType
            object."
    ::= { pimMRouteNextHopEntry 3 pimSGIEntry 9 }

pimMRouteNextHopSourcePrefixLength

pimSGIAssertWinnerMetricPref OBJECT-TYPE
    SYNTAX     InetAddressPrefixLength     Unsigned32 (0..2147483647)
    MAX-ACCESS not-accessible read-only
    STATUS     current
    DESCRIPTION
            "The network prefix length which when combined with
            "If pimSGIAssertState is 'iAmAssertLoser', this is the
            corresponding value
            metric preference of pimMRouteNextHopSource identifies the
            sources for which route to the source advertised by
            the assert winner; otherwise, this object is zero."
    ::= { pimSGIEntry 11 }

pimSGIAssertWinnerMetric OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "If pimSGIAssertState is 'iAmAssertLoser', this entry specifies an outgoing
            interface.  The InetAddressType is given by the
            pimMRouteNextHopAddressType object.  A value
            routing metric of zero
            indicates that the route to the source advertised by the
            assert winner; otherwise, this object is zero."
    ::= { pimSGIEntry 12 }

--
-- The PIM (S,G,rpt) State Table
--

pimSGRptTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimSGRptEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the non-interface specific
            (S,G,rpt) state that PIM has."
    ::= { pim 8 }

pimSGRptEntry OBJECT-TYPE
    SYNTAX     PimSGRptEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry specifies an outgoing interface
            for all sources." (conceptual row) in the pimSGRptTable."
    INDEX      { pimStarGAddressType,
                 pimStarGGrpAddress,
                 pimSGRptSrcAddress }
    ::= { pimMRouteNextHopEntry 4 pimSGRptTable 1 }

pimMRouteNextHopIfIndex

PimSGRptEntry ::= SEQUENCE {
    pimSGRptSrcAddress             InetAddress,
    pimSGRptUpTime                 TimeTicks,
    pimSGRptUpstreamPruneState     INTEGER,
    pimSGRptUpstreamOverrideTimer  TimeTicks
}

pimSGRptSrcAddress OBJECT-TYPE
    SYNTAX     InterfaceIndex     InetAddress (SIZE (4|16|20))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The ifIndex value of source address for this entry.  The InetAddressType is
            given by the outgoing interface." pimStarGAddressType object."

    ::= { pimMRouteNextHopEntry 5 pimSGRptEntry 1 }

pimMRouteNextHopUpTime

pimSGRptUpTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time since this entry was created by the local router."
    ::= { pimMRouteNextHopEntry 6 pimSGRptEntry 2 }

pimMRouteNextHopForwarding

pimSGRptUpstreamPruneState OBJECT-TYPE
    SYNTAX     TruthValue     INTEGER {
                  rptNotJoined (1),
                  pruned (2),
                  notPruned (3)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Evaluates to TRUE if
            "Whether the outgoing interface represented by
            this entry is currently being used local router should prune the source off the RP
            tree.  This corresponds to forward IP datagrams." the state of the upstream
            (S,G,rpt) state machine for triggered messages in the PIM-SM
            specification [I-D.ietf-pim-sm-v2-new]."
    ::= { pimMRouteNextHopEntry 7 pimSGRptEntry 3 }

pimMRouteNextHopJoinPruneTimer

pimSGRptUpstreamOverrideTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time remaining before the local router ceases
            forwarding sends a
            triggered (S,G,rpt) Join message on this interface." pimStarGRPFIfIndex.
            This timer is called the (S,G,rpt) Upstream Override Timer
            in the PIM-SM specification [I-D.ietf-pim-sm-v2-new].  This
            object is zero if the timer is not running."
    ::= { pimMRouteNextHopEntry 8 pimSGRptEntry 4 }

pimMRouteNextHopAssertWinner

--
-- The PIM (S,G,rpt,I) State Table
--

pimSGRptITable OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))     SEQUENCE OF PimSGRptIEntry
    MAX-ACCESS read-only not-accessible
    STATUS     current
    DESCRIPTION
            "The IP address of (conceptual) table listing the Assert Winner, or zero if no assert
            is interface-specific
            (S,G,rpt) state that PIM has."

    ::= { pim 9 }

pimSGRptIEntry OBJECT-TYPE
    SYNTAX     PimSGRptIEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in effect.  The InetAddressType is given by the
            pimMRouteNextHopAddressType object." pimSGRptITable."
    INDEX      { pimStarGAddressType,
                 pimStarGGrpAddress,
                 pimSGRptSrcAddress,
                 pimSGRptIIfIndex }
    ::= { pimMRouteNextHopEntry 9 pimSGRptITable 1 }

PimSGRptIEntry ::= SEQUENCE {
    pimSGRptIIfIndex            InterfaceIndex,
    pimSGRptIUpTime             TimeTicks,
    pimSGRptILocalMembership    TruthValue,
    pimSGRptIJoinPruneState     INTEGER,
    pimSGRptIPrunePendingTimer  TimeTicks,
    pimSGRptIPruneExpiryTimer   TimeTicks
}

pimSGRptIIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The ifIndex of the interface that this entry corresponds
            to."
    ::= { pimSGRptIEntry 1 }

pimMRouteNextHopAssertTimer

pimSGRptIUpTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time remaining before the PIM router leaves since this entry was created by the local router."
    ::= { pimSGRptIEntry 2 }

pimSGRptILocalMembership OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
            Assert state.  A value of 0 indicates that
    DESCRIPTION
            "Whether the local router is has both (*,G) include local
            membership and (S,G) exclude local membership on this
            interface (resulting from a mechanism such as IGMPv3 or
            MLDv2).  This corresponds to local_receiver_exclude(S,G,I)
            in the NoInfo state." PIM-SM specification [I-D.ietf-pim-sm-v2-new]."
    ::= { pimMRouteNextHopEntry 10 pimSGRptIEntry 3 }

pimMRouteNextHopAssertRPTBit

pimSGRptIJoinPruneState OBJECT-TYPE
    SYNTAX     TruthValue     INTEGER {
                  noInfo (1),
                  prune (2),
                  prunePending (3)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of state resulting from (S,G,rpt) Join/Prune messages
            received on this interface.  This corresponds to the RPT bit advertised by state
            of the Assert Winner,
            or FALSE if no assert is downstream per-interface (S,G,rpt) state machine in effect."
            the PIM-SM specification [I-D.ietf-pim-sm-v2-new]."
    ::= { pimMRouteNextHopEntry 11 pimSGRptIEntry 4 }

pimMRouteNextHopAssertMetricPref

pimSGRptIPrunePendingTimer OBJECT-TYPE
    SYNTAX     Unsigned32 (0..2147483647)     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The metric preference advertised by time remaining before the Assert Winner, or local router starts pruning
            this source off the RP tree.  This timer is called the
            (S,G,rpt) Prune-Pending Timer in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new].  This object is zero if no assert the timer
            is in effect." not running."
    ::= { pimMRouteNextHopEntry 12 pimSGRptIEntry 5 }

pimMRouteNextHopAssertMetric

pimSGRptIPruneExpiryTimer OBJECT-TYPE
    SYNTAX     Unsigned32     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The metric advertised by time remaining before (S,G,rpt) Prune state for this
            interface expires.  This timer is called the Assert Winner, or (S,G,rpt)
            Prune Expiry Timer in the PIM-SM specification
            [I-D.ietf-pim-sm-v2-new].  This object is zero if no
            assert the timer
            is in effect." not running.  A value of 'FFFFFFFF'h indicates an
            infinite expiry time."
    ::= { pimMRouteNextHopEntry 13 pimSGRptIEntry 6 }

--
-- The PIM Bidir DF-Election Table
--
pimBidirDFElectionTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimBidirDFElectionEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the per-RP Designated
            Forwarder (DF) Election state for each interface for all the
            RPs in BIDIR mode."
    ::= { pim 6 10 }

pimBidirDFElectionEntry OBJECT-TYPE
    SYNTAX     PimBidirDFElectionEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimBidirDFElectionTable."
    INDEX      { pimBidirDFElectionAddressType,
                 pimBidirDFElectionRPAddress,
                 pimBidirDFElectionIfIndex }
    ::= { pimBidirDFElectionTable 1 }

PimBidirDFElectionEntry ::= SEQUENCE {
    pimBidirDFElectionAddressType       InetAddressType,
    pimBidirDFElectionRPAddress         InetAddress,
    pimBidirDFElectionIfIndex           InterfaceIndex,
    pimBidirDFElectionWinnerAddress     InetAddress,
    pimBidirDFElectionWinnerUpTime      TimeTicks,
    pimBidirDFElectionWinnerMetricPref  Unsigned32,
    pimBidirDFElectionWinnerMetric      Unsigned32,
    pimBidirDFElectionState             INTEGER,
    pimBidirDFElectionStateTimer        TimeTicks
}

pimBidirDFElectionAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address type of the RP for which the DF state is being
            maintained."
    ::= { pimBidirDFElectionEntry 1 }

pimBidirDFElectionRPAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The IP address of the RP for which the DF state is being
            maintained.  The InetAddressType is given by the
            pimBidirDFElectionAddressType object."
    ::= { pimBidirDFElectionEntry 2 }

pimBidirDFElectionIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The value of ifIndex for the interface for which the DF
            state is being maintained."
    ::= { pimBidirDFElectionEntry 3 }

pimBidirDFElectionWinnerAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The primary IP address of the winner of the DF Election
            process.  The InetAddressType is given by the
            pimBidirDFElectionAddressType object.  A value of zero
            indicates there is currently no DF."
    ::= { pimBidirDFElectionEntry 4 }

pimBidirDFElectionWinnerUpTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time since the current winner (last) became elected as
            the DF for this RP."
    ::= { pimBidirDFElectionEntry 5 }

pimBidirDFElectionWinnerMetricPref OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The metric preference advertised by the DF Winner, or zero
            if there is currently no DF."
    ::= { pimBidirDFElectionEntry 6 }

pimBidirDFElectionWinnerMetric OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The metric advertised by the DF Winner, or zero if there is
            currently no DF."
    ::= { pimBidirDFElectionEntry 7 }

pimBidirDFElectionState OBJECT-TYPE
    SYNTAX     INTEGER {
                  dfOffer(1),
                  dfLose(2),
                  dfWinner(3),
                  dfBackoff(4)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The state of this interface with respect to DF-Election for
            this RP.  The states correspond to the ones defined in the
            BIDIR-PIM specification [I-D.ietf-pim-bidir]."
    ::= { pimBidirDFElectionEntry 8 }

pimBidirDFElectionStateTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The minimum time remaining after which the local router
            will expire the current DF state represented by
            pimBidirDFElectionState."
    ::= { pimBidirDFElectionEntry 9 }

--
-- The PIM RP-Set SSM Range Table
--

pimRPSetTable

pimSsmRangeTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimRPSetEntry PimSsmRangeEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual)
            "This table listing PIM information for
            available Rendezvous Points (RPs) for IP multicast groups." is used to create and manage the range(s) of
            group addresses to which SSM semantics should be applied.
            SSM is described in [RFC3569]."
    ::= { pim 7 11 }

pimRPSetEntry

pimSsmRangeEntry OBJECT-TYPE
    SYNTAX     PimRPSetEntry     PimSsmRangeEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimRPSetTable." ssmRangeTable."

    INDEX      { pimRPSetComponent,
                 pimRPSetAddressType,
                 pimRPSetGroupAddress,
                 pimRPSetGroupPrefixLength,
                 pimRPSetRPType,
                 pimRPSetRPAddress pimSsmRangeAddressType,
                 pimSsmRangeAddress,
                 pimSsmRangePrefixLength }
    ::= { pimRPSetTable pimSsmRangeTable 1 }

PimRPSetEntry

PimSsmRangeEntry ::= SEQUENCE {
    pimRPSetComponent         Unsigned32,
    pimRPSetAddressType
    pimSsmRangeAddressType   InetAddressType,
    pimRPSetGroupAddress
    pimSsmRangeAddress       InetAddress,
    pimRPSetGroupPrefixLength
    pimSsmRangePrefixLength  InetAddressPrefixLength,
    pimRPSetRPType            INTEGER,
    pimRPSetRPAddress         InetAddress,
    pimRPSetBidirGroup        TruthValue,
    pimRPSetPriority          Unsigned32,
    pimRPSetHoldtime          Unsigned32,
    pimRPSetExpiryTime        TimeTicks,
    pimRPSetRPActive          TruthValue
    pimSsmRangeRowStatus     RowStatus
}

pimRPSetComponent

pimSsmRangeAddressType OBJECT-TYPE
    SYNTAX     Unsigned32 (1..255)     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "A number uniquely identifying
            "The address type of the component.  Each protocol
            instance connected multicast group prefix."
    ::= { pimSsmRangeEntry 1 }

pimSsmRangeAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The multicast group address which, when combined with
            pimSsmRangePrefixLength, gives the group prefix for this
            SSM range.  The InetAddressType is given by the
            pimSsmRangeAddressType object."
    ::= { pimSsmRangeEntry 2 }

pimSsmRangePrefixLength OBJECT-TYPE
    SYNTAX     InetAddressPrefixLength (4..128)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The multicast group prefix length, which, when combined
            with pimSsmRangeAddress, gives the group prefix for this SSM
            range.  The InetAddressType is given by the
            pimSsmRangeAddressType object.  If pimSsmRangeAddressType is
            'ipv4' or 'ipv4z', this object must be in the range 4..32.
            If pimSsmRangeAddressType is 'ipv6' or 'ipv6z', this object
            must be in the range 8..128."
    ::= { pimSsmRangeEntry 3 }

pimSsmRangeRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The status of this row, by which rows in this table can
            be created and destroyed."
    ::= { pimSsmRangeEntry 4 }

--
-- The PIM Static RP Table
--

pimStaticRPTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimStaticRPEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "This table is used to a separate domain should have a
            different index value." create and manage static
            configuration of RPs.

            If the group prefixes configured for two or more rows in
            this table overlap, the row with the greatest value of
            pimStaticRPGrpPrefixLength is used for the overlapping
            range."
    ::= { pimRPSetEntry pim 12 }

pimStaticRPEntry OBJECT-TYPE
    SYNTAX     PimStaticRPEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimStaticRPTable."
    INDEX      { pimStaticRPAddressType,
                 pimStaticRPGrpAddress,
                 pimStaticRPGrpPrefixLength }
    ::= { pimStaticRPTable 1 }

pimRPSetAddressType

PimStaticRPEntry ::= SEQUENCE {
    pimStaticRPAddressType      InetAddressType,
    pimStaticRPGrpAddress       InetAddress,
    pimStaticRPGrpPrefixLength  InetAddressPrefixLength,
    pimStaticRPRPAddress        InetAddress,
    pimStaticRPPimMode          PimMode,
    pimStaticRPOverrideDynamic  TruthValue,
    pimStaticRPRowStatus        RowStatus
}

pimStaticRPAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address type of the IP multicast group." this entry."
    ::= { pimRPSetEntry 2 pimStaticRPEntry 1 }

pimRPSetGroupAddress

pimStaticRPGrpAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The IP multicast group address which, when combined with
            the corresponding value of pimRPSetGroupPrefixLength,
            pimStaticRPGrpPrefixLength, gives the group prefix for which this entry contains information
            about the RP.
            entry.  The InetAddressType is given by the
            pimRPSetAddressType
            pimStaticRPAddressType object."
    ::= { pimRPSetEntry 3 pimStaticRPEntry 2 }

pimRPSetGroupPrefixLength

pimStaticRPGrpPrefixLength OBJECT-TYPE
    SYNTAX     InetAddressPrefixLength (4..128)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The multicast group prefix length length, which, when combined
            with the corresponding value of pimRPSetGroupAddress, pimStaticRPGrpAddress, gives the group prefix for which this entry contains information
            about the RP.
            entry.  The InetAddressType is given by the
            pimRPSetAddressType
            pimStaticRPAddressType object.  A value of zero  If pimStaticRPAddressType is not
            permitted
            'ipv4' or 'ipv4z', this object must be in the range 4..32.
            If pimStaticRPGrpAddressType is 'ipv6' or 'ipv6z', this
            object must be in the range 8..128."
    ::= { pimStaticRPEntry 3 }

pimStaticRPRPAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The IP address of the RP to be used for groups within this
            group prefix.  The InetAddressType is given by the
            pimStaticRPAddressType object."
    ::= { pimRPSetEntry pimStaticRPEntry 4 }

pimRPSetRPType

pimStaticRPPimMode OBJECT-TYPE
    SYNTAX     INTEGER     PimMode { asm(3), bidir(4) }
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The PIM mode to be used for groups in this group prefix."
    DEFVAL { asm }
    ::= { pimStaticRPEntry 5 }

pimStaticRPOverrideDynamic OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Whether this static (1),
                  bsr (2),
                  embedded (3),
                  other (4) RP configuration overrides RP
            information learned dynamically for groups in this group
            prefix."
    DEFVAL { false }
    ::= { pimStaticRPEntry 6 }

pimStaticRPRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The status of this row, by which rows in this table can
            be created and destroyed."
    ::= { pimStaticRPEntry 7 }

--
-- The PIM Group Mapping Table
--

pimGroupMappingTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimGroupMappingEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "This object indicates how
            "The (conceptual) table listing mappings from multicast
            group prefixes to the PIM mode and RP was learnt.  'static'
            means from local configuration, address to use for
            groups within that group prefix.

            Rows in this table are created for a variety of reasons,
            indicated by the value of the pimGroupMappingOrigin object.

            -  Rows with a pimGroupMappingOrigin value of 'fixed' are
               created automatically by the router at startup, to
               correspond to the well-defined prefixes of link-local and
               unroutable group addresses.  These rows are never
               destroyed.

            -  Rows with a pimGroupMappingOrigin value of 'embedded' are
               created by the router to correspond to group prefixes
               that are to be treated as being in Embedded-RP format, as
               defined in [RFC3956].

            -  Rows with a pimGroupMappingOrigin value of 'config' are
               created and destroyed as a result of rows in the
               pimSsmRangeTable and pimStaticRPTable being created and
               destroyed.

            -  Rows with a pimGroupMappingOrigin value of 'bsr' means are
               created as a result of running the PIM Bootstrap Router
               (BSR) mechanism
            [I-D.ietf-pim-sm-bsr], 'embedded' means mechanism.  If the Embedded-RP local router is not the elected
               BSR, these rows are created to correspond to group
               prefixes in the PIM Bootstrap messages received from the
               elected BSR.  If the local router is the elected BSR,
               these rows are created to correspond to group prefixes in
               the PIM Bootstrap messages that the local router sends.
               In either case, these rows are destroyed when the group
               prefixes are timed out by the BSR mechanism.

            -  Rows with a pimGroupMappingOrigin value of 'other' are
               created and destroyed according to some other mechanism [RFC3956] where
               not specified here.

            Given the collection of rows in this table at any point in
            time, the PIM mode and RP address to use for a particular
            group is embedded determined using the following algorithm.

            1. From the set of all rows, the subset whose group prefix
               contains the group in question are selected.

            2. If there are no such rows, the behavior is undefined.

            3. If there is at least one such row, from the selected
               subset of rows, the subset that have the lowest value
               of pimGroupMappingPrecedence are selected.

            4. From the selected subset of rows, the subset that have
               the greatest value of pimGroupMappingGrpPrefixLength are
               selected.

            5. If there are multiple selected rows, the subset that have
               pimGroupMappingActive set to 'true' are selected.  There
               must be at least one such row.

            6. If there are multiple selected rows, the row selected is
               implementation dependent; the implementation might or
               might not apply the PIM hash function to select the row.

            7. The group mode to use is given by the value of
               pimGroupMappingPimMode from the single selected row; the
               RP to use is given by the value of
               pimGroupMappingRPAddress, unless pimGroupMappingOrigin is
               'embedded', in which case the RP is extracted from the
               group address in question using the algorithm in
               [RFC3956]."
    ::= { pim 13 }

pimGroupMappingEntry OBJECT-TYPE
    SYNTAX     PimGroupMappingEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimGroupMappingTable."
    INDEX      { pimGroupMappingOrigin,
                 pimGroupMappingAddressType,
                 pimGroupMappingGrpAddress,
                 pimGroupMappingGrpPrefixLength,
                 pimGroupMappingRPAddress }
    ::= { pimGroupMappingTable 1 }

PimGroupMappingEntry ::= SEQUENCE {
    pimGroupMappingOrigin           PimGroupMappingOriginType,
    pimGroupMappingAddressType      InetAddressType,
    pimGroupMappingGrpAddress       InetAddress,
    pimGroupMappingGrpPrefixLength  InetAddressPrefixLength,
    pimGroupMappingRPAddress        InetAddress,
    pimGroupMappingPimMode          PimMode,
    pimGroupMappingPrecedence       Unsigned32,
    pimGroupMappingActive           TruthValue
}

pimGroupMappingOrigin OBJECT-TYPE
    SYNTAX     PimGroupMappingOriginType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The mechanism by which this group mapping was learned."
    ::= { pimGroupMappingEntry 1 }

pimGroupMappingAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address type of the IP multicast group address, and 'other' means any other
            mechanism." prefix."
    ::= { pimRPSetEntry 5 pimGroupMappingEntry 2 }

pimRPSetRPAddress

pimGroupMappingGrpAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The IP multicast group address of which, when combined with
            pimGroupMappingGrpPrefixLength, gives the RP. group prefix for
            this mapping.  The InetAddressType is given by the pimRPSetAddressType
            pimGroupMappingAddressType object."
    ::= { pimRPSetEntry 6 pimGroupMappingEntry 3 }

pimRPSetBidirGroup

pimGroupMappingGrpPrefixLength OBJECT-TYPE
    SYNTAX     TruthValue     InetAddressPrefixLength (4..128)
    MAX-ACCESS read-only not-accessible
    STATUS     current
    DESCRIPTION
            "Evaluates to TRUE if groups belonging to
            "The multicast group prefix length, which, when combined
            with pimGroupMappingGrpAddress, gives the group prefix for
            this mapping.  The InetAddressType is given by the
            pimGroupMappingAddressType object.  If
            pimGroupMappingAddressType is 'ipv4' or 'ipv4z', this
            object must be in the range 4..32.  If
            pimGroupMappingAddressType is 'ipv6' or 'ipv6z', this entry are to object
            must be used with BIDIR-PIM." in the range 8..128."
    ::= { pimRPSetEntry 7 pimGroupMappingEntry 4 }

pimRPSetPriority

pimGroupMappingRPAddress OBJECT-TYPE
    SYNTAX     Unsigned32 (0..255)     InetAddress (SIZE (4|16|20))
    MAX-ACCESS read-only not-accessible
    STATUS     current
    DESCRIPTION
            "The RP Priority in IP address of the PIM Candidate-RP-Advertisement
            message or PIM Bootstrap message by which this RP was
            learned.  Numerically higher values to be used for groups within this object indicate
            lower priorities, with the value
            group prefix, or zero denoting if no RP is to be used or if the highest
            priority. RP
            address is unknown.  The InetAddressType is given by the
            pimGroupMappingAddressType object.  This object must be zero
            if pimGroupMappingPimMode is 0 'ssm', or if pimRPSetRPType
            pimGroupMappingOrigin is not 'bsr'." 'embedded'."
    ::= { pimRPSetEntry 8 pimGroupMappingEntry 5 }

pimRPSetHoldtime

pimGroupMappingPimMode OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "seconds"     PimMode
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The holdtime of PIM mode to be used for groups in this RP entry.  This object is 0 if
            pimRPSetRPType is not 'bsr'." group prefix."
    ::= { pimRPSetEntry 9 pimGroupMappingEntry 6 }

pimRPSetExpiryTime

pimGroupMappingPrecedence OBJECT-TYPE
    SYNTAX     TimeTicks     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The minimum time remaining before precedence of this row, used in the RP denoted by algorithm that
            determines which row applies to a given group address
            (described above).  Numerically higher values for this
            entry will be declared down.  The
            object indicate lower precedences, with the value zero indicates that 0 denoting
            the RP will never highest precedence.

            The absolute values of this object have a significance only
            on the local router and do not need to be declared down." coordinated with
            other routers."
    ::= { pimRPSetEntry 10 pimGroupMappingEntry 7 }

pimRPSetRPActive

pimGroupMappingActive OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Evaluates to TRUE
            "Whether or not this group mapping is active, and may
            therefore be used for obtaining RP or mode information.  A
            group mapping is always inactive if another mapping with a
            higher precedence (that is, a lower value of
            pimGroupMappingPrecedence) covers the RP in whole group prefix of
            this entry mapping.  Otherwise, a group mapping is always active
            unless there is at least one other mapping with the currently same
            precedence and the same group prefix as this mapping.  In
            this case, one or much such mappings are active; if more
            than one, the PIM hash function is applied to the subset of
            active RP mappings to select one to use for the an individual group range."
            within the prefix."
    ::= { pimRPSetEntry 11 pimGroupMappingEntry 8 }

--
-- The PIM BSR Candidate-RP Table
--

pimCandidateRPTable

bsrCandidateRPTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimCandidateRPEntry BsrCandidateRPEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the IP multicast groups for
            which the local router is to advertise itself as a
            Candidate-RP."
    ::= { pim 8 14 }

pimCandidateRPEntry

bsrCandidateRPEntry OBJECT-TYPE
    SYNTAX     PimCandidateRPEntry     BsrCandidateRPEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimCandidateRPTable." bsrCandidateRPTable."
    INDEX      { pimCandidateRPAddressType,
                 pimCandidateRPAddress,
                 pimCandidateRPGroupAddress,
                 pimCandidateRPGroupPrefixLength bsrCandidateRPAddressType,
                 bsrCandidateRPAddress,
                 bsrCandidateRPGroupAddress,
                 bsrCandidateRPGroupPrefixLength }
    ::= { pimCandidateRPTable bsrCandidateRPTable 1 }

PimCandidateRPEntry

BsrCandidateRPEntry ::= SEQUENCE {
    pimCandidateRPAddressType
    bsrCandidateRPAddressType       InetAddressType,
    pimCandidateRPAddress
    bsrCandidateRPAddress           InetAddress,
    pimCandidateRPGroupAddress
    bsrCandidateRPGroupAddress      InetAddress,
    pimCandidateRPGroupPrefixLength
    bsrCandidateRPGroupPrefixLength InetAddressPrefixLength,
    pimCandidateRPBidir
    bsrCandidateRPBidir             TruthValue,
    pimCandidateRPStatus
    bsrCandidateRPStatus            RowStatus
}

pimCandidateRPAddressType

bsrCandidateRPAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address type of the Candidate-RP."
    ::= { pimCandidateRPEntry bsrCandidateRPEntry 1 }

pimCandidateRPAddress

bsrCandidateRPAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (unicast) address which will be advertised as a
            Candidate-RP.  The InetAddressType is given by the pimCandidateRPAddressType
            bsrCandidateRPAddressType object."
    ::= { pimCandidateRPEntry bsrCandidateRPEntry 2 }

pimCandidateRPGroupAddress

bsrCandidateRPGroupAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The IP multicast group address which, when combined with
            the corresponding value of pimCandidateRPGroupPrefixLength, bsrCandidateRPGroupPrefixLength,
            identifies a group prefix for which the local router will
            advertise itself as a Candidate-RP.  The InetAddressType is
            given by the pimCandidateRPAddressType bsrCandidateRPAddressType object."
    ::= { pimCandidateRPEntry bsrCandidateRPEntry 3 }

pimCandidateRPGroupPrefixLength

bsrCandidateRPGroupPrefixLength OBJECT-TYPE
    SYNTAX     InetAddressPrefixLength
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The multicast group address mask which, when combined with
            the corresponding value of pimCandidateRPGroupMask, bsrCandidateRPGroupMask,
            identifies a group prefix for which the local router will
            advertise itself as a Candidate-RP.  The InetAddressType is
            given by the pimCandidateRPAddressType bsrCandidateRPAddressType object.  A value of
            zero is not permitted for this object."
    ::= { pimCandidateRPEntry bsrCandidateRPEntry 4 }

pimCandidateRPBidir

bsrCandidateRPBidir OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "If this object is set to TRUE, this group range is
            advertised to this RP as a BIDIR-PIM group range.  If it is
            set to FALSE, it is advertised as a PIM-SM group range."
    ::= { pimCandidateRPEntry bsrCandidateRPEntry 5 }

pimCandidateRPStatus

bsrCandidateRPStatus 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."
    ::= { pimCandidateRPEntry bsrCandidateRPEntry 6 }

--
-- The BSR RP-Set Table
--

bsrRPSetTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF BsrRPSetEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing BSR-specific information
            about PIM group mappings learned via BSR.  There is one
            entry in this table for every entry in the
            pimGroupMappingTable with a pimGroupMappingOrigin value of
            'bsr'."
    ::= { pim 15 }

bsrRPSetEntry OBJECT-TYPE
    SYNTAX     BsrRPSetEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the bsrRPSetTable."
    INDEX      { pimGroupMappingOrigin,
                 pimGroupMappingAddressType,
                 pimGroupMappingGrpAddress,
                 pimGroupMappingGrpPrefixLength,
                 pimGroupMappingRPAddress }
    ::= { bsrRPSetTable 1 }

BsrRPSetEntry ::= SEQUENCE {
    bsrRPSetPriority          Unsigned32,
    bsrRPSetHoldtime          Unsigned32,
    bsrRPSetExpiryTime        TimeTicks
}

bsrRPSetPriority OBJECT-TYPE
    SYNTAX     Unsigned32 (0..255)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The RP Priority from the PIM Candidate-RP-Advertisement
            message or PIM Scope Zone Bootstrap message by which this RP was
            learned.  Numerically higher values for this object indicate
            lower priorities, with the value zero denoting the highest
            priority."
    ::= { bsrRPSetEntry 1 }

bsrRPSetHoldtime OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "seconds"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The RP Holdtime from the PIM Candidate-RP-Advertisement
            message or PIM Bootstrap message by which this RP was
            learned."
    ::= { bsrRPSetEntry 2 }

bsrRPSetExpiryTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The minimum time remaining before this entry will be aged
            out.  The value zero indicates that this entry will never be
            aged out."
    ::= { bsrRPSetEntry 3 }

--
-- The BSR Candidate-BSR Table
--

pimScopeZoneTable

bsrCandidateBSRTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimScopeZoneEntry BsrCandidateBSREntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table containing objects specific to a
            scoped region within a PIM-SM domain.  One Candidate-BSR
            configuration for the local router.  The table contains one
            row exists for each scoped zone in each domain to address family for which the local router is
            connected.  A PIM-SM scoped zone is defined to
            advertise itself as an area
            within a PIM-SM domain over which PIM Bootstrap messages for
            the group range belonging to the scope are forwarded." Candidate-BSR."
    ::= { pim 9 16 }

pimScopeZoneEntry

bsrCandidateBSREntry OBJECT-TYPE
    SYNTAX     PimScopeZoneEntry     BsrCandidateBSREntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimScopeZoneTable." bsrCandidateBSRTable."
    INDEX      { pimScopeZoneId bsrCandidateBSRAddressType }
    ::= { pimScopeZoneTable bsrCandidateBSRTable 1 }

PimScopeZoneEntry

BsrCandidateBSREntry ::= SEQUENCE {
    pimScopeZoneId                   Unsigned32,
    pimScopeZoneCandidateBSR         TruthValue,
    pimScopeZoneCandidateBSRPriority Unsigned32,
    pimScopeZoneBSRAddressType
    bsrCandidateBSRAddressType      InetAddressType,
    pimScopeZoneBSRAddress
    bsrCandidateBSRAddress          InetAddress,
    pimScopeZoneBSRExpiryTime
    bsrCandidateBSRPriority         Unsigned32,
    bsrCandidateBSRHashMaskLength   Unsigned32,
    bsrCandidateBSRElectedBSR       TruthValue,
    bsrCandidateBSRBootstrapTimer   TimeTicks,
    pimScopeZoneStatus
    bsrCandidateBSRStatus           RowStatus
}

pimScopeZoneId

bsrCandidateBSRAddressType OBJECT-TYPE
    SYNTAX     Unsigned32 (1..255)     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "A number uniquely identifying an admin scoped zone within a
            domain."
            "The address type of the Candidate-BSR."
    ::= { pimScopeZoneEntry bsrCandidateBSREntry 1 }

pimScopeZoneCandidateBSR

bsrCandidateBSRAddress OBJECT-TYPE
    SYNTAX     TruthValue     InetAddress
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Whether or not
            "The (unicast) address which the local router is will use to
            advertise itself as a Candidate-BSR."
    DEFVAL { false } Candidate-BSR.  The InetAddressType is
            given by the bsrCandidateBSRAddressType object."
    ::= { pimScopeZoneEntry bsrCandidateBSREntry 2 }

pimScopeZoneCandidateBSRPriority

bsrCandidateBSRPriority OBJECT-TYPE
    SYNTAX     Unsigned32 (0..255)
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The priority value for the local router as a Candidate-BSR. Candidate-BSR
            for this address type.  Numerically higher values for this
            object indicate higher
            priorities. priorities."
    DEFVAL { 0 }
    ::= { bsrCandidateBSREntry 3 }

bsrCandidateBSRHashMaskLength OBJECT-TYPE
    SYNTAX     Unsigned32 (0..128)
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The hash mask length (used in the RP hash function) that
            the local router will advertise in its Bootstrap messages
            for this address type.  This object defaults to 30 if
            bsrCandidateBSRAddressType is only used 'ipv4' or 'ipv4z', and
            defaults to 126 if
            pimScopeZoneCandidateBSR bsrCandidateBSRAddressType is TRUE." 'ipv6' or
            'ipv6z'."
    -- DEFVAL { 0 30 or 126 }
    ::= { pimScopeZoneEntry 3 bsrCandidateBSREntry 4 }

pimScopeZoneBSRAddressType

bsrCandidateBSRElectedBSR OBJECT-TYPE
    SYNTAX     InetAddressType     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The type of address of
            "Whether the bootstrap local router (BSR) is the elected BSR for this
            address type."
    ::= { bsrCandidateBSREntry 5 }

bsrCandidateBSRBootstrapTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time remaining before the local PIM scoped zone." router next originates
            a Bootstrap message for this address type.  This is zero if
            bsrCandidateBSRElectedBSR is 'false'."
    ::= { pimScopeZoneEntry 4 bsrCandidateBSREntry 6 }

bsrCandidateBSRStatus 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."
    ::= { bsrCandidateBSREntry 7 }

--
-- The BSR Elected BSR Table
--

bsrElectedBSRTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF BsrElectedBSREntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table containing information about elected
            BSRs.  The table contains one row for each address family
            for which there is an elected BSR."
    ::= { pim 17 }

bsrElectedBSREntry OBJECT-TYPE
    SYNTAX     BsrElectedBSREntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the bsrElectedBSRTable."
    INDEX      { bsrElectedBSRAddressType }
    ::= { bsrElectedBSRTable 1 }

BsrElectedBSREntry ::= SEQUENCE {
    bsrElectedBSRAddressType      InetAddressType,
    bsrElectedBSRAddress          InetAddress,
    bsrElectedBSRPriority         Unsigned32,
    bsrElectedBSRHashMaskLength   Unsigned32,
    bsrElectedBSRExpiryTime       TimeTicks,
    bsrElectedBSRCRPAdvTimer      TimeTicks
}

bsrElectedBSRAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address type of the elected BSR."
    ::= { bsrElectedBSREntry 1 }

pimScopeZoneBSRAddress

bsrElectedBSRAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16|20))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The (unicast) address of the bootstrap router (BSR) for the local PIM
            scoped zone. elected BSR.  The
            InetAddressType is given by the
            pimScopeZoneBSRAddressType bsrElectedBSRAddressType
            object."
    ::= { pimScopeZoneEntry 5 bsrElectedBSREntry 2 }

pimScopeZoneBSRExpiryTime

bsrElectedBSRPriority OBJECT-TYPE
    SYNTAX     Unsigned32 (0..255)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The priority value for the elected BSR for this address
            type.  Numerically higher values for this object indicate
            higher priorities."
    ::= { bsrElectedBSREntry 3 }

bsrElectedBSRHashMaskLength OBJECT-TYPE
    SYNTAX     Unsigned32 (0..128)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The hash mask length (used in the RP hash function)
            advertised by the elected BSR for this address type."
    ::= { bsrElectedBSREntry 4 }

bsrElectedBSRExpiryTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The minimum time remaining before the bootstrap router in
            the local scoped zone elected BSR for this
            address type will be declared down.  For candidate
            BSRs, this is the time until the component sends a PIM
            Bootstrap message.  For other routers, this is the time
            until it may accept a PIM Bootstrap message from a lower
            candidate BSR." down."
    ::= { pimScopeZoneEntry 6 bsrElectedBSREntry 5 }

pimScopeZoneStatus

bsrElectedBSRCRPAdvTimer OBJECT-TYPE
    SYNTAX     RowStatus     TimeTicks
    MAX-ACCESS read-create read-only
    STATUS     current
    DESCRIPTION
            "The status of this entry.  Creating the entry creates
            another protocol instance; destroying time remaining before the entry disables local router next sends a
            protocol instance."
            Candidate-RP-Advertisement signal to the elected BSR for
            this address type."
    ::= { pimScopeZoneEntry 7 bsrElectedBSREntry 6 }

--
-- PIM Traps
--

pimNeighborLoss NOTIFICATION-TYPE
    OBJECTS { pimNeighborUpTime }
    STATUS     current
    DESCRIPTION
            "A pimNeighborLoss trap signifies the loss of an adjacency
            with a neighbor.  This trap should be generated when the
            neighbor timer expires, and the router has no other
            neighbors on the same interface with the same IP version and
            a lower IP address than itself."
    ::= { pimTraps 1 }

--
-- Conformance Information
--

pimMIBConformance OBJECT IDENTIFIER ::= { pimStdMIB 2 }
pimMIBCompliances OBJECT IDENTIFIER ::= { pimMIBConformance 1 }
pimMIBGroups      OBJECT IDENTIFIER ::= { pimMIBConformance 2 }

--
-- Compliance Statements
--

pimMIBCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
            "The compliance statement for PIM routers which implement
            the PIM MIB."
    MODULE  -- this module
    MANDATORY-GROUPS { pimNotificationGroup,
                       pimObjectGroup }
    ::= { pimMIBCompliances 1 }

--
-- Units of Conformance
--

pimNotificationGroup NOTIFICATION-GROUP
    NOTIFICATIONS { pimNeighborLoss }
    STATUS  current
    DESCRIPTION
            "A collection of notifications for signaling important PIM
            events."
    ::= { pimMIBGroups 1 }

pimObjectGroup OBJECT-GROUP
    OBJECTS { pimInterfaceAddressType,
              pimInterfaceAddress,
              pimInterfaceNetMaskLength,
              pimInterfaceDR,
              pimInterfaceHelloInterval,
              pimInterfaceTrigHelloInterval,
              pimInterfaceJoinPruneInterval,
              pimInterfaceDFElectionRobustness,
              pimInterfaceHelloHoldtime,
              pimInterfaceJoinPruneHoldtime,
              pimInterfaceUseLanPruneDelay,
              pimInterfacePropagationDelay,
              pimInterfaceOverrideInterval,
              pimInterfaceUseGenerationID,
              pimInterfaceGenerationIDValue,
              pimInterfaceUseDRPriority,
              pimInterfaceDRPriority,
              pimInterfaceLanDelayEnabled,
              pimInterfaceEffectPropagDelay,
              pimInterfaceEffectOverrideIvl,
              pimInterfaceSuppressionEnabled,
              pimInterfaceBidirCapable,
              pimInterfaceDRPriorityEnabled,
              pimInterfaceBSRBorder,
              pimInterfaceStatus,
              pimNeighborUpTime,
              pimNeighborExpiryTime,
              pimNeighborLanPruneDelayPresent,
              pimNeighborPropagationDelay,
              pimNeighborOverrideInterval,
              pimNeighborTBit,
              pimNeighborGenerationIDPresent,
              pimNeighborGenerationIDValue,
              pimNeighborBidirCapable,
              pimNeighborDRPriorityPresent,
              pimNeighborDRPriority,
              pimNbrSecAddress,
              pimMRouteUpTime,
              pimMRouteExpiryTime,
              pimMRouteType,
              pimMRouteRPAddress,
              pimMRouteRPFIfIndex,
              pimMRouteRPFNeighbor,
              pimMRouteUpstreamAssertTimer,
              pimMRouteAssertRPTBit,
              pimMRouteAssertMetricPref,
              pimMRouteAssertMetric,
              pimMRouteFlags,
              pimMRouteNextHopUpTime,
              pimMRouteNextHopForwarding,
              pimMRouteNextHopJoinPruneTimer,
              pimMRouteNextHopAssertWinner,
              pimMRouteNextHopAssertTimer,
              pimMRouteNextHopAssertRPTBit,
              pimMRouteNextHopAssertMetricPref,
              pimMRouteNextHopAssertMetric,
              pimStarGUpTime,
              pimStarGPimMode,
              pimStarGRPAddress,
              pimStarGRPOrigin,
              pimStarGRPIsLocal,
              pimStarGUpstreamJoinState,
              pimStarGUpstreamJoinTimer,
              pimStarGUpstreamNeighbor,
              pimStarGRPFIfIndex,
              pimStarGRPFNextHop,
              pimStarGRPFRouteProtocol,
              pimStarGRPFRouteAddress,
              pimStarGRPFRoutePrefixLength,
              pimStarGRPFRouteMetricPref,
              pimStarGRPFRouteMetric,
              pimStarGIUpTime,
              pimStarGILocalMembership,
              pimStarGIJoinPruneState,
              pimStarGIPrunePendingTimer,
              pimStarGIJoinExpiryTimer,
              pimStarGIAssertState,
              pimStarGIAssertTimer,
              pimStarGIAssertWinnerAddress,
              pimStarGIAssertWinnerMetricPref,
              pimStarGIAssertWinnerMetric,
              pimSGUpTime,
              pimSGPimMode,
              pimSGUpstreamJoinState,
              pimSGUpstreamJoinTimer,
              pimSGUpstreamNeighbor,
              pimSGRPFIfIndex,
              pimSGRPFNextHop,
              pimSGRPFRouteProtocol,
              pimSGRPFRouteAddress,
              pimSGRPFRoutePrefixLength,
              pimSGRPFRouteMetricPref,
              pimSGRPFRouteMetric,
              pimSGSPTBit,
              pimSGKeepaliveTimer,
              pimSGDRRegisterState,
              pimSGDRRegisterStopTimer,
              pimSGRPRegisterPMBRAddress,
              pimSGIUpTime,
              pimSGILocalMembership,
              pimSGIJoinPruneState,
              pimSGIPrunePendingTimer,
              pimSGIJoinExpiryTimer,
              pimSGIAssertState,
              pimSGIAssertTimer,
              pimSGIAssertWinnerAddress,
              pimSGIAssertWinnerMetricPref,
              pimSGIAssertWinnerMetric,
              pimSGRptUpTime,
              pimSGRptUpstreamPruneState,
              pimSGRptUpstreamOverrideTimer,
              pimSGRptIUpTime,
              pimSGRptILocalMembership,
              pimSGRptIJoinPruneState,
              pimSGRptIPrunePendingTimer,
              pimSGRptIPruneExpiryTimer,
              pimBidirDFElectionWinnerAddress,
              pimBidirDFElectionWinnerUpTime,
              pimBidirDFElectionWinnerMetricPref,
              pimBidirDFElectionWinnerMetric,
              pimBidirDFElectionState,
              pimBidirDFElectionStateTimer,
              pimRPSetBidirGroup,
              pimRPSetPriority,
              pimRPSetHoldtime,
              pimRPSetExpiryTime,
              pimRPSetRPActive,
              pimCandidateRPBidir,
              pimCandidateRPStatus,
              pimScopeZoneCandidateBSR,
              pimScopeZoneCandidateBSRPriority,
              pimScopeZoneBSRAddressType,
              pimScopeZoneBSRAddress,
              pimScopeZoneBSRExpiryTime,
              pimScopeZoneStatus
              pimSsmRangeRowStatus,
              pimStaticRPRPAddress,
              pimStaticRPPimMode,
              pimStaticRPOverrideDynamic,
              pimStaticRPRowStatus,
              pimGroupMappingPimMode,
              pimGroupMappingPrecedence,
              pimGroupMappingActive,
              bsrCandidateRPBidir,
              bsrCandidateRPStatus,
              bsrRPSetPriority,
              bsrRPSetHoldtime,
              bsrRPSetExpiryTime,
              bsrCandidateBSRAddress,
              bsrCandidateBSRPriority,
              bsrCandidateBSRHashMaskLength,
              bsrCandidateBSRElectedBSR,
              bsrCandidateBSRBootstrapTimer,
              bsrCandidateBSRStatus,
              bsrElectedBSRAddress,
              bsrElectedBSRPriority,
              bsrElectedBSRHashMaskLength,
              bsrElectedBSRExpiryTime,
              bsrElectedBSRCRPAdvTimer }
    STATUS  current
    DESCRIPTION
            "A collection of objects for managing PIM routers."
    ::= { pimMIBGroups 2 }

END
5.  Security Considerations

   There are a number of management objects defined in this MIB module
   with a MAX-ACCESS clause of read-write and/or read-create.  Such
   objects may be considered sensitive or vulnerable in some network
   environments.  The support for SET operations in a non-secure
   environment without proper protection can have a negative effect on
   network operations.  These are the tables and objects and their
   sensitivity/vulnerability:

   TODO.

   Some of the readable objects in this MIB module (i.e., objects with a
   MAX-ACCESS other than not-accessible) may be considered sensitive or
   vulnerable in some network environments.  It is thus important to
   control even GET and/or NOTIFY access to these objects and possibly
   to even encrypt the values of these objects when sending them over
   the network via SNMP.  These are the tables and objects and their
   sensitivity/vulnerability:

   TODO.

   SNMP versions prior to SNMPv3 did not include adequate security.
   Even if the network itself is secure (for example by using IPSec),
   even then, there is no control as to who on the secure network is
   allowed to access and GET/SET (read/change/create/delete) the objects
   in this MIB module.

   It is RECOMMENDED that implementers consider the security features as
   provided by the SNMPv3 framework (see [RFC3410], section 8),
   including full support for the SNMPv3 cryptographic mechanisms (for
   authentication and privacy).

   Further, deployment of SNMP versions prior to SNMPv3 is NOT
   RECOMMENDED.  Instead, it is RECOMMENDED to deploy SNMPv3 and to
   enable cryptographic security.  It is then a customer/operator
   responsibility to ensure that the SNMP entity giving access to an
   instance of this MIB module is properly configured to give access to
   the objects only to those principals (users) that have legitimate
   rights to indeed GET or SET (change/create/delete) them.

6.  IANA Considerations

   PIM-STD-MIB should be rooted under the mib-2 subtree.  IANA is
   requested to assign { mib-2 XXX } to the PIM-STD-MIB module specified
   in this document.

7.  Acknowledgements

   This MIB module is based on the original work in RFC 2934 [RFC2934]
   by K. McCloghrie, D. Farinacci, D. Thaler and W. Fenner and has been
   updated based on feedback from the IETF's Protocol Independent
   Multicast (PIM) Working Group.

   Jonathan Nicholas was the editor of early versions of this document.

8.  References

8.1  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2434]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", BCP 26, RFC 2434,
              October 1998.

   [RFC2578]  McCloghrie, K., Ed., Perkins, D., Ed., and J.
              Schoenwaelder, Ed., "Structure of Management Information
              Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.

   [RFC2579]  McCloghrie, K., Ed., Perkins, D., Ed., and J.
              Schoenwaelder, Ed., "Textual Conventions for SMIv2",
              STD 58, RFC 2579, April 1999.

   [RFC2580]  McCloghrie, K., Perkins, D., and J. Schoenwaelder,
              "Conformance Statements for SMIv2", STD 58, RFC 2580,
              April 1999.

   [RFC2863]  McCloghrie, K. and F. Kastenholz, "The Interfaces Group
              MIB", RFC 2863, June 2000.

   [RFC4001]  Daniele, M., Haberman, B., Routhier, S., and J.
              Schoenwaelder, "Textual Conventions for Internet Network
              Addresses", RFC 4001, February 2005.

   [I-D.ietf-pim-sm-v2-new]
              Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas,
              "Protocol Independent Multicast - Sparse Mode PIM-SM):
              Protocol Specification  (Revised)",
              draft-ietf-pim-sm-v2-new-11 (work in progress),
              October 2004.

   [I-D.ietf-pim-bidir]
              Handley, M., Kouvelas, I., Speakman, T., and L. Vicisano,
              "Bi-directional Protocol Independent Multicast (BIDIR-
              PIM)", draft-ietf-pim-bidir-07 (work in progress),
              March 2005.

   [I-D.ietf-pim-sm-bsr]
              Bhaskar, N., "Bootstrap Router (BSR) Mechanism for PIM",
              draft-ietf-pim-sm-bsr-05 (work in progress),
              February 2005.

   [RFC3569]  Bhattacharyya, S., "An Overview of Source-Specific
              Multicast (SSM)", RFC 3569, July 2003.

   [RFC3956]  Savola, P. and B. Haberman, "Embedding the Rendezvous
              Point (RP) Address in an IPv6 Multicast Address",
              RFC 3956, November 2004.

8.2  Informative References

   [RFC3410]  Case, J., Mundy, R., Partain, D., and B. Stewart,
              "Introduction and Applicability Statements for Internet-
              Standard Management Framework", RFC 3410, December 2002.

   [RFC2932]  McCloghrie, K., Farinacci, D., and D. Thaler, "IPv4
              Multicast Routing MIB", RFC 2932, October 2000.

   [RFC2934]  McCloghrie, K., Farinacci, D., Thaler, D., and B. Fenner,
              "Protocol Independent Multicast MIB for IPv4", RFC 2934,
              October 2000.

Authors' Addresses

   Raghava Sivaramu
   Cisco Systems
   425 E. Tasman Drive
   San Jose  CA 95134
   USA

   Email: raghava@cisco.com
   James Lingard
   Data Connection Ltd
   100 Church Street
   Enfield  EN2 6BQ
   United Kingdom

   Email: james.lingard@dataconnection.com

   Bharat Joshi
   Infosys Technologies Ltd
   Electronic City
   Bangalore  560 100
   India

   Email: bharat_joshi@infosys.com

Intellectual Property Statement

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.

Disclaimer of Validity

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Copyright Statement

   Copyright (C) The Internet Society (2005).  This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.

Acknowledgment

   Funding for the RFC Editor function is currently provided by the
   Internet Society.