DC-PIM-MIB DEFINITIONS ::= BEGIN
-- PRODUCT-SHORT-NAME pim

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    NOTIFICATION-TYPE,
    Unsigned32,
    TimeTicks,
    Counter32,
    Gauge32                          FROM SNMPv2-SMI
    RowStatus, TruthValue,
    TEXTUAL-CONVENTION               FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP,
    NOTIFICATION-GROUP               FROM SNMPv2-CONF
    InterfaceIndex,
    InterfaceIndexOrZero             FROM IF-MIB
    InetAddressType,
    InetAddressPrefixLength,
    InetAddress, InetVersion         FROM INET-ADDRESS-MIB
    IANAipRouteProtocol              FROM IANA-RTPROTO-MIB
    AdminStatus, NpgOperStatus,
    NumericIndex, NumericIndexOrZero,
    L2BridgeDomainType,
    BfdSessionStatus,
    StdAccessListListIndexOrZero,
    ExtAccessListListIndexOrZero     FROM DC-MASTER-TC;

dcPimMIB MODULE-IDENTITY
    LAST-UPDATED "200510050000Z" -- Wed Oct 5 00:00:00 GMT 2005
    ORGANIZATION "Data Connection Ltd."
    CONTACT-INFO
            "Postal: Data Connection Ltd.
                     100 Church Street
                     Enfield
                     Middlesex EN2 6BQ
                     United Kingdom
             Tel:    +44 20 83661177
             E-mail: dcpim@dataconnection.com"
    DESCRIPTION
            "The MIB module for management of the DC-PIM product.  This
            is closely based on the standard IETF PIM MIB, defined in
            draft-ietf-pim-mib-v2-03."
    ::= { iso
          member-body(2)
          gb(826)
-- Versa changed national from 0 to 42
          national(42)
          eng-ltd(1)
          dataConnectionLtd(1578918)
          adg(5)
          pim(71) 1 }

pimMIBObjects OBJECT IDENTIFIER ::= { dcPimMIB 1 }
pimTraps      OBJECT IDENTIFIER ::= { pimMIBObjects 0 }
pimTables     OBJECT IDENTIFIER ::= { pimMIBObjects 1 }

--
-- Textual Conventions
--

-- DC additions {

PimTmIfIdMj ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
            "The type of interface to which a DC-PIM TIB Manager master
            join applies."
    SYNTAX     INTEGER {
                  tmMjIfTib(1),           -- Tree Information Base
                  tmMjIfGmi(2),           -- MGMD Host
                  tmMjIfMsdi(3)           -- MSDP entity
               }

PimTmIfIdSj ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
            "The type of interface to which a DC-PIM TIB Manager slave
            join applies."
    SYNTAX     INTEGER {
                  tmSjIfGrpMgmnt(1),      -- Group Management
                  tmSjIfActiveRoutes(2),  -- Active Routes
                  tmSjIfNbrMgmnt(3)       -- PIM Neighbor Management
               }

PimStatsCounter ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
            "The count of the number of events of a particular type that
            have occurred since the last time either the NMI join was
            established (caused by activating DC-PIM TIB Manager or
            DC-PIM Neighbor Manager, or by recovery after NMI join
            failure/fail-over), or the statistics were explicitly reset
            by setting the pimNmEntClearStatsCounters object to 'true'.
            This value can wrap."
    SYNTAX     Unsigned32

PimEntMode ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
            "The PIM mode in which an entity is operating.

            sparse       The entity is running in sparse mode, as defined in
                         RFC4601.

            dense        The entity is running in dense mode, as defined in
                         RFC3973.

            sparsedense
                         The entity is running in sparse-dense mode - that is,
                         some groups can operate in sparse mode, and other
                         groups can operate in dense mode.
            mgmdsnooping
                         The entity is running as an MGMD snooping device.
                         There is no standard for this behavior, but it is
                         discussed in RFC4541.
            mgmdproxy
                         The entity is running as an MGMD proxy device, as
                         defined in RFC4605."
    SYNTAX     BITS {
                  sparse(0),
                  dense(1),
                  sparsedense(2),
                  mgmdsnooping(3),
                  mgmdproxy(4)
               }

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

            none(1)      The group is not using PIM, for example because
                         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.

            dense(6)     PIM Dense Mode.  Groups can be source-specific or
                         any source, but throughout PIM and DC-PIM, the terms
                         Source-Specific Multicast (SSM) and Any Source Multicast
                         (ASM) refer only to the subsets of source-specific and
                         any source groups that are operating in PIM Sparse Mode."
    SYNTAX     INTEGER {
                  none(1),
                  ssm(2),
                  asm(3),
                  bidir(4),
                  other(5),
                  dense(6)
               }

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

            static(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].

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

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

PruneState ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
            "Upstream Prune FSM states.  PIM-DM only.

            forwarding(1)  'Forwarding' FSM state.  The local router is
                           forwarding data.

            ackPending(2)  'AckPending' FSM state.  The local router is
                           forwarding data and is awaiting a Graft Ack from the
                           upstream peer.

            pruned(3)      'Pruned' FSM state.  The local router is not
                           forwarding data."

    SYNTAX     INTEGER {
                  forwarding(1),
                  ackPending(2),
                  pruned(3)
               }

OriginatorState ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
            "Originator FSM states.  PIM-DM only.

            notOriginator(0)  'Not Originator' FSM state.  The local router is
                              not originating StateRefresh messages.

            originator(1)     'Originator' FSM state.  The local router is
                              originating StateRefresh messages (unless it is
                              in 'loser' state in its Assert FSM on every
                              downstream interface)."
    SYNTAX     INTEGER {
                  notOriginator(0),
                  originator(1)
               }

PimMultipathMode ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
            "The selection method when PIM needs to choose between.
            multiple ECMP RPF next hops provided by the MRIB.

            highestNeighbor(1)    Use no load splitting between ECMP next
                                  hops.  If multiple ECMP next hops are
                                  available, PIM selects a next hop
                                  corresponding to the PIM neighbor that has
                                  the highest IP address (using the highest
                                  interface index as tie breaker).  If no
                                  next hops are PIM neighbors, then the next
                                  hop that has the highest IP address is
                                  used.

            nextHopGroupHash(2)   Choose the next hop using a hash algorithm
                                  based on group and next hop address.

            groupModulo(3)        Choose the next hop based on group address
                                  modulo the number of next hops.

            nextHopSGHash(4)      Choose the next hop using a hash algorithm
                                  based on source address (if relevant), group
                                  address, and next hop address.

                                  For next hop decisions in which there is no
                                  source address (such as (*,G) protocol
                                  packets), this behaves like the
                                  next-hop-group-hash algorithm."
    SYNTAX     INTEGER {
                  highestNeighbor(1),
                  nextHopGroupHash(2),
                  groupModulo(3),
                  nextHopSGHash(4)
               }

PimBsrRPMultipathMode ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION "The group modes for which PIM performs RP load-splitting,
                when needing to choose between multiple BSR-learnt RPs for a
                group range, each with the same PIM mode and priority value."
    SYNTAX     BITS {
                  asm(0),
                  bidir(1)
               }

PimRPMultipathAlgorithms ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION "The algorithms that PIM supports for choosing between
                multiple RPs for a group range, with the same origin (static
                or BSR), PIM mode and priority value."
    SYNTAX     INTEGER {
                  rfc4601Hash(1),
                  groupModulo(2)
               }

PimStaticRPMultiOpFailReason ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION "The reason that a row in pimStaticRPMultiTable has failed to
                activate."

    SYNTAX     INTEGER {
                  none(1),
                  configClash(2),
                  inconsistentOverride(3)
               }

PimGrTimerValue ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
           "Minimum, maximum and default values for the Graceful Restart
            backstop timer duration.  In seconds.

            The default value is 0 seconds - i.e. Graceful Restart is disabled.
            This is so that existing deployment don't have Graceful Restart
            silently enabled on upgrade."
    SYNTAX      Unsigned32 (0..3600)

PimGrStatus ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
            "The current status and previous result of PIM graceful restart.

            disabled(1)           PIM graceful restart is disabled.

            learning(2)           PIM is currently learning group membership
                                  state from PIM neighbors and the local MGMD
                                  device.

            querying(3)           PIM is waiting for the data plane integration
                                  to inform it of all known active data
                                  sources.

            programming(4)        After the query above has completed, any
                                  outstanding data plane programming work is
                                  completed during the programming stage.

            successful(5)         The previous restart completed successfully.

            timedOut(6)           The previous restart was interrupted by the
                                  backstop timer expiring.

            failed(7)             The previous restart failed due to a reason
                                  other than the backstop timer expiring."
    SYNTAX     INTEGER {
                  disabled(1),
                  learning(2),
                  querying(3),
                  programming(4),
                  successful(5),
                  timedOut(6),
                  failed(7)
               }

PimDfElectionState ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
            "BIDIR-PIM DF election states."

    SYNTAX     INTEGER {
                  offer(1),
                  lose(2),
                  win(3),
                  backoff(4),
                  disabled(5)
               }

PimBfdSessionType ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION "The BFD session support type for an interface."
    SYNTAX      INTEGER {
                  none(0),
                  desired(1),
                  strict(2)
                }

PimNeighborOperState ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION "Oper state values for a PIM Neighbor."
    SYNTAX      INTEGER {
                  up(1),
                  goingDown(2),
                  pendingBfd(3)
                }

-- } End DC additions

--
-- The PIM Interface Table
--

pimInterfaceTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimInterfaceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
-- DC modifications {
            "This table is used to create and manage the {interface, IP
             version} pairs for which PIM is enabled.

             When the entity is running MGMD Snooping or Proxy (but not
             in the deprecated mode enabled by pimTmEntMgmdProxy), this
             table is not used, and all rows created will be ignored."
-- } End DC modifications
    ::= { pimTables 1 }

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

PimInterfaceEntry ::= SEQUENCE {
    pimInterfaceIfIndex              InterfaceIndex,
    pimInterfaceIPVersion            InetVersion,
    pimInterfaceAddressType          InetAddressType,
    pimInterfaceAddress              InetAddress,
    pimInterfaceNetMaskLength        InetAddressPrefixLength,
    pimInterfaceDR                   InetAddress,
    pimInterfaceHelloInterval        Unsigned32,
    pimInterfaceTrigHelloInterval    Unsigned32,
    pimInterfaceJoinPruneInterval    Unsigned32,
    pimInterfaceHelloHoldtime        Unsigned32,
    pimInterfaceJoinPruneHoldtime    Unsigned32,
    pimInterfacePropagationDelay     Unsigned32,
    pimInterfaceOverrideInterval     Unsigned32,
    pimInterfaceGenerationIDValue    Unsigned32,
    pimInterfaceDRPriority           Unsigned32,
    pimInterfaceLanDelayEnabled      TruthValue,
    pimInterfaceEffectPropagDelay    Unsigned32,
    pimInterfaceEffectOverrideIvl    Unsigned32,
    pimInterfaceSuppressionEnabled   TruthValue,
    pimInterfaceBidirCapable         TruthValue,
    pimInterfaceDRPriorityEnabled    TruthValue,
    pimInterfaceStatus               RowStatus,
    pimInterfaceGraftRetryInterval   Unsigned32,
    pimInterfaceSRAllCapable         TruthValue,
-- DC additions {
    pimInterfaceAdminStatus           AdminStatus,
    pimInterfaceOperStatus            NpgOperStatus,
    pimInterfaceStubInterface         TruthValue,
    pimInterfaceP2PNoHellos           TruthValue,
    pimInterfaceMgmdEntIndex          NumericIndexOrZero,
    pimInterfaceNeighborCount         Gauge32,
    pimInterfaceStarGStateLimit       Unsigned32,
    pimInterfaceStarGStateWarnThold   Unsigned32,
    pimInterfaceStarGStateStored      Gauge32,
    pimInterfaceSGStateLimit          Unsigned32,
    pimInterfaceSGStateWarnThold      Unsigned32,
    pimInterfaceSGStateStored         Gauge32,
    pimInterfaceUseNeighborFilter     TruthValue,
    pimInterfaceNeighborFilter        StdAccessListListIndexOrZero,
    pimInterfaceAssertInterval        Unsigned32,
    pimInterfaceAssertHoldtime        Unsigned32,
-- } End DC additions
    pimInterfaceDomainBorder          TruthValue,
-- DC additions {
    pimInterfaceUseAsmGrpFilter       TruthValue,
    pimInterfaceAsmGrpFilter          StdAccessListListIndexOrZero,
    pimInterfaceUseSsmSrcAndGrpFilt   TruthValue,
    pimInterfaceSsmSrcAndGrpFilter    ExtAccessListListIndexOrZero,
-- Begin Versa change {
    pimInterfaceSiteName              OCTET STRING,
    pimInterfaceIfName                OCTET STRING,
-- End Versa change }
    pimInterfaceDFElectionRobustness  Unsigned32,
    pimInterfaceDFElectionOfferIvl    Unsigned32,
    pimInterfaceDFElectionBackoffIvl  Unsigned32,
    pimInterfaceBfdDesired            PimBfdSessionType
-- } End DC additions
}

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, for example
            IPv4 and IPv6, but the traffic is considered to be
            logically separate, and a separate row must be configured in
            this table for each mode.

            DC-PIM supports only the values 'ipv4' and 'ipv6' for
            this object."
    ::= { pimInterfaceEntry 2 }

pimInterfaceAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The address type of this PIM interface.

            DC-PIM returns the same entry for this object as for the
            pimInterfaceIPVersion object."
    ::= { pimInterfaceEntry 3 }

pimInterfaceAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    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 (0..128)
    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))
    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.

                 This field is ignored if pimTmEntMgmdProxy is set to
                 'true'.

                 The PIM DR is not relevant for bidir or dense-mode groups.
                 However, because all PIM modes use a commonized Hello
                 message format, a PIM DR might be elected even when
                 'sparse' is clear for pimTmEntMode."
    ::= { 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 and
                 PIM-DM specifications (RFC4601 and RFC3973 respectively -
                 and the BIDIR-PIM specification, RFC5015, reuses the
                 PIM-SM Hello specification).  A value of 0 represents an
                 'infinite' interval, and indicates that periodic PIM Hello
                 messages should not be sent on this interface.

                 This field is ignored if pimTmEntMgmdProxy is set to
                 'true'."
    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 'Triggered_Hello_Delay' timer value defined in the
                 PIM-SM and PIM-DM specifications (RFC4601 and RFC3973
                 respectively - and the BIDIR-PIM specification, RFC5015,
                 reuses the PIM-SM Hello specification).  A value of 0 has
                 no special meaning and indicates that triggered PIM Hello
                 messages should always be sent immediately.

                 This field is ignored if pimTmEntMgmdProxy is set to
                 'true'."
    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 and
                 BIDIR-PIM specifications (RFC4601 and RFC5015).  A value
                 of 0 represents an 'infinite' interval, and indicates that
                 periodic PIM Join/Prune messages should not be sent on
                 this interface.

                 This field is only relevant for PIM-SM and BIDIR-PIM.  It
                 is ignored if either

                 - 'dense', 'mgmd-snooping' or 'mgmd-proxy' is set for
                 pimTmEntMode

                 - pimTmEntMgmdProxy is 'true'."
    DEFVAL { 60 }
    ::= { pimInterfaceEntry 9 }

pimInterfaceHelloHoldtime OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
-- DC modifications {
            "The value set in the Holdtime field of PIM Hello messages
             transmitted on this interface, that is, the amount of time
             a receiver must consider the neighbor reachable, in the
             absence of further PIM Hello messages.  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.

             This field is ignored if pimTmEntMgmdProxy is set to
             'true'."
-- } End DC modifications
    DEFVAL { 105 }
    ::= { pimInterfaceEntry 11 }

pimInterfaceJoinPruneHoldtime OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
-- DC modifications {
                "The value inserted into the Holdtime field of a PIM
                 Join/Prune message sent on this interface, that is, the
                 amount of time a receiver must keep the Join/Prune state
                 alive, in the absence of further PIM Join/Prune messages.
                 A value of 65535 represents an 'infinite' holdtime.

                 PIM-SM and BIDIR-PIM implementations are recommended to
                 use a holdtime that is 3.5 times the value of
                 pimInterfaceJoinPruneInterval, or 65535 if
                 pimInterfaceJoinPruneInterval is set to 0.

                 If State Refresh is enabled (pimTmEntStateRefreshCapable
                 is 'true'), PIM-DM implementations are recommended to use
                 a value greater than 3 times the
                 pimTmEntStateRefreshInterval.

                 This field is ignored if pimTmEntMgmdProxy is set to
                 'true'."
-- } End DC modifications
    DEFVAL { 210 }
    ::= { pimInterfaceEntry 12 }

pimInterfacePropagationDelay OBJECT-TYPE
    SYNTAX     Unsigned32 (0..32767)
    UNITS      "milliseconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
-- DC modifications {
            "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, that is, the expected
            propagation delay on the link.  Implementations should
            enforce a lower bound on the permitted values for this
            object to allow for scheduling and processing delays within
            the local router.  This field is ignored if pimTmEntMgmdProxy
            is set to 'true'."
-- } End DC modifications
    DEFVAL { 500 }
    ::= { pimInterfaceEntry 14 }

pimInterfaceOverrideInterval OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "milliseconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
-- DC modifications {
            "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, that is, the preferred
            maximum value of the randomized interval during which a PIM
            router can override another PIM router's Prune message.
            This acts to reduce the risk of overriding Join message
            implosion, and hence is often related to the size of the PIM
            router population on the link.  This field is ignored if
            pimTmEntMgmdProxy is set to 'true'."
-- } End DC modifications
    DEFVAL { 2500 }
    ::= { pimInterfaceEntry 15 }

pimInterfaceGenerationIDValue OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
-- DC modifications {
            "The value of the Generation ID this router inserted in the
            last PIM Hello message it sent on this interface, that is,
            an arbitrary value which allows PIM neighbors to detect when
            the local router has restarted.  This field is ignored if
            pimTmEntMgmdProxy is set to 'true'."
-- } End DC modifications
    ::= { pimInterfaceEntry 17 }

pimInterfaceDRPriority OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
-- DC modifications {
                "The Designated Router Priority value inserted into the DR
                 Priority option on this interface.  If all routers on the
                 interface include the DR Priority option in their PIM
                 Hello messages, the router with the highest DR priority
                 value will win the DR election (with highest IP address
                 used as a tie-breaker).

                 This field is only relevant for PIM-SM, but is advertised
                 in PIM Hello messages irrespective of which PIM modes are
                 enabled.

                 This field is ignored if pimTmEntMgmdProxy is set to
                 'true'."
-- } End DC modifications
    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.  This field is ignored if
            pimTmEntMgmdProxy is set to 'true'."
    ::= { 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'.  This field is ignored if pimTmEntMgmdProxy is set to
            'true'."
    ::= { 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'.  This field is ignored if pimTmEntMgmdProxy is set to
            'true'."
    ::= { 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'.  This field is ignored if pimTmEntMgmdProxy is set
            to 'true'."
    ::= { 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.

            This field is ignored if pimTmEntMgmdProxy is set to
            'true'."
    ::= { 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.

                 This field is only relevant for PIM-SM, but DC-PIM
                 evaluates it from received PIM Hello messages irrespective
                 of which PIM modes are enabled.

                 DC-PIM always returns 'false' if pimTmEntMgmdProxy is
                 'true'."
    ::= { pimInterfaceEntry 25 }

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.

            All writeable objects in this entry can be modified when the
            status of this entry is active(1)."
    ::= { pimInterfaceEntry 27 }

pimInterfaceGraftRetryInterval OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "The minimum interval that must transpire between two
                 successive Graft(S,G) messages sent by a router.  This
                 object corresponds to the 'Graft_Retry_Period' timer value
                 defined in the PIM-DM specification (RFC3973).

                 This field is only relevant to PIM-DM.  It is ignored if
                 either

                 -  'dense' is clear for pimTmEntMode

                 -  pimTmEntMgmdProxy is 'true'."
    DEFVAL { 3000 }
    ::= { pimInterfaceEntry 28 }

pimInterfaceSRAllCapable OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "Evaluates to 'true' if all routers on this interface are
                 using the State Refresh option.

                 This field is only relevant to PIM-DM.  It is always
                 'false' if either

                 -  'dense' is clear for pimTmEntMode

                 -  pimTmEntMgmdProxy is 'true'.

                 Note that PIM-DM routers send State Refresh messages on an
                 interface even if one or more peers do not support them
                 (this object is 'false')."
    ::= { pimInterfaceEntry 29 }

-- DC additions {

pimInterfaceAdminStatus OBJECT-TYPE
    SYNTAX     AdminStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The desired administrative state of this interface."
    DEFVAL { adminStatusUp }
    ::= { pimInterfaceEntry 51 }

pimInterfaceOperStatus OBJECT-TYPE
    SYNTAX     NpgOperStatus
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The current operational state of this interface."
    ::= { pimInterfaceEntry 52 }

pimInterfaceStubInterface OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Whether this interface is a 'stub interface' with regard to
            PIM.  If this is set to 'true', no PIM packets are sent or
            processed (if received) on this interface.  This should be
            set to 'true' if there are no other PIM routers on the
            interface but there may be untrusted hosts on the interface,
            to prevent the router processing forged PIM messages from
            those hosts.  If there are other PIM routers on this
            interface, this must be left as 'false'.

            Changing the value of this object while the interface is
            operational causes the interface to be deactivated and
            then reactivated.

            If pimTmEntMgmdProxy is set to 'true' then this field is
            ignored, and all interfaces will be treated as stub
            interfaces regardless of its setting."
    DEFVAL { false }
    ::= { pimInterfaceEntry 53 }

pimInterfaceP2PNoHellos OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Whether this interface is a point-to-point interface on
             which we do not require the neighbor to send PIM-Hello
             signals.  Provided for back-compatibility with some older
             implementations that do not send Hellos on point-to-point
             links.

             Changing the value of this object while the interface is
             operational causes the interface to be deactivated and
             then reactivated.

             This field is ignored if pimTmEntMgmdProxy is set to
             'true'."
    DEFVAL { false }
    ::= { pimInterfaceEntry 54 }

pimInterfaceMgmdEntIndex OBJECT-TYPE
    SYNTAX     NumericIndexOrZero
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The HAF entity index of the DC-MGMD (for example, for IPv4
            this is DC-IGMP) Router component that owns this interface.
            Zero is a wildcard value meaning that no DC-MGMD Router
            component currently owns the interface, and the first
            DC-MGMD Router component that sends Group Membership
            information for this interface will take ownership of it."
    DEFVAL { 0 }
    ::= { pimInterfaceEntry 55 }

pimInterfaceNeighborCount OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM neighbors on this interface.

             This field is ignored if pimTmEntMgmdProxy is set to
             'true'."
    ::= { pimInterfaceEntry 56 }

pimInterfaceStarGStateLimit OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The maximum number of groups for which DC-PIM TIB Manager
             is allowed to store (*,G,I) state specific to this
             interface.  A value of zero means that there is no limit.

             Decreasing this value to less than
             pimInterfaceStarGStateStored will not cause existing state
             to be deleted."
    DEFVAL { 0 }
    ::= { pimInterfaceEntry 57 }

pimInterfaceStarGStateWarnThold OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "DC-PIM TIB Manager logs an exception if the number of
             groups for which it is storing (*,G,I) state specific to
             this interface exceeds this value.  A value of zero means
             that there is no warning threshold."
    DEFVAL { 0 }
    ::= { pimInterfaceEntry 58 }

pimInterfaceStarGStateStored OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of groups for which DC-PIM TIB Manager is
             storing (*,G,I) state specific to this interface."
    ::= { pimInterfaceEntry 59 }

pimInterfaceSGStateLimit OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The maximum number of {source, group} pairs for which
             DC-PIM TIB Manager is allowed to store (S,G,I) state
             specific to this interface.  A value of zero means that
             there is no limit.

             Decreasing this value to less than
             pimInterfaceSGStateStored will not cause existing state to
             be deleted."
    DEFVAL { 0 }
    ::= { pimInterfaceEntry 60 }

pimInterfaceSGStateWarnThold OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "DC-PIM TIB Manager logs an exception if the number of
             {source, group} pairs for which it is storing (S,G,I)
             state specific to this interface exceeds this value.  A
             value of zero means that there is no warning threshold."
    DEFVAL { 0 }
    ::= { pimInterfaceEntry 61 }

pimInterfaceSGStateStored OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of {source, group} pairs for which DC-PIM TIB
            Manager is storing (S,G,I) state specific to this
            interface."
    ::= { pimInterfaceEntry 62 }

pimInterfaceUseNeighborFilter OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Setting this object to 'true' enables the neighbor filter
            specified by pimInterfaceNeighborFilter.

            This field is ignored if pimTmEntMgmdProxy is set to
            'true'."
    DEFVAL { false }
    ::= { pimInterfaceEntry 63 }

pimInterfaceNeighborFilter OBJECT-TYPE
    SYNTAX     StdAccessListListIndexOrZero
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "When neighbor filtering is enabled (that is, when
            pimInterfaceUseNeighborFilter is 'true'), the local router
            will process link-local multicast PIM messages received on
            this interface only if the originator's IP address (that is,
            the source address in the IP header) is included in the
            standard access list corresponding to the list index value
            configured for this object.

            Note that this filter does not apply to unicast PIM
            messages, even if the originator is directly connected to
            the local router.  So, for example, this filter has no
            effect on the processing of received Register messages.

            In other words, the standard access list is a whitelist, and
            the local router will treat any router excluded from the
            list as not being a valid PIM neighbor.

            To filter out all PIM neighbors, either configure this
            object to be the list index of an 'exclude all' standard
            access list, or use the pimInterfaceStubInterface object.  This
            field is ignored if pimTmEntMgmdProxy is set to 'true'."
    ::= { pimInterfaceEntry 64 }

pimInterfaceAssertInterval OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "The frequency at which this router sends PIM Assert
                 messages on this interface when it is the assert winner.
                 This object corresponds to the 'Assert_Time' minus the
                 'Assert_Override_Interval' defined in the PIM-SM and the
                 PIM-DM specifications (RFC4601 and RFC3973 respectively).
                 This must be less than pimInterfaceAssertHoldtime.

                 This field is ignored if pimTmEntMgmdProxy is set to
                 'true', or 'sparse' and 'dense' are both clear
                 for pimTmEntMode."
    DEFVAL { 177 }
    ::= { pimInterfaceEntry 65 }

pimInterfaceAssertHoldtime OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "The interval before this router leaves assert loser state
                 on this interface, unless it receives a PIM Assert message
                 that refreshes this state.  This object corresponds to the
                 'Assert_Time' timer value defined in the PIM-SM and PIM-DM
                 specifications (RFC4601 and RFC3973 respectively).

                 Note that configuring different values for this object for
                 different routers on the same interface might lead to
                 incorrect protocol operation.

                 This field is ignored if pimTmEntMgmdProxy is set to
                 'true', or 'sparse' and 'dense' are both clear
                 for pimTmEntMode."
    DEFVAL { 180 }
    ::= { pimInterfaceEntry 66 }

-- } End DC additions

pimInterfaceDomainBorder OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Whether or not this interface is a PIM domain border.  The
            effect of being a PIM domain border interface is to disable
            the BSR protocol, thus allowing each PIM domain to separately
            determine RPs.  This field is ignored if pimTmEntMgmdProxy is
            set to 'true'."
    DEFVAL { false }
    ::= { pimInterfaceEntry 67 }

-- DC additions {

pimInterfaceUseAsmGrpFilter OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "Setting this object to 'true' enables the PIM-SM ASM and
                 BIDIR-PIM group filter specified by
                 pimInterfaceAsmGrpFilter.

                 This field is only relevant for PIM-SM and BIDIR-PIM.  It
                 is ignored if 'sparse' and 'bidir' are both clear for
                 pimTmEntMode."
    DEFVAL { false }
    ::= { pimInterfaceEntry 68 }

pimInterfaceAsmGrpFilter OBJECT-TYPE
    SYNTAX     StdAccessListListIndexOrZero
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "When PIM-SM ASM / BIDIR-PIM group filtering is enabled
                 (that is, when pimInterfaceUseAsmGrpFilter is 'true'),
                 then for groups in the PIM-SM ASM and BIDIR-PIM spaces the
                 local router will:

                 -  process PIM (*,G) Join messages received on this
                 interface only if the group address is included in the
                 standard access list corresponding to the list index
                 value configured for this object.  For PIM-SM ASM
                 groups, this applies to (S,G) Join messages too.

                 -  only send PIM (*,G) Join messages over this interface
                 if the group address is included in the standard access
                 list corresponding to the list index value configured
                 for this object.  For PIM-SM ASM groups, this applies
                 to (S,G) Join messages too.

                 Local membership requests from the MGMD Router component
                 are not filtered.  These should be filtered by the MGMD
                 Router component.

                 In other words, the standard access list is a whitelist of
                 the PIM-SM ASM and BIDIR-PIM groups for which DC-PIM is
                 permitted to request or receive traffic over the
                 interface.

                 pimInterfaceAsmGrpFilter defaults to 0, which indicates
                 that no access list is specified.  If the index does not
                 correspond to a valid access list, no group addresses will
                 match the list and therefore all PIM (*,G) Join and PIM
                 (S,G) Join messages will be filtered.

                 This field is only relevant for PIM-SM and BIDIR-PIM.  It
                 is ignored if 'sparse' and 'bidir' are both clear for
                 pimTmEntMode."
    DEFVAL { 0 }
    ::= { pimInterfaceEntry 69 }

pimInterfaceUseSsmSrcAndGrpFilt OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "Setting this object to 'true' enables the SSM source and
                 group filter specified by pimInterfaceSsmSrcAndGrpFilter.

                 This field is only relevant for PIM-SM.  It is ignored if
                 'sparse' is clear for pimTmEntMode."
    DEFVAL { false }
    ::= { pimInterfaceEntry 70 }

pimInterfaceSsmSrcAndGrpFilter OBJECT-TYPE
    SYNTAX     ExtAccessListListIndexOrZero
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "When SSM source and group filtering is enabled (that is,
                 when pimInterfaceUseSsmSrcAndGrpFilt is 'true'), then for
                 groups in the SSM space the local router will

                 -  process PIM (S,G) Join messages received on this
                 interface only if the {source, group} pair is included
                 in the extended access list corresponding to the list
                 index value configured for this object

                 -  only send PIM (S,G) Join messages over this interface
                 if the {source, group} pair is included in the extended
                 access list corresponding to the list index value
                 configured for this object.

                 In other words, the extended access list is a whitelist of
                 the SSM {source, group} pairs for which DC-PIM is
                 permitted to request or receive traffic over the
                 interface.

                 pimInterfaceSsmSrcAndGrpFilter defaults to 0, which
                 indicates that no access list is specified.  If the index
                 does not correspond to a valid access list, no {source,
                 group} pairs will match the list and therefore all PIM
                 (S,G) Join messages will be filtered.

                 This field is only relevant for PIM-SM.  It is ignored if
                 'sparse' is clear for pimTmEntMode."
    DEFVAL { 0 }
    ::= { pimInterfaceEntry 71 }

-- Begin Versa change {
  pimInterfaceSiteName OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (0..128))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Site name corresponding to the remote endpoint of the PIM interface"
    ::= { pimInterfaceEntry 72 }

  pimInterfaceIfName OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (0..128))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Name of the interface"
    ::= { pimInterfaceEntry 73 }
-- End Versa change }

pimInterfaceDFElectionRobustness OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "The number of times that the local router sends copies of
                 the same DF Offer or DF Winner message.

                 This object corresponds to the 'Election_Robustness' value
                 defined in the BIDIR-PIM specification (RFC5015).

                 This field is only relevant for BIDIR-PIM.  It is ignored
                 if pimTmEntMgmdProxy is set to 'true', or 'bidir' is clear
                 for pimTmEntMode."
    DEFVAL { 3 }
    ::= { pimInterfaceEntry 74 }

pimInterfaceDFElectionOfferIvl OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "The interval between resends of the same DF message, prior
                 to subtracting a random amount of jitter.

                 This object corresponds to the 'Offer_Period' value
                 defined in the BIDIR-PIM specification (RFC5015).

                 This field is only relevant for BIDIR-PIM.  It is ignored
                 if pimTmEntMgmdProxy is set to 'true', or 'bidir' is clear
                 for pimTmEntMode."
    DEFVAL { 100 }
    ::= { pimInterfaceEntry 75 }

pimInterfaceDFElectionBackoffIvl OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "The interval that the acting DF waits after learning of an
                 MRIB change, before passing the role to the best
                 neighboring router.

                 This object corresponds to the 'Backoff_Period' value
                 defined in the BIDIR-PIM specification (RFC5015).

                 This field is only relevant for BIDIR-PIM.  It is ignored
                 if pimTmEntMgmdProxy is set to 'true', or 'bidir' is clear
                 for pimTmEntMode."
    DEFVAL { 1000 }
    ::= { pimInterfaceEntry 76 }

pimInterfaceBfdDesired OBJECT-TYPE
    SYNTAX      PimBfdSessionType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Indicates the type of Bidirectional Forwarding Detection
                 (BFD) support desired on this interface.

                 This field is ignored if pimInterfaceP2PNoHellos is set to
                 'true'.

                 Strict mode is not supported by DC-PIM.  Valid values for
                 this field are AMB_PIM_BFD_SESS_TYPE_NONE and
                 AMB_PIM_BFD_SESS_TYPE_DESIRED."
    DEFVAL { none }
    ::= { pimInterfaceEntry 77 }

-- } End DC additions


--
-- 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.

             This table is not used for MGMD Snooping or Proxy."
    ::= { pimTables 2 }

pimNeighborEntry OBJECT-TYPE
    SYNTAX     PimNeighborEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimNeighborTable."
    INDEX      { pimTmEntIndex,
                 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,
    pimNeighborSRCapable             TruthValue,
-- Begin Versa change {
    pimNeighborHoldTime              Unsigned32,
-- End Versa change }
    pimNeighborOperStatus            PimNeighborOperState,
    pimNeighborBfdStatus             BfdSessionStatus
}

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.

            DC-PIM supports only the values 'ipv4' and 'ipv6' for
            this object."
    ::= { pimNeighborEntry 2 }

pimNeighborAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    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
-- DC modifications {
            "The value of the Propagation_Delay field of the LAN Prune
            Delay option received from this neighbor, that is, the
            expected propagation delay on the link.  This object is
            always 0 if pimNeighborLanPruneDelayPresent is 'false'."
-- } End DC modifications
    ::= { pimNeighborEntry 7 }

pimNeighborOverrideInterval OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
-- DC modifications {
            "The value of the Override_Interval field of the LAN Prune
            Delay option received from this neighbor, that is, the
            preferred maximum value of the randomized interval during
            which a PIM router can override another PIM router's Prune
            message.  This object is always 0 if
            pimNeighborLanPruneDelayPresent is 'false'."
-- } End DC modifications
    ::= { 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 field is always 'true' if
            pimNeighborLanPruneDelayPresent is set to '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
-- DC modifications {
            "The value of the Generation ID from the last PIM Hello
            message received from this neighbor, that is,
            an arbitrary value which allows other PIM routers to detect
            when this PIM neighbor has restarted.

           This field is always 0 if
           pimNeighborGenerationIDPresent is set to 'false'."
-- } End DC modifications
    ::= { 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
-- DC modifications {
            "The value of the Designated Router Priority from the last
            PIM Hello message received from this neighbor, that is, the
            administrative preference for this neighbor to be the DR
            (a numerically larger value is preferred).

            This field is always 0 if pimNeighborDRPriorityPresent
            is set to 'false'."
-- } End DC modifications
    ::= { pimNeighborEntry 14 }

pimNeighborSRCapable OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "Evaluates to TRUE if this neighbor is using the State
                 Refresh Capable option.

                 State Refresh capability is not relevant for bidir or
                 sparse-mode groups.  However, because all PIM modes use a
                 commonized Hello message format, DC-PIM might report that
                 the neighbor is using the State Refresh Capable option
                 even when 'dense' is clear for pimTmEntMode."
    ::= { pimNeighborEntry 16 }

-- Begin Versa change {
pimNeighborHoldTime OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of the Holdtime field from the last PIM Hello
             message received from this neighbor, that is,
             a value in secs for which this neighbor should be kept
             alive."
    ::= { pimNeighborEntry 17 }
-- End Versa change }

pimNeighborOperStatus OBJECT-TYPE
    SYNTAX     PimNeighborOperState
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The status of the neighbor.

                 This is Oper Status Up at all times that this neighbor row
                 exists except for the following:
                 - this neighor has been heard from over an interfact that
                   requires strict-BFD, and a BFD session has not yet come
                   up to this neighbor;
                 - this neighbor is being deleted but the BFD session to it
                   has not yet been terminated."
    ::= { pimNeighborEntry 18 }

pimNeighborBfdStatus OBJECT-TYPE
    SYNTAX     BfdSessionStatus
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The status of the BFD session to this neighbor.

                 If BFD session support for the interface is set to 'none',
                 this field always has a value of 'notRequired'."
    ::= { pimNeighborEntry 19 }

--
-- 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).

             This table is not used for MGMD Snooping or Proxy."
    ::= { pimTables 3 }

pimNbrSecAddressEntry OBJECT-TYPE
    SYNTAX     PimNbrSecAddressEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimNbrSecAddressTable."
-- DC modifications {
    INDEX      { pimTmEntIndex,
                 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.

            DC-PIM returns 'ipv4' or 'ipv6' for this object."
    ::= { pimNbrSecAddressEntry 2 }

pimNbrSecAddressPrimary OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|8|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))
    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 }

-- } End DC modifications

-- DC additions {

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

pimStarGTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimStarGEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION "The (conceptual) table listing the non-interface specific
                 (*,G) state that the entity maintains.

                 This MIB table is not used for MGMD Snooping or PIM-DM, nor
                 for MGMD Proxy (except in the deprecated mode), so is empty
                 if pimTmEntMgmdProxy is set to 'false' and 'sparse' and
                 'bidir' are both clear for pimTmEntMode."
    ::= { pimTables 4 }

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

PimStarGEntry ::= SEQUENCE {
    pimStarGAddressType             InetAddressType,
    pimStarGGrpAddress              InetAddress,
    pimStarGUpTime                  TimeTicks,
    pimStarGPimMode                 PimGroupMode,
    pimStarGRPAddressType           InetAddressType,
    pimStarGRPAddress               InetAddress,
    pimStarGRPOrigin                PimGroupMappingOriginType,
    pimStarGRPIsLocal               TruthValue,
    pimStarGUpstreamJoinState       INTEGER,
    pimStarGUpstreamJoinTimer       TimeTicks,
    pimStarGUpstreamNeighborType    InetAddressType,
    pimStarGUpstreamNeighbor        InetAddress,
    pimStarGRPFIfIndex              InterfaceIndexOrZero,
    pimStarGRPFNextHopType          InetAddressType,
    pimStarGRPFNextHop              InetAddress,
    pimStarGRPFRouteProtocol        IANAipRouteProtocol,
    pimStarGRPFRouteAddress         InetAddress,
    pimStarGRPFRoutePrefixLength    InetAddressPrefixLength,
    pimStarGRPFRouteMetricPref      Unsigned32,
    pimStarGRPFRouteMetric          Unsigned32
}

pimStarGAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address type of this multicast group.

            DC-PIM supports only the values 'ipv4' and 'ipv6' for
            this object."
    ::= { pimStarGEntry 1 }

pimStarGGrpAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The 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     PimGroupMode
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "Whether this entry represents a PIM-SM ASM (Any-Source
                 Multicast, used with PIM-SM), PIM-SM SSM (Single-Source
                 Multicast, used with PIM-SM), PIM-DM (Dense mode) or
                 BIDIR-PIM (bidirectional mode) group."
    ::= { pimStarGEntry 4 }

pimStarGRPAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The address type of the Rendezvous Point (RP), or
            unknown(0) if the RP address is unknown.

            DC-PIM returns 'ipv4', 'ipv6' or 'unknown' for this object."
    ::= { pimStarGEntry 5 }

pimStarGRPAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (0|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 pimStarGRPAddressType.

            This object is zero if the RP address is unknown."
    ::= { pimStarGEntry 6 }

pimStarGRPOrigin OBJECT-TYPE
    SYNTAX     PimGroupMappingOriginType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The mechanism by which the RP for the group was learned."
    ::= { pimStarGEntry 7 }

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

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 and BIDIR-PIM
                 specifications (RFC4601 and RFC5015, respectively)."
    ::= { pimStarGEntry 9 }

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 (RFC4601) and the Upstream Join Timer
                 in the BIDIR-PIM specification (RFC5015).  This object is
                 zero if the timer is not running.

                 This field is ignored if pimTmEntMgmdProxy is set to
                 'true'."
    ::= { pimStarGEntry 10 }

pimStarGUpstreamNeighborType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The primary address type of the upstream neighbor, or
            unknown(0) if the upstream neighbor address is unknown or is
            not a PIM neighbor.

            DC-PIM returns 'ipv4', 'ipv6' or 'unknown' for this object."
    ::= { pimStarGEntry 11 }

pimStarGUpstreamNeighbor OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (0|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.  The InetAddressType is given by the
                 pimStarGUpstreamNeighborType object.  This address is
                 called RPF'(*,G) in the PIM-SM specification (RFC4601) and
                 RPF_DF(RPA) in the BIDIR-PIM specification (RFC5015).

                 This object is zero if the the RPF next hop is unknown or
                 is not a PIM neighbor, or the RP is local."
    REFERENCE "RFC 4601 section 4.1.6"
    ::= { pimStarGEntry 12 }

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 or the RP is local."
    ::= { pimStarGEntry 13 }

pimStarGRPFNextHopType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The address type of the RPF next hop towards the RP, or
            unknown(0) if the RPF next hop is unknown.

            DC-PIM returns 'ipv4', 'ipv6' or 'unknown' for this object."
    ::= { pimStarGEntry 14 }

pimStarGRPFNextHop OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The address of the RPF next hop towards the RP.  The
                 InetAddressType is given by the pimStarGRPFNextHopType
                 object.  This address is called MRIB.next_hop(RP(G)) in
                 the PIM-SM specification (FRC4601) and the RPF Neighbor
                 in the BIDIR-PIM specification (RFC5015)."
    REFERENCE "RFC 4601 section 4.5.5"
    ::= { pimStarGEntry 15 }

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 16 }

pimStarGRPFRouteAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The IP address which when combined with the corresponding
            value of pimStarGRPFRoutePrefixLength identifies the route
            used to find the RPF interface towards the RP.  The
            InetAddressType is given by the pimStarGRPFNextHopType
            object.

            This address object is only significant up to
            pimStarGRPFRoutePrefixLength bits.  The remainder of the
            address bits are zero."
    ::= { pimStarGEntry 17 }

pimStarGRPFRoutePrefixLength OBJECT-TYPE
    SYNTAX     InetAddressPrefixLength
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The prefix length which when combined with the
            corresponding value of pimStarGRPFRouteAddress identifies
            the route used to find the RPF interface towards the RP.
            The InetAddressType is given by the pimStarGRPFNextHopType
            object."
    ::= { pimStarGEntry 18 }

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

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 20 }

--
-- The DC-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 the entity maintains.

             For MGMD Proxy or Snooping, or PIM-DM, (*,G,I) state exists
             only because of local group membership requirements that
             DC-PIM has learned from the MGMD Router implementation."
    ::= { pimTables 5 }

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

PimStarGIEntry ::= SEQUENCE {
    pimStarGIIfIndex                 InterfaceIndex,
    pimStarGIPimMode                 PimGroupMode,
    pimStarGIUpTime                  TimeTicks,
    pimStarGILocalMembership         TruthValue,
    pimStarGIJoinPruneState          INTEGER,
    pimStarGIPrunePendingTimer       TimeTicks,
    pimStarGIJoinExpiryTimer         TimeTicks,
    pimStarGIAssertState             INTEGER,
    pimStarGIAssertTimer             TimeTicks,
    pimStarGIAssertWinnerAddressType InetAddressType,
    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 corresponds
            to."
    ::= { pimStarGIEntry 1 }

pimStarGIPimMode OBJECT-TYPE
    SYNTAX     PimGroupMode
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "Whether this entry represents a PIM-SM ASM (Any-Source
                 Multicast, used with PIM-SM), PIM-SM SSM (Single-Source
                 Multicast, used with PIM-SM), PIM-DM (Dense mode) or
                 BIDIR-PIM (bidirectional mode) group.

                 For MGMD Proxy or Snooping, this field is set to 'other'."
    ::= { pimStarGIEntry 2 }

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

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 (RFC4601) and the
                 (*,G) subset of local_receiver_include(G,I) in the
                 BIDIR-PIM specification (RFC5015)."
    ::= { pimStarGIEntry 4 }

pimStarGIJoinPruneState OBJECT-TYPE
    SYNTAX     INTEGER {
                  noInfo (1),
                  join (2),
                  prunePending (3),
                  pruned (4)
               }
    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 and BIDIR-PIM specifications (RFC4601 and RFC5015,
                 respectively).

                 This field is only relevant for PIM-SM and BIDIR-PIM.  It
                 is ignored if any of the following are true:

                 - pimTmEntMode is 'mgmd-snooping' or 'mgmd-proxy'

                 - the group is operating in dense mode

                 - pimTmEntMgmdProxy is 'true'."
    ::= { pimStarGIEntry 5 }

pimStarGIPrunePendingTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The time remaining before the local router acts on a (*,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
                 (*,G) Prune-Pending Timer in the PIM-SM specification
                 (RFC4601) and the PrunePendingTimer in the BIDIR-PIM
                 specification (RFC5015).  This object is zero if the timer
                 is not running.

                 This field is only relevant for PIM-SM and BIDIR-PIM.  It
                 is ignored if any of the following are true:

                 - pimTmEntMode is 'mgmd-snooping' or 'mgmd-proxy'

                 - the group is operating in dense mode

                 - pimTmEntMgmdProxy is 'true'."
    ::= { pimStarGIEntry 6 }

pimStarGIJoinExpiryTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
-- DC modifications {
                "The time remaining before (*,G) Join state for this
                 interface expires.  This timer is called the (*,G) Join
                 Expiry Timer in the PIM-SM specification (RFC4601) and the
                 Join/Prune Expiry Timer in the BIDIR-PIM specification
                 (RFC5015).  This object is zero if the timer is not
                 running.

                 This field is only relevant for PIM-SM and BIDIR-PIM.  It
                 is ignored if any of the following are true:

                 - pimTmEntMode is 'mgmd-snooping' or 'mgmd-proxy'

                 - the group is operating in dense mode

                 - pimTmEntMgmdProxy is 'true'."
-- } End DC modifications
    ::= { pimStarGIEntry 7 }

pimStarGIAssertState OBJECT-TYPE
    SYNTAX     INTEGER {
                  noInfo (1),
                  iAmAssertWinner (2),
                  iAmAssertLoser (3)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "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 (RFC4601).  If
                 pimStarGPimMode is 'bidir', this object must be 'noInfo'.

                 This field is only relevant for PIM-SM.  It is ignored if
                 any of the following are true:

                 - pimTmEntMode is 'mgmd-snooping' or 'mgmd-proxy'

                 - the group is operating in bidir or dense mode

                 - pimTmEntMgmdProxy is 'true'."
    ::= { pimStarGIEntry 8 }

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 (RFC4601).

                 This field is only relevant for PIM-SM.  It is ignored if
                 any of the following are true:

                 - pimTmEntMode is 'mgmd-snooping' or 'mgmd-proxy'

                 - the group is operating in bidir or dense mode

                 - pimTmEntMgmdProxy is 'true'."
    ::= { pimStarGIEntry 9 }

pimStarGIAssertWinnerAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "If pimStarGIAssertState is 'iAmAssertLoser', this is the
                 address type of the assert winner; otherwise, this object
                 is unknown(0).

                 DC-PIM returns 'ipv4', 'ipv6' or 'unknown' for this
                 object.

                 This field is only relevant for PIM-SM.  It is ignored if
                 any of the following are true:

                 - pimTmEntMode is 'mgmd-snooping' or 'mgmd-proxy'

                 - the group is operating in bidir or dense mode

                 - pimTmEntMgmdProxy is 'true'."
    ::= { pimStarGIEntry 10 }

pimStarGIAssertWinnerAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "If pimStarGIAssertState is 'iAmAssertLoser', this is the
                 address of the assert winner.  The InetAddressType is
                 given by the pimStarGIAssertWinnerAddressType object.

                 This field is only relevant for PIM-SM.  It is ignored if
                 any of the following are true:

                 - pimTmEntMode is 'mgmd-snooping' or 'mgmd-proxy'

                 - the group is operating in bidir or dense mode

                 - pimTmEntMgmdProxy is 'true'."
    ::= { pimStarGIEntry 11 }

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.

                 This field is only relevant for PIM-SM.  It is ignored if
                 any of the following are true:

                 - pimTmEntMode is 'mgmd-snooping' or 'mgmd-proxy'

                 - the group is operating in bidir or dense mode

                 - pimTmEntMgmdProxy is 'true'."
    ::= { pimStarGIEntry 12 }

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.

                 This field is only relevant for PIM-SM.  It is ignored if
                 any of the following are true:

                 - pimTmEntMode is 'mgmd-snooping' or 'mgmd-proxy'

                 - the group is operating in dense mode

                 - pimTmEntMgmdProxy is 'true'."
    ::= { pimStarGIEntry 13 }

--
-- The DC-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 the entity maintains.

             This MIB table is not used for MGMD Snooping or MGMD Proxy
             (except in the deprecated mode enabled by
             pimTmEntMgmdProxy)."
    ::= { pimTables 6 }

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

PimSGEntry ::= SEQUENCE {
    pimSGAddressType             InetAddressType,
    pimSGGrpAddress              InetAddress,
    pimSGSrcAddress              InetAddress,
    pimSGUpTime                  TimeTicks,
    pimSGPimMode                 PimGroupMode,
    pimSGUpstreamJoinState       INTEGER,
    pimSGUpstreamJoinTimer       TimeTicks,
    pimSGUpstreamNeighbor        InetAddress,
    pimSGRPFIfIndex              InterfaceIndexOrZero,
    pimSGRPFNextHopType          InetAddressType,
    pimSGRPFNextHop              InetAddress,
    pimSGRPFRouteProtocol        IANAipRouteProtocol,
    pimSGRPFRouteAddress         InetAddress,
    pimSGRPFRoutePrefixLength    InetAddressPrefixLength,
    pimSGRPFRouteMetricPref      Unsigned32,
    pimSGRPFRouteMetric          Unsigned32,
    pimSGSPTBit                  TruthValue,
    pimSGDRRegisterState         INTEGER,
    pimSGDRRegisterStopTimer     TimeTicks,
    pimSGUpstreamPruneState      PruneState,
    pimSGOriginatorState         OriginatorState,
    pimSGStateRefreshTimer       TimeTicks,
    pimSGPruneLimitTimer         TimeTicks,
    pimSGLocalMsdpAdv            TruthValue,
    pimSGMsdpRemoteDataAct       TruthValue,
    pimSGJoinSPT                 TruthValue,
    pimSGRPBit                   TruthValue
}

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

            DC-PIM supports only the values 'ipv4' and 'ipv6' for
            this object."
    ::= { pimSGEntry 1 }

pimSGGrpAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    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))
    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     PimGroupMode
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "Whether pimSGGrpAddress is a PIM-SM SSM (Source Specific
                 Multicast, used with PIM-SM), PIM-SM ASM (Any Source
                 Multicast, used with PIM-SM), PIM-DM (dense mode) or
                 BIDIR-PIM (bidirectional mode) 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 (RFC4601).

                 This field is only relevant to PIM-SM.  It is set to
                 'notJoined' if pimSGPimMode is not 'ssm' or 'asm'."
    ::= { pimSGEntry 6 }

pimSGUpstreamJoinTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The time remaining before the local router next sends a
                 periodic (S,G) Join message on pimSGRPFIfIndex.  This
                 timer is called the (S,G) Upstream Join Timer in the
                 PIM-SM specification (RFC4601).  This
                 object is zero if the timer is not running.

                 This field is only relevant for PIM-SM.  It is set to zero
                 if either

                 - pimSGPimMode is not 'ssm' or 'asm'

                 - pimTmEntMgmdProxy is set to 'true'."
    ::= { pimSGEntry 7 }

pimSGUpstreamNeighbor OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The primary address of the neighbor on pimSGRPFIfIndex
             that is the local router's next hop neighbor towards the
             source.  This is zero if the the RPF next hop is unknown
             or is not a PIM neighbor.  The InetAddressType is given by
             the pimSGAddressType object.  This address is called
             RPF'(S,G) in the PIM-SM and PIM-DM specifications (RFC4601
             and RFC3973 respectively)."
    ::= { pimSGEntry 8 }

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

pimSGRPFNextHopType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The address type of the RPF next hop towards the source, or
            unknown(0) if the RPF next hop is unknown.

            DC-PIM returns 'ipv4', 'ipv6' or 'unknown' for this object."
    ::= { pimSGEntry 10 }

pimSGRPFNextHop OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The address of the RPF next hop towards the source.  The
             InetAddressType is given by the pimSGRPFNextHopType.  This
             address is called MRIB.next_hop(S) in the PIM-SM and
             PIM-DM specifications (RFC4601 and RFC3973)."
    REFERENCE "RFC 4601 section 4.5.5"
    ::= { pimSGEntry 11 }

pimSGRPFRouteProtocol 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 source was learned."
    ::= { pimSGEntry 12 }

pimSGRPFRouteAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|8|16|20))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The IP address which when combined with the corresponding
            value of pimSGRPFRoutePrefixLength identifies the route used
            to find the RPF interface towards the source.  The
            InetAddressType is given by the pimSGRPFNextHopType object.

            This address object is only significant up to
            pimSGRPFRoutePrefixLength bits.  The remainder of the
            address bits are zero."
    ::= { pimSGEntry 13 }

pimSGRPFRoutePrefixLength OBJECT-TYPE
    SYNTAX     InetAddressPrefixLength
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The prefix length which when combined with the
            corresponding value of pimSGRPFRouteAddress identifies the
            route used to find the RPF interface towards the source.
            The InetAddressType is given by the pimSGRPFNextHopType
            object."
    ::= { pimSGEntry 14 }

pimSGRPFRouteMetricPref OBJECT-TYPE
    SYNTAX     Unsigned32 (0..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The metric preference of the route used to find the RPF
            interface towards the source."
    ::= { pimSGEntry 15 }

pimSGRPFRouteMetric 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 source."
    ::= { pimSGEntry 16 }

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 shortest-path tree.

                 This field is only relevant for PIM-SM.  It is ignored if
                 any of the following are true:

                 - the group is not operating in sparse mode

                 - pimTmEntMgmdProxy is 'true'."
    ::= { pimSGEntry 17 }

pimSGDRRegisterState OBJECT-TYPE
    SYNTAX     INTEGER {
                  noInfo (1),
                  join (2),
                  joinPending (3),
                  prune (4)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "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 (RFC4601).

                 This field is only relevant for PIM-SM.  It is set to
                 'noInfo' if any of the following are true:

                 - the group is not operating in sparse mode

                 - pimTmEntMgmdProxy is set to 'true'."
    ::= { pimSGEntry 19 }

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 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
                 (RFC4601).

                 This field is only relevant for PIM-SM.  It is set to
                 zero if any of the following are true:

                 - the group is not operating in sparse mode

                 - pimTmEntMgmdProxy is set to 'true'."
    ::= { pimSGEntry 20 }

pimSGUpstreamPruneState OBJECT-TYPE
    SYNTAX     PruneState
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "Whether the local router has pruned itself from the tree.
                 This corresponds to the state of the upstream prune (S,G)
                 state machine in the PIM-DM specification.

                 This field is only relevant for PIM-DM.  It is always set
                 to 'forwarding' if either

                 - the group is not operating in dense mode

                 - pimTmEntMgmdProxy is 'true'."
    ::= { pimSGEntry 22 }

pimSGOriginatorState OBJECT-TYPE
    SYNTAX     OriginatorState
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "Whether the router is an originator for an (S,G) message
                 flow.  This corresponds to the state of the per-(S,G)
                 Originator state machine in the PIM-DM specification.

                 This field is only relevant for PIM-DM.  It is always set
                 to 'notOriginator' if any of the following are true:

                 - the group is not operating in dense mode

                 - pimTmEntMgmdProxy is 'true'

                 - pimTmEntStateRefreshCapable is 'false'."
    ::= { pimSGEntry 23 }

pimSGStateRefreshTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "If pimSGOriginatorState is 'originator', this is the time
                 remaining before the local router sends a State Refresh
                 message.  Otherwise, this is zero.  This timer is called
                 the State Refresh Timer in the PIM-DM specification.

                 This field is only relevant for PIM-DM.  It is always set
                 to zero if either

                 - the group is not operating in dense mode

                 - pimTmEntMgmdProxy is 'true'."
    ::= { pimSGEntry 24 }

pimSGPruneLimitTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "If pimSGUpstreamPruneState is 'pruned', this is the time
                 remaining before the local router may send a Prune(S,G)
                 message on pimSGRPFIfIndex.  Otherwise, this is zero.
                 This timer is called the (S,G) Prune Limit Timer in the
                 PIM-DM specification.

                 This field is only relevant for PIM-DM.  It is always set
                 to zero if either

                 - the group is not operating in dense mode

                 - pimTmEntMgmdProxy is 'true'."
    ::= { pimSGEntry 25 }

  pimSGLocalMsdpAdv OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Whether there is an active local data flow for this (S,G)
                 that has been advertised to an MSDE partner.

                 This field is only relevant for PIM-SM.  It is always
                 'false' if any of the following are true:

                 - the group is not operating in sparse mode

                 - pimTmEntMgmdProxy is 'true'."
    ::= { pimSGEntry 26 }

  pimSGMsdpRemoteDataAct OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Whether there is an active remote data flow for this (S,G)
                 that has been advertised into DC-PIM by an MSDE partner.

                 This field is only relevant for PIM-SM.  It is always
                 'false' if any of the following are true:

                 - the group is not operating in sparse mode

                 - pimTmEntMgmdProxy is 'true'."
    ::= { pimSGEntry 27 }

  pimSGJoinSPT OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Whether DC-PIM is attempting to join to the shortest-path
                 tree for this (S,G).

                 This field is only relevant for PIM-SM."
    ::= { pimSGEntry 28 }

  pimSGRPBit OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Whether this (S,G) state points towards the RP.

                 For example if DC-PIM has received Join(*,G)s from two
                 downstream routers A and B, and then receives a
                 Prune(S,G,rpt) from A when A switches to the SPT, it will
                 create (S,G) state with the incoming interface being the
                 RPF interface towards the RP, and the olist containing
                 only the interface to B.  This (S,G) state will have the
                 RP bit set.

                 This field is only relevant for PIM-SM."
    ::= { pimSGEntry 29 }

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

pimSGITable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimSGIEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table listing the interface-specific (S,G)
             state that the entity maintains.

             For MGMD Proxy or Snooping, (S,G,I) state exists only
             because of local group membership requirements that DC-PIM
             has learned from the MGMD Router implementation."
    ::= { pimTables 7 }

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

PimSGIEntry ::= SEQUENCE {
    pimSGIIfIndex                 InterfaceIndex,
    pimSGIPimMode                 PimGroupMode,
    pimSGIUpTime                  TimeTicks,
    pimSGILocalMembership         TruthValue,
    pimSGIJoinPruneState          INTEGER,
    pimSGIPrunePendingTimer       TimeTicks,
    pimSGIJoinExpiryTimer         TimeTicks,
    pimSGIAssertState             INTEGER,
    pimSGIAssertTimer             TimeTicks,
    pimSGIAssertWinnerAddressType InetAddressType,
    pimSGIAssertWinnerAddress     InetAddress,
    pimSGIAssertWinnerMetricPref  Unsigned32,
    pimSGIAssertWinnerMetric      Unsigned32
}

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

pimSGIPimMode OBJECT-TYPE
    SYNTAX     PimGroupMode
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "Whether this entry represents a PIM-SM ASM (Any-Source
                 Multicast, used with PIM-SM), PIM-SM SSM (Single-Source
                 Multicast, used with PIM-SM), PIM-DM (Dense mode) or
                 BIDIR-PIM (bidirectional mode) group.

                 For MGMD Proxy or Snooping, this field is set to 'other'."
    ::= { pimSGIEntry 2 }

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

pimSGILocalMembership OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS 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 and PIM-DM
                 specifications (RFC4601 and RFC3973 respectively) and the
                 (S,G) subset of local_receiver_include(G,I) in the
                 BIDIR-PIM specification (RFC5015)."
    ::= { pimSGIEntry 4 }

pimSGIJoinPruneState OBJECT-TYPE
    SYNTAX     INTEGER {
                  noInfo (1),
                  join (2),
                  prunePending (3),
                  pruned(4)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The state resulting from (S,G) Join/Prune messages
                 received on this interface.  This corresponds to the state
                 of the downstream per-interface (S,G) state machine in the
                 PIM-SM and PIM-DM specifications (RFC4601 and RFC3973
                 respectively).

                 For MGMD Proxy or Snooping, or BIDIR-PIM groups, this
                 field is set to 'noInfo'."
    ::= { pimSGIEntry 5 }

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 and PIM-DM specifications (RFC4601 and RFC3973).
                 This object is zero if the timer is not running.

                 This field is ignored if pimTmEntMgmdProxy is set to
                 'true', or pimTmEntMode is set to 'mgmd-snooping' or
                 'mgmd-proxy', or the group is operating in bidir mode."
    ::= { pimSGIEntry 6 }

pimSGIJoinExpiryTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
-- DC modifications {
            "The time remaining before (S,G) Join state for this
             interface expires.  This timer is called the (S,G) Join
             Expiry Timer in the PIM-SM specification (RFC4601).  This
             object is zero if the timer is not running.  This timer is
             called the (S,G) Prune Timer in the PIM-DM specification
             (RFC3973).

             This field is ignored if pimTmEntMgmdProxy is set to
             'true', or pimTmEntMode is set to 'mgmd-snooping' or
             'mgmd-proxy', or the group is operating in bidir mode."
-- } End DC modifications
    ::= { pimSGIEntry 7 }

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 and PIM-DM specifications
             (RFC4601 and RFC3973 respectively).

             This field is ignored if pimTmEntMgmdProxy is set to
             'true', or pimTmEntMode is set to 'mgmd-snooping' or
             'mgmd-proxy', or the group is operating in bidir mode."
    ::= { pimSGIEntry 8 }

pimSGIAssertTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "If pimSGIAssertState is 'iAmAssertWinner', for a PIM-SM
                 group this is the time remaining before the local router
                 next sends a (S,G) Assert message on this interface; for a
                 PIM-DM group this is the time remaining before the (S,G)
                 Assert state expires.

                 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
                 and PIM-DM specifications (RFC4601 and RFC3973).

                 This field is ignored if pimTmEntMgmdProxy is set to
                 'true', or pimTmEntMode is set to 'mgmd-snooping' or
                 'mgmd-proxy', or the group is operating in bidir mode."
    ::= { pimSGIEntry 9 }

pimSGIAssertWinnerAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "If pimSGIAssertState is 'iAmAssertLoser', this is the
             address type of the assert winner; otherwise, this object
             is unknown(0).

             DC-PIM returns 'ipv4', 'ipv6' or 'unknown' for this
             object.

             This field is ignored if pimTmEntMgmdProxy is set to
             'true', or pimTmEntMode is set to 'mgmd-snooping' or
             'mgmd-proxy', or the group is operating in bidir mode."
    ::= { pimSGIEntry 10 }

pimSGIAssertWinnerAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "If pimSGIAssertState is 'iAmAssertLoser', this is the
             address of the assert winner.  The InetAddressType is
             given by the pimSGIAssertWinnerAddressType object.

             This field is ignored if pimTmEntMgmdProxy is set to
             'true', or pimTmEntMode is set to 'mgmd-snooping' or
             'mgmd-proxy', or the group is operating in bidir mode."
    ::= { pimSGIEntry 11 }

pimSGIAssertWinnerMetricPref OBJECT-TYPE
    SYNTAX     Unsigned32 (0..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "If pimSGIAssertState is 'iAmAssertLoser', this is the
             metric preference of the route to the source advertised by
             the assert winner; otherwise, this object is zero.

             This field is ignored if pimTmEntMgmdProxy is set to
             'true', or pimTmEntMode is set to 'mgmd-snooping' or
             'mgmd-proxy', or the group is operating in bidir mode."
    ::= { pimSGIEntry 12 }

pimSGIAssertWinnerMetric OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "If pimSGIAssertState is 'iAmAssertLoser', this is the
             routing metric of the route to the source advertised by
             the assert winner; otherwise, this object is zero.

             This field is ignored if pimTmEntMgmdProxy is set to
             'true', or pimTmEntMode is set to 'mgmd-snooping' or
             'mgmd-proxy', or the group is operating in bidir mode."
    ::= { pimSGIEntry 13 }

--
-- The DC-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 the entity maintains.

                 This MIB table is not used for MGMD Snooping or PIM-DM or
                 BIDIR-PIM, nor for MGMD Proxy (except in the deprecated
                 mode), so is empty if pimTmEntMgmdProxy is set to 'false'
                 and 'sparse' is clear for pimTmEntMode."
    ::= { pimTables 8 }

pimSGRptEntry OBJECT-TYPE
    SYNTAX     PimSGRptEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimSGRptTable."
    INDEX      { pimTmEntIndex,
                 pimStarGAddressType,
                 pimStarGGrpAddress,
                 pimSGRptSrcAddress }
    ::= { pimSGRptTable 1 }

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

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

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

pimSGRptUpstreamPruneState OBJECT-TYPE
    SYNTAX     INTEGER {
                  rptNotJoined (1),
                  pruned (2),
                  notPruned (3)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Whether the local router should prune the source off the
             RP tree.  This corresponds to the state of the upstream
             (S,G,rpt) state machine for triggered messages in the
             PIM-SM specification (RFC4601)."
    ::= { pimSGRptEntry 3 }

pimSGRptUpstreamOverrideTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time remaining before the local router sends a
             triggered (S,G,rpt) Join message on pimStarGRPFIfIndex.
             This timer is called the (S,G,rpt) Upstream Override Timer
             in the PIM-SM specification (RFC4601).  This object is
             zero if the timer is not running.

             This field is ignored if pimTmEntMgmdProxy is set to
             'true'."
    ::= { pimSGRptEntry 4 }

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

pimSGRptITable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimSGRptIEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION "The (conceptual) table listing the interface-specific
                 (S,G,rpt) state that the entity maintains.

                 For MGMD Proxy or Snooping, or PIM-DM or BIDIR-PIM,
                 (S,G,I,rpt) state exists only because of local group
                 membership requirements that DC-PIM has learned from the
                 MGMD Router implementation."
    ::= { pimTables 9 }

pimSGRptIEntry OBJECT-TYPE
    SYNTAX     PimSGRptIEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimSGRptITable."
    INDEX      { pimTmEntIndex,
                 pimStarGAddressType,
                 pimStarGGrpAddress,
                 pimSGRptSrcAddress,
                 pimSGRptIIfIndex }
    ::= { 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 }

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

pimSGRptILocalMembership OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "Whether the local router 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 PIM-SM and PIM-DM specifications (RFC4601 and
                 RFC3973 respectively) and the (S,G,rpt) subset of
                 local_receiver(G,I) in the BIDIR-PIM specification
                 (RFC5015)."
    ::= { pimSGRptIEntry 3 }

pimSGRptIJoinPruneState OBJECT-TYPE
    SYNTAX     INTEGER {
                  noInfo (1),
                  prune (2),
                  prunePending (3)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The state resulting from (S,G,rpt) Join/Prune messages
                 received on this interface.  This corresponds to the state
                 of the downstream per-interface (S,G,rpt) state machine in
                 the PIM-SM specification (RFC4601).

                 This field is only relevant for PIM-SM.  It is ignored if
                 any of the following are true:

                 - pimSGPimMode is not set to 'ssm' or 'asm'

                 - pimTmEntMgmdProxy is set to 'true'."
    ::= { pimSGRptIEntry 4 }

pimSGRptIPrunePendingTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The time remaining before the 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
                 (RFC4601).  This object is zero if the timer is not
                 running.

                 This field is only relevant for PIM-SM.  It is ignored if
                 any of the following are true:

                 - pimSGPimMode is not set to 'ssm' or 'asm'

                 - pimTmEntMgmdProxy is set to 'true'."
    ::= { pimSGRptIEntry 5 }

pimSGRptIPruneExpiryTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
-- DC modifications {
            "The time remaining before (S,G,rpt) Prune state for this
             interface expires.  This timer is called the (S,G,rpt)
             Prune Expiry Timer in the PIM-SM specification (RFC4601).
             This object is zero if the timer is not running.

             This field is only relevant for PIM-SM.  It is ignored if
             any of the following are true:

             - pimSGPimMode is not set to 'ssm' or 'asm'

             - pimTmEntMgmdProxy is set to 'true'."
-- } End DC modifications
    ::= { pimSGRptIEntry 6 }

--
-- The DC-PIM Static RP Table
--

pimStaticRPTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimStaticRPEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION "This table is used to create and manage static configuration
                 of RPs and group ranges.

                 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.

                 DC-PIM creates default rows in this table at startup to
                 correspond to the SSM ranges defined by IANA.  The
                 administrator is permitted to modify and destroy these rows,
                 or create other rows for different group prefixes.

                 If DC-PIM supports dense mode groups, the network
                 administrator must create group ranges in this table to
                 indicate the multicast groups which should be treated as
                 dense mode.

                 Bidir and PIM-SM ASM group ranges can be configured in this
                 table and/or learned dynamically via BSR.  To configure
                 multiple RPs for the same group range, see
                 pimStaticRPMultiTable.

                 This table is not used if pimTmEntMgmdProxy is set to
                 'true', or pimTmEntMode is set to 'mgmd-snooping' or
                 'mgmd-proxy'."
    REFERENCE "RFC 4601 section 3.7"
    ::= { pimTables 11 }

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

PimStaticRPEntry ::= SEQUENCE {
    pimStaticRPAddressType       InetAddressType,
    pimStaticRPGrpAddress        InetAddress,
    pimStaticRPGrpPrefixLength   InetAddressPrefixLength,
    pimStaticRPRPAddress         InetAddress,
    pimStaticRPPimMode           PimGroupMode,
-- DC modifications {
    pimStaticRPOverrideSubranges TruthValue,
-- } End DC modifications
    pimStaticRPRowStatus         RowStatus,
-- DC additions {
    pimStaticRPAdminStatus       AdminStatus
-- } End DC additions
}

pimStaticRPAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address type of this entry.

            DC-PIM supports only the values 'ipv4' and 'ipv6' for
            this object."
    ::= { pimStaticRPEntry 1 }

pimStaticRPGrpAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The multicast group address which, when combined with
            pimStaticRPGrpPrefixLength, gives the group prefix for this
            entry.  The InetAddressType is given by the
            pimStaticRPAddressType object.

            This address object is only significant up to
            pimStaticRPGrpPrefixLength bits.  The remainder of the
            address bits are zero.  This is especially important for
            this index field, which is part of the index of this entry.
            Any non-zero bits would signify an entirely different
            entry."
    ::= { pimStaticRPEntry 2 }

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


pimStaticRPRPAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    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.

                 This field can only be set to a non-zero value if
                 pimStaticRPPimMode is set to 'asm' or 'bidir'."
    ::= { pimStaticRPEntry 4 }

pimStaticRPPimMode OBJECT-TYPE
    SYNTAX     PimGroupMode
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "The PIM mode to be used for groups in this group prefix.

                 DC-PIM does not support the value 'other' for this object.

                 If this object is set to 'ssm', 'dense' or 'none', then
                 pimStaticRPRPAddress must be set to zero.  No RP
                 operations are ever possible for SSM or PIM-DM, and RP
                 addresses do not make sense for unroutable groups.

                 DC-PIM creates default rows in this table at startup with
                 this object set to 'ssm', to correspond to the SSM ranges
                 defined by IANA.  The administrator is permitted to modify
                 and destroy these rows."
    REFERENCE "RFC 4601 section 3.7, RFC 3569 and
               I-D.ietf-mboned-ip-mcast-mib ipMcastSsmRangeTable"
    DEFVAL { asm }
    ::= { pimStaticRPEntry 5 }

-- DC modifications {

-- This field renamed and its meaning altered with respect to how this
-- row interacts with other static configuration

pimStaticRPOverrideSubranges OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Whether this static RP configuration will override other
            RP information learned for groups in this group prefix.

            If this object is TRUE, then this object will override:

            -  RP information learned via the BSR protocol for groups in
               this group prefix

            -  RP information configured in pimStaticRP[Multi]Table
               with pimStaticRPOverrideSubranges /
               pimStaticRPMultiOverrideSubrngs set to FALSE.

            It does not override any group mappings with origin 'embedded'.

            See pimGroupMappingTable for further detail."
    DEFVAL { false }
    ::= { pimStaticRPEntry 6 }

-- } End DC modifications

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.

            This status object cannot be set to active(1) before a valid
            value has been written to pimStaticRPRPAddress.

            All writeable objects in this entry can be modified when the
            status of this entry is active(1)."
    ::= { pimStaticRPEntry 8 }

-- DC additions {

pimStaticRPAdminStatus OBJECT-TYPE
    SYNTAX     AdminStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The desired administrative state of this row."
    DEFVAL { adminStatusUp }
    ::= { pimStaticRPEntry 51 }

-- } End DC additions

--
-- The DC-PIM Anycast-RP Set Table
--

pimAnycastRPSetTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimAnycastRPSetEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION "This table is used to create and manage Anycast-RP via PIM
                 Register messages (draft-ietf-pim-anycast-rp), as opposed to
                 via other protocols such as MSDP.

                 Entries must be configured in this table if and only if the
                 local router is a member of one or more Anycast-RP sets,
                 that is, one or more Anycast-RP addresses are assigned to
                 the local router.  Note that if using static RP
                 configuration, this is in addition to, not instead of, the
                 pimStaticRP[Multi]Table entries that must be configured for
                 the Anycast-RPs.

                 The set of rows with the same values of both
                 pimAnycastRPSetAddressType and pimAnycastRPSetAnycastAddress
                 corresponds to the Anycast-RP set for that Anycast-RP
                 address.  The maximum number of remote routers in an
                 Anycast-RP set is given by the value of the customizable
                 constant QPTM_ANYCAST_RP_MAX_REM_RTR.

                 Exactly one entry per Anycast-RP set corresponds to the
                 local router.  That entry is identified by the
                 pimAnycastRPSetLocalRouter object, and determines the source
                 address used by the local router when forwarding PIM
                 Register messages to the other routers in the Anycast-RP
                 set.

                 This table is only used by PIM-SM.  Rows are ignored if
                 any of the following are true:

                 - pimTmEntMgmdProxy is set to 'true'

                 - 'sparse' is clear for pimTmEntMode."
    ::= { pimTables 12 }

pimAnycastRPSetEntry OBJECT-TYPE
    SYNTAX     PimAnycastRPSetEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry corresponds to a single remote router within a
            particular Anycast-RP set."
    INDEX      { pimTmEntIndex,
                 pimAnycastRPSetAddressType,
                 pimAnycastRPSetAnycastAddress,
                 pimAnycastRPSetRouterAddress }
    ::= { pimAnycastRPSetTable 1 }

PimAnycastRPSetEntry ::= SEQUENCE {
    pimAnycastRPSetAddressType     InetAddressType,
    pimAnycastRPSetAnycastAddress  InetAddress,
    pimAnycastRPSetRouterAddress   InetAddress,
    pimAnycastRPSetRowStatus       RowStatus,
    pimAnycastRPSetLocalRouter     TruthValue,
-- DC additions {
    pimAnycastRPSetAdminStatus     AdminStatus
-- } End DC additions
}

pimAnycastRPSetAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address type of the Anycast-RP address and router
            address.

            DC-PIM supports only the values 'ipv4' and 'ipv6' for
            this object."
    ::= { pimAnycastRPSetEntry 1 }

pimAnycastRPSetAnycastAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The Anycast-RP address.  The InetAddressType is given by
            the pimAnycastRPSetAddressType object."
    ::= { pimAnycastRPSetEntry 2 }

pimAnycastRPSetRouterAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address of a router that is a member of the Anycast-RP
            set.  This must not be the same as
            pimAnycastRPSetAnycastAddress.  The InetAddressType is given
            by the pimAnycastRPSetAddressType object."
    ::= { pimAnycastRPSetEntry 3 }

pimAnycastRPSetRowStatus 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.

            All writeable objects in this entry can be modified when the
            status of this entry is active(1)."
    ::= { pimAnycastRPSetEntry 4 }

pimAnycastRPSetLocalRouter OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "Whether this entry corresponds to the local router."
    ::= { pimAnycastRPSetEntry 5 }

-- DC additions {

pimAnycastRPSetAdminStatus OBJECT-TYPE
    SYNTAX     AdminStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The desired administrative state of this row."
    DEFVAL { adminStatusUp }
    ::= { pimAnycastRPSetEntry 51 }

-- } End DC additions

--
-- The DC-PIM Group Mapping Table
--

pimGroupMappingTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimGroupMappingEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION "The (conceptual) table listing mappings from multicast group
                 prefixes to the PIM mode and RP 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 'embedded' are
                 created by the router for each Embedded-RP group-to-RP
                 mapping which corresponds to a group for which the PIM
                 router maintains protocol state.

                 -  Rows with a pimGroupMappingOrigin value of 'config' are
                 created and destroyed as a result of configuration of
                 pimStaticRP[Multi]Table being created and destroyed.
                 Additionally, DC-PIM creates default rows in the
                 pimStaticRPTable table at startup to correspond to the
                 SSM ranges defined by IANA.  The administrator is
                 permitted to modify and destroy the SSM range
                 configuration.

                 -  Rows with a pimGroupMappingOrigin value of 'bsr' are
                 created as a result of running the PIM Bootstrap Router
                 (BSR) mechanism.  If the 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.

                 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 determined using the following algorithm.  This
                 algorithm has minor aspects which are specific to DC-PIM.

                 1) If the group corresponds to the well-defined prefixes of
                 link-local and unroutable group addresses, it cannot be used
                 as a PIM group.  There are no rows in the
                 pimGroupMappingTable corresponding to these prefixes.

                 2) If the group corresponds to the format defined in the
                 Embedded-RP mechanism [RFC3956] where the RP address is
                 embedded in the multicast group address, the RP address is
                 extracted from the group address and pimGroupMappingPimMode
                 is 'asm'.

                 3) From the set of all rows in the pimGroupMappingTable, the
                 subset whose group prefix contains the group in question is
                 selected.

                 4) If there are no such rows, the group cannot be used for
                 PIM.

                 5) If there are multiple selected rows, and a subset is
                 defined by pimStaticRP[Multi]Table (pimGroupMappingOrigin
                 value of 'config') with pimStaticRPOverrideSubranges /
                 pimStaticRPMultiOverrideSubrngs set to TRUE, then this
                 subset is selected.

                 6) From the selected subset of rows, the subset that has the
                 greatest value of pimGroupMappingGrpPrefixLength is
                 selected.

                 7) If there are still multiple selected rows, the subset
                 that has the highest precedence (the lowest numerical value
                 for pimGroupMappingPrecedence) is selected.

                 8) If there are still multiple selected mappings, and a
                 subset is associated with the BIDIR-PIM protocol rather than
                 the PIM-SM protocol, this subset is selected.

                 9) If there are still multiple selected mappings, the subset
                 with the numerically lowest priority vector is selected.
                 For a BSR mapping, the priority vector is simply the RP
                 priority; for a configured mapping, it is whether the RP is
                 unreachable, then the RP priority.

                 10) If there are still multiple selected mappings, the
                 algorithm specified by pimTmEntRPMultipathAlgorithm is used
                 to select one or more mappings - unless that mechanism is
                 disabled (via pimTmEntBsrRPMultipathMode for BSR mappings,
                 or via pimTmEntBidirDataMonitorEnable for BIDIR mappings).

                 11) If there are still multiple selected rows, the highest
                 RP address is selected.

                 12) 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.

                 This table is not used by MGMD snooping or proxy (except in
                 the deprecated mode enabled by pimTmEntMgmdProxy)."
    REFERENCE "RFC 4601 section 3.7, RFC 3956, RFC 4610, and
               RFC 5059 section 3.3"
    ::= { pimTables 13 }

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

PimGroupMappingEntry ::= SEQUENCE {
    pimGroupMappingOrigin           PimGroupMappingOriginType,
    pimGroupMappingAddressType      InetAddressType,
    pimGroupMappingGrpAddress       InetAddress,
    pimGroupMappingGrpPrefixLength  InetAddressPrefixLength,
    pimGroupMappingRPAddress        InetAddress,
    pimGroupMappingPimMode          PimGroupMode,
    pimGroupMappingPrecedence       Unsigned32,
-- DC additions {
    pimGroupMappingIsInactive       TruthValue
-- } End DC additions
}

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 prefix.

            DC-PIM supports only the values 'ipv4' and 'ipv6' for
            this object."
    ::= { pimGroupMappingEntry 2 }

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

pimGroupMappingGrpPrefixLength OBJECT-TYPE
    SYNTAX     InetAddressPrefixLength (4..128)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "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 object
            must be in the range 8..128."
    ::= { pimGroupMappingEntry 4 }

pimGroupMappingRPAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION "The IP address of the RP to be used for groups within this
                 group prefix, or zero if no RP is to be used or if the RP
                 address is unknown.  The InetAddressType is given by the
                 pimGroupMappingAddressType object.

                 This field is only relevant for BIDIR-PIM or PIM-SM ASM
                 groups.  It must be set to zero if pimGroupMappingPimMode
                 is either 'ssm' or 'dense'."
    ::= { pimGroupMappingEntry 6 }

pimGroupMappingPimMode OBJECT-TYPE
    SYNTAX     PimGroupMode
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The PIM mode to be used for groups in this group prefix."
    ::= { pimGroupMappingEntry 7 }

pimGroupMappingPrecedence OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The precedence of this row, used in the algorithm that
            determines which row applies to a given group address
            (described above).  Numerically higher values for this
            object indicate lower precedences, with the value zero
            denoting the highest precedence.

            The absolute values of this object have a significance only
            on the local router and do not need to be coordinated with
            other routers.

            BSR group priority advertised by a C-RP or BSR is a
            separate concept.  Priority has significance throughout a
            PIM domain, not just on the local router."
    REFERENCE "RFC 5059 section 4.2"
    ::= { pimGroupMappingEntry 8 }

-- DC additions {
pimGroupMappingIsInactive OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "Flag indicating whether this Group Mapping is currently
                 inactive.  If this flag is set to 'true' then this row is
                 not currently in use - no group addresses will be matched
                 to this Group Mapping.

                 This is always 'false' for any group mappings with origin
                 'embedded'.

                 If the row corresponds to an ignored
                 pimStaticRP[Multi]Table row (for example, because
                 pimTmEntMode is set to 'dense' and this is an 'asm' group
                 mapping), this field is always set to 'true'."
    ::= { pimGroupMappingEntry 51 }
-- } End DC additions

--
-- The DC-PIM Group Address Mapping Table
--

pimGroupAddrMappingTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimGroupAddrMappingEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION "The (conceptual) table listing the PIM mode and RP address
                 (if any) in use for each multicast group address.

                 See the pimGroupMappingTable for the algorithm that DC-PIM
                 uses to determine the PIM mode and RP address for a given
                 multicast group address.  DC-PIM runs this algorithm in full
                 (including the per group algorithm specified by
                 pimTmEntRPMultipathAlgorithm if necessary) when populating
                 a row in the pimGroupAddrMappingTable.

                 There is a row in this table for every possible multicast
                 group address, whether or not any state exists for the group
                 in question.  It is only possible to read a specific row
                 from the table, and 'get next' operations are not allowed.

                 If pimTmEntMode is set to 'mgmd-snooping' or 'mgmd-proxy',
                 then reading this table has no meaning."
    REFERENCE "RFC 4601 section 3.7, RFC 3956, RFC 4610, and
               RFC 5059 section 3.3"
    ::= { pimTables 23 }

pimGroupAddrMappingEntry OBJECT-TYPE
    SYNTAX     PimGroupAddrMappingEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimGroupAddrMappingTable."
    INDEX      { pimTmEntIndex,
                 pimGroupAddrMappingAddressType,
                 pimGroupAddrMappingGroupAddress }
    ::= { pimGroupAddrMappingTable 1 }

PimGroupAddrMappingEntry ::= SEQUENCE {
    pimGroupAddrMappingAddressType  InetAddressType,
    pimGroupAddrMappingGroupAddress InetAddress,
    pimGroupAddrMappingPimMode      PimGroupMode,
    pimGroupAddrMappingRPAddress    InetAddress,
    pimGroupAddrMappingOrigin       PimGroupMappingOriginType
}

pimGroupAddrMappingAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The address type of the IP multicast group.  DC-PIM supports
             only the values 'ipv4' and 'ipv6' for this object."
    ::= { pimGroupAddrMappingEntry 1 }

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

pimGroupAddrMappingPimMode OBJECT-TYPE
    SYNTAX     PimGroupMode
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The PIM mode to be used for this multicast group."
    ::= { pimGroupAddrMappingEntry 3 }

pimGroupAddrMappingRPAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The IP address of the RP to be used for this group, or
                 zero if no RP is to be used, or if the RP address is
                 unknown.  The address type is given by the
                 pimGroupAddrMappingAddressType object, and the RP address
                 length is always non-zero, even if the address itself is
                 zero.

                 This field is only relevant for BIDIR-PIM or PIM-SM ASM
                 groups.  It is set to zero if pimGroupAddrMappingPimMode is
                 either 'ssm' or 'dense'."
    ::= { pimGroupAddrMappingEntry 4 }

pimGroupAddrMappingOrigin OBJECT-TYPE
    SYNTAX     PimGroupMappingOriginType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The mechanism by which this group mapping was learned."
    ::= { pimGroupAddrMappingEntry 5 }

--
-- The DC-PIM Neighbor Statistics Table
--

pimNbrStatsTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimNbrStatsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "This table lists the statistics for PIM neighbors.

             Note that if a neighbor's Liveness Timer expires (including
             on receipt of a PIM Hello message with a zero Holdtime),
             this event resets all of the statistics in this table.
             However, if a neighbor's Generation ID value changes, none
             of the statistics in this table are affected.

             This table is not used for MGMD Snooping or Proxy."
    ::= { pimTables 14 }

pimNbrStatsEntry OBJECT-TYPE
    SYNTAX     PimNbrStatsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimNbrStatsTable."
    AUGMENTS   { pimNeighborEntry }
    ::= { pimNbrStatsTable 1 }

PimNbrStatsEntry ::= SEQUENCE {
    pimNbrStatsNumRecvHello          PimStatsCounter,
    pimNbrStatsNumRecvJoinPrune      PimStatsCounter,
    pimNbrStatsNumRecvAssert         PimStatsCounter,
    pimNbrStatsNumRecvBSM            PimStatsCounter,
    pimNbrStatsNumErrJoinPrune       PimStatsCounter,
    pimNbrStatsNumErrAssert          PimStatsCounter,
    pimNbrStatsNumErrBSM             PimStatsCounter,
    pimNbrStatsNumRecvGraft          PimStatsCounter,
    pimNbrStatsNumErrGraft           PimStatsCounter,
    pimNbrStatsNumRecvGraftAck       PimStatsCounter,
    pimNbrStatsNumErrGraftAck        PimStatsCounter,
    pimNbrStatsNumRecvStateRefresh   PimStatsCounter,
    pimNbrStatsNumErrStateRefresh    PimStatsCounter,
    pimNbrStatsNumRecvDFElection     PimStatsCounter,
    pimNbrStatsNumErrDFElection      PimStatsCounter,
    pimNbrStatsNumRecvJoinedSrcs     PimStatsCounter,
    pimNbrStatsNumRecvPrunedSrcs     PimStatsCounter
}

pimNbrStatsNumRecvHello OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Hello messages that have been
            received from this neighbor."
    ::= { pimNbrStatsEntry 1 }

pimNbrStatsNumRecvJoinPrune OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Join/Prune messages that have been
            received from this neighbor."
    ::= { pimNbrStatsEntry 2 }

pimNbrStatsNumRecvAssert OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Assert messages that have been
            received from this neighbor."
    ::= { pimNbrStatsEntry 3 }

pimNbrStatsNumRecvBSM OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Bootstrap messages that have been
            received from this neighbor."
    ::= { pimNbrStatsEntry 4 }

pimNbrStatsNumErrJoinPrune OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Join/Prune messages that have been
            received from this neighbor that have contained errors.
            Note that this does not include messages for which the RP in
            the message differs from the RP known by the local router,
            nor does it include (*,G) messages received for SSM groups."
    ::= { pimNbrStatsEntry 5 }

pimNbrStatsNumErrAssert OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Assert messages that have been received
            from this neighbor that have contained errors."
    ::= { pimNbrStatsEntry 6 }

pimNbrStatsNumErrBSM OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Bootstrap messages that have been received
            from this neighbor that have contained errors."
    ::= { pimNbrStatsEntry 7 }

pimNbrStatsNumRecvGraft OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The number of Graft messages which have been received from
                 this neighbor.

                 If 'dense' is clear for pimTmEntMode, this count will be
                 zero.  Any received Graft messages will count towards the
                 value of pimNmEntStatsNumRecvIgnoredType instead."
    ::= { pimNbrStatsEntry 12 }

pimNbrStatsNumErrGraft OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The number of badly formatted Graft messages received from
                 this neighbor.

                 This count is incremented even if 'dense' is clear
                 for pimTmEntMode."
    ::= { pimNbrStatsEntry 13 }

pimNbrStatsNumRecvGraftAck OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The number of Graft Ack messages which have been received
                 from this neighbor.

                 If 'dense' is clear for pimTmEntMode, this count will be
                 zero.  Any received Graft Ack messages will count towards
                 the value of pimNmEntStatsNumRecvIgnoredType instead."
    ::= { pimNbrStatsEntry 14 }

pimNbrStatsNumErrGraftAck OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The number of badly formatted Graft Ack messages received
                 from this neighbor.

                 This count is incremented even if 'dense' is clear
                 for pimTmEntMode."
    ::= { pimNbrStatsEntry 15 }

pimNbrStatsNumRecvStateRefresh OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The number of State Refresh messages which have been
                 received from this neighbor.

                 If 'dense' is clear for pimTmEntMode, or the TM entity is
                 configured not to support State Refresh messages
                 (pimTmEntStateRefreshCapable is 'false'), this count will
                 be zero.  Any received State Refresh messages will count
                 towards the value of pimNmEntStatsNumRecvIgnoredType
                 instead."
    ::= { pimNbrStatsEntry 16 }

pimNbrStatsNumErrStateRefresh OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The number of badly formatted State Refresh messages
                 received from this neighbor.

                 This count is incremented even if 'dense' is clear for
                 pimTmEntMode, or the TM entity is configured not to
                 support State Refresh messages
                 (pimTmEntStateRefreshCapable is 'false')."
    ::= { pimNbrStatsEntry 17 }

pimNbrStatsNumRecvDFElection OBJECT-TYPE
    SYNTAX      PimStatsCounter
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The number of DF election messages which have been
                 received from this neighbor.

                 If 'bidir' is clear for pimTmEntMode, this count will be
                 zero.  Any received DF election messages will count
                 towards the value of pimNmEntStatsNumRecvIgnoredType
                 instead."
    ::= { pimNbrStatsEntry 18 }

pimNbrStatsNumErrDFElection OBJECT-TYPE
    SYNTAX      PimStatsCounter
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The number of badly formatted DF election messages
                 received from this neighbor.

                 This count is incremented even if 'bidir' is clear
                 for pimTmEntMode."
    ::= { pimNbrStatsEntry 19 }

pimNbrStatsNumRecvJoinedSrcs  OBJECT-TYPE
    SYNTAX      PimStatsCounter
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The total number of joined sources that have been received
                in valid PIM Join/Prune messages from this neighbor."
    ::= { pimNbrStatsEntry 20 }

pimNbrStatsNumRecvPrunedSrcs  OBJECT-TYPE
    SYNTAX      PimStatsCounter
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The total number of pruned sources that have been received
                in valid PIM Join/Prune messages from this neighbor."
    ::= { pimNbrStatsEntry 21 }

--
-- The DC-PIM Interface Statistics Table
--

pimIfStatsTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimIfStatsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "This table lists the statistics for {interface, IP version}
             pairs for which PIM is enabled.

             Note that any messages filtered out by
             pimInterfaceNeighborFilter do not contribute to any
             statistics in this table except for
             pimIfStatsNumFilteredOut.

             The statistics in this table can be cleared using the
             pimNmEntClearStatsCounters field.

             This table is not used for MGMD Snooping or Proxy."
    ::= { pimTables 15 }

pimIfStatsEntry OBJECT-TYPE
    SYNTAX     PimIfStatsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimIfStatsTable."
    AUGMENTS   { pimInterfaceEntry }
    ::= { pimIfStatsTable 1 }

PimIfStatsEntry ::= SEQUENCE {
    pimIfStatsNumSentHello          PimStatsCounter,
    pimIfStatsNumSentJoinPrune      PimStatsCounter,
    pimIfStatsNumSentAssert         PimStatsCounter,
    pimIfStatsNumSentBsm            PimStatsCounter,
    pimIfStatsNumErrHello           PimStatsCounter,
    pimIfStatsNumRecvUnknownNbr     PimStatsCounter,
    pimIfStatsNumUnknownHelloOpt    PimStatsCounter,
    pimIfStatsNumFilteredOut        PimStatsCounter,
    pimIfStatsNumSentGraft          PimStatsCounter,
    pimIfStatsNumSentGraftAck       PimStatsCounter,
    pimIfStatsNumSentStateRefresh   PimStatsCounter,
    pimIfStatsNumSentDFElection     PimStatsCounter,
    pimIfStatsNumRecvHello          PimStatsCounter,
    pimIfStatsNumRecvJoinPrune      PimStatsCounter,
    pimIfStatsNumRecvAssert         PimStatsCounter,
    pimIfStatsNumRecvUnknownType    PimStatsCounter,
    pimIfStatsNumRecvBadChecksum    PimStatsCounter,
    pimIfStatsTimeToNxtHello        Unsigned32,
    pimIfStatsNumSentJoinedSrcs     PimStatsCounter,
    pimIfStatsNumSentPrunedSrcs     PimStatsCounter
}

pimIfStatsNumSentHello OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Hello messages that have been sent out
            this interface."
    ::= { pimIfStatsEntry 1 }

pimIfStatsNumSentJoinPrune OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Join/Prune messages that have been sent
            out this interface."
    ::= { pimIfStatsEntry 2 }

pimIfStatsNumSentAssert OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Assert messages that have been sent out
            this interface."
    ::= { pimIfStatsEntry 3 }

pimIfStatsNumSentBsm OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Bootstrap Router messages that have
            been sent out this interface.  DC-PIM always multicasts
            this type of message."
    ::= { pimIfStatsEntry 4 }

pimIfStatsNumErrHello OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Hello messages that have been received on
            this interface that have contained errors."
    ::= { pimIfStatsEntry 5 }

pimIfStatsNumRecvUnknownNbr OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The number of PIM Join/Prune, Assert, DF Election, and
                 multicast Bootstrap Router messages that have been
                 received on this interface from a neighbor from which we
                 had not previously received a valid PIM Hello message (and
                 for which pimInterfaceP2PNoHellos was 'false').

                 Bootstrap Router messages that are sent to a unicast
                 address are not included in this count."
    ::= { pimIfStatsEntry 6 }

pimIfStatsNumUnknownHelloOpt OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of unknown options that have been received in
            PIM Hello messages on this interface.

            This value will include any PIM Hellos received with the
            known Cisco proprietary option 65004."
    ::= { pimIfStatsEntry 7 }

pimIfStatsNumFilteredOut OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of link-local multicast PIM messages filtered
            out by pimInterfaceNeighborFilter on this interface."
    ::= { pimIfStatsEntry 8 }

pimIfStatsNumSentGraft OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of Graft messages which have been sent out of
             this interface."
    ::= { pimIfStatsEntry 12 }

pimIfStatsNumSentGraftAck OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of Graft Ack messages which have been sent out of
             this interface."
    ::= { pimIfStatsEntry 13 }

pimIfStatsNumSentStateRefresh OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of State Refresh messages which have been sent out of
             this interface."
    ::= { pimIfStatsEntry 14 }

  pimIfStatsNumSentDFElection OBJECT-TYPE
    SYNTAX      PimStatsCounter
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The number of DF election messages which have been sent
                 out of this interface."
    ::= { pimIfStatsEntry 15 }

pimIfStatsNumRecvHello OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Hello messages that have been
            received on this interface."
    ::= { pimIfStatsEntry 16 }

pimIfStatsNumRecvJoinPrune OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Join/Prune messages that have been
            received on this interface."
    ::= { pimIfStatsEntry 17 }

pimIfStatsNumRecvAssert OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Assert messages that have been
            received on this interface."
    ::= { pimIfStatsEntry 18 }

pimIfStatsNumRecvUnknownType OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM messages with an unknown PIM message type
            that have been received on this interface."
    ::= { pimIfStatsEntry 19 }

pimIfStatsNumRecvBadChecksum OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM messages with a incorrect PIM checksum
            that have been received on this interface."
    ::= { pimIfStatsEntry 20 }

  pimIfStatsTimeToNxtHello OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The time (in milliseconds) until the next Hello message is
                sent on this interface if the Hello timer is running, or
                zero otherwise."
    ::= { pimIfStatsEntry 21 }

pimIfStatsNumSentJoinedSrcs OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of joined sources that have been sent
            in PIM Join/Prune messages on this interface."
    ::= { pimIfStatsEntry 22 }

pimIfStatsNumSentPrunedSrcs OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of pruned sources that have been sent in
            PIM Join/Prune messages on this interface."
    ::= { pimIfStatsEntry 23 }

--
-- The DC-PIM Neighbor Manager Entity Table
--

pimNmEntTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimNmEntEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "This table is used to create and manage DC-PIM Neighbor
             Manager entities.

             There is no reason to create rows in this table if
             pimTmEntMode is always set to 'mgmd-snooping' or
             'mgmd-proxy'."
     ::= { pimTables 16 }

pimNmEntEntry OBJECT-TYPE
    SYNTAX     PimNmEntEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "Each entry represents an instance of the DC-PIM Neighbor
            Manager entity."
    INDEX       { pimNmEntIndex }
    ::= { pimNmEntTable 1 }

PimNmEntEntry ::= SEQUENCE {
    pimNmEntIndex                  NumericIndex,
    pimNmEntRowStatus              RowStatus,
    pimNmEntAdminStatus            AdminStatus,
    pimNmEntOperStatus             NpgOperStatus,
    pimNmEntTmEntIndex             NumericIndex,
    pimNmEntI3JoinOperStatus       NpgOperStatus,
    pimNmEntNmiJoinOperStatus      NpgOperStatus,
    pimNmEntSckJoinOperStatus      NpgOperStatus,
    pimNmEntClearStatsCounters     TruthValue,
    pimNmEntStatsUpTime            TimeTicks,
    pimNmEntEnableUnicastMessages  TruthValue,
    pimNmEntAcceptUnicastBsms      TruthValue,
    pimNmEntCrpAdvFilterIndex      StdAccessListListIndexOrZero,
    pimNmEntBfdEntityIndex         NumericIndexOrZero,
    pimNmEntBfdJoinOperStatus      NpgOperStatus
-- Begin Versa Change
    , pimNmEntTenantName           OCTET STRING,
    pimNmEntTenantId               Unsigned32,
    pimNmEntEnableAlarms           TruthValue
    ,pimNmEntRtmIndex              Unsigned32
-- End VERSA
}

pimNmEntIndex OBJECT-TYPE
    SYNTAX     NumericIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The index of this pimNmEntEntry.  This is the HAF entity
            index passed on the entity create parameters."
    ::= { pimNmEntEntry 1 }

pimNmEntRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Used to create and delete a DC-PIM Neighbor Manager Entity
            Table entry."
    ::= { pimNmEntEntry 2 }

pimNmEntAdminStatus OBJECT-TYPE
    SYNTAX     AdminStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The desired administrative state of the DC-PIM Neighbor
            Manager entity."
    DEFVAL { adminStatusUp }
    ::= { pimNmEntEntry 3 }

pimNmEntOperStatus OBJECT-TYPE
    SYNTAX     NpgOperStatus
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The current operational state of the DC-PIM Neighbor
            Manager entity."
    ::= { pimNmEntEntry 4 }

pimNmEntTmEntIndex OBJECT-TYPE
    SYNTAX     NumericIndex
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The HAF entity index value of the DC-PIM TIB Manager to
            join to.

            Once set, the value of this object cannot be changed."
    ::= { pimNmEntEntry 5 }

pimNmEntI3JoinOperStatus OBJECT-TYPE
    SYNTAX       NpgOperStatus
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The current operational state of the I3 join.
            pimNmEntOperStatus cannot transition to 'operStatusUp'
            unless this object has a value of 'operStatusUp', and cannot
            transition to 'operStatusDown' unless this object has a
            value of 'operStatusDown'."
    ::= { pimNmEntEntry 6 }

pimNmEntNmiJoinOperStatus OBJECT-TYPE
    SYNTAX       NpgOperStatus
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The current operational state of the NMI join.
            pimNmEntOperStatus cannot transition to 'operStatusUp'
            unless this object has a value of 'operStatusUp', and cannot
            transition to 'operStatusDown' unless this object has a
            value of 'operStatusDown'."
    ::= { pimNmEntEntry 7 }

pimNmEntSckJoinOperStatus OBJECT-TYPE
    SYNTAX       NpgOperStatus
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
            "The current operational state of the SCK join.
            pimNmEntOperStatus cannot transition to 'operStatusUp'
            unless this object has a value of 'operStatusUp', and cannot
            transition to 'operStatusDown' unless this object has a
            value of 'operStatusDown'."
    ::= { pimNmEntEntry 8 }

pimNmEntClearStatsCounters OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Set this object to 'true' to cause DC-PIM Neighbor Manager
            to reset all its statistics counters (that is, all objects
            with syntax PimStatsCounter that are either in the
            pimNmEntStatsTable, or in a row of the pimIfStatsTable or
            pimNbrStatsTable for an interface for which
            pimInterfaceNmEntIndex equals pimNmEntIndex).

            Reading the value of this object has no meaning."
    DEFVAL { false }
    ::= { pimNmEntEntry 9 }

pimNmEntStatsUpTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The time since the statistics counters were last reset,
            either by establishing the NMI join (caused by activating
            DC-PIM TIB Manager or DC-PIM Neighbor Manager, or by
            recovery after NMI join failure/fail-over) or by setting the
            pimNmEntClearStatsCounters object to 'true'."
    ::= { pimNmEntEntry 10 }

pimNmEntEnableUnicastMessages OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "Set this object to 'true' to enable DC-PIM Neighbor
                 Manager to send and receive unicast PIM messages.

                 This object must only be set to 'false' if the local
                 router will never be an RP for any multicast group, will
                 never be the DR for any connected source that sends data
                 to any ASM group, and does not need to receive Bootstrap
                 Router (BSR) messages.  Note that this will always be the
                 case if the local router will perform only the SSM subset
                 of PIM-SM.

                 If 'dense' is set for pimTmEntMode unicast messages are
                 always enabled, regardless of the setting of
                 pimNmEntEnableUnicastMessages.  If pimTmEntMgmdProxy is
                 set to 'true', unicast messages are never sent or received
                 regardless of the setting of the
                 pimNmEntEnableUnicastMessages flag."
    DEFVAL { true }
    ::= { pimNmEntEntry 11 }

pimNmEntAcceptUnicastBsms OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "Set this object to 'true' to enable DC-PIM Neighbor
                 Manager to accept PIM Bootstrap Messages (BSMs) which are
                 sent to DC-PIM as unicast messages.  Setting the object to
                 'false' means that DC-PIM Neighbor Manager ignores
                 received unicast BSMs.

                 The setting of this object has no effect on the ability of
                 DC-PIM to accept BSMs which are multicast.

                 DC-PIM only ever multicasts BSMs; it never sends them as
                 unicast messages.

                 This object can only be set to 'true' if the
                 pimNmEntEnableUnicastMessages object is also set to
                 'true'.

                 This field is only relevant for PIM-SM and BIDIR-PIM.  It
                 is ignored if either

                 - 'sparse' and 'bidir' are both clear for pimTmEntMode

                 - pimTmEntMgmdProxy is 'true'."
    DEFVAL { false }
    ::= { pimNmEntEntry 12 }

pimNmEntCrpAdvFilterIndex OBJECT-TYPE
    SYNTAX     StdAccessListListIndexOrZero
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "Set this object to zero to disable Candidate-RP
                 Advertisement filtering.  This means that the local router
                 will process a Candidate-RP Advertisement message from any
                 source IP address.

                 Set this object to a non-zero value to enable Candidate-RP
                 Advertisement filtering.  The value gives the standard
                 access list index used to filter received Candidate-RP
                 Advertisement messages.  The local router will process a
                 received Candidate-RP Advertisement message only if its
                 source IP address is included in the specified standard
                 access list.

                 In other words, the standard access list is a whitelist of
                 the unicast sources from which DC-PIM is permitted to
                 accept Candidate-RP advertisements.

                 This field is only relevant for PIM-SM and BIDIR-PIM.  It
                 is ignored if either

                 - 'sparse' and 'bidir' are both clear for pimTmEntMode

                 - pimTmEntMgmdProxy is 'true'."
    DEFVAL { 0 }
    ::= { pimNmEntEntry 13 }

pimNmEntBfdEntityIndex OBJECT-TYPE
    SYNTAX     NumericIndexOrZero
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "Identifies a BFD stub entity to which the Neighbor Manager
                 will join.

                 A value of zero indicates that no BFD provider is
                 available, or that NM should not join to any BFD provider.

                 If a BFD join is requested (bfdNmEntBfdEntityIndex is set
                 to a non-zero value), but the BFD join fails to activate,
                 then NM will also fail to activate.  NM will deactivate if
                 it has a BFD join which then fails or deactivates.

                 This field can only be changed when the NM entity oper
                 status is down.

                 If this is set to 0, then interfaces configured to require
                 'strict' BFD will ignore all received PIM messages."
    DEFVAL { 0 }
    ::= { pimNmEntEntry 14 }

pimNmEntBfdJoinOperStatus OBJECT-TYPE
    SYNTAX     NpgOperStatus
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The current operational state of the BFD join.  If
                 pimNmEntBfdEntityIndex is non-zero, pimNmEntOperStatus
                 cannot transition to 'operStatusUp' unless this object has
                 a value of 'operStatusUp', and cannot transition to
                 'operStatusDown' unless this object has a value of
                 'operStatusDown'."
    ::= { pimNmEntEntry 15 }

-- Begin Versa Change
pimNmEntTenantName OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Name  of the tenant which owns this PIM instance"
    ::= { pimNmEntEntry 16 }

pimNmEntTenantId OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "ID  of the tenant which owns this PIM instance"
    ::= { pimNmEntEntry 17 }

pimNmEntEnableAlarms OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Enables alarms on this PIM instance"
    DEFVAL       { false }
    ::= { pimNmEntEntry 18 }

pimNmEntRtmIndex OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "Identifies a rtm index used for stubs."
    ::= { pimNmEntEntry 19 }
-- End Versa Change
--
-- The DC-PIM Neighbor Manager Entity Statistics Table
--

pimNmEntStatsTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimNmEntStatsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "This table lists the statistics for DC-PIM Neighbor Manager
             entities.

             Note that any messages filtered out by
             pimInterfaceNeighborFilter do not contribute to any
             statistics in this table.

             Note that in the case of critical parsing errors, only the
             first error encountered will be counted.  The checks are
             made in the following order.

             - Length.
             - Checksum.
             - Message type.
             - Version.

             This table is not used for MGMD Snooping or Proxy."
    ::= { pimTables 17 }

pimNmEntStatsEntry OBJECT-TYPE
    SYNTAX     PimNmEntStatsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "Each entry represents the statistics for a DC-PIM Neighbor
            Manager entity."
    AUGMENTS   { pimNmEntEntry }
    ::= { pimNmEntStatsTable 1 }

PimNmEntStatsEntry ::= SEQUENCE {
    pimNmEntStatsNumSentCRPAdvert         PimStatsCounter,
    pimNmEntStatsNumSentRegister          PimStatsCounter,
    pimNmEntStatsNumSentRegisterStop      PimStatsCounter,
    pimNmEntStatsNumRecvCRPAdvert         PimStatsCounter,
    pimNmEntStatsNumRecvRegister          PimStatsCounter,
    pimNmEntStatsNumRecvRegisterStop      PimStatsCounter,
    pimNmEntStatsNumErrCRPAdvert          PimStatsCounter,
    pimNmEntStatsNumErrRegister           PimStatsCounter,
    pimNmEntStatsNumErrRegisterStop       PimStatsCounter,
    pimNmEntStatsNumRecvIgnoredType       PimStatsCounter,
    pimNmEntStatsNumRecvUnknownType       PimStatsCounter,
    pimNmEntStatsNumRecvUnknownVer        PimStatsCounter,
    pimNmEntStatsNumRecvBadChecksum       PimStatsCounter,
    pimNmEntStatsNumRecvBadLength         PimStatsCounter,
    pimNmEntStatsNumCRPAdvfiltered        PimStatsCounter,
    pimNmEntStatsNumRecvHello             PimStatsCounter,
    pimNmEntStatsNumErrHello              PimStatsCounter,
    pimNmEntStatsNumRecvJoinPrune         PimStatsCounter,
    pimNmEntStatsNumRecvAssert            PimStatsCounter,
    pimNmEntStatsNumRecvBSM               PimStatsCounter,
    pimNmEntStatsNumErrJoinPrune          PimStatsCounter,
    pimNmEntStatsNumErrAssert             PimStatsCounter,
    pimNmEntStatsNumErrBSM                PimStatsCounter,
    pimNmEntStatsNumRecvGraft             PimStatsCounter,
    pimNmEntStatsNumErrGraft              PimStatsCounter,
    pimNmEntStatsNumRecvGraftAck          PimStatsCounter,
    pimNmEntStatsNumErrGraftAck           PimStatsCounter,
    pimNmEntStatsNumRecvStateRefresh      PimStatsCounter,
    pimNmEntStatsNumErrStateRefresh       PimStatsCounter,
    pimNmEntStatsNumRecvDFElection        PimStatsCounter,
    pimNmEntStatsNumErrDFElection         PimStatsCounter,
    pimNmEntStatsNumSentHello             PimStatsCounter,
    pimNmEntStatsNumSentJoinPrune         PimStatsCounter,
    pimNmEntStatsNumSentAssert            PimStatsCounter,
    pimNmEntStatsNumSentBSM               PimStatsCounter,
    pimNmEntStatsNumSentGraft             PimStatsCounter,
    pimNmEntStatsNumSentGraftAck          PimStatsCounter,
    pimNmEntStatsNumSentStateRefresh      PimStatsCounter,
    pimNmEntStatsNumSentDFElection        PimStatsCounter,
    pimNmEntStatsNumRecvJoinedSrcs        PimStatsCounter,
    pimNmEntStatsNumRecvPrunedSrcs        PimStatsCounter,
    pimNmEntStatsNumSentJoinedSrcs        PimStatsCounter,
    pimNmEntStatsNumSentPrunedSrcs        PimStatsCounter
}

pimNmEntStatsNumSentCRPAdvert OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Candidate-RP-Advertisement messages that have
            been sent by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 1 }

pimNmEntStatsNumSentRegister OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Register messages that have been sent by
            this DC-PIM Neighbor Manager entity.

            Note that this only includes PIM Register messages forwarded
            to other members of Anycast-RP sets, and Null-Register
            messages.  It does not include Register-encapsulated data
            packets sent from the DR to the RP; these are sent by the
            data plane."
    ::= { pimNmEntStatsEntry 2 }

pimNmEntStatsNumSentRegisterStop OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Register-Stop messages that have been
            sent by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 3 }

pimNmEntStatsNumRecvCRPAdvert OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Candidate-RP-Advertisement messages that
            have been received by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 4 }

pimNmEntStatsNumRecvRegister OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Register messages that have been
            received by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 5 }

pimNmEntStatsNumRecvRegisterStop OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Register-Stop messages that have
            been received by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 6 }

pimNmEntStatsNumErrCRPAdvert OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Candidate-RP-Advertisement messages that have
            been received by this DC-PIM Neighbor Manager entity that have
            contained errors."
    ::= { pimNmEntStatsEntry 7 }

pimNmEntStatsNumErrRegister OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Register messages that have been received
            by this DC-PIM Neighbor Manager entity that have contained
            errors."
    ::= { pimNmEntStatsEntry 8 }

pimNmEntStatsNumErrRegisterStop OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Register-Stop messages that have been
            received by this DC-PIM Neighbor Manager entity that have
            contained errors."
    ::= { pimNmEntStatsEntry 9 }

pimNmEntStatsNumRecvIgnoredType OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM messages with a known but unsupported PIM
            message type that have been received by this DC-PIM Neighbor
            Manager entity."
    ::= { pimNmEntStatsEntry 10 }

pimNmEntStatsNumRecvUnknownType OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM messages with an unknown PIM message type
            that have been received by this DC-PIM Neighbor Manager
            entity."
    ::= { pimNmEntStatsEntry 11 }

pimNmEntStatsNumRecvUnknownVer OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM messages with an unknown PIM version that
            have been received by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 12 }

pimNmEntStatsNumRecvBadChecksum OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM messages with a incorrect PIM checksum
            that have been received by this DC-PIM Neighbor Manager
            entity."
    ::= { pimNmEntStatsEntry 13 }

pimNmEntStatsNumRecvBadLength OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM messages with a length too short to
            contain a common PIM header that have been received by this
            DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 14 }

pimNmEntStatsNumCRPAdvfiltered OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of C-RP-Advertisement messages which have been
             filtered out by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 15 }

pimNmEntStatsNumRecvHello  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Hello messages that have been
            received by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 17 }

pimNmEntStatsNumErrHello  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Hello messages that have been received
            by this DC-PIM Neighbor Manager entity that have contained
            errors."
    ::= { pimNmEntStatsEntry 18 }

pimNmEntStatsNumRecvJoinPrune  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Join/Prune messages that have been
            received by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 19 }

pimNmEntStatsNumRecvAssert  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Assert messages that have been
            received by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 20 }

pimNmEntStatsNumRecvBSM  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Bootstrap messages that have been
            received by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 21 }

pimNmEntStatsNumErrJoinPrune  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Join/Prune messages that have been
            received by this DC-PIM Neighbor Manager entity that have
            contained errors.  Note that this does not include
            messages for which the RP in the message differs from the
            RP known by the local router, nor does it include (*,G)
            messages received for SSM groups."
    ::= { pimNmEntStatsEntry 22 }

pimNmEntStatsNumErrAssert  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Assert messages that have been received
            by this DC-PIM Neighbor Manager entity that have contained
            errors."
    ::= { pimNmEntStatsEntry 23 }

pimNmEntStatsNumErrBSM  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of PIM Bootstrap messages that have been
            received by this DC-PIM Neighbor Manager entity that have
            contained errors."
    ::= { pimNmEntStatsEntry 24 }

pimNmEntStatsNumRecvGraft  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of Graft messages which have been received by
            this DC-PIM Neighbor Manager entity.

            If 'dense' is clear for pimTmEntMode, this count will be
            zero.  Any received Graft messages will count towards the
            value of pimNmEntStatsNumRecvIgnoredType instead."
    ::= { pimNmEntStatsEntry 25 }

pimNmEntStatsNumErrGraft  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of badly formatted Graft messages received by
            this DC-PIM Neighbor Manager entity.

            This count is incremented even if 'dense' is clear for
            pimTmEntMode."
    ::= { pimNmEntStatsEntry 26 }

pimNmEntStatsNumRecvGraftAck  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of Graft Ack messages which have been received
            by this DC-PIM Neighbor Manager entity.

            If 'dense' is clear for pimTmEntMode, this count will be
            zero.  Any received Graft Ack messages will count towards
            the value of pimNmEntStatsNumRecvIgnoredType instead."
    ::= { pimNmEntStatsEntry 27 }

pimNmEntStatsNumErrGraftAck  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of badly formatted Graft Ack messages received
            by this DC-PIM Neighbor Manager entity.

            This count is incremented even if 'dense' is clear for
            pimTmEntMode."
    ::= { pimNmEntStatsEntry 28 }

pimNmEntStatsNumRecvStateRefresh  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of State Refresh messages which have been
            received by this DC-PIM Neighbor Manager entity.

            If 'dense' is clear for pimTmEntMode, or the TM entity is
            configured not to support State Refresh messages
            (pimTmEntStateRefreshCapable is 'false'), this count will
            be zero.  Any received State Refresh messages will count
            towards the value of pimNmEntStatsNumRecvIgnoredType
            instead."
    ::= { pimNmEntStatsEntry 29 }

pimNmEntStatsNumErrStateRefresh  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of badly formatted State Refresh messages
            received by this DC-PIM Neighbor Manager entity.

            This count is incremented even if 'dense' is clear for
            pimTmEntMode, or the TM entity is configured not to
            support State Refresh messages
            (pimTmEntStateRefreshCapable is 'false')."
    ::= { pimNmEntStatsEntry 30 }

pimNmEntStatsNumRecvDFElection  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of DF election messages which have been
            received by this DC-PIM Neighbor Manager entity.

            If 'bidir' is clear for pimTmEntMode, this count will be
            zero.  Any received DF election messages will count
            towards the value of pimNmEntStatsNumRecvIgnoredType
            instead."
    ::= { pimNmEntStatsEntry 31 }

pimNmEntStatsNumErrDFElection  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of badly formatted DF election messages
            received by this DC-PIM Neighbor Manager entity.

            This count is incremented even if 'bidir' is clear for
            pimTmEntMode."
    ::= { pimNmEntStatsEntry 32 }

pimNmEntStatsNumSentHello  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Hello messages that have been sent
            by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 33 }

pimNmEntStatsNumSentJoinPrune  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Join/Prune messages that have been
            sent by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 34 }

pimNmEntStatsNumSentAssert  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Assert messages that have been
            sent by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 35 }

pimNmEntStatsNumSentBSM  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of valid PIM Bootstrap messages that have been
            sent by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 36 }

pimNmEntStatsNumSentGraft  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of Graft messages which have been sent by this
            DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 37 }

pimNmEntStatsNumSentGraftAck  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of Graft Ack messages which have been sent by
            this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 38 }

pimNmEntStatsNumSentStateRefresh  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of State Refresh messages which have been sent
            by this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 39 }

pimNmEntStatsNumSentDFElection  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of DF election messages which have been sent by
            this DC-PIM Neighbor Manager entity."
    ::= { pimNmEntStatsEntry 40 }

pimNmEntStatsNumRecvJoinedSrcs  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of joined sources that have been received
            in valid PIM Join/Prune messages by this DC-PIM Neighbor
            Manager entity."
    ::= { pimNmEntStatsEntry 41 }

pimNmEntStatsNumRecvPrunedSrcs  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of pruned sources that have been received
            in valid PIM Join/Prune messages by this DC-PIM Neighbor
            Manager entity."
    ::= { pimNmEntStatsEntry 42 }

pimNmEntStatsNumSentJoinedSrcs  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of joined sources that have been sent
            in PIM Join/Prune messages by this DC-PIM Neighbor
            Manager entity."
    ::= { pimNmEntStatsEntry 43 }

pimNmEntStatsNumSentPrunedSrcs  OBJECT-TYPE
    SYNTAX     PimStatsCounter
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of pruned sources that have been sent
            in PIM Join/Prune messages by this DC-PIM Neighbor
            Manager entity."
    ::= { pimNmEntStatsEntry 44 }

--
-- The DC-PIM TIB Manager Entity Table
--

pimTmEntTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimTmEntEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "This table is used to create and manage DC-PIM TIB Manager
            entities."
    ::= { pimTables 18 }

pimTmEntEntry OBJECT-TYPE
    SYNTAX     PimTmEntEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "Each entry represents an instance of the DC-PIM TIB Manager
            entity."
    INDEX      { pimTmEntIndex }
    ::= { pimTmEntTable 1 }

PimTmEntEntry ::= SEQUENCE {
    pimTmEntIndex                    NumericIndex,
    pimTmEntRowStatus                RowStatus,
    pimTmEntAdminStatus              AdminStatus,
    pimTmEntOperStatus               NpgOperStatus,
    pimTmEntGStateLimit              Unsigned32,
    pimTmEntGStateWarnThold          Unsigned32,
    pimTmEntGStateStored             Gauge32,
    pimTmEntSGStateLimit             Unsigned32,
    pimTmEntSGStateWarnThold         Unsigned32,
    pimTmEntSGStateStored            Gauge32,
    pimTmEntStarGIStateLimit         Unsigned32,
    pimTmEntStarGIStateWarnThold     Unsigned32,
    pimTmEntStarGIStateStored        Gauge32,
    pimTmEntSGIStateLimit            Unsigned32,
    pimTmEntSGIStateWarnThold        Unsigned32,
    pimTmEntSGIStateStored           Gauge32,
    pimTmEntUseAsmGrpFilter          TruthValue,
    pimTmEntAsmGrpFilter             StdAccessListListIndexOrZero,
    pimTmEntUseSsmSrcAndGrpFilter    TruthValue,
    pimTmEntSsmSrcAndGrpFilter       ExtAccessListListIndexOrZero,
    pimTmEntUseRegSrcAndGrpFilter    TruthValue,
    pimTmEntRegSrcAndGrpFilter       ExtAccessListListIndexOrZero,
    pimTmEntRegSuppressionTime       Unsigned32,
    pimTmEntRegProbeTime             Unsigned32,
    pimTmEntKeepalivePeriod          Unsigned32,
-- DC additions {
    pimTmEntSendIfStateChangeTraps   TruthValue,
    pimTmEntSupportedAddrType        InetAddressType,
    pimTmEntMgmdProxy                TruthValue,
    pimTmEntMode                     PimEntMode,
    pimTmEntStateRefreshCapable      TruthValue,
    pimTmEntStateRefreshInterval     Unsigned32,
    pimTmEntSnoopBridgeDomainType    L2BridgeDomainType,
    pimTmEntSnoopBridgeDomainId      Unsigned32,
    pimTmEntSnoopBridgeDomainSubId   Unsigned32,
    pimTmEntMsdpFlowsRcvd            Counter32,
    pimTmEntMsdpFlowsSent            Counter32,
    pimTmEntNullRegCount             Counter32,
    pimTmEntClearCounters            TruthValue,
    pimTmEntNumSources               Gauge32,
    pimTmEntNumRPs                   Gauge32,
    pimTmEntGRBackstopDuration       PimGrTimerValue,
    pimTmEntGRJoinStartupDuration    PimGrTimerValue,
    pimTmEntScheduleLimit            Unsigned32,

-- } End DC additions
-- Begin Versa change {
    pimTmEntRtiName                       OCTET STRING,
    pimTmEntRtiIndex                      Unsigned32,
    pimTmEntTenantName                    OCTET STRING,
    pimTmEntTenantId                      Unsigned32,
    pimTmEntDynInterfaceHelloInterval     Unsigned32,
    pimTmEntDynInterfaceJoinPruneInterval Unsigned32,
    pimTmEntDynInterfaceHelloHoldtime     Unsigned32,
    pimTmEntDynInterfaceJoinPruneHoldtime Unsigned32,
    pimTmEntDynInterfacePropagationDelay  Unsigned32,
    pimTmEntDynInterfaceOverrideInterval  Unsigned32,
    pimTmEntDynInterfaceAssertInterval    Unsigned32,
    pimTmEntDynInterfaceAssertHoldtime    Unsigned32,
    pimTmEntSptThresholdPps               Unsigned32,
    pimTmEntSptThresholdKbps              Unsigned32,
    pimTmEntDynInterfaceDRPriority        Unsigned32,
-- End Versa change }

    pimTmEntMultipathMode            PimMultipathMode,
    pimTmEntBidirDataMonitorEnable   TruthValue,
    pimTmEntBsrRPMultipathMode       PimBsrRPMultipathMode,
    pimTmEntGRStatus                 PimGrStatus,
    pimTmEntGRBackstopRemaining      Unsigned32,
    pimTmEntGRJoinStartupRemaining   Unsigned32,
    pimTmEntRegisterSourceIf         Unsigned32,
    pimTmEntPassInterfaceInfo        TruthValue,
    pimTmEntBSRTimeout               Unsigned32,
-- Begin Versa Change
    pimTmEntEnableAlarms             TruthValue,
-- End Versa
    pimTmEntRPMultipathAlgorithm     PimRPMultipathAlgorithms

-- } End DC additions
}

pimTmEntIndex OBJECT-TYPE
    SYNTAX     NumericIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The index of this pimTmEntEntry.  This is the HAF entity
            index passed on the entity create parameters."
    ::= { pimTmEntEntry 1 }

pimTmEntRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Used to create and delete a DC-PIM TIB Manager Entity Table
            entry."
    ::= { pimTmEntEntry 2 }

pimTmEntAdminStatus OBJECT-TYPE
    SYNTAX     AdminStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The desired administrative state of the DC-PIM TIB Manager
            entity."
    DEFVAL { adminStatusUp }
    ::= { pimTmEntEntry 3 }

pimTmEntOperStatus OBJECT-TYPE
    SYNTAX     NpgOperStatus
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The current operational state of the DC-PIM TIB Manager
            entity."
    ::= { pimTmEntEntry 4 }

pimTmEntGStateLimit OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The maximum number of groups for which DC-PIM TIB Manager
            is allowed to store non-interface specific (*,G) and/or
            (S,G) state.  A value of zero means that there is no limit.

            Decreasing this value to less than pimTmEntGStateStored
            will not cause existing state to be deleted."
    DEFVAL { 0 }
    ::= { pimTmEntEntry 5 }

pimTmEntGStateWarnThold OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "DC-PIM TIB Manager logs an exception if the number of
            groups for which it is storing non-interface specific (*,G)
            and/or (S,G) state exceeds this value.  A value of zero
            means that there is no warning threshold."
    DEFVAL { 0 }
    ::= { pimTmEntEntry 6 }

pimTmEntGStateStored OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of groups for which DC-PIM TIB Manager is
            storing non-interface specific (*,G) and/or (S,G) state."
    ::= { pimTmEntEntry 7 }

pimTmEntSGStateLimit OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The maximum number of {source, group} pairs for which
            DC-PIM TIB Manager is allowed to store non-interface
            specific (S,G) state.  A value of zero means that there is
            no limit.

            Decreasing this value to less than pimTmEntSGStateStored
            will not cause existing state to be deleted."
    DEFVAL { 0 }
    ::= { pimTmEntEntry 8 }

pimTmEntSGStateWarnThold OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "DC-PIM TIB Manager logs an exception if the number of
            {source, group} pairs for which it is storing non-interface
            specific (S,G) state exceeds this value.  A value of zero
            means that there is no warning threshold."
    DEFVAL { 0 }
    ::= { pimTmEntEntry 9 }

pimTmEntSGStateStored OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of {source, group} pairs for which DC-PIM TIB
            Manager is storing non-interface specific (S,G) state."
    ::= { pimTmEntEntry 10 }

pimTmEntStarGIStateLimit OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The maximum number of {group, interface} pairs for which
            DC-PIM TIB Manager is allowed to store (*,G,I) state.  A
            value of zero means that there is no limit.

            Decreasing this value to less than
            pimTmEntStarGIStateStored will not cause existing state to
            be deleted."
    DEFVAL { 0 }
    ::= { pimTmEntEntry 11 }

pimTmEntStarGIStateWarnThold OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "DC-PIM TIB Manager logs an exception if the number of
            {group, interface} pairs for which it is storing (*,G,I)
            state exceeds this value.  A value of zero means that there
            is no warning threshold."
    DEFVAL { 0 }
    ::= { pimTmEntEntry 12 }

pimTmEntStarGIStateStored OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of {group, interface} pairs for which DC-PIM TIB
            Manager is storing (*,G,I) state."
    ::= { pimTmEntEntry 13 }

pimTmEntSGIStateLimit OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The maximum number of {source, group, interface} triplets
            for which DC-PIM TIB Manager is allowed to store (S,G,I)
            state.  A value of zero means that there is no limit.

            Decreasing this value to less than pimTmEntSGIStateStored
            will not cause existing state to be deleted."
    DEFVAL { 0 }
    ::= { pimTmEntEntry 14 }

pimTmEntSGIStateWarnThold OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "DC-PIM TIB Manager logs an exception if the number of
            {source, group, interface} triplets for which it is storing
            (S,G,I) state exceeds this value.  A value of zero means
            that there is no warning threshold."
    DEFVAL { 0 }
    ::= { pimTmEntEntry 15 }

pimTmEntSGIStateStored OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of {source, group, interface} triplets for which
            DC-PIM TIB Manager is storing (S,G,I) state."
    ::= { pimTmEntEntry 16 }

pimTmEntUseAsmGrpFilter OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "Setting this object to 'true' enables the PIM-SM ASM and
                 BIDIR-PIM group filter specified by pimTmEntAsmGrpFilter.

                 This field is only relevant for PIM-SM and BIDIR-PIM.
                 This field is ignored if 'sparse' and 'bidir' are both
                 clear for pimTmEntMode."
    DEFVAL { false }
    ::= { pimTmEntEntry 17 }

pimTmEntAsmGrpFilter OBJECT-TYPE
    SYNTAX     StdAccessListListIndexOrZero
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "When PIM-SM ASM / BIDIR-PIM group filtering is enabled
                 (that is, when pimTmEntUseAsmGrpFilter is 'true'), then
                 for groups in the PIM-SM ASM and BIDIR-PIM spaces, the
                 local router will:

                 -  process received PIM (*,G) Join messages only if the
                 group address is included in the standard access list
                 corresponding to the list index value configured for
                 this object.  For PIM-SM ASM groups, this applies to
                 (S,G) Join messages too

                 -  accept (*,G) and (S,G) local membership requests from
                 the MGMD Router component only if the group address is
                 included in the standard access list corresponding to
                 the list index value configured for this object.

                 In other words, the standard access list is a whitelist of
                 the PIM-SM ASM and BIDIR-PIM groups for which DC-PIM is
                 permitted to request traffic.

                 Note that DC-PIM will never Register-encapsulate multicast
                 data packets for PIM-SM ASM groups that are blocked by
                 this filter.  See pimTmEntRegSrcAndGrpFilter for
                 additional Register message filtering options.

                 pimTmEntAsmGrpFilter defaults to 0, which indicates that
                 no access list is specified.

                 When pimTmEntUseAsmGrpFilter is set to to 'true', then
                 pimTmEntRowStatus can only become 'active' if a non-zero
                 value has been specified for pimTmEntAsmGrpFilter.

                 This field is only relevant for PIM-SM and BIDIR-PIM.
                 This field is ignored if 'sparse' and 'bidir' are both
                 clear for pimTmEntMode."
    ::= { pimTmEntEntry 18 }

pimTmEntUseSsmSrcAndGrpFilter OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "Setting this object to 'true' enables the SSM source and
                 group filter specified by pimTmEntSsmSrcAndGrpFilter.

                 This field is only relevant for PIM-SM.  This field is
                 ignored if 'sparse' is clear for pimTmEntMode."
    DEFVAL { false }
    ::= { pimTmEntEntry 19 }

pimTmEntSsmSrcAndGrpFilter OBJECT-TYPE
    SYNTAX     ExtAccessListListIndexOrZero
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "When SSM source and group filtering is enabled (that is,
                 when pimTmEntUseSsmSrcAndGrpFilter is 'true'), then for
                 groups in the SSM space, the local router will:

                 -  process received PIM (S,G) Join messages only if the
                 {source, group} pair is included in the extended access
                 list corresponding to the list index value configured
                 for this object, and

                 -  accept (S,G) local membership requests from the MGMD
                 Router component only if the {source, group} pair is
                 included in the extended access list corresponding to
                 the list index value configured for this object.

                 In other words, the extended access list is a whitelist of
                 the SSM {source, group} pairs for which DC-PIM is
                 permitted to request traffic.

                 pimTmEntSsmSrcAndGrpFilter defaults to 0, which indicates
                 that no access list is specified.

                 When pimTmEntUseSsmSrcAndGrpFilter is set to to 'true',
                 then pimTmEntRowStatus can only become 'active' if a
                 non-zero value has been specified for
                 pimTmEntSsmSrcAndGrpFilter.

                 This field is only relevant for PIM-SM.  This field is
                 ignored if 'sparse' is clear for pimTmEntMode."
    ::= { pimTmEntEntry 20 }

pimTmEntUseRegSrcAndGrpFilter OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Setting this object to 'true' enables the Register message
             filter by source and group address, specified by
             pimTmEntRegSrcAndGrpFilter.

             This field is only relevant for PIM-SM."
    DEFVAL { false }
    ::= { pimTmEntEntry 21 }

pimTmEntRegSrcAndGrpFilter OBJECT-TYPE
    SYNTAX     ExtAccessListListIndexOrZero
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "When Register message filtering by source and group
                 address is enabled (that is, when
                 pimTmEntUseRegSrcAndGrpFilter is 'true'), then:

                 -  for groups for which the local router is the RP, it
                 will process received PIM Register messages as normal
                 only if the {source, group} pair of the encapsulated
                 multicast data packet is included in the extended
                 access list corresponding to the list index value
                 configured for this object; if the {source, group} pair
                 is excluded from the extended access list, the local
                 router will send a Register-Stop message, and

                 -  on interfaces on which the local router is the DR, it
                 will encapsulate received multicast data packets and
                 forward them in PIM Register messages only if the
                 {source, group} pair of the multicast data packet is
                 included in the extended access list corresponding to
                 the list index value configured for this object.

                 In other words, the extended access list is a whitelist of
                 the {source, group} pairs for which the local router is
                 permitted to Register-encapsulate/decapsulate multicast
                 data packets.

                 pimTmEntRegSrcAndGrpFilter defaults to 0, which indicates
                 that no access list is specified.

                 When pimTmEntUseRegSrcAndGrpFilter is set to to 'true',
                 then pimTmEntRowStatus can only become 'active' if a
                 non-zero value has been specified for
                 pimTmEntRegSrcAndGrpFilter.

                 This field is only relevant for PIM-SM.  This field is
                 ignored if pimTmEntMgmdProxy is set to 'true', or 'sparse'
                 is clear for pimTmEntMode."
    ::= { pimTmEntEntry 22 }

pimTmEntRegSuppressionTime OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "The mean value of the randomized interval during which a
                 DR stops Register-encapsulation after receiving a PIM
                 Register-Stop message.  This object corresponds to the
                 'Register_Suppression_Time' defined in the PIM-SM
                 specification (RFC4601).

                 Note that configuring different values for this object for
                 different routers in the PIM domain might lead to
                 incorrect protocol operation.

                 This field is only relevant for PIM-SM.  This field is
                 ignored if pimTmEntMgmdProxy is set to 'true', or 'sparse'
                 is clear for pimTmEntMode."
    DEFVAL { 60 }
    ::= { pimTmEntEntry 23 }

pimTmEntRegProbeTime OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "The time to wait for a PIM Register-Stop message after
                 sending a PIM Null-Register message, before resuming
                 Register-encapsulation at a DR.  This object corresponds
                 to the 'Register_Probe_Time' defined in the PIM-SM
                 specification (RFC4601).

                 This field is only relevant for PIM-SM.  This field is
                 ignored if pimTmEntMgmdProxy is set to 'true', or 'sparse'
                 is clear for pimTmEntMode."
    DEFVAL { 5 }
    ::= { pimTmEntEntry 24 }

pimTmEntKeepalivePeriod OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "The time to keep (S,G) state alive in the absence of PIM
                 (S,G) Join messages, (S,G) local membership or (S,G) data
                 packets.  This object corresponds to the 'SourceLifetime'
                 defined in the PIM-DM specification (RFC3973) and the
                 'Keepalive_Period' defined in the PIM-SM specification
                 (RFC4601).

                 Note that this value must also be configured in the MPF
                 stub, as the duration of its Data Liveness timer.

                 Note that configuring different values for this object for
                 different routers in the PIM domain might lead to
                 incorrect protocol operation.

                 This field is ignored if pimTmEntMgmdProxy is set to
                 'true', or 'sparse' and 'dense' are both clear
                 for pimTmEntMode."
    DEFVAL { 210 }
    ::= { pimTmEntEntry 25 }

-- DC additions {

pimTmEntSendIfStateChangeTraps OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Setting this object to 'true' means that DC-PIM TIB
             Manager will send a pimInterfaceStateChange trap when an
             interface's operational state changes.

             This field is ignored if pimTmEntMgmdProxy is set to
             'false' and pimTmEntMode is set to 'mgmd-snooping' or
             'mgmd-proxy'."
    DEFVAL { false }
    ::= { pimTmEntEntry 26 }

pimTmEntSupportedAddrType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "This field indicates the address family type that this
             entity supports.  On routers which support multiple
             address families, separate DC-PIM-TM and DC-PIM-NM
             entities must be configured for each family.

             This configuration can only be updated when the row status
             of the TM entity is NotInService or the admin status is
             Down."
    DEFVAL { ipv4 }
    ::= { pimTmEntEntry 27 }

pimTmEntMgmdProxy OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "This field indicates whether this entity is configured to
             be an MGMD proxy device using a deprecated mode of
             integration with IGMP host support.

             In this mode the MPF stub is responsible for performing
             the host portion of IGMP on upstream interfaces, including
             originating Report/Leave messages corresponding to proxied
             group membership state changes that it learns via changes
             to TIB Records.

             This configuration can only be updated when the row status
             of the TM entity is NotInService.

             This field is deprecated.  New code should enable MGMD
             proxy via the 'mgmd-proxy' value of pimTmEntMode (which
             includes integration with DC-IGMP Host to perform the host
             portion of IGMP on upstream interfaces)."
    DEFVAL { false }
    ::= { pimTmEntEntry 28 }

pimTmEntMode OBJECT-TYPE
    SYNTAX     PimEntMode
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "This field indicates the mode(s) that the PIM-TM entity is
                 configured to operate in.

                 -  'sparse' for PIM-SM, as defined in RFC4601.

                 -  'dense' for PIM-DM, as defined in RFC3973.

                 -  'bidir' for BIDIR-PIM, as defined in RFC5015.

                 -  'mgmd-snooping', to operate as an MGMD snooping device.
                 There is no standard for this behavior, but it is
                 discussed in RFC4541.  For this mode, the administrator
                 must create a GMI join in pimTmMjTable.  If this flag
                 is set, no other flags can be set.

                 -  'mgmd-proxy', to operate as an MGMD proxy device, as
                 defined in RFC4605.  For this mode, the administrator
                 must create a GMI join in pimTmMjTable.  If this flag
                 is set, no other flags can be set.

                 If this configuration is changed whilst the entity is
                 active, the entity will be deactivated and restarted in
                 the new mode(s).  It is strongly advised that this
                 configuration is set prior to activating the entity and
                 left unchanged throughout the router's lifetime.

                 If pimTmEntMgmdProxy is 'true', this object is ignored."
    DEFVAL { { sparse } }
    ::= { pimTmEntEntry 29 }

pimTmEntStateRefreshCapable OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "This field defines whether the local router is capable of
                 originating and flooding PIM-DM State Refresh messages.
                 State Refresh messages are used to ensure that, in a
                 stable network the data plane does not periodically get
                 reprogrammed.  As such, State Refresh messages are
                 recommended to be enabled.

                 If State Refresh messages are disabled, the local router
                 will drop all received State Refresh messages and will not
                 originate any State Refresh messages.

                 This field is only relevant for PIM-DM.  It is ignored if
                 either

                 - 'dense' is clear for pimTmEntMode

                 - pimTmEntMgmdProxy is 'true'.

                 If this configuration is changed whilst the entity is
                 active, the entity will be deactivated and restarted with
                 the new configuration value."
    DEFVAL { true }
    ::= { pimTmEntEntry 30 }

pimTmEntStateRefreshInterval OBJECT-TYPE
    SYNTAX     Unsigned32 (0..255)
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "The interval between successive State Refresh(S,G)
                 messages originated by the local router.  This object
                 corresponds to the 'RefreshInterval' timer value defined
                 in the PIM-DM specification (RFC3973).

                 This field is only relevant for PIM-DM.  It is ignored if
                 either

                 - 'dense' is clear for pimTmEntMode

                 - pimTmEntMgmdProxy is 'true'.

                 It is recommended that this value is set consistently
                 throughout the network, and that in order to provide
                 robustness to message loss, its value is much less than
                 (for example, 3 or 3.5 times less than)
                 pimInterfaceJoinPruneHoldtime and
                 pimInterfaceAssertHoldtime for any interface on the local
                 router.

                 If this field is changed while the entity is active, for
                 each (S,G) the change will only take effect after the next
                 State Refresh(S,G) message is generated.

                 If pimTmEntStateRefreshCapable is 'false', this value has
                 no effect."
    DEFVAL { 60 }
    ::= { pimTmEntEntry 31 }

  pimTmEntSnoopBridgeDomainType OBJECT-TYPE
    SYNTAX      L2BridgeDomainType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The type of bridge domain supported by this entity.

             This field is only relevant for MGMD snooping.  If
             pimTmEntMode is not 'mgmd-snooping', this value has no
             effect.

             If this configuration is changed whilst the entity is
             active, the entity will be deactivated, and restarted
             using the new value."
    DEFVAL { bridgeDomainVlan }
    ::= { pimTmEntEntry 32 }

  pimTmEntSnoopBridgeDomainId OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The principal ID of the bridge domain supported by this
             entity.

             This field is only valid if pimTmEntSnoopBridgeDomainType
             is not 'none'.

             The interpretation of this value depends upon the value of
             pimTmEntSnoopBridgeDomainType.

             Some types of bridge domain impose additional restrictions
             on the valid range of this field.  For a VLAN, the minimum
             and maximum values are AMB_L2_MIN_VLAN_ID and
             AMB_L2_MAX_VLAN_ID, respectively.

             This field is only relevant for MGMD snooping.  Otherwise,
             this value has no effect.

             If this configuration is changed whilst the entity is
             active, the entity will be deactivated, and restarted
             using the new value."
    DEFVAL { 0 }
    ::= { pimTmEntEntry 33 }

  pimTmEntSnoopBridgeDomainSubId OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The secondary ID of the bridge domain supported by this
             entity.

             This field is only valid if pimTmEntSnoopBridgeDomainType
             is 'vpws' or 'vpls'.

             The interpretation of this value depends upon the value of
             pimTmEntSnoopBridgeDomainType, as follows.

             -  For 'vpws', this is the AC interface index.

             -  For 'vpls', this is the VPLS site index.

             The type of bridge domain might impose additional
             restrictions on the valid range of this field.

             This field is only relevant for MGMD snooping.  Otherwise,
             this value has no effect.

             If this configuration is changed whilst the entity is
             active, the entity will be deactivated, and restarted
             using the new value."
    DEFVAL { 0 }
    ::= { pimTmEntEntry 34 }

  pimTmEntMsdpFlowsRcvd OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This field is deprecated.  It returns the same value as
             pimTmEntStatsMsdpFlowsRcvd."
    ::= { pimTmEntEntry 35 }

  pimTmEntMsdpFlowsSent OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This field is deprecated.  It returns the same value as
             pimTmEntStatsMsdpFlowsSent."
    ::= { pimTmEntEntry 36 }

  pimTmEntNullRegCount OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This field is deprecated.  It returns the same value as
             pimTmEntStatsNullRegCount."
    ::= { pimTmEntEntry 37 }

  pimTmEntClearCounters OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Set this object to 'true' to cause this entity to reset
             all its statistics counters - that is, all objects in
             pimTmEntStatsTable, plus the deprecated statistics objects
             in this pimTmEntTable (pimTmEntMsdpFlowsRcvd,
             pimTmEntMsdpFlowsSent and pimTmEntNullRegCount).

             Reading the value of this object has no meaning."
    DEFVAL { false }
    ::= { pimTmEntEntry 38 }

  pimTmEntNumSources OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Number of different source addresses known by this entity."
    ::= { pimTmEntEntry 39 }

  pimTmEntNumRPs OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Number of different Rendezvous Point (RP) addresses known
                 by this entity.

                 DC-PIM always returns zero for the value of this object in
                 either of the following cases.

                 -  'sparse' and 'bidir' are both clear for pimTmEntMode.
                 -  pimTmEntMgmdProxy is 'true'."
    ::= { pimTmEntEntry 40 }

  pimTmEntGRBackstopDuration OBJECT-TYPE
    SYNTAX      PimGrTimerValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The length of the Graceful Restart backstop timer to run
             within DC-PIM, in seconds.

             Graceful Restart is currently only supported when running
             in IGMP Proxy, IGMP Snooping, Sparse and Dense modes - see
             pimTmEntMode.  Note that in Sparse/Dense mode, the
             Backstop Duration must be greater than the Join Startup
             Duration, pimTmEntGRJoinStartupDuration.

             In IGMP Graceful Restart, processing is normally timed out
             by suitable protocol timers (e.g.  IGMP Startup Query
             Interval), but this timer is provided as a backstop to
             allow the administrator to override any protocol timers.

             In PIM Graceful Restart, if the network is stable,
             processing is a finite action.  However, when the network
             is unstable, data flows may change frequently enough to
             put DC-PIM in a permanent state of audit.  The backstop
             timer overrides any excess processing, causing DC-PIM to
             break out of audit on expiry.

             This field together with pimTmEntGRJoinStartupDuration
             defines whether Graceful Restart is supported for this
             DC-PIM instance.  If both of them are set to 0 then
             Graceful Restart is disabled and DC-PIM will not attempt
             to preserve data plane state on restart.

             The default value is 0 seconds, meaning that Graceful
             Restart is disabled."
    DEFVAL      { 0 }
    ::= { pimTmEntEntry 41 }

 pimTmEntGRJoinStartupDuration OBJECT-TYPE
    SYNTAX      PimGrTimerValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The length of the join startup timer to run within DC-PIM,
             in seconds.

             This timer is only used when Graceful Restart is
             supported.  This is the case when
             pimTmEntGRBackstopDuration is greater than 0 and
             pimTmEntMode is set to at least one of these values:

             -  sparse
             -  dense
             -  mgmdProxy
             -  mgmdSnooping.

             The duration of this timer determines the time which
             DC-PIM waits for new GMI joins to MGMD Routers to be set
             up.  If a join activates after this timer pops, DC-PIM
             will not wait for the join to complete audit before
             completing its own audit over the TIBI.

             Note that if this duration is set to 0 then the Graceful
             Restart function is disabled."
    DEFVAL      { 0 }
    ::= { pimTmEntEntry 42 }

 pimTmEntScheduleLimit OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The maximum number of objects that can be processed in a
             single schedule.

             When subcomponents are scheduled by receipt of an IPS or a
             timer pop, that IPS can cause more work than can be
             performed in a reasonable time without blocking the
             N-BASE.  Subcomponents handle this by breaking off
             processing when they hit a processing limit.

             Higher values increase the processing efficiency of DC-PIM
             instances, but can cause the scheduler to be blocked for
             excessive periods, causing timers to pop late.  Lower
             values have the reverse effects."
    DEFVAL      { 10000 }
    ::= { pimTmEntEntry 43 }

-- } End DC additions

-- Begin Versa change {

  pimTmEntRtiName OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (0..128))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "This name of routing instance in which
                  this PIM instance is created."
    ::= { pimTmEntEntry 44 }

  pimTmEntRtiIndex OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "The index of routing instance in which
                 this PIM instance is created."
    ::= { pimTmEntEntry 45 }

  pimTmEntTenantName OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (0..128))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Name of the tenant which owns this PIM instance"
    ::= {pimTmEntEntry 46 }

  pimTmEntTenantId OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "ID  of the tenant which owns this PIM instance"
    ::= { pimTmEntEntry 47 }

  pimTmEntDynInterfaceHelloInterval 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 dynamic interfaces.  This object corresponds to the
             'Hello_Period' timer value defined in the PIM-SM and
             PIM-DM specifications (RFC4601 and RFC3973 respectively).
             A value of 0 represents an 'infinite' interval, and
             indicates that periodic PIM Hello messages should not be
             sent on this interface.

             This field is ignored if pimTmEntMgmdProxy is set to
             'true'."
    DEFVAL { 30 }
    ::= { pimTmEntEntry 48 }

  pimTmEntDynInterfaceJoinPruneInterval 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 dynamic interfaces.  This object corresponds
             to the 't_periodic' timer value defined in the PIM-SM
             specification (RFC4601).  A value of 0 represents an
             'infinite' interval, and indicates that periodic PIM
             Join/Prune messages should not be sent on this interface.

             This field is only relevant for PIM-SM.  It is ignored if
             either

             - pimTmEntMode is 'dense'

             - pimTmEntMgmdProxy is 'true'."
    DEFVAL { 60 }
    ::= { pimTmEntEntry 49 }

  pimTmEntDynInterfaceHelloHoldtime OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
-- DC modifications {
            "The value set in the Holdtime field of PIM Hello messages
             transmitted on dynamic interfaces, that is, the amount of time
             a receiver must consider the neighbor reachable, in the
             absence of further PIM Hello messages.  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.

             This field is ignored if pimTmEntMgmdProxy is set to
             'true'."
-- } End DC modifications
    DEFVAL { 105 }
    ::= { pimTmEntEntry 50 }

  pimTmEntDynInterfaceJoinPruneHoldtime OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
-- DC modifications {
            "The value inserted into the Holdtime field of a PIM
             Join/Prune message sent on dynamic interfaces, that is, the
             amount of time a receiver must keep the Join/Prune state
             alive, in the absence of further PIM Join/Prune messages.
             A value of 65535 represents an 'infinite' holdtime.

             PIM-SM implementations are recommended to use a holdtime
             that is 3.5 times the value of
             pimInterfaceJoinPruneInterval, or 65535 if
             pimInterfaceJoinPruneInterval is set to 0.

             If State Refresh is enabled (pimTmEntStateRefreshCapable
             is 'true'), PIM-DM implementations are recommended to use
             a value greater than 3 times the
             pimTmEntStateRefreshInterval.

             This field is ignored if pimTmEntMgmdProxy is set to
             'true'."
-- } End DC modifications
    DEFVAL { 210 }
    ::= { pimTmEntEntry 51 }

  pimTmEntDynInterfacePropagationDelay OBJECT-TYPE
    SYNTAX     Unsigned32 (0..32767)
    UNITS      "milliseconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
-- DC modifications {
            "The value this router inserts into the Propagation_Delay
            field of the LAN Prune Delay option in the PIM Hello
            messages it sends on dynamic interfaces, that is, the expected
            propagation delay on the link.  Implementations should
            enforce a lower bound on the permitted values for this
            object to allow for scheduling and processing delays within
            the local router.  This field is ignored if pimTmEntMgmdProxy
            is set to 'true'."
-- } End DC modifications
    DEFVAL { 500 }
    ::= { pimTmEntEntry 52 }

  pimTmEntDynInterfaceOverrideInterval OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "milliseconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
-- DC modifications {
            "The value this router inserts into the Override_Interval
            field of the LAN Prune Delay option in the PIM Hello
            messages it sends on dynamic interfaces, that is, the preferred
            maximum value of the randomized interval during which a PIM
            router can override another PIM router's Prune message.
            This acts to reduce the risk of overriding Join message
            implosion, and hence is often related to the size of the PIM
            router population on the link.  This field is ignored if
            pimTmEntMgmdProxy is set to 'true'."
-- } End DC modifications
    DEFVAL { 2500 }
    ::= { pimTmEntEntry 53 }

  pimTmEntDynInterfaceAssertInterval OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The frequency at which this router sends PIM Assert
             messages on dynamic interfaces when it is the assert winner.
             This object corresponds to the 'Assert_Time' minus the
             'Assert_Override_Interval' defined in the PIM-SM and the
             PIM-DM specifications (RFC4601 and RFC3973 respectively).
             This must be less than pimInterfaceAssertHoldtime.

             This field is ignored if pimTmEntMgmdProxy is set to
             'true'."
    DEFVAL { 177 }
    ::= { pimTmEntEntry 54 }

  pimTmEntDynInterfaceAssertHoldtime OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The interval before this router leaves assert loser state
             on dynamic interfaces, unless it receives a PIM Assert message
             that refreshes this state.  This object corresponds to the
             'Assert_Time' timer value defined in the PIM-SM and PIM-DM
             specifications (RFC4601 and RFC3973 respectively).

             Note that configuring different values for this object for
             different routers on the same interface might lead to
             incorrect protocol operation.

             This field is ignored if pimTmEntMgmdProxy is set to
             'true'."
    DEFVAL { 180 }
    ::= { pimTmEntEntry 55 }

  pimTmEntSptThresholdPps OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "packets per second"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The threshold in packets per seconds to control transition to
             direct SPT.

             Note the value 0 for this field and pimTmEntSptThresholdKbps field
             indicates threshold as infinity. In such case there will be no
             transition to SPT."
    DEFVAL { 1 }
    ::= { pimTmEntEntry 56 }

  pimTmEntSptThresholdKbps OBJECT-TYPE
    SYNTAX     Unsigned32 (0..65535)
    UNITS      "kilobits per second"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The threshold in kilobits per seconds to control transition to
             direct SPT.

             Note the value 0 for this field and pimTmEntSptThresholdPps field
             indicates threshold as infinity. In such case there will be no
             transition to SPT."
    DEFVAL { 0 }
    ::= { pimTmEntEntry 57 }

  pimTmEntDynInterfaceDRPriority 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.  If all routers on the
             interface include the DR Priority option in their PIM
             Hello messages, the router with the highest DR priority
             value will win the DR election (with highest IP address
             used as a tie-breaker).

             This field is only relevant for PIM-SM.  It is ignored
             if either

             - pimTmEntMode is 'dense'

             - pimTmEntMgmdProxy is 'true'."
    DEFVAL { 1 }
    ::= { pimTmEntEntry 58 }

-- End Versa change }

 pimTmEntMultipathMode OBJECT-TYPE
    SYNTAX      PimMultipathMode
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The method of selecting a next hop when there are multiple
             ECMP RPF Next Hops.

             The following options are available.

             -  AMB_PIM_MPATH_HIGHEST_NBR.  No load splitting: choose
                next hop to be the highest IP address PIM neighbor.

             -  AMB_PIM_MPATH_NEXT_HOP_G_HASH.  Split groups between
                next hops using hash based on group and next hop
                address.

             -  AMB_PIM_MPATH_G_MODULO_NUM_HOPS.  Split groups between
                next hops on a modulo basis.

             -  AMB_PIM_MPATH_NEXT_HOP_SG_HASH.  Split groups between
                next hops using hash based on source address, group,
                and next hop address.

             Note that if pimTmEntBidirDataMonitorEnable is 'false',
             PIM might be unable to perform load splitting for some
             BIDIR groups."
    DEFVAL      { highestNeighbor }
    ::= { pimTmEntEntry 59 }

 pimTmEntBidirDataMonitorEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Whether to enable monitoring of active data flows for
                BIDIR-PIM groups.  Enabling this is a prerequisite for the
                following.

                -  Static RP load-splitting for BIDIR group ranges, as
                   configured via pimStaticRPMultiPriority.

                -  Load-splitting for BSR-learnt BIDIR RPs, as configured
                   via the 'bidir' flag of pimTmEntBsrRPMultipathMode.

                -  Next-hop load-splitting for BIDIR group ranges for data
                   flows from the source to the RP, as configured via
                   pimTmEntMultipathMode.

                All of the above perform load-splitting via a per-group
                algorithm specified by pimTmEntRPMultipathAlgorithm.  This
                might improve bandwidth utilization in the network
                (without the configuration overhead of achieving it via
                defining different group ranges for different RPs), but it
                removes two of the benefits of BIDIR, as follows.

                -  A per-group algorithm prevents the use of (*,G-prefix)
                   forwarding rules.  (*,G-prefix) forwarding rules help
                   to reduce the number of (*,G) multicast forwarding
                   rules needed on each node.

                -  A per-group algorithm requires RP selection to be
                   triggered when a new data flow occurs, rather than in
                   advance.  This adds complexity to the data plane, and
                   introduces a setup delay when programming a (*,G)
                   forwarding rule for a new data flow.

                If this configuration is changed whilst the entity is
                active, the entity will be deactivated and restarted with
                the new configuration value."
    DEFVAL      { false }
    ::= { pimTmEntEntry 60 }

 pimTmEntBsrRPMultipathMode OBJECT-TYPE
    SYNTAX      PimBsrRPMultipathMode
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "The group modes for which PIM performs RP load-splitting,
                when needing to choose between multiple BSR-learnt RPs,
                each with the same PIM mode and priority value.

                To conform to RFC 6226, set the 'asm' flag only.

                If pimTmEntBidirDataMonitorEnable is 'false', the 'bidir'
                flag is treated as being clear, regardless of its actual
                value.

                DC-PIM does not currently support the 'asm' flag being clear."
-- Begin Versa change {
    DEFVAL      { 1 }
-- End Versa change {
    ::= { pimTmEntEntry 61 }

  pimTmEntGRStatus OBJECT-TYPE
    SYNTAX      PimGrStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The current status of PIM Graceful Restart."
    ::= { pimTmEntEntry 62 }

  pimTmEntGRBackstopRemaining OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "seconds"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The length of time remaining on the backstop timer.  Zero
             if the backstop timer is not running."
    ::= { pimTmEntEntry 63 }

  pimTmEntGRJoinStartupRemaining OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "seconds"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The length of time remaining on the join startup timer.
             Zero if the timer is not running."
    ::= { pimTmEntEntry 64 }

  pimTmEntRegisterSourceIf OBJECT-TYPE
    SYNTAX      Unsigned32 (0..2147483647)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The interface index for the interface from which the
             source address for Register messages is chosen.

             This field is not used for Register messages sent to
             Anycast-RP peers, where pimAnycastRPSetRouterAddress is
             used as the source address.

             If no matching address or interface exists, or this field
             is set to zero, the source address will be chosen by the
             IP layer."
    DEFVAL { 0 }
    ::= { pimTmEntEntry 65 }

 pimTmEntPassInterfaceInfo OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Setting this object to 'true' means that DC-PIM TIB
                 Manager will pass information about interfaces to the MPF
                 stub in ATG_TIBI_ADD_UPD_MCAST_IF and
                 ATG_TIBI_DEL_MCAST_IF messages.

                 If this configuration is changed whilst the entity is
                 active, the entity will be deactivated, and restarted
                 using the new value.

                 This field is only relevant if pimTmEntMode includes one
                 of the PIM modes."
    DEFVAL      { false }
    ::= { pimTmEntEntry 66 }

   pimTmEntBSRTimeout OBJECT-TYPE
       SYNTAX     Unsigned32 (1..4294967295)
       UNITS      "seconds"
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "The interval for which an elected BSR remains valid after
                the receipt of a BSM."
       DEFVAL { 130 }
       ::= { pimTmEntEntry 67 }

-- Begin Versa change {

  pimTmEntEnableAlarms OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Enables alarms on this PIM instance"
    DEFVAL       { false }
    ::= { pimTmEntEntry 68 }

-- End Versa change }

 pimTmEntRPMultipathAlgorithm OBJECT-TYPE
    SYNTAX      PimRPMultipathAlgorithms
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "The algorithm for selecting an RP, when there are multiple
                 RPs with the same information origin (static or BSR), PIM
                 mode and priority value.

                 To conform to RFCs 4601 & 6226, this must be set to
                 'rfc4601Hash'."
    DEFVAL      { rfc4601Hash }
    ::= { pimTmEntEntry 69 }

-- } End DC additions

--
-- The DC-PIM TIB Manager Entity Statistics Table
--

pimTmEntStatsTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimTmEntStatsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "This table lists the statistics for DC-PIM TIB Manager
             entities.

             The statistics in this table can be cleared using the
             pimTmEntClearCounters field."
    ::= { pimTables 24 }

pimTmEntStatsEntry OBJECT-TYPE
    SYNTAX     PimTmEntStatsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "Each entry represents the statistics for a DC-PIM TIB Manager
            entity."
    INDEX      { pimTmEntStatsTmEntIndex }
    ::= { pimTmEntStatsTable 1 }

PimTmEntStatsEntry ::= SEQUENCE {
    pimTmEntStatsTmEntIndex               NumericIndex,
    pimTmEntStatsMsdpFlowsRcvd            Counter32,
    pimTmEntStatsMsdpFlowsSent            Counter32,
    pimTmEntStatsNullRegCount             Counter32,
    pimTmEntStatsNumSptSwitchoverRq       Counter32,
    pimTmEntStatsNumRegisterStateSG       Gauge32
}

pimTmEntStatsTmEntIndex OBJECT-TYPE
    SYNTAX     NumericIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The index of this pimTmEntEntry.  This is the HAF entity
            index passed on the entity create parameters."
    ::= { pimTmEntStatsEntry 1 }

pimTmEntStatsMsdpFlowsRcvd OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Number of new or updated (S,G) data flows received by this
             entity in ATG_MSDI_REMOTE_DATA_ACT messages from Multicast
             Source Discovery Entities during the lifetime of the
             entity.

             This counter will wrap at 2^32 flows."
    ::= { pimTmEntStatsEntry 2 }

pimTmEntStatsMsdpFlowsSent OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Number of new or updated (S,G) data flows advertised by
             this entity to Multicast Source Discovery Entities in
             ATG_MSDI_LOCAL_DATA_ACT messages during the lifetime of
             the entity.

             This counter will wrap at 2^32 flows."
    ::= { pimTmEntStatsEntry 3 }

pimTmEntStatsNullRegCount OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Number of Null Register messages received by this entity.

             This counter will wrap at 2^32 messages."
    ::= { pimTmEntStatsEntry 4 }

pimTmEntStatsNumSptSwitchoverRq OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Number of SPT switchover requests received by this entity.

             This counter will wrap at 2^32 messages."
    ::= { pimTmEntStatsEntry 5 }

pimTmEntStatsNumRegisterStateSG OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of (S,G) pairs for which PIM is storing DR
             Register(S,G) state.  In other words, the number of
             pimSGTable rows for which pimSGDRRegisterState is not
             'noInfo'."
    ::= { pimTmEntStatsEntry 6 }

--
-- The DC-PIM TIB Manager Master Join Table
--

pimTmMjTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimTmMjEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION "This table is used to create and manage the master joins
                 that DC-PIM TIB Manager forms to other entities.  Each join
                 is represented by a row in this table.  The status of each
                 join is represented by a read-only object within each row.

                 For MGMD Snooping or MGMD Proxy (but not in the deprecated
                 mode enabled by pimTmEntMgmdProxy), a GMI join to exactly
                 one MGMD Host entity must be created in this table.

                 For PIM, if MSDP is supported, an MSDI join to exactly one
                 MSDP instance must be created in this table.

                 If pimTmEntMode is not 'mgmd-snooping' or 'mgmd-proxy',
                 DC-PIM ignores any GMI join rows in this table.

                 If 'sparse' is clear for pimTmEntMode, DC-PIM ignores any
                 MSDI join rows in this table."
    ::= { pimTables 19 }

pimTmMjEntry OBJECT-TYPE
    SYNTAX     PimTmMjEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "Represents a join for which the DC-PIM TIB Manager is
            master."
    INDEX      { pimTmEntIndex,
                 pimTmMjInterfaceId,
                 pimTmMjPartnerIndex }
    ::= { pimTmMjTable 1 }

PimTmMjEntry ::= SEQUENCE {
    pimTmMjInterfaceId              PimTmIfIdMj,
    pimTmMjPartnerIndex             NumericIndex,
    pimTmMjRowStatus                RowStatus,
    pimTmMjAdminStatus              AdminStatus,
    pimTmMjOperStatus               NpgOperStatus,
    pimTmMjInFailureMode            TruthValue,
    pimTmMjFailRetryTrigger         TruthValue
}

pimTmMjInterfaceId OBJECT-TYPE
    SYNTAX     PimTmIfIdMj
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "Identifies the interface required of this master join."
    ::= { pimTmMjEntry 1 }

pimTmMjPartnerIndex OBJECT-TYPE
    SYNTAX     NumericIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "Identifies the slave entity to join with.  This index is
            used in the join user data, to enable FTI-specific code
            within System Manager to select a suitable slave entity."
    ::= { pimTmMjEntry 2 }

pimTmMjRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The row status for this DC-PIM TIB Manager Master Join
            Table entry, used to create and destroy table entries."
    ::= { pimTmMjEntry 3 }

pimTmMjAdminStatus OBJECT-TYPE
    SYNTAX     AdminStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The administrative status of this master join, used to
            start and stop the join."
    DEFVAL { adminStatusUp }
    ::= { pimTmMjEntry 4 }

pimTmMjOperStatus OBJECT-TYPE
    SYNTAX     NpgOperStatus
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The current operational status of this master join."
    ::= { pimTmMjEntry 5 }

pimTmMjInFailureMode OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "If set to 'true', this join is in failure mode.  This means
            that the slave indicated that it has a resource shortage, so
            the master is currently suppressing signals that might
            require the slave to allocate additional resources.

            The join will leave failure mode after a customizable
            interval.  It can be forced to leave failure mode
            immediately via pimTmMjFailRetryTrigger."
    DEFVAL { false }
    ::= { pimTmMjEntry 6 }

pimTmMjFailRetryTrigger OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "Set this object to 'true' to force the master to resume
            sending signals across this join immediately.  Reading the
            value of this object has no meaning."
    DEFVAL { false }
    ::= { pimTmMjEntry 7 }

--
-- The DC-PIM TIB Manager Slave Join Table
--

pimTmSjTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimTmSjEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "This table shows which entities the DC-PIM TIB Manager is
            joined to as slave.  Each join is represented by a row in
            this table."
    ::= { pimTables 20 }

pimTmSjEntry OBJECT-TYPE
    SYNTAX     PimTmSjEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "Represents a join for which the DC-PIM TIB Manager is
            slave."
    INDEX      { pimTmEntIndex,
                 pimTmSjInterfaceId,
                 pimTmSjPartnerIndex }
    ::= { pimTmSjTable 1 }

PimTmSjEntry ::= SEQUENCE {
    pimTmSjInterfaceId              PimTmIfIdSj,
    pimTmSjPartnerIndex             NumericIndex,
    pimTmSjOperStatus               NpgOperStatus,
    pimTmSjInFailureMode            TruthValue,
    pimTmSjFailRetryTrigger         TruthValue
}

pimTmSjInterfaceId OBJECT-TYPE
    SYNTAX     PimTmIfIdSj
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "Identifies the interface provided on this slave join."
    ::= { pimTmSjEntry 1 }

pimTmSjPartnerIndex OBJECT-TYPE
    SYNTAX     NumericIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "Identifies the master entity joined to."
    ::= { pimTmSjEntry 2 }

pimTmSjOperStatus OBJECT-TYPE
    SYNTAX     NpgOperStatus
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The current operational status of this slave join."
    ::= { pimTmSjEntry 3 }

pimTmSjInFailureMode OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "If set to 'true', this join is in failure mode.  This means
            that the master indicated that it has a resource shortage,
            so the slave is currently suppressing signals that might
            require the master to allocate additional resources.

            The join will leave failure mode after a customizable
            interval.  It can be forced to leave failure mode
            immediately via pimTmSjFailRetryTrigger."
    DEFVAL { false }
    ::= { pimTmSjEntry 4 }

pimTmSjFailRetryTrigger OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
            "Set this object to 'true' to force the slave to resume
            sending signals across this join immediately.  Reading the
            value of this object has no meaning.

            This object is only valid if pimTmSjInterfaceId is
            tmSjIfActiveRoutes."
    DEFVAL { false }
    ::= { pimTmSjEntry 5 }

-- } End DC additions

--
-- The DC-PIM 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-PIM mode.

                 This table is empty if 'bidir' is clear for pimTmEntMode."
    ::= { pimTables 21 }

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

  PimBidirDFElectionEntry ::= SEQUENCE {
      pimBidirDFElectionAddressType          InetAddressType,
      pimBidirDFElectionRPAddress            InetAddress,
      pimBidirDFElectionIfIndex              InterfaceIndex,
      pimBidirDFElectionWinnerAddrType       InetAddressType,
      pimBidirDFElectionWinnerAddress        InetAddress,
      pimBidirDFElectionWinnerUpTime         Unsigned32,
      pimBidirDFElectionWinnerMtrcPrf        Unsigned32,
      pimBidirDFElectionWinnerMetric         Unsigned32,
      pimBidirDFElectionState                PimDfElectionState,
      pimBidirDFElectionStateTimer           Unsigned32
    }

  pimBidirDFElectionAddressType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The address type of this entry.

                 DC-PIM supports only the values 'ipv4' and 'ipv6' for
                 this object."
    ::= { pimBidirDFElectionEntry 2 }

  pimBidirDFElectionRPAddress OBJECT-TYPE
    SYNTAX      InetAddress
    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 3 }

  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 4 }

  pimBidirDFElectionWinnerAddrType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The address type of the winner of the DF Election process.
                 A value of unknown(0) indicates there is currently no DF.

                 DC-PIM returns unknown(0) or the same value as for the
                 pimBidirDFElectionAddressType object."
    ::= { pimBidirDFElectionEntry 5 }

  pimBidirDFElectionWinnerAddress OBJECT-TYPE
    SYNTAX      InetAddress
    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
                 pimBidirDFElectionWinnerAddressType object.

                 If there is currently no DF, DC-PIM returns all zeros."
    ::= { pimBidirDFElectionEntry 6 }

  pimBidirDFElectionWinnerUpTime OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The time since the current winner (last) became elected as
                 the DF for this RP, or zero if there is currently no DF."
    ::= { pimBidirDFElectionEntry 7 }

  pimBidirDFElectionWinnerMtrcPrf 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 8 }

  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 9 }

  pimBidirDFElectionState OBJECT-TYPE
    SYNTAX      PimDfElectionState
    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 (RFC5015)."
    ::= { pimBidirDFElectionEntry 10 }

  pimBidirDFElectionStateTimer OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "This object corresponds to the remaining duration of the
                 'DF election-Timer (DFT)' defined by the BIDIR-PIM
                 specification (RFC5015).

                 Expiration of the timer can cause message transmission and
                 transitions of pimBidirDFElectionState."
    ::= { pimBidirDFElectionEntry 11 }

--
-- The DC-PIM Static RP Multi Table
--

pimStaticRPMultiTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PimStaticRPMultiEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION "This table performs the same role as pimStaticRPTable, but
                it allows multiple static RPs to be configured for the same
                ASM or BIDIR group range.

                This allows for RP load-splitting, and/or resilience to RP
                failure, without having to run BSR.

                Apart from the above, this table provides the same
                configuration features as pimStaticRPTable.

                If pimStaticRPTable contains an entry for a group range, any
                rows in this table for the same group range are ignored.

                This table is not used if pimTmEntMgmdProxy is set to
                'true', or pimTmEntMode is set to 'mgmd-snooping',
                'mgmd-proxy' or 'dense'."
    ::= { pimTables 22 }

pimStaticRPMultiEntry OBJECT-TYPE
    SYNTAX     PimStaticRPMultiEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry (conceptual row) in the pimStaticRPTable."
    INDEX      { pimTmEntIndex,
                 pimStaticRPMultiAddressType,
                 pimStaticRPMultiRPAddress,
                 pimStaticRPMultiGrpAddress,
                 pimStaticRPMultiGrpPrefixLength }
    ::= { pimStaticRPMultiTable 1 }

PimStaticRPMultiEntry ::= SEQUENCE {
    pimStaticRPMultiAddressType       InetAddressType,
    pimStaticRPMultiRPAddress         InetAddress,
    pimStaticRPMultiGrpAddress        InetAddress,
    pimStaticRPMultiGrpPrefixLength   InetAddressPrefixLength,
    pimStaticRPMultiPimMode           PimGroupMode,
    pimStaticRPMultiPriority          Unsigned32,
    pimStaticRPMultiOverrideSubrngs   TruthValue,
    pimStaticRPMultiRowStatus         RowStatus,
    pimStaticRPMultiAdminStatus       AdminStatus,
    pimStaticRPMultiOperStatus        NpgOperStatus,
    pimStaticRPMultiOperFailReason    PimStaticRPMultiOpFailReason
}

pimStaticRPMultiAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION "The address type of this entry.

                DC-PIM supports only the values 'ipv4' and 'ipv6' for
                this object."
    ::= { pimStaticRPMultiEntry 1 }

pimStaticRPMultiRPAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION "The IP address of the RP to be used for groups within this
                 group prefix.  The InetAddressType is given by the
                 pimStaticRPMultiAddressType object.

                 This field must be set to a non-zero value."
    ::= { pimStaticRPMultiEntry 2 }

pimStaticRPMultiGrpAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE (4|16))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION "The multicast group address which, when combined with
                pimStaticRPMultiGrpPrefixLength, gives the group prefix
                for this entry.  The InetAddressType is given by the
                pimStaticRPMultiAddressType object.

                This address object is only significant up to
                pimStaticRPMultiGrpPrefixLength bits.  The remainder of
                the address bits are zero.  This is especially important for
                this index field, which is part of the index of this entry.
                Any non-zero bits would signify an entirely different
                entry."
    ::= { pimStaticRPMultiEntry 3 }

pimStaticRPMultiGrpPrefixLength OBJECT-TYPE
    SYNTAX     InetAddressPrefixLength (4..128)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION "The multicast group prefix length, which, when combined
                with pimStaticRPMultiGrpAddress, gives the group prefix
                for this entry.  The InetAddressType is given by the
                pimStaticRPMultiAddressType object.  If
                pimStaticRPMultiAddressType is 'ipv4', this object must be
                in the range 4..32.  If pimStaticRPMultiAddressType is
                'ipv6', this object must be in the range 8..128."
    ::= { pimStaticRPMultiEntry 4 }

pimStaticRPMultiPriority OBJECT-TYPE
    SYNTAX     Unsigned32(0..255)
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "The priority for this row.  Numerically higher values for
                this object indicate lower priorities, with the value zero
                denoting the highest priority.

                For a group range, for the set of configured RPs for which
                PIM has a valid route, it selects the RP with the best
                priority.

                If multiple RPs have the same best priority value, the
                behavior is as follows.

                -  If this is a BIDIR group range and
                   pimTmEntBidirDataMonitorEnable is 'false', it selects
                   the highest RP address.

                -  In all other cases it performs RP load-splitting via
                   the algorithm specified by
                   pimTmEntRPMultipathAlgorithm.

                As described in pimGroupMappingTable, BSR-learnt RPs are
                always selected over statically-configured RPs, and BIDIR
                mappings are always selected over ASM mappings, regardless
                of priority values."
    DEFVAL { 255 }
    ::= { pimStaticRPMultiEntry 5 }

pimStaticRPMultiPimMode OBJECT-TYPE
    SYNTAX     PimGroupMode
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "The PIM mode to be used for groups in this group prefix.

                This object must be set to either 'asm' or 'bidir'.  To
                configure group ranges for other modes, use
                pimStaticRPTable instead."
    DEFVAL { asm }
    ::= { pimStaticRPMultiEntry 6 }

pimStaticRPMultiOverrideSubrngs OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "Whether this static RP configuration will override other
                RP information learned for groups in this group prefix.

                If this object is TRUE, then this object will override:

                -  RP information learned via the BSR protocol for groups in
                   this group prefix

                -  RP information configured in pimStaticRP[Multi]Table
                   with pimStaticRPOverrideSubranges /
                   pimStaticRPMultiOverrideSubrngs set to FALSE.

                It does not override any group mappings with origin
                'embedded'.

                See pimGroupMappingTable for further detail.

                All rows that correspond to the same group range should
                have this object set to the same value."
    DEFVAL { false }
    ::= { pimStaticRPMultiEntry 7 }

pimStaticRPMultiRowStatus 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.

                This status object cannot be set to active(1) before a valid
                value has been written to pimStaticRPMultiRPAddress.

                All writeable objects in this entry can be modified when the
                status of this entry is active(1)."
    ::= { pimStaticRPMultiEntry 8 }

pimStaticRPMultiAdminStatus OBJECT-TYPE
    SYNTAX     AdminStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION "The desired administrative state of this row."
    DEFVAL { adminStatusUp }
    ::= { pimStaticRPMultiEntry 9 }

pimStaticRPMultiOperStatus OBJECT-TYPE
    SYNTAX     NpgOperStatus
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "The current operational state of this row."
    ::= { pimStaticRPMultiEntry 10 }

pimStaticRPMultiOperFailReason OBJECT-TYPE
    SYNTAX     PimStaticRPMultiOpFailReason
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION "When pimStaticRPMultiOperStatus is operStatusFailedPerm,
                this object provides additional information about the
                cause of the failure."
    ::= { pimStaticRPMultiEntry 11 }

--
-- 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.

             This trap is not generated if pimTmEntMgmdProxy is set to
             'true', or pimTmEntMode is set to 'mgmd-snooping' or
             'mgmd-proxy'."
    ::= { pimTraps 1 }

-- DC additions {

pimInterfaceStateChange NOTIFICATION-TYPE
    OBJECTS { pimInterfaceStatus,
              pimInterfaceAdminStatus,
              pimInterfaceOperStatus }
    STATUS     current
    DESCRIPTION
            "A pimInterfaceStateChange trap signifies that the OperStatus
             of the interface has changed.

             -  If the reported OperStatus is operStatusDown, the
             interface is in a normal inactive state.  It is waiting
             for the administrator to activate it, or for its parent
             row(s) to activate or recover from failures.

             -  If the reported OperStatus is operStatusGoingUp, the
             interface is activating.

             -  If the reported OperStatus is operStatusUp, the interface
             is active, and hence can be used to send and receive PIM
             messages.

             -  If the reported OperStatus is operStatusGoingDown, the
             interface is deactivating asynchronously, due to either
             administrative action or loss of a prerequisite, for
             example, failure of a parent row.

             -  If the reported OperStatus is operStatusFailed, the
             interface is in an inactive state due to a failure, but
             the failure might clear without administrative action.

             -  If the reported OperStatus is operStatusFailedPerm, the
             interface is in an inactive state due to a failure, and
             the failure will not clear without administrative action.

             -  If the reported OperStatus is operStatusFailing, the
             interface is deactivating asynchronously, due to a
             failure.

             This trap is not generated if pimTmEntMgmdProxy is set to
             'false' and pimTmEntMode is set to 'mgmd-snooping' or
             'mgmd-proxy'."
    ::= { pimTraps 2 }

-- } End DC additions

--
-- Conformance Information
--

pimMIBConformance OBJECT IDENTIFIER ::= { dcPimMIB 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,
                    pimInterfaceStateChange }
    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,
              pimInterfaceHelloHoldtime,
              pimInterfaceJoinPruneHoldtime,
              pimInterfacePropagationDelay,
              pimInterfaceOverrideInterval,
              pimInterfaceGenerationIDValue,
              pimInterfaceDRPriority,
              pimInterfaceLanDelayEnabled,
              pimInterfaceEffectPropagDelay,
              pimInterfaceEffectOverrideIvl,
              pimInterfaceSuppressionEnabled,
              pimInterfaceBidirCapable,
              pimInterfaceDRPriorityEnabled,
              pimInterfaceStatus,
              pimInterfaceGraftRetryInterval,
              pimInterfaceSRAllCapable,
              pimInterfaceAdminStatus,
              pimInterfaceOperStatus,
              pimInterfaceStubInterface,
              pimInterfaceP2PNoHellos,
              pimInterfaceMgmdEntIndex,
              pimInterfaceNeighborCount,
              pimInterfaceStarGStateLimit,
              pimInterfaceStarGStateWarnThold,
              pimInterfaceStarGStateStored,
              pimInterfaceSGStateLimit,
              pimInterfaceSGStateWarnThold,
              pimInterfaceSGStateStored,
              pimInterfaceUseNeighborFilter,
              pimInterfaceNeighborFilter,
              pimInterfaceAssertInterval,
              pimInterfaceAssertHoldtime,
              pimInterfaceDomainBorder,
              pimInterfaceUseAsmGrpFilter,
              pimInterfaceAsmGrpFilter,
              pimInterfaceUseSsmSrcAndGrpFilt,
              pimInterfaceSsmSrcAndGrpFilter,
              pimInterfaceDFElectionRobustness,
              pimInterfaceDFElectionOfferIvl,
              pimInterfaceDFElectionBackoffIvl,
              pimInterfaceBfdDesired,
              pimNeighborUpTime,
              pimNeighborExpiryTime,
              pimNeighborLanPruneDelayPresent,
              pimNeighborPropagationDelay,
              pimNeighborOverrideInterval,
              pimNeighborTBit,
              pimNeighborGenerationIDPresent,
              pimNeighborGenerationIDValue,
              pimNeighborBidirCapable,
              pimNeighborDRPriorityPresent,
              pimNeighborDRPriority,
              pimNeighborSRCapable,
              pimNeighborOperStatus,
              pimNeighborBfdStatus,
              pimNbrSecAddress,
              pimStarGUpTime,
              pimStarGPimMode,
              pimStarGRPAddressType,
              pimStarGRPAddress,
              pimStarGRPOrigin,
              pimStarGRPIsLocal,
              pimStarGUpstreamJoinState,
              pimStarGUpstreamJoinTimer,
              pimStarGUpstreamNeighborType,
              pimStarGUpstreamNeighbor,
              pimStarGRPFIfIndex,
              pimStarGRPFNextHopType,
              pimStarGRPFNextHop,
              pimStarGRPFRouteProtocol,
              pimStarGRPFRouteAddress,
              pimStarGRPFRoutePrefixLength,
              pimStarGRPFRouteMetricPref,
              pimStarGRPFRouteMetric,
              pimStarGIUpTime,
              pimStarGIPimMode,
              pimStarGILocalMembership,
              pimStarGIJoinPruneState,
              pimStarGIPrunePendingTimer,
              pimStarGIJoinExpiryTimer,
              pimStarGIAssertState,
              pimStarGIAssertTimer,
              pimStarGIAssertWinnerAddressType,
              pimStarGIAssertWinnerAddress,
              pimStarGIAssertWinnerMetricPref,
              pimStarGIAssertWinnerMetric,
              pimSGUpTime,
              pimSGPimMode,
              pimSGUpstreamJoinState,
              pimSGUpstreamJoinTimer,
              pimSGUpstreamNeighbor,
              pimSGRPFIfIndex,
              pimSGRPFNextHopType,
              pimSGRPFNextHop,
              pimSGRPFRouteProtocol,
              pimSGRPFRouteAddress,
              pimSGRPFRoutePrefixLength,
              pimSGRPFRouteMetricPref,
              pimSGRPFRouteMetric,
              pimSGSPTBit,
              pimSGDRRegisterState,
              pimSGDRRegisterStopTimer,
              pimSGUpstreamPruneState,
              pimSGOriginatorState,
              pimSGStateRefreshTimer,
              pimSGPruneLimitTimer,
              pimSGLocalMsdpAdv,
              pimSGMsdpRemoteDataAct,
              pimSGJoinSPT,
              pimSGRPBit,
              pimSGIUpTime,
              pimSGIPimMode,
              pimSGILocalMembership,
              pimSGIJoinPruneState,
              pimSGIPrunePendingTimer,
              pimSGIJoinExpiryTimer,
              pimSGIAssertState,
              pimSGIAssertTimer,
              pimSGIAssertWinnerAddressType,
              pimSGIAssertWinnerAddress,
              pimSGIAssertWinnerMetricPref,
              pimSGIAssertWinnerMetric,
              pimSGRptUpTime,
              pimSGRptUpstreamPruneState,
              pimSGRptUpstreamOverrideTimer,
              pimSGRptIUpTime,
              pimSGRptILocalMembership,
              pimSGRptIJoinPruneState,
              pimSGRptIPrunePendingTimer,
              pimSGRptIPruneExpiryTimer,
              pimStaticRPRPAddress,
              pimStaticRPPimMode,
              pimStaticRPOverrideSubranges,
              pimStaticRPRowStatus,
              pimStaticRPAdminStatus,
              pimAnycastRPSetLocalRouter,
              pimAnycastRPSetRowStatus,
              pimAnycastRPSetAdminStatus,
              pimGroupMappingPimMode,
              pimGroupMappingPrecedence,
              pimGroupMappingIsInactive,
              pimGroupAddrMappingPimMode,
              pimGroupAddrMappingRPAddress,
              pimGroupAddrMappingOrigin,
              pimNbrStatsNumRecvHello,
              pimNbrStatsNumRecvJoinPrune,
              pimNbrStatsNumRecvAssert,
              pimNbrStatsNumRecvBSM,
              pimNbrStatsNumErrJoinPrune,
              pimNbrStatsNumErrAssert,
              pimNbrStatsNumErrBSM,
              pimNbrStatsNumRecvGraft,
              pimNbrStatsNumErrGraft,
              pimNbrStatsNumRecvGraftAck,
              pimNbrStatsNumErrGraftAck,
              pimNbrStatsNumRecvStateRefresh,
              pimNbrStatsNumErrStateRefresh,
              pimNbrStatsNumRecvDFElection,
              pimNbrStatsNumErrDFElection,
              pimNbrStatsNumRecvJoinedSrcs,
              pimNbrStatsNumRecvPrunedSrcs,
              pimIfStatsNumSentHello,
              pimIfStatsNumSentJoinPrune,
              pimIfStatsNumSentAssert,
              pimIfStatsNumSentBsm,
              pimIfStatsNumErrHello,
              pimIfStatsNumRecvUnknownNbr,
              pimIfStatsNumUnknownHelloOpt,
              pimIfStatsNumFilteredOut,
              pimIfStatsNumSentGraft,
              pimIfStatsNumSentGraftAck,
              pimIfStatsNumSentStateRefresh,
              pimIfStatsNumSentDFElection,
              pimIfStatsNumRecvHello,
              pimIfStatsNumRecvJoinPrune,
              pimIfStatsNumRecvAssert,
              pimIfStatsNumRecvUnknownType,
              pimIfStatsNumRecvBadChecksum,
              pimIfStatsTimeToNxtHello,
              pimIfStatsNumSentJoinedSrcs,
              pimIfStatsNumSentPrunedSrcs,
              pimNmEntRowStatus,
              pimNmEntAdminStatus,
              pimNmEntOperStatus,
              pimNmEntTmEntIndex,
              pimNmEntI3JoinOperStatus,
              pimNmEntNmiJoinOperStatus,
              pimNmEntSckJoinOperStatus,
              pimNmEntClearStatsCounters,
              pimNmEntStatsUpTime,
              pimNmEntEnableUnicastMessages,
              pimNmEntAcceptUnicastBsms,
              pimNmEntCrpAdvFilterIndex,
              pimNmEntStatsNumSentCRPAdvert,
              pimNmEntStatsNumSentRegister,
              pimNmEntStatsNumSentRegisterStop,
              pimNmEntStatsNumRecvCRPAdvert,
              pimNmEntStatsNumRecvRegister,
              pimNmEntStatsNumRecvRegisterStop,
              pimNmEntStatsNumErrCRPAdvert,
              pimNmEntStatsNumErrRegister,
              pimNmEntStatsNumErrRegisterStop,
              pimNmEntStatsNumRecvIgnoredType,
              pimNmEntStatsNumRecvUnknownType,
              pimNmEntStatsNumRecvUnknownVer,
              pimNmEntStatsNumRecvBadChecksum,
              pimNmEntStatsNumRecvBadLength,
              pimNmEntStatsNumCRPAdvfiltered,
              pimNmEntStatsNumRecvHello,
              pimNmEntStatsNumErrHello,
              pimNmEntStatsNumRecvJoinPrune,
              pimNmEntStatsNumRecvAssert,
              pimNmEntStatsNumRecvBSM,
              pimNmEntStatsNumErrJoinPrune,
              pimNmEntStatsNumErrAssert,
              pimNmEntStatsNumErrBSM,
              pimNmEntStatsNumRecvGraft,
              pimNmEntStatsNumErrGraft,
              pimNmEntStatsNumRecvGraftAck,
              pimNmEntStatsNumErrGraftAck,
              pimNmEntStatsNumRecvStateRefresh,
              pimNmEntStatsNumErrStateRefresh,
              pimNmEntStatsNumRecvDFElection,
              pimNmEntStatsNumErrDFElection,
              pimNmEntStatsNumSentHello,
              pimNmEntStatsNumSentJoinPrune,
              pimNmEntStatsNumSentAssert,
              pimNmEntStatsNumSentBSM,
              pimNmEntStatsNumSentGraft,
              pimNmEntStatsNumSentGraftAck,
              pimNmEntStatsNumSentStateRefresh,
              pimNmEntStatsNumSentDFElection,
              pimNmEntStatsNumRecvJoinedSrcs,
              pimNmEntStatsNumRecvPrunedSrcs,
              pimNmEntStatsNumSentJoinedSrcs,
              pimNmEntStatsNumSentPrunedSrcs,
              pimNmEntBfdEntityIndex,
              pimNmEntBfdJoinOperStatus,
              pimTmEntRowStatus,
              pimTmEntAdminStatus,
              pimTmEntOperStatus,
              pimTmEntGStateLimit,
              pimTmEntGStateWarnThold,
              pimTmEntGStateStored,
              pimTmEntSGStateLimit,
              pimTmEntSGStateWarnThold,
              pimTmEntSGStateStored,
              pimTmEntStarGIStateLimit,
              pimTmEntStarGIStateWarnThold,
              pimTmEntStarGIStateStored,
              pimTmEntSGIStateLimit,
              pimTmEntSGIStateWarnThold,
              pimTmEntSGIStateStored,
              pimTmEntUseAsmGrpFilter,
              pimTmEntAsmGrpFilter,
              pimTmEntUseSsmSrcAndGrpFilter,
              pimTmEntSsmSrcAndGrpFilter,
              pimTmEntUseRegSrcAndGrpFilter,
              pimTmEntRegSrcAndGrpFilter,
              pimTmEntRegSuppressionTime,
              pimTmEntRegProbeTime,
              pimTmEntKeepalivePeriod,
              pimTmEntSendIfStateChangeTraps,
              pimTmEntSupportedAddrType,
              pimTmEntMgmdProxy,
              pimTmEntMode,
              pimTmEntStateRefreshCapable,
              pimTmEntStateRefreshInterval,
              pimTmEntSnoopBridgeDomainType,
              pimTmEntSnoopBridgeDomainId,
              pimTmEntSnoopBridgeDomainSubId,
              pimTmEntMsdpFlowsRcvd,
              pimTmEntMsdpFlowsSent,
              pimTmEntNullRegCount,
              pimTmEntClearCounters,
              pimTmEntNumSources,
              pimTmEntNumRPs,
              pimTmEntGRBackstopDuration,
              pimTmEntGRJoinStartupDuration,
              pimTmEntScheduleLimit,
              pimTmEntMultipathMode,
              pimTmEntBidirDataMonitorEnable,
              pimTmEntBsrRPMultipathMode,
              pimTmEntGRStatus,
              pimTmEntGRBackstopRemaining,
              pimTmEntGRJoinStartupRemaining,
              pimTmEntRegisterSourceIf,
              pimTmEntPassInterfaceInfo,
              pimTmEntBSRTimeout,
              pimTmEntRPMultipathAlgorithm,
              pimTmEntStatsMsdpFlowsRcvd,
              pimTmEntStatsMsdpFlowsSent,
              pimTmEntStatsNullRegCount,
              pimTmEntStatsNumSptSwitchoverRq,
              pimTmEntStatsNumRegisterStateSG,
              pimTmMjRowStatus,
              pimTmMjAdminStatus,
              pimTmMjOperStatus,
              pimTmMjInFailureMode,
              pimTmMjFailRetryTrigger,
              pimTmSjOperStatus,
              pimTmSjInFailureMode,
              pimTmSjFailRetryTrigger,
              pimBidirDFElectionWinnerAddrType,
              pimBidirDFElectionWinnerAddress,
              pimBidirDFElectionWinnerUpTime,
              pimBidirDFElectionWinnerMtrcPrf,
              pimBidirDFElectionWinnerMetric,
              pimBidirDFElectionState,
              pimBidirDFElectionStateTimer,
              pimStaticRPMultiPriority,
              pimStaticRPMultiPimMode,
              pimStaticRPMultiOverrideSubrngs,
              pimStaticRPMultiRowStatus,
              pimStaticRPMultiAdminStatus,
              pimStaticRPMultiOperStatus,
              pimStaticRPMultiOperFailReason }
    STATUS  current
    DESCRIPTION
            "A collection of objects for managing PIM routers."
    ::= { pimMIBGroups 2 }

END
