rfc9128v2.txt   rfc9128.txt 
skipping to change at line 13 skipping to change at line 13
Request for Comments: 9128 Volta Networks Request for Comments: 9128 Volta Networks
Category: Standards Track P. McAllister Category: Standards Track P. McAllister
ISSN: 2070-1721 Metaswitch Networks ISSN: 2070-1721 Metaswitch Networks
A. Peter A. Peter
Individual Individual
M. Sivakumar M. Sivakumar
Juniper Networks Juniper Networks
Y. Liu Y. Liu
Huawei Technologies Huawei Technologies
F. Hu F. Hu
ZTE Corporation Individual Contributor
September 2021 September 2021
YANG Data Model for Protocol Independent Multicast (PIM) YANG Data Model for Protocol Independent Multicast (PIM)
Abstract Abstract
This document defines a YANG data model that can be used to configure This document defines a YANG data model that can be used to configure
and manage devices supporting Protocol Independent Multicast (PIM). and manage devices supporting Protocol Independent Multicast (PIM).
The model covers the PIM protocol configuration, operational state, The model covers the PIM protocol configuration, operational state,
and event notifications data. and event notifications data.
skipping to change at line 70 skipping to change at line 70
2. Design of Data Model 2. Design of Data Model
2.1. Scope of Model 2.1. Scope of Model
2.2. Optional Capabilities 2.2. Optional Capabilities
2.3. Datastore Applicability 2.3. Datastore Applicability
2.4. Module and Hierarchy Organization 2.4. Module and Hierarchy Organization
2.5. Position of Address Family in Hierarchy 2.5. Position of Address Family in Hierarchy
3. Module Structure 3. Module Structure
3.1. PIM Base Module 3.1. PIM Base Module
3.1.1. High-Level Structure 3.1.1. High-Level Structure
3.1.2. Global Data 3.1.2. Global Data
3.1.3. Per Address Family Data 3.1.3. Per-Address-Family Data
3.1.4. PIM Interface Modeling 3.1.4. PIM Interface Modeling
3.1.5. Neighbor Modeling 3.1.5. Neighbor Modeling
3.1.6. Notifications 3.1.6. Notifications
3.2. PIM RP Module 3.2. PIM RP Module
3.2.1. Static RPs 3.2.1. Static RPs
3.2.2. BSRs 3.2.2. BSRs
3.2.3. RP State Data 3.2.3. RP State Data
3.2.4. RP-to-Group Mappings 3.2.4. RP-to-Group Mappings
3.2.5. Notifications 3.2.5. Notifications
3.3. PIM-SM Module 3.3. PIM-SM Module
3.4. PIM-DM Module 3.4. PIM-DM Module
3.5. PIM-BIDIR Module 3.5. BIDIR-PIM Module
4. Complete Tree Structure 4. Complete Tree Structure
4.1. PIM Base Module 4.1. PIM Base Module
4.2. PIM RP Module 4.2. PIM RP Module
4.3. PIM-SM Module 4.3. PIM-SM Module
4.4. PIM-DM Module 4.4. PIM-DM Module
4.5. PIM-BIDIR Module 4.5. BIDIR-PIM Module
5. Relationship to the PIM-STD-MIB 5. Relationship to the PIM-STD-MIB
5.1. pimInterfaceTable 5.1. pimInterfaceTable
5.2. pimNeighborTable 5.2. pimNeighborTable
5.3. pimStarGTable 5.3. pimStarGTable
5.4. pimSGTable 5.4. pimSGTable
5.5. pimSGRptTable 5.5. pimSGRptTable
5.6. pimBidirDFElectionTable 5.6. pimBidirDFElectionTable
5.7. pimStaticRPTable 5.7. pimStaticRPTable
5.8. pimAnycastRPSetTable 5.8. pimAnycastRPSetTable
5.9. pimGroupMappingTable 5.9. pimGroupMappingTable
6. PIM YANG Modules 6. PIM YANG Modules
6.1. PIM Base Module 6.1. PIM Base Module
6.2. PIM RP Module 6.2. PIM RP Module
6.3. PIM-SM Module 6.3. PIM-SM Module
6.4. PIM-DM Module 6.4. PIM-DM Module
6.5. PIM-BIDIR Module 6.5. BIDIR-PIM Module
7. Security Considerations 7. Security Considerations
8. IANA Considerations 8. IANA Considerations
9. References 9. References
9.1. Normative References 9.1. Normative References
9.2. Informative References 9.2. Informative References
Appendix A. Data Tree Example Appendix A. Data Tree Example
Acknowledgments Acknowledgments
Authors' Addresses Authors' Addresses
1. Introduction 1. Introduction
YANG [RFC7950] is a data modeling language that was introduced to YANG [RFC7950] is a data modeling language that was introduced to
model the configuration and operational state of a device managed model the configuration and operational state of a device managed
using network management protocols such as the Network Configuration using network management protocols such as the Network Configuration
Protocol (NETCONF) [RFC6241] or RESTCONF [RFC8040]. YANG is now also Protocol (NETCONF) [RFC6241] or RESTCONF [RFC8040]. YANG is now also
being used as a component of other management interfaces, such as being used as a component of other management interfaces, such as
CLIs. command-line interfaces (CLIs).
This document defines a YANG data model that can be used to configure This document defines a YANG data model that can be used to configure
and manage devices supporting Protocol Independent Multicast (PIM). and manage devices supporting Protocol Independent Multicast (PIM).
This model supports the core PIM protocol, as well as many other This model supports the core PIM protocol, as well as many other
features; see Section 2.1. Non-core features are defined as optional features; see Section 2.1. Non-core features are defined as optional
in the provided data model. in the provided data model.
1.1. Terminology 1.1. Terminology
The terminology for describing YANG data models is found in The terminology for describing YANG data models is found in
[RFC7950]. [RFC7950].
The following abbreviations are used in this document and the defined The following abbreviations are used in this document and the defined
model: model:
ASM: Any-Source Multicast service model [RFC3569] [RFC4607] ASM: Any-Source Multicast service model [RFC3569] [RFC4607]
BFD: Bidirectional Forwarding Detection [RFC5880] BFD: Bidirectional Forwarding Detection [RFC5880]
BIDIR-PIM: Protocol Independent Multicast - Bidirectional Mode
[RFC5015]
BSR: Bootstrap Router [RFC5059] BSR: Bootstrap Router [RFC5059]
DF: Designated Forwarder [RFC5015] DF: Designated Forwarder [RFC5015]
DR: Designated Router [RFC7761] DR: Designated Router [RFC7761]
IGMP: Internet Group Management Protocol [RFC3376] IGMP: Internet Group Management Protocol [RFC3376]
MLD: Multicast Listener Discovery [RFC3810] MLD: Multicast Listener Discovery [RFC3810]
skipping to change at line 163 skipping to change at line 166
MRIB: Multicast Routing Information Base [RFC3973] [RFC5015] MRIB: Multicast Routing Information Base [RFC3973] [RFC5015]
[RFC7761] [RFC7761]
MSDP: Multicast Source Discovery Protocol [RFC3618] MSDP: Multicast Source Discovery Protocol [RFC3618]
mVPN: Multicast VPN mVPN: Multicast VPN
PIM: Protocol Independent Multicast [RFC3973] [RFC5015] PIM: Protocol Independent Multicast [RFC3973] [RFC5015]
[RFC7761] [RFC7761]
PIM-BIDIR: Protocol Independent Multicast - Bidirectional Mode
[RFC5015]
PIM-DM: Protocol Independent Multicast - Dense Mode [RFC3973] PIM-DM: Protocol Independent Multicast - Dense Mode [RFC3973]
PIM-SM: Protocol Independent Multicast - Sparse Mode [RFC7761] PIM-SM: Protocol Independent Multicast - Sparse Mode [RFC7761]
RP: Rendezvous Point [RFC7761] RP: Rendezvous Point [RFC7761]
RPA: Rendezvous Point Address [RFC5015] RPA: Rendezvous Point Address [RFC5015]
RPF: Reverse Path Forwarding [RFC3973] [RFC5015] [RFC7761] RPF: Reverse Path Forwarding [RFC3973] [RFC5015] [RFC7761]
skipping to change at line 198 skipping to change at line 198
[RFC8340]. [RFC8340].
In addition, the following notation is used as a placeholder at the In addition, the following notation is used as a placeholder at the
location of the name of a tree node, to represent a section of nodes: location of the name of a tree node, to represent a section of nodes:
<summary description of a section of nodes> <summary description of a section of nodes>
1.3. Prefixes in Data Node Names 1.3. Prefixes in Data Node Names
In this document, names of data nodes, actions, and other data model In this document, names of data nodes, actions, and other data model
objects are often used without a prefix, as long as it is clear from objects are often used without a prefix, as long as the context
the context in which YANG module each name is defined. Otherwise, clearly indicates the YANG module in which each name is defined.
names are prefixed using the standard prefix associated with the Otherwise, names are prefixed using the standard prefix associated
corresponding YANG module, as shown in Table 1. with the corresponding YANG module, as shown in Table 1.
+===========+====================+===========+ +===========+====================+===========+
| Prefix | YANG Module | Reference | | Prefix | YANG Module | Reference |
+===========+====================+===========+ +===========+====================+===========+
| yang | ietf-yang-types | [RFC6991] | | yang | ietf-yang-types | [RFC6991] |
+-----------+--------------------+-----------+ +-----------+--------------------+-----------+
| inet | ietf-inet-types | [RFC6991] | | inet | ietf-inet-types | [RFC6991] |
+-----------+--------------------+-----------+ +-----------+--------------------+-----------+
| if | ietf-interfaces | [RFC8343] | | if | ietf-interfaces | [RFC8343] |
+-----------+--------------------+-----------+ +-----------+--------------------+-----------+
skipping to change at line 369 skipping to change at line 369
The high-level structure of the model is shown below: The high-level structure of the model is shown below:
module: ietf-pim-base module: ietf-pim-base
augment /rt:routing/rt:control-plane-protocols: augment /rt:routing/rt:control-plane-protocols:
+--rw pim! +--rw pim!
+--rw <global configuration> +--rw <global configuration>
+--ro <global operational state> +--ro <global operational state>
+--rw address-family* [address-family] +--rw address-family* [address-family]
| +--rw address-family identityref | +--rw address-family identityref
| +--rw <per address family configuration> | +--rw <per-address-family configuration>
| +--ro <per address family operational state> | +--ro <per-address-family operational state>
+--rw interfaces +--rw interfaces
+--rw interface* [name] +--rw interface* [name]
+--rw name if:interface-ref +--rw name if:interface-ref
+--rw address-family* [address-family] +--rw address-family* [address-family]
+--rw address-family identityref +--rw address-family identityref
+--rw <per interface configuration> +--rw <per interface configuration>
+--ro <per interface operational state> +--ro <per interface operational state>
+--ro neighbors +--ro neighbors
+--ro ipv4-neighbor* [address] +--ro ipv4-neighbor* [address]
| +--ro address inet:ipv4-address | +--ro address inet:ipv4-address
| +--ro <IPv4 per neighbor operational state> | +--ro <IPv4 per-neighbor operational state>
+--ro ipv6-neighbor* [address] +--ro ipv6-neighbor* [address]
+--ro address inet:ipv6-address +--ro address inet:ipv6-address
+--ro <IPv4 per neighbor operational state> +--ro <IPv4 per-neighbor operational state>
The presence of the top-level container "pim" enables the PIM The presence of the top-level container "pim" enables the PIM
protocols. protocols.
3.1.2. Global Data 3.1.2. Global Data
The global configuration data and operational state data cover The global configuration data and operational state data cover
support for graceful restart in the PIM base model. Additional support for graceful restart in the PIM base model. Additional
features can be added by augmentation if required by an features can be added by augmentation if required by an
implementation. implementation.
3.1.3. Per Address Family Data 3.1.3. Per-Address-Family Data
Support for per address family data is shown below: Support for per-address-family data is shown below:
+--rw pim! +--rw pim!
+--rw address-family* [address-family] +--rw address-family* [address-family]
| +--rw address-family identityref | +--rw address-family identityref
| +--rw graceful-restart | +--rw graceful-restart
... ...
| +--ro statistics | +--ro statistics
| | +--ro discontinuity-time? yang:date-and-time | | +--ro discontinuity-time? yang:date-and-time
| | +--ro error | | +--ro error
| | | +--ro assert? yang:counter32 | | | +--ro assert? yang:counter32
skipping to change at line 575 skipping to change at line 575
+--rw rp +--rw rp
+--rw static-rp +--rw static-rp
... ...
+--rw bsr {bsr}? +--rw bsr {bsr}?
... ...
+--ro rp-list +--ro rp-list
... ...
+--ro rp-mappings +--ro rp-mappings
... ...
This module is shared by PIM-SM and PIM-BIDIR mode but is not shared This module is shared by PIM-SM and BIDIR-PIM mode but is not shared
by PIM-DM. The PIM-SM module and the PIM-BIDIR module augment this by PIM-DM. The PIM-SM module and the BIDIR-PIM module augment this
module to cover mode-specific data. module to cover mode-specific data.
The following sections describe the features and capabilities covered The following sections describe the features and capabilities covered
in this module. in this module.
3.2.1. Static RPs 3.2.1. Static RPs
Static RPs can be configured by using the following portion of the Static RPs can be configured by using the following portion of the
module: module:
skipping to change at line 645 skipping to change at line 645
| +--ro rp | +--ro rp
| | +--ro rp-address? inet:ip-address | | +--ro rp-address? inet:ip-address
| | +--ro policy-name? string | | +--ro policy-name? string
| | +--ro up-time? rt-types:timeticks64 | | +--ro up-time? rt-types:timeticks64
| +--ro rp-candidate-next-advertisement? uint16 | +--ro rp-candidate-next-advertisement? uint16
3.2.3. RP State Data 3.2.3. RP State Data
This portion of the model provides the operational state information This portion of the model provides the operational state information
for all RPs on the router, including the statically configured RPs for all RPs on the router, including the statically configured RPs
and the BSR elected RPs. and the BSR-elected RPs.
+--rw rp +--rw rp
+--ro rp-list +--ro rp-list
| +--ro ipv4-rp* [rp-address mode] | +--ro ipv4-rp* [rp-address mode]
| | +--ro rp-address inet:ipv4-address | | +--ro rp-address inet:ipv4-address
| | +--ro mode identityref | | +--ro mode identityref
| | +--ro info-source-address? inet:ipv4-address | | +--ro info-source-address? inet:ipv4-address
| | +--ro info-source-type? identityref | | +--ro info-source-type? identityref
| | +--ro up-time? rt-types:timeticks64 | | +--ro up-time? rt-types:timeticks64
| | +--ro expiration? rt-types:timer-value-seconds16 | | +--ro expiration? rt-types:timer-value-seconds16
skipping to change at line 763 skipping to change at line 763
module: ietf-pim-dm module: ietf-pim-dm
augment /rt:routing/rt:control-plane-protocols/pim-base:pim augment /rt:routing/rt:control-plane-protocols/pim-base:pim
/pim-base:address-family: /pim-base:address-family:
+--rw dm! +--rw dm!
augment /rt:routing/rt:control-plane-protocols/pim-base:pim augment /rt:routing/rt:control-plane-protocols/pim-base:pim
/pim-base:interfaces/pim-base:interface /pim-base:interfaces/pim-base:interface
/pim-base:address-family: /pim-base:address-family:
+--rw dm! +--rw dm!
3.5. PIM-BIDIR Module 3.5. BIDIR-PIM Module
The PIM-BIDIR module covers Bidirectional PIM modeling. Like PIM-SM, The BIDIR-PIM module covers Bidirectional PIM modeling. Like PIM-SM,
this module augments both the PIM base module and the PIM RP module. this module augments both the PIM base module and the PIM RP module.
The augmentations to the PIM base module, on the "address-family", The augmentations to the PIM base module, on the "address-family",
"interface", and "neighbor" branches, are as follows: "interface", and "neighbor" branches, are as follows:
module: ietf-pim-bidir module: ietf-pim-bidir
augment /rt:routing/rt:control-plane-protocols/pim-base:pim augment /rt:routing/rt:control-plane-protocols/pim-base:pim
/pim-base:address-family: /pim-base:address-family:
+--rw bidir! +--rw bidir!
skipping to change at line 795 skipping to change at line 795
/pim-base:interfaces/pim-base:interface/pim-base:address-family /pim-base:interfaces/pim-base:interface/pim-base:address-family
/pim-base:neighbors/pim-base:ipv4-neighbor: /pim-base:neighbors/pim-base:ipv4-neighbor:
+--ro bidir-capable? boolean +--ro bidir-capable? boolean
augment /rt:routing/rt:control-plane-protocols/pim-base:pim augment /rt:routing/rt:control-plane-protocols/pim-base:pim
/pim-base:interfaces/pim-base:interface/pim-base:address-family /pim-base:interfaces/pim-base:interface/pim-base:address-family
/pim-base:neighbors/pim-base:ipv6-neighbor: /pim-base:neighbors/pim-base:ipv6-neighbor:
+--ro bidir-capable? boolean +--ro bidir-capable? boolean
This module also augments the PIM RP module to extend the This module also augments the PIM RP module to extend the
capabilities of RPs for PIM-BIDIR mode: capabilities of RPs for BIDIR-PIM mode:
module: ietf-pim-bidir module: ietf-pim-bidir
augment /rt:routing/rt:control-plane-protocols/pim-base:pim augment /rt:routing/rt:control-plane-protocols/pim-base:pim
/pim-base:address-family/pim-rp:rp/pim-rp:static-rp/pim-rp:ipv4-rp: /pim-base:address-family/pim-rp:rp/pim-rp:static-rp/pim-rp:ipv4-rp:
+--rw bidir! +--rw bidir!
+--rw policy-name? string +--rw policy-name? string
+--rw override? boolean {static-rp-override}? +--rw override? boolean {static-rp-override}?
augment /rt:routing/rt:control-plane-protocols/pim-base:pim augment /rt:routing/rt:control-plane-protocols/pim-base:pim
/pim-base:address-family/pim-rp:rp/pim-rp:static-rp/pim-rp:ipv6-rp: /pim-base:address-family/pim-rp:rp/pim-rp:static-rp/pim-rp:ipv6-rp:
skipping to change at line 844 skipping to change at line 844
+--ro winner-metric-preference? uint32 +--ro winner-metric-preference? uint32
4. Complete Tree Structure 4. Complete Tree Structure
4.1. PIM Base Module 4.1. PIM Base Module
module: ietf-pim-base module: ietf-pim-base
augment /rt:routing/rt:control-plane-protocols: augment /rt:routing/rt:control-plane-protocols:
+--rw pim! +--rw pim!
+--rw graceful-restart +--rw graceful-restart
| +--rw enabled? boolean | +--rw enable? boolean
| +--rw duration? uint16 | +--rw duration? uint16
+--rw address-family* [address-family] +--rw address-family* [address-family]
| +--rw address-family identityref | +--rw address-family identityref
| +--rw graceful-restart | +--rw graceful-restart
| | +--rw enabled? boolean | | +--rw enable? boolean
| | +--rw duration? uint16 | | +--rw duration? uint16
| +--ro statistics | +--ro statistics
| | +--ro discontinuity-time? yang:date-and-time | | +--ro discontinuity-time? yang:date-and-time
| | +--ro error | | +--ro error
| | | +--ro assert? yang:counter64 | | | +--ro assert? yang:counter64
| | | +--ro bsr? yang:counter64 | | | +--ro bsr? yang:counter64
| | | +--ro candidate-rp-advertisement? yang:counter64 | | | +--ro candidate-rp-advertisement? yang:counter64
| | | +--ro df-election? yang:counter64 | | | +--ro df-election? yang:counter64
| | | +--ro graft? yang:counter64 | | | +--ro graft? yang:counter64
| | | +--ro graft-ack? yang:counter64 | | | +--ro graft-ack? yang:counter64
skipping to change at line 1169 skipping to change at line 1169
module: ietf-pim-dm module: ietf-pim-dm
augment /rt:routing/rt:control-plane-protocols/pim-base:pim augment /rt:routing/rt:control-plane-protocols/pim-base:pim
/pim-base:address-family: /pim-base:address-family:
+--rw dm! +--rw dm!
augment /rt:routing/rt:control-plane-protocols/pim-base:pim augment /rt:routing/rt:control-plane-protocols/pim-base:pim
/pim-base:interfaces/pim-base:interface /pim-base:interfaces/pim-base:interface
/pim-base:address-family: /pim-base:address-family:
+--rw dm! +--rw dm!
4.5. PIM-BIDIR Module 4.5. BIDIR-PIM Module
module: ietf-pim-bidir module: ietf-pim-bidir
augment /rt:routing/rt:control-plane-protocols/pim-base:pim augment /rt:routing/rt:control-plane-protocols/pim-base:pim
/pim-base:address-family: /pim-base:address-family:
+--rw bidir! +--rw bidir!
augment /rt:routing/rt:control-plane-protocols/pim-base:pim augment /rt:routing/rt:control-plane-protocols/pim-base:pim
/pim-base:interfaces/pim-base:interface /pim-base:interfaces/pim-base:interface
/pim-base:address-family: /pim-base:address-family:
+--rw bidir! +--rw bidir!
+--rw df-election {intf-df-election}? +--rw df-election {intf-df-election}?
skipping to change at line 1347 skipping to change at line 1347
+--------------------+ | +--------------------+ |
| ipv6-route | | | ipv6-route | |
+--------------------+------------------------------+ +--------------------+------------------------------+
| group | pimStarGGrpAddress | | group | pimStarGGrpAddress |
+--------------------+------------------------------+ +--------------------+------------------------------+
| up-time | pimStarGUpTime | | up-time | pimStarGUpTime |
+--------------------+------------------------------+ +--------------------+------------------------------+
| mode | pimStarGPimMode | | mode | pimStarGPimMode |
+--------------------+------------------------------+ +--------------------+------------------------------+
| rp-address | pimStarGRPAddressType | | rp-address | pimStarGRPAddressType |
+--------------------+------------------------------+ | +------------------------------+
| rp-address | pimStarGRPAddress | | | pimStarGRPAddress |
+--------------------+------------------------------+ +--------------------+------------------------------+
| rpf-neighbor | pimStarGUpstreamNeighborType | | rpf-neighbor | pimStarGUpstreamNeighborType |
+--------------------+------------------------------+ | +------------------------------+
| rpf-neighbor | pimStarGUpstreamNeighbor | | | pimStarGUpstreamNeighbor |
+--------------------+------------------------------+ +--------------------+------------------------------+
| incoming-interface | pimStarGRPFIfIndex | | incoming-interface | pimStarGRPFIfIndex |
+--------------------+------------------------------+ +--------------------+------------------------------+
Table 4: YANG Nodes and pimStarGTable Objects Table 4: YANG Nodes and pimStarGTable Objects
In addition, the object "pimStarGPimModeOrigin" in pimStarGTable is In addition, the object "pimStarGPimModeOrigin" in pimStarGTable is
mapped to the node "rp/rp-list/ipv4-rp/info-source-type" or the node mapped to the node "rp/rp-list/ipv4-rp/info-source-type" or the node
"rp/rp-list/ipv6-rp/info-source-type" in the YANG module "rp/rp-list/ipv6-rp/info-source-type" in the YANG module
"ietf-pim-rp". "ietf-pim-rp".
skipping to change at line 1454 skipping to change at line 1454
+--------------------------+-------------------------------------+ +--------------------------+-------------------------------------+
| rp-address | pimBidirDFElectionRPAddress | | rp-address | pimBidirDFElectionRPAddress |
+--------------------------+-------------------------------------+ +--------------------------+-------------------------------------+
| df-address | pimBidirDFElectionWinnerAddressType | | df-address | pimBidirDFElectionWinnerAddressType |
| +-------------------------------------+ | +-------------------------------------+
| | pimBidirDFElectionWinnerAddress | | | pimBidirDFElectionWinnerAddress |
+--------------------------+-------------------------------------+ +--------------------------+-------------------------------------+
| up-time | pimBidirDFElectionWinnerUpTime | | up-time | pimBidirDFElectionWinnerUpTime |
+--------------------------+-------------------------------------+ +--------------------------+-------------------------------------+
| winner-metric-preference | pimBidirDFElectionWinnerMetricPref | | winner-metric-preference | pimBidirDFElectionWinnerMetricPref |
+--------------------------+-------------------------------------+ | +-------------------------------------+
| winner-metric-preference | pimBidirDFElectionWinnerMetric | | | pimBidirDFElectionWinnerMetric |
+--------------------------+-------------------------------------+ +--------------------------+-------------------------------------+
| interface-state | pimBidirDFElectionState | | interface-state | pimBidirDFElectionState |
+--------------------------+-------------------------------------+ +--------------------------+-------------------------------------+
Table 7: YANG Nodes and pimBidirDFElectionTable Objects Table 7: YANG Nodes and pimBidirDFElectionTable Objects
5.7. pimStaticRPTable 5.7. pimStaticRPTable
pimStaticRPTable is mapped to pim/address-family/rp/static-rp/ipv4-rp pimStaticRPTable is mapped to pim/address-family/rp/static-rp/ipv4-rp
and pim/address-family/rp/static-rp/ipv6-rp. and pim/address-family/rp/static-rp/ipv6-rp.
skipping to change at line 1565 skipping to change at line 1565
This module references [RFC3973], [RFC5015], [RFC5880], [RFC6991], This module references [RFC3973], [RFC5015], [RFC5880], [RFC6991],
[RFC7761], [RFC8294], [RFC8343], [RFC8349], [RFC8706], and [RFC9127]. [RFC7761], [RFC8294], [RFC8343], [RFC8349], [RFC8706], and [RFC9127].
<CODE BEGINS> file "ietf-pim-base@2021-09-03.yang" <CODE BEGINS> file "ietf-pim-base@2021-09-03.yang"
module ietf-pim-base { module ietf-pim-base {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-pim-base"; namespace "urn:ietf:params:xml:ns:yang:ietf-pim-base";
prefix pim-base; prefix pim-base;
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix inet;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
import ietf-yang-types { import ietf-yang-types {
prefix "yang"; prefix yang;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
import ietf-routing-types { import ietf-routing-types {
prefix "rt-types"; prefix rt-types;
reference reference
"RFC 8294: Common YANG Data Types for the Routing Area"; "RFC 8294: Common YANG Data Types for the Routing Area";
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix if;
reference reference
"RFC 8343: A YANG Data Model for Interface Management"; "RFC 8343: A YANG Data Model for Interface Management";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix rt;
reference reference
"RFC 8349: A YANG Data Model for Routing Management (NMDA "RFC 8349: A YANG Data Model for Routing Management (NMDA
Version)"; Version)";
} }
import ietf-bfd-types { import ietf-bfd-types {
prefix "bfd-types"; prefix bfd-types;
reference reference
"RFC 9127: YANG Data Model for Bidirectional Forwarding "RFC 9127: YANG Data Model for Bidirectional Forwarding
Detection (BFD)"; Detection (BFD)";
} }
organization organization
"IETF PIM Working Group"; "IETF PIM Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/pim/> "WG Web: <https://datatracker.ietf.org/wg/pim/>
WG List: <mailto:pim@ietf.org> WG List: <mailto:pim@ietf.org>
Editor: Xufeng Liu Editor: Xufeng Liu
<mailto:xufeng.liu.ietf@gmail.com> <mailto:xufeng.liu.ietf@gmail.com>
Editor: Pete McAllister Editor: Pete McAllister
<mailto:pete.mcallister@metaswitch.com> <mailto:pete.mcallister@metaswitch.com>
skipping to change at line 1701 skipping to change at line 1695
"Supports configuration of the interface Hello interval."; "Supports configuration of the interface Hello interval.";
reference reference
"RFC 3973: Protocol Independent Multicast - Dense Mode "RFC 3973: Protocol Independent Multicast - Dense Mode
(PIM-DM): Protocol Specification (Revised), Section 4.8 (PIM-DM): Protocol Specification (Revised), Section 4.8
RFC 7761: Protocol Independent Multicast - Sparse Mode RFC 7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised), Section 4.11"; (PIM-SM): Protocol Specification (Revised), Section 4.11";
} }
feature intf-hello-multiplier { feature intf-hello-multiplier {
description description
"Supports configuration of the interface Hello multiplier."; "Supports configuration of the interface Hello multiplier
(the number by which the Hello interval is multiplied to
obtain the Hello Holdtime).";
reference reference
"RFC 3973: Protocol Independent Multicast - Dense Mode "RFC 3973: Protocol Independent Multicast - Dense Mode
(PIM-DM): Protocol Specification (Revised), Section 4.8 (PIM-DM): Protocol Specification (Revised), Section 4.8
RFC 7761: Protocol Independent Multicast - Sparse Mode RFC 7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised), Section 4.11"; (PIM-SM): Protocol Specification (Revised), Section 4.11";
} }
feature intf-jp-interval { feature intf-jp-interval {
description description
"Supports configuration of the interface Join/Prune interval."; "Supports configuration of the interface Join/Prune interval.";
skipping to change at line 1732 skipping to change at line 1728
reference reference
"RFC 3973: Protocol Independent Multicast - Dense Mode "RFC 3973: Protocol Independent Multicast - Dense Mode
(PIM-DM): Protocol Specification (Revised), Section 4.8 (PIM-DM): Protocol Specification (Revised), Section 4.8
RFC 7761: Protocol Independent Multicast - Sparse Mode RFC 7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised), Section 4.11"; (PIM-SM): Protocol Specification (Revised), Section 4.11";
} }
feature intf-jp-multiplier { feature intf-jp-multiplier {
description description
"Supports configuration of the interface Join/Prune "Supports configuration of the interface Join/Prune
multiplier."; multiplier (the number by which the Join/Prune interval is
multiplied to obtain the Join/Prune Holdtime).";
reference reference
"RFC 3973: Protocol Independent Multicast - Dense Mode "RFC 3973: Protocol Independent Multicast - Dense Mode
(PIM-DM): Protocol Specification (Revised), Section 4.8 (PIM-DM): Protocol Specification (Revised), Section 4.8
RFC 7761: Protocol Independent Multicast - Sparse Mode RFC 7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised), Section 4.11"; (PIM-SM): Protocol Specification (Revised), Section 4.11";
} }
feature intf-propagation-delay { feature intf-propagation-delay {
description description
"Supports configuration of interface propagation delay."; "Supports configuration of interface propagation delay.";
skipping to change at line 1755 skipping to change at line 1752
(PIM-DM): Protocol Specification (Revised), Section 4.3.5 (PIM-DM): Protocol Specification (Revised), Section 4.3.5
RFC 7761: Protocol Independent Multicast - Sparse Mode RFC 7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised), Section 4.3.3"; (PIM-SM): Protocol Specification (Revised), Section 4.3.3";
} }
feature intf-override-interval { feature intf-override-interval {
description description
"Supports configuration of the interface override interval."; "Supports configuration of the interface override interval.";
reference reference
"RFC 3973: Protocol Independent Multicast - Dense Mode "RFC 3973: Protocol Independent Multicast - Dense Mode
(PIM-DM): Protocol Specification (Revised), Section 4.3.3 (PIM-DM): Protocol Specification (Revised),
Sections 4.1.1 and 4.8
RFC 5015: Bidirectional Protocol Independent Multicast RFC 5015: Bidirectional Protocol Independent Multicast
(BIDIR-PIM), Section 3.6 (BIDIR-PIM), Section 3.6
RFC 7761: Protocol Independent Multicast - Sparse Mode RFC 7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised), Section 4.11"; (PIM-SM): Protocol Specification (Revised), Section 4.11";
} }
feature per-af-graceful-restart { feature per-af-graceful-restart {
description description
"Per address family configuration for graceful restart support "Per address family configuration for graceful restart support
as per RFC 8706."; as per RFC 8706.";
skipping to change at line 1856 skipping to change at line 1862
identity pim-ssm { identity pim-ssm {
base pim-sm; base pim-sm;
description description
"PIM is operating in Sparse Mode with Source-Specific "PIM is operating in Sparse Mode with Source-Specific
Multicast (SSM)."; Multicast (SSM).";
} }
/* /*
* Groupings * Groupings
*/ */
grouping graceful-restart-container { grouping graceful-restart-container {
description description
"A grouping defining a container of graceful restart "A grouping defining a container of graceful restart
attributes."; attributes.";
container graceful-restart { container graceful-restart {
leaf enabled { leaf enabled {
type boolean; type boolean;
default false; default "false";
description description
"Enables or disables graceful restart."; "Enables or disables graceful restart.";
} }
leaf duration { leaf duration {
type uint16; type uint16;
units seconds; units "seconds";
default 60; default "60";
description description
"Maximum time for graceful restart to finish."; "Maximum time for graceful restart to finish.";
} }
description description
"Container of graceful restart attributes."; "Container of graceful restart attributes.";
} }
} // graceful-restart-container } // graceful-restart-container
grouping multicast-route-attributes { grouping multicast-route-attributes {
description description
skipping to change at line 1901 skipping to change at line 1907
"Reference to an entry in the global interface list."; "Reference to an entry in the global interface list.";
} }
leaf is-spt { leaf is-spt {
type boolean; type boolean;
description description
"'true' if the SPTbit (Shortest Path Tree bit) is set to "'true' if the SPTbit (Shortest Path Tree bit) is set to
indicate that forwarding is taking place on the indicate that forwarding is taking place on the
(S,G) SPT."; (S,G) SPT.";
reference reference
"RFC 7761: Protocol Independent Multicast - Sparse Mode "RFC 7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised), Section 4.1.3"; (PIM-SM): Protocol Specification (Revised), Section 4.1.3";
} }
leaf mode { leaf mode {
type identityref { type identityref {
base pim-mode; base pim-mode;
} }
description description
"PIM mode."; "PIM mode.";
} }
leaf msdp-learned { leaf msdp-learned {
type boolean; type boolean;
skipping to change at line 1936 skipping to change at line 1942
leaf up-time { leaf up-time {
type rt-types:timeticks64; type rt-types:timeticks64;
description description
"The number of time ticks (hundredths of a second) since the "The number of time ticks (hundredths of a second) since the
route last transitioned into the active state."; route last transitioned into the active state.";
} }
list outgoing-interface { list outgoing-interface {
key "name"; key "name";
description description
"A list of outgoing interfaces."; "A list of outgoing interfaces.";
leaf name { leaf name {
type if:interface-ref; type if:interface-ref;
description description
"Interface name."; "Interface name.";
} }
leaf expiration { leaf expiration {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
description description
"Expiration time."; "Expiration time.";
} }
leaf up-time { leaf up-time {
type rt-types:timeticks64; type rt-types:timeticks64;
description description
"The number of time ticks (hundredths of a second) since "The number of time ticks (hundredths of a second) since
the 'oper-status' setting of the interface was last the 'oper-status' setting of the interface was last
changed to 'up'."; changed to 'up'.";
} }
leaf jp-state { leaf jp-state {
type enumeration { type enumeration {
enum "no-info" { enum no-info {
description description
"The interface has no (*,G) Join state and no timers "The interface has no (*,G) Join state and no timers
running."; running.";
} }
enum "join" { enum join {
description description
"The interface has Join state."; "The interface has Join state.";
} }
enum "prune-pending" { enum prune-pending {
description description
"The router has received a Prune on this interface from "The router has received a Prune on this interface from
a downstream neighbor and is waiting to see whether a downstream neighbor and is waiting to see whether
the Prune will be overridden by another downstream the Prune will be overridden by another downstream
router. For forwarding purposes, the Prune-Pending router. For forwarding purposes, the Prune-Pending
state functions exactly like the Join state."; state functions exactly like the Join state.";
} }
} }
description description
"Join/Prune state."; "Join/Prune state.";
skipping to change at line 2024 skipping to change at line 2026
description description
"'true' if the LAN Prune Delay option is present in the "'true' if the LAN Prune Delay option is present in the
last Hello message from the neighbor."; last Hello message from the neighbor.";
} }
leaf override-interval { leaf override-interval {
when "../present = 'true'" { when "../present = 'true'" {
description description
"Available only when 'leaf present' is 'true'."; "Available only when 'leaf present' is 'true'.";
} }
type uint16; type uint16;
units milliseconds; units "milliseconds";
description description
"The value of the Override_Interval field of the LAN Prune "The value of the Override_Interval field of the LAN Prune
Delay option in the last Hello message from the neighbor. Delay option in the last Hello message from the neighbor.
The neighbor uses this value to indicate a short period The neighbor uses this value to indicate a short period
after a Join or Prune to allow other routers on the LAN after a Join or Prune to allow other routers on the LAN
to override the Join or Prune."; to override the Join or Prune.";
} }
leaf propagation-delay { leaf propagation-delay {
when "../present = 'true'" { when "../present = 'true'" {
description description
"Available only when 'leaf present' is 'true'."; "Available only when 'leaf present' is 'true'.";
} }
type uint16; type uint16;
units milliseconds; units "milliseconds";
description description
"The value of the Propagation_Delay field of the LAN Prune "The value of the Propagation_Delay field of the LAN Prune
Delay option in the last Hello message from the neighbor. Delay option in the last Hello message from the neighbor.
The value is the propagation delay over the local link The value is the propagation delay over the local link
expected by the neighbor."; expected by the neighbor.";
} }
leaf t-bit { leaf t-bit {
when "../present = 'true'" { when "../present = 'true'" {
description description
"Available only when 'leaf present' is 'true'."; "Available only when 'leaf present' is 'true'.";
skipping to change at line 2073 skipping to change at line 2075
without being timed out."; without being timed out.";
} }
} // neighbor-state-af-attributes } // neighbor-state-af-attributes
grouping pim-instance-af-state-ref { grouping pim-instance-af-state-ref {
description description
"An absolute reference to a PIM instance address family."; "An absolute reference to a PIM instance address family.";
leaf instance-af-ref { leaf instance-af-ref {
type leafref { type leafref {
path "/rt:routing/rt:control-plane-protocols/" path "/rt:routing/rt:control-plane-protocols/"
+ "pim-base:pim/pim-base:address-family/" + "pim-base:pim/pim-base:address-family/"
+ "pim-base:address-family"; + "pim-base:address-family";
} }
description description
"Reference to a PIM instance address family."; "Reference to a PIM instance address family.";
} }
} // pim-instance-af-state-ref } // pim-instance-af-state-ref
grouping pim-interface-state-ref { grouping pim-interface-state-ref {
description description
"An absolute reference to a PIM interface state."; "An absolute reference to a PIM interface state.";
leaf interface-ref { leaf interface-ref {
type leafref { type leafref {
path "/rt:routing/rt:control-plane-protocols/" path "/rt:routing/rt:control-plane-protocols/"
+ "pim-base:pim/pim-base:interfaces/pim-base:interface/" + "pim-base:pim/pim-base:interfaces/pim-base:interface/"
+ "pim-base:name"; + "pim-base:name";
} }
description description
"Reference to a PIM interface."; "Reference to a PIM interface.";
} }
} // pim-interface-state-ref } // pim-interface-state-ref
grouping statistics-sent-received { grouping statistics-sent-received {
description description
"A grouping defining sent and received statistics "A grouping defining sent and received statistics
on PIM messages."; on PIM messages.";
skipping to change at line 2189 skipping to change at line 2191
} }
} // statistics-sent-received } // statistics-sent-received
/* /*
* Data nodes * Data nodes
*/ */
augment "/rt:routing/rt:control-plane-protocols" { augment "/rt:routing/rt:control-plane-protocols" {
description description
"PIM augmentation to the routing instance model."; "PIM augmentation to the routing instance model.";
container pim { container pim {
presence presence "Enables the PIM protocol.";
"Enables the PIM protocol.";
description description
"PIM configuration data and operational state data."; "PIM configuration data and operational state data.";
uses graceful-restart-container { uses graceful-restart-container {
if-feature global-graceful-restart; if-feature "global-graceful-restart";
} }
list address-family { list address-family {
key "address-family"; key "address-family";
description description
"Each list entry for one address family."; "Each list entry for one address family.";
uses rt:address-family; uses rt:address-family;
uses graceful-restart-container { uses graceful-restart-container {
if-feature per-af-graceful-restart; if-feature "per-af-graceful-restart";
} }
container statistics { container statistics {
config false; config false;
description description
"A container defining statistics attributes."; "A container defining statistics attributes.";
leaf discontinuity-time { leaf discontinuity-time {
type yang:date-and-time; type yang:date-and-time;
description description
"The time of the most recent occasion at which any one "The time of the most recent occasion at which any one
or more of the statistics counters suffered a or more of the statistics counters suffered a
discontinuity. If no such discontinuities have discontinuity. If no such discontinuities have
skipping to change at line 2358 skipping to change at line 2350
leaf name { leaf name {
type if:interface-ref; type if:interface-ref;
description description
"Reference to an entry in the global interface list."; "Reference to an entry in the global interface list.";
} }
list address-family { list address-family {
key "address-family"; key "address-family";
description description
"Each list entry for one address family."; "Each list entry for one address family.";
uses rt:address-family; uses rt:address-family;
container bfd { container bfd {
if-feature bfd; if-feature "bfd";
description description
"BFD (Bidirectional Forwarding Detection) "BFD (Bidirectional Forwarding Detection)
operation."; operation.";
uses bfd-types:client-cfg-parms; uses bfd-types:client-cfg-parms;
} }
leaf dr-priority { leaf dr-priority {
if-feature intf-dr-priority; if-feature "intf-dr-priority";
type uint32; type uint32;
default 1; default "1";
description description
"DR (Designated Router) priority as the preference in "DR (Designated Router) priority as the preference in
the DR election process."; the DR election process.";
} }
leaf hello-interval { leaf hello-interval {
if-feature intf-hello-interval; if-feature "intf-hello-interval";
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
default 30; default "30";
description description
"Periodic interval for Hello messages. "Periodic interval for Hello messages.
If 'infinity' or 'not-set' is used, no periodic If 'infinity' or 'not-set' is used, no periodic
Hello messages are sent."; Hello messages are sent.";
reference reference
"RFC 3973: Protocol Independent Multicast - "RFC 3973: Protocol Independent Multicast -
Dense Mode (PIM-DM): Protocol Specification Dense Mode (PIM-DM): Protocol Specification
(Revised), Section 4.8 (Revised), Section 4.8
RFC 7761: Protocol Independent Multicast - Sparse RFC 7761: Protocol Independent Multicast - Sparse
Mode (PIM-SM): Protocol Specification (Revised), Mode (PIM-SM): Protocol Specification (Revised),
skipping to change at line 2399 skipping to change at line 2390
} }
choice hello-holdtime-or-multiplier { choice hello-holdtime-or-multiplier {
description description
"The Holdtime is the timer value to time out the "The Holdtime is the timer value to time out the
neighbor state when the timer expires. neighbor state when the timer expires.
The Holdtime value can be specified by either The Holdtime value can be specified by either
(1) the given Holdtime value or (2) the calculation (1) the given Holdtime value or (2) the calculation
of the Hello interval multiplied by the given value of the Hello interval multiplied by the given value
of the multiplier."; of the multiplier.";
case holdtime { case holdtime {
if-feature intf-hello-holdtime; if-feature "intf-hello-holdtime";
leaf hello-holdtime { leaf hello-holdtime {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
default 105; default "105";
description description
"The Hello Holdtime is the amount of time to "The Hello Holdtime is the amount of time to
keep the neighbor reachable until a new keep the neighbor reachable until a new
Hello message is received."; Hello message is received.";
} }
} }
case multiplier { case multiplier {
if-feature intf-hello-multiplier; if-feature "intf-hello-multiplier";
leaf hello-multiplier { leaf hello-multiplier {
type rt-types:timer-multiplier; type rt-types:timer-multiplier;
default 3; default "3";
description description
"The Hello multiplier is the number by which the "The Hello multiplier is the number by which the
Hello interval is multiplied to obtain the Hello interval is multiplied to obtain the
Hello Holdtime. Hello Holdtime.
The value of the Hello Holdtime is calculated The value of the Hello Holdtime is calculated
as: as:
hello-holdtime = hello-holdtime =
(multiplier + 0.5) * (hello-interval)."; (multiplier + 0.5) * (hello-interval).";
} }
} }
} }
leaf jp-interval { leaf jp-interval {
if-feature intf-jp-interval; if-feature "intf-jp-interval";
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
default 60; default "60";
description description
"Periodic interval between Join/Prune messages. "Periodic interval between Join/Prune messages.
If 'infinity' or 'not-set' is used, no periodic If 'infinity' or 'not-set' is used, no periodic
Join/Prune messages are sent."; Join/Prune messages are sent.";
} }
choice jp-holdtime-or-multiplier { choice jp-holdtime-or-multiplier {
description description
"The Join/Prune Holdtime is the amount of time a "The Join/Prune Holdtime is the amount of time a
receiver must keep the Join/Prune state alive. receiver must keep the Join/Prune state alive.
The Holdtime value can be specified by either The Holdtime value can be specified by either
(1) the given Holdtime value or (2) the calculation (1) the given Holdtime value or (2) the calculation
of 'jp-interval' multiplied by the given value of of 'jp-interval' multiplied by the given value of
the multiplier."; the multiplier.";
case holdtime { case holdtime {
if-feature intf-jp-holdtime; if-feature "intf-jp-holdtime";
leaf jp-holdtime { leaf jp-holdtime {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
default 210; default "210";
description description
"The Join/Prune Holdtime is the amount of time a "The Join/Prune Holdtime is the amount of time a
receiver must keep the Join/Prune state alive."; receiver must keep the Join/Prune state alive.";
} }
} }
case multiplier { case multiplier {
if-feature intf-jp-multiplier; if-feature "intf-jp-multiplier";
leaf jp-multiplier { leaf jp-multiplier {
type rt-types:timer-multiplier; type rt-types:timer-multiplier;
default 3; default "3";
description description
"The Join/Prune multiplier is the number "The Join/Prune multiplier is the number
by which the Join/Prune interval is multiplied by which the Join/Prune interval is multiplied
to obtain the Join/Prune Holdtime. to obtain the Join/Prune Holdtime.
The value of the Join/Prune Holdtime is The value of the Join/Prune Holdtime is
calculated as: calculated as:
jp-holdtime = jp-holdtime =
(multiplier + 0.5) * (jp-interval)."; (multiplier + 0.5) * (jp-interval).";
} }
} }
} }
leaf override-interval { leaf override-interval {
if-feature intf-override-interval; if-feature "intf-override-interval";
type uint16; type uint16;
units milliseconds; units "milliseconds";
default 2500; default "2500";
description description
"A short period after a Join or Prune to allow other "A short period after a Join or Prune to allow other
routers on the LAN to override the Join or Prune."; routers on the LAN to override the Join or Prune.";
} }
leaf propagation-delay { leaf propagation-delay {
if-feature intf-propagation-delay; if-feature "intf-propagation-delay";
type uint16; type uint16;
units milliseconds; units "milliseconds";
default 500; default "500";
description description
"Expected propagation delay over the local link."; "Expected propagation delay over the local link.";
} }
// Interface state attributes // Interface state attributes
leaf oper-status { leaf oper-status {
type enumeration { type enumeration {
enum up { enum up {
description description
"The interface is ready to pass PIM messages."; "The interface is ready to pass PIM messages.";
} }
enum down { enum down {
description description
"The interface does not pass PIM messages."; "The interface does not pass PIM messages.";
skipping to change at line 2613 skipping to change at line 2604
"Notification event for a neighbor."; "Notification event for a neighbor.";
leaf event-type { leaf event-type {
type neighbor-event-type; type neighbor-event-type;
description description
"Event type."; "Event type.";
} }
uses pim-interface-state-ref; uses pim-interface-state-ref;
leaf interface-af-ref { leaf interface-af-ref {
type leafref { type leafref {
path "/rt:routing/rt:control-plane-protocols/" path "/rt:routing/rt:control-plane-protocols/"
+ "pim-base:pim/pim-base:interfaces/pim-base:interface" + "pim-base:pim/pim-base:interfaces/pim-base:interface"
+ "[pim-base:name = current()/../interface-ref]/" + "[pim-base:name = current()/../interface-ref]/"
+ "pim-base:address-family/pim-base:address-family"; + "pim-base:address-family/pim-base:address-family";
} }
description description
"Reference to a PIM interface address family."; "Reference to a PIM interface address family.";
} }
leaf neighbor-ipv4-ref { leaf neighbor-ipv4-ref {
when "../interface-af-ref = 'rt:ipv4'" { when "../interface-af-ref = 'rt:ipv4'" {
description description
"Only applicable to an IPv4 address family."; "Only applicable to an IPv4 address family.";
} }
type leafref { type leafref {
path "/rt:routing/rt:control-plane-protocols/" path "/rt:routing/rt:control-plane-protocols/"
+ "pim-base:pim/pim-base:interfaces/pim-base:interface" + "pim-base:pim/pim-base:interfaces/pim-base:interface"
+ "[pim-base:name = current()/../interface-ref]/" + "[pim-base:name = current()/../interface-ref]/"
+ "pim-base:address-family" + "pim-base:address-family"
+ "[pim-base:address-family = " + "[pim-base:address-family = "
+ "current()/../interface-af-ref]/" + "current()/../interface-af-ref]/"
+ "pim-base:neighbors/pim-base:ipv4-neighbor/" + "pim-base:neighbors/pim-base:ipv4-neighbor/"
+ "pim-base:address"; + "pim-base:address";
} }
description description
"Reference to a PIM IPv4 neighbor."; "Reference to a PIM IPv4 neighbor.";
} }
leaf neighbor-ipv6-ref { leaf neighbor-ipv6-ref {
when "../interface-af-ref = 'rt:ipv6'" { when "../interface-af-ref = 'rt:ipv6'" {
description description
"Only applicable to an IPv6 address family."; "Only applicable to an IPv6 address family.";
} }
type leafref { type leafref {
path "/rt:routing/rt:control-plane-protocols/" path "/rt:routing/rt:control-plane-protocols/"
+ "pim-base:pim/pim-base:interfaces/pim-base:interface" + "pim-base:pim/pim-base:interfaces/pim-base:interface"
+ "[pim-base:name = current()/../interface-ref]/" + "[pim-base:name = current()/../interface-ref]/"
+ "pim-base:address-family" + "pim-base:address-family"
+ "[pim-base:address-family = " + "[pim-base:address-family = "
+ "current()/../interface-af-ref]/" + "current()/../interface-af-ref]/"
+ "pim-base:neighbors/pim-base:ipv6-neighbor/" + "pim-base:neighbors/pim-base:ipv6-neighbor/"
+ "pim-base:address"; + "pim-base:address";
} }
description description
"Reference to a PIM IPv6 neighbor."; "Reference to a PIM IPv6 neighbor.";
} }
leaf up-time { leaf up-time {
type rt-types:timeticks64; type rt-types:timeticks64;
description description
"The number of time ticks (hundredths of a second) since "The number of time ticks (hundredths of a second) since
the neighbor relationship has been formed as reachable the neighbor relationship has been formed as reachable
without being timed out."; without being timed out.";
skipping to change at line 2717 skipping to change at line 2709
This module references [RFC5059], [RFC6991], [RFC7761], [RFC8294], This module references [RFC5059], [RFC6991], [RFC7761], [RFC8294],
[RFC8343], and [RFC8349]. [RFC8343], and [RFC8349].
<CODE BEGINS> file "ietf-pim-rp@2021-09-03.yang" <CODE BEGINS> file "ietf-pim-rp@2021-09-03.yang"
module ietf-pim-rp { module ietf-pim-rp {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-pim-rp"; namespace "urn:ietf:params:xml:ns:yang:ietf-pim-rp";
prefix pim-rp; prefix pim-rp;
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix inet;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
import ietf-routing-types { import ietf-routing-types {
prefix "rt-types"; prefix rt-types;
reference reference
"RFC 8294: Common YANG Data Types for the Routing Area"; "RFC 8294: Common YANG Data Types for the Routing Area";
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix if;
reference reference
"RFC 8343: A YANG Data Model for Interface Management"; "RFC 8343: A YANG Data Model for Interface Management";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix rt;
reference reference
"RFC 8349: A YANG Data Model for Routing Management (NMDA "RFC 8349: A YANG Data Model for Routing Management (NMDA
Version)"; Version)";
} }
import ietf-pim-base { import ietf-pim-base {
prefix "pim-base"; prefix pim-base;
reference reference
"RFC 9128: A YANG Data Model for Protocol Independent "RFC 9128: A YANG Data Model for Protocol Independent
Multicast (PIM)"; Multicast (PIM)";
} }
organization organization
"IETF PIM Working Group"; "IETF PIM Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/pim/> "WG Web: <https://datatracker.ietf.org/wg/pim/>
WG List: <mailto:pim@ietf.org> WG List: <mailto:pim@ietf.org>
Editor: Xufeng Liu Editor: Xufeng Liu
<mailto:xufeng.liu.ietf@gmail.com> <mailto:xufeng.liu.ietf@gmail.com>
Editor: Pete McAllister Editor: Pete McAllister
<mailto:pete.mcallister@metaswitch.com> <mailto:pete.mcallister@metaswitch.com>
skipping to change at line 2811 skipping to change at line 2798
feature bsr { feature bsr {
description description
"This feature indicates that the system supports BSRs "This feature indicates that the system supports BSRs
(Bootstrap Routers)."; (Bootstrap Routers).";
reference reference
"RFC 5059: Bootstrap Router (BSR) Mechanism for Protocol "RFC 5059: Bootstrap Router (BSR) Mechanism for Protocol
Independent Multicast (PIM)"; Independent Multicast (PIM)";
} }
feature bsr-election-state { feature bsr-election-state {
if-feature bsr; if-feature "bsr";
description description
"This feature indicates that the system supports providing "This feature indicates that the system supports providing
BSR election state."; BSR election state.";
reference reference
"RFC 5059: Bootstrap Router (BSR) Mechanism for Protocol "RFC 5059: Bootstrap Router (BSR) Mechanism for Protocol
Independent Multicast (PIM)"; Independent Multicast (PIM)";
} }
feature static-rp-override { feature static-rp-override {
description description
"This feature indicates that the system supports configuration "This feature indicates that the system supports configuration
of static RP (Rendezvous Point) override."; of the static RP (Rendezvous Point) that overrides the RP
discoveries from other mechanisms.";
reference reference
"RFC 7761: Protocol Independent Multicast - Sparse Mode "RFC 7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised), Section 3.7"; (PIM-SM): Protocol Specification (Revised), Section 3.7";
} }
feature candidate-interface { feature candidate-interface {
description description
"This feature indicates that the system supports using "This feature indicates that the system supports using
an interface to configure a BSR or RP candidate."; an interface to configure a BSR or RP candidate.";
} }
skipping to change at line 2956 skipping to change at line 2949
"The string value is the name to uniquely identify a "The string value is the name to uniquely identify a
policy that contains one or more policy rules used to policy that contains one or more policy rules used to
determine which multicast group addresses are mapped determine which multicast group addresses are mapped
to this statically configured RP address. to this statically configured RP address.
If a policy is not specified, the entire multicast address If a policy is not specified, the entire multicast address
space is mapped. space is mapped.
The definition of such a policy is outside the scope The definition of such a policy is outside the scope
of this document."; of this document.";
} }
leaf override { leaf override {
if-feature static-rp-override; if-feature "static-rp-override";
type boolean; type boolean;
default false; default "false";
description description
"When there is a conflict between static RPs and dynamic RPs, "When there is a conflict between static RPs and dynamic RPs,
setting this attribute to 'true' will ask the system to use setting this attribute to 'true' will ask the system to use
static RPs."; static RPs.";
} }
} // static-rp-attributes } // static-rp-attributes
grouping rp-candidate-attributes { grouping rp-candidate-attributes {
description description
"Grouping of RP candidate attributes."; "Grouping of RP candidate attributes.";
skipping to change at line 3001 skipping to change at line 2994
or the default value is SM if both SM and BIDIR are or the default value is SM if both SM and BIDIR are
implemented."; implemented.";
} }
} // rp-candidate-attributes } // rp-candidate-attributes
/* /*
* Configuration data nodes * Configuration data nodes
*/ */
augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/" augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/"
+ "pim-base:address-family" { + "pim-base:address-family" {
description description
"PIM RP augmentation."; "PIM RP augmentation.";
container rp { container rp {
description description
"PIM RP configuration data."; "PIM RP configuration data.";
container static-rp { container static-rp {
description description
"Contains static RP attributes."; "Contains static RP attributes.";
list ipv4-rp { list ipv4-rp {
when "../../../pim-base:address-family = 'rt:ipv4'" { when "../../../pim-base:address-family = 'rt:ipv4'" {
description description
"Only applicable to an IPv4 address family."; "Only applicable to an IPv4 address family.";
} }
key "rp-address"; key "rp-address";
description description
skipping to change at line 3042 skipping to change at line 3032
key "rp-address"; key "rp-address";
description description
"A list of IPv6 RP addresses."; "A list of IPv6 RP addresses.";
leaf rp-address { leaf rp-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Specifies a static RP address."; "Specifies a static RP address.";
} }
} }
} // static-rp } // static-rp
container bsr { container bsr {
if-feature bsr; if-feature "bsr";
description description
"Contains BSR (Bootstrap Router) attributes."; "Contains BSR (Bootstrap Router) attributes.";
container bsr-candidate { container bsr-candidate {
presence presence "Present to serve as a BSR candidate.";
"Present to serve as a BSR candidate";
description description
"BSR candidate attributes."; "BSR candidate attributes.";
choice interface-or-address { choice interface-or-address {
description description
"Use either an interface or an IP address."; "Use either an interface or an IP address.";
case interface { case interface {
if-feature candidate-interface; if-feature "candidate-interface";
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
mandatory true; mandatory true;
description description
"Interface to be used by a BSR."; "Interface to be used by a BSR.";
} }
} }
case ipv4-address { case ipv4-address {
when "../../../pim-base:address-family = 'rt:ipv4'" { when "../../../pim-base:address-family = 'rt:ipv4'" {
description description
"Only applicable to an IPv4 address family."; "Only applicable to an IPv4 address family.";
} }
if-feature candidate-ipv4; if-feature "candidate-ipv4";
leaf ipv4-address { leaf ipv4-address {
type inet:ipv4-address; type inet:ipv4-address;
mandatory true; mandatory true;
description description
"IP address to be used by a BSR."; "IP address to be used by a BSR.";
} }
} }
case ipv6-address { case ipv6-address {
when "../../../pim-base:address-family = 'rt:ipv6'" { when "../../../pim-base:address-family = 'rt:ipv6'" {
description description
"Only applicable to an IPv6 address family."; "Only applicable to an IPv6 address family.";
} }
if-feature candidate-ipv6; if-feature "candidate-ipv6";
leaf ipv6-address { leaf ipv6-address {
type inet:ipv6-address; type inet:ipv6-address;
mandatory true; mandatory true;
description description
"IP address to be used by a BSR."; "IP address to be used by a BSR.";
} }
} }
} }
leaf hash-mask-length {
leaf hash-mask-length{
type uint8 { type uint8 {
range "0..128"; range "0..128";
} }
mandatory true; mandatory true;
description description
"Value contained in BSR messages used by all routers to "Value contained in BSR messages used by all routers to
hash (map) to an RP."; hash (map) to an RP.";
} }
leaf priority { leaf priority {
type uint8 { type uint8 {
range "0..255"; range "0..255";
} }
default 64; default "64";
description description
"BSR election priority among different candidate BSRs. "BSR election priority among different candidate BSRs.
A larger value has a higher priority over a smaller A larger value has a higher priority over a smaller
value."; value.";
} }
} // bsr-candidate } // bsr-candidate
container rp-candidate { container rp-candidate {
description description
"Contains RP candidate attributes."; "Contains RP candidate attributes.";
list interface { list interface {
if-feature candidate-interface; if-feature "candidate-interface";
key "name"; key "name";
description description
"A list of RP candidates."; "A list of RP candidates.";
leaf name { leaf name {
type if:interface-ref; type if:interface-ref;
description description
"Interface that the RP candidate uses."; "Interface that the RP candidate uses.";
} }
uses rp-candidate-attributes; uses rp-candidate-attributes;
} }
skipping to change at line 3130 skipping to change at line 3114
key "name"; key "name";
description description
"A list of RP candidates."; "A list of RP candidates.";
leaf name { leaf name {
type if:interface-ref; type if:interface-ref;
description description
"Interface that the RP candidate uses."; "Interface that the RP candidate uses.";
} }
uses rp-candidate-attributes; uses rp-candidate-attributes;
} }
list ipv4-address { list ipv4-address {
when "../../../../pim-base:address-family = 'rt:ipv4'" { when "../../../../pim-base:address-family = 'rt:ipv4'" {
description description
"Only applicable to an IPv4 address family."; "Only applicable to an IPv4 address family.";
} }
if-feature candidate-ipv4; if-feature "candidate-ipv4";
key "address"; key "address";
description description
"A list of RP candidate addresses."; "A list of RP candidate addresses.";
leaf address { leaf address {
type inet:ipv4-address; type inet:ipv4-address;
description description
"IPv4 address that the RP candidate uses."; "IPv4 address that the RP candidate uses.";
} }
uses rp-candidate-attributes; uses rp-candidate-attributes;
} }
skipping to change at line 3147 skipping to change at line 3130
key "address"; key "address";
description description
"A list of RP candidate addresses."; "A list of RP candidate addresses.";
leaf address { leaf address {
type inet:ipv4-address; type inet:ipv4-address;
description description
"IPv4 address that the RP candidate uses."; "IPv4 address that the RP candidate uses.";
} }
uses rp-candidate-attributes; uses rp-candidate-attributes;
} }
list ipv6-address { list ipv6-address {
when "../../../../pim-base:address-family = 'rt:ipv6'" { when "../../../../pim-base:address-family = 'rt:ipv6'" {
description description
"Only applicable to an IPv6 address family."; "Only applicable to an IPv6 address family.";
} }
if-feature candidate-ipv6; if-feature "candidate-ipv6";
key "address"; key "address";
description description
"A list of RP candidate addresses."; "A list of RP candidate addresses.";
leaf address { leaf address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"IPv6 address that the RP candidate uses."; "IPv6 address that the RP candidate uses.";
} }
uses rp-candidate-attributes; uses rp-candidate-attributes;
} }
skipping to change at line 3198 skipping to change at line 3179
"Priority."; "Priority.";
} }
leaf up-time { leaf up-time {
type rt-types:timeticks64; type rt-types:timeticks64;
description description
"The number of time ticks (hundredths of a second) "The number of time ticks (hundredths of a second)
since the BSR came up."; since the BSR came up.";
} }
} }
choice election-state { choice election-state {
if-feature bsr-election-state; if-feature "bsr-election-state";
config false; config false;
description description
"BSR election state."; "BSR election state.";
case candidate { case candidate {
leaf candidate-bsr-state { leaf candidate-bsr-state {
type enumeration { type enumeration {
enum "candidate" { enum candidate {
description description
"The router is a candidate to be the BSR for the "The router is a candidate to be the BSR for the
scope zone, but currently another router is the scope zone, but currently another router is the
preferred BSR."; preferred BSR.";
} }
enum "pending" { enum pending {
description description
"The router is a candidate to be the BSR for the "The router is a candidate to be the BSR for the
scope zone. Currently, no other router is the scope zone. Currently, no other router is the
preferred BSR, but this router is not yet the preferred BSR, but this router is not yet the
elected BSR. This is a temporary state that elected BSR. This is a temporary state that
prevents rapid thrashing of the choice of BSR prevents rapid thrashing of the choice of BSR
during BSR election."; during BSR election.";
} }
enum "elected" { enum elected {
description description
"The router is the elected BSR for the "The router is the elected BSR for the
scope zone, and it must perform all of the scope zone, and it must perform all of the
BSR functions."; BSR functions.";
} }
} }
description description
"Candidate-BSR (C-BSR) state."; "Candidate-BSR (C-BSR) state.";
reference reference
"RFC 5059: Bootstrap Router (BSR) Mechanism for "RFC 5059: Bootstrap Router (BSR) Mechanism for
Protocol Independent Multicast (PIM), Protocol Independent Multicast (PIM),
Section 3.1.1"; Section 3.1.1";
} }
} }
case "non-candidate" { case non-candidate {
leaf non-candidate-bsr-state { leaf non-candidate-bsr-state {
type enumeration { type enumeration {
enum "no-info" { enum no-info {
description description
"The router has no information about this scope "The router has no information about this scope
zone."; zone.";
} }
enum "accept-any" { enum accept-any {
description description
"The router does not know of an active BSR and "The router does not know of an active BSR and
will accept the first Bootstrap message it sees will accept the first Bootstrap message it sees
that provides the new BSR's identity and the that provides the new BSR's identity and the
RP-Set."; RP-Set.";
} }
enum "accept" { enum accept {
description description
"The router knows the identity of the current "The router knows the identity of the current
BSR and is using the RP-Set provided by that BSR and is using the RP-Set provided by that
BSR. Only Bootstrap messages from that BSR or BSR. Only Bootstrap messages from that BSR or
from a Candidate-BSR (C-BSR) with higher weight from a Candidate-BSR (C-BSR) with higher weight
than the current BSR will be accepted."; than the current BSR will be accepted.";
} }
} }
description description
"Non-Candidate-BSR state."; "Non-Candidate-BSR state.";
reference reference
"RFC 5059: Bootstrap Router (BSR) Mechanism for "RFC 5059: Bootstrap Router (BSR) Mechanism for
Protocol Independent Multicast (PIM), Protocol Independent Multicast (PIM),
Section 3.1.2"; Section 3.1.2";
} }
} }
} // election-state } // election-state
leaf bsr-next-bootstrap { leaf bsr-next-bootstrap {
type uint16; type uint16;
units seconds; units "seconds";
config false; config false;
description description
"The remaining time interval in seconds until the next "The remaining time interval in seconds until the next
Bootstrap will be sent."; Bootstrap will be sent.";
} }
container rp { container rp {
config false; config false;
description description
"State information of the RP."; "State information of the RP.";
leaf rp-address { leaf rp-address {
type inet:ip-address; type inet:ip-address;
description description
"RP address."; "RP address.";
} }
leaf policy-name { leaf policy-name {
skipping to change at line 3306 skipping to change at line 3286
} }
leaf up-time { leaf up-time {
type rt-types:timeticks64; type rt-types:timeticks64;
description description
"The number of time ticks (hundredths of a second) "The number of time ticks (hundredths of a second)
since the RP became actively available."; since the RP became actively available.";
} }
} }
leaf rp-candidate-next-advertisement { leaf rp-candidate-next-advertisement {
type uint16; type uint16;
units seconds; units "seconds";
config false; config false;
description description
"The remaining time interval in seconds until the next "The remaining time interval in seconds until the next
RP candidate advertisement will be sent."; RP candidate advertisement will be sent.";
} }
} // bsr } // bsr
container rp-list { container rp-list {
config false; config false;
description description
"Contains a list of RPs."; "Contains a list of RPs.";
list ipv4-rp { list ipv4-rp {
when "../../../pim-base:address-family = 'rt:ipv4'" { when "../../../pim-base:address-family = 'rt:ipv4'" {
description description
"Only applicable to an IPv4 address family."; "Only applicable to an IPv4 address family.";
} }
key "rp-address mode"; key "rp-address mode";
skipping to change at line 3479 skipping to change at line 3456
This module references [RFC4607], [RFC6991], [RFC7761], and This module references [RFC4607], [RFC6991], [RFC7761], and
[RFC8349]. [RFC8349].
<CODE BEGINS> file "ietf-pim-sm@2021-09-03.yang" <CODE BEGINS> file "ietf-pim-sm@2021-09-03.yang"
module ietf-pim-sm { module ietf-pim-sm {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-pim-sm"; namespace "urn:ietf:params:xml:ns:yang:ietf-pim-sm";
prefix pim-sm; prefix pim-sm;
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix inet;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix rt;
reference reference
"RFC 8349: A YANG Data Model for Routing Management (NMDA "RFC 8349: A YANG Data Model for Routing Management (NMDA
Version)"; Version)";
} }
import ietf-pim-base { import ietf-pim-base {
prefix "pim-base"; prefix pim-base;
reference reference
"RFC 9128: A YANG Data Model for Protocol Independent "RFC 9128: A YANG Data Model for Protocol Independent
Multicast (PIM)"; Multicast (PIM)";
} }
import ietf-pim-rp { import ietf-pim-rp {
prefix "pim-rp"; prefix pim-rp;
reference reference
"RFC 9128: A YANG Data Model for Protocol Independent "RFC 9128: A YANG Data Model for Protocol Independent
Multicast (PIM)"; Multicast (PIM)";
} }
organization organization
"IETF PIM Working Group"; "IETF PIM Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/pim/> "WG Web: <https://datatracker.ietf.org/wg/pim/>
WG List: <mailto:pim@ietf.org> WG List: <mailto:pim@ietf.org>
Editor: Xufeng Liu Editor: Xufeng Liu
<mailto:xufeng.liu.ietf@gmail.com> <mailto:xufeng.liu.ietf@gmail.com>
Editor: Pete McAllister Editor: Pete McAllister
<mailto:pete.mcallister@metaswitch.com> <mailto:pete.mcallister@metaswitch.com>
skipping to change at line 3551 skipping to change at line 3523
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 9128; see the This version of this YANG module is part of RFC 9128; see the
RFC itself for full legal notices."; RFC itself for full legal notices.";
revision 2021-09-03 { revision 2021-09-03 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC 7761: Protocol Independent Multicast - Sparse Mode "RFC 9128: A YANG Data Model for Protocol Independent
(PIM-SM): Protocol Specification (Revised), Section 4.2
RFC 9128: A YANG Data Model for Protocol Independent
Multicast (PIM)"; Multicast (PIM)";
} }
/* /*
* Features * Features
*/ */
feature spt-switch-infinity { feature spt-switch-infinity {
description description
"This feature indicates that the system supports the "This feature indicates that the system supports the
configuration choice of whether to trigger switchover from configuration choice of whether to trigger switchover from
the RPT (Rendezvous Point Tree) to the SPT (Shortest Path the RPT (Rendezvous Point Tree) to the SPT (Shortest Path
Tree)."; Tree).";
reference reference
"RFC 7761: Protocol Independent Multicast - Sparse Mode "RFC 7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised), Section 4.2"; (PIM-SM): Protocol Specification (Revised), Section 4.2";
} }
skipping to change at line 3583 skipping to change at line 3554
"This feature indicates that the system supports configuring "This feature indicates that the system supports configuring
the policy for switchover from the RPT to the SPT."; the policy for switchover from the RPT to the SPT.";
reference reference
"RFC 7761: Protocol Independent Multicast - Sparse Mode "RFC 7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised), Section 4.2"; (PIM-SM): Protocol Specification (Revised), Section 4.2";
} }
/* /*
* Identities * Identities
*/ */
identity rp-sm { identity rp-sm {
base pim-rp:rp-mode; base pim-rp:rp-mode;
description description
"SM (Sparse Mode)."; "SM (Sparse Mode).";
} }
/* /*
* Groupings * Groupings
*/ */
grouping static-rp-sm-container { grouping static-rp-sm-container {
description description
"Grouping that contains SM attributes for static RPs."; "Grouping that contains SM attributes for static RPs.";
container sm { container sm {
presence presence "Indicates support for PIM-SM.";
"Indicates support for PIM-SM.";
description description
"PIM-SM configuration data."; "PIM-SM configuration data.";
uses pim-rp:static-rp-attributes; uses pim-rp:static-rp-attributes;
} // sm } // sm
} // static-rp-sm-container } // static-rp-sm-container
/* /*
* Configuration data nodes * Configuration data nodes
*/ */
augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/" augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/"
+ "pim-base:address-family" { + "pim-base:address-family" {
description description
"PIM-SM augmentation."; "PIM-SM augmentation.";
container sm { container sm {
description description
"PIM-SM configuration data."; "PIM-SM configuration data.";
container asm { container asm {
description description
"ASM (Any-Source Multicast) attributes."; "ASM (Any-Source Multicast) attributes.";
container anycast-rp { container anycast-rp {
presence presence "Present to enable an Anycast-RP
"Present to enable an Anycast-RP (Rendezvous Point)."; (Rendezvous Point).";
description description
"Anycast-RP attributes."; "Anycast-RP attributes.";
list ipv4-anycast-rp { list ipv4-anycast-rp {
when "../../../../pim-base:address-family = 'rt:ipv4'" { when "../../../../pim-base:address-family = 'rt:ipv4'" {
description description
"Only applicable to an IPv4 address family."; "Only applicable to an IPv4 address family.";
} }
key "anycast-address rp-address"; key "anycast-address rp-address";
description description
"A list of IPv4 Anycast-RP settings. Only applicable "A list of IPv4 Anycast-RP settings. Only applicable
when 'pim-base:address-family' is IPv4."; when 'pim-base:address-family' is IPv4.";
leaf anycast-address { leaf anycast-address {
skipping to change at line 3668 skipping to change at line 3635
description description
"A list of IPv6 Anycast-RP settings. Only applicable "A list of IPv6 Anycast-RP settings. Only applicable
when 'pim-base:address-family' is IPv6."; when 'pim-base:address-family' is IPv6.";
leaf anycast-address { leaf anycast-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"IP address of the Anycast-RP set. This IP address "IP address of the Anycast-RP set. This IP address
is used by the multicast groups or sources to join is used by the multicast groups or sources to join
or register."; or register.";
} }
leaf rp-address { leaf rp-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"IP address of the router configured with an "IP address of the router configured with an
Anycast-RP. This is the IP address where the Anycast-RP. This is the IP address where the
Register messages are forwarded."; Register messages are forwarded.";
} }
} }
} }
container spt-switch { container spt-switch {
description description
"SPT (Shortest Path Tree) switching attributes."; "SPT (Shortest Path Tree) switching attributes.";
container infinity { container infinity {
if-feature spt-switch-infinity; if-feature "spt-switch-infinity";
presence presence "Present if the SPT switchover threshold is set
"Present if the SPT switchover threshold is set to to infinity, according to the policy specified
infinity, according to the policy specified below."; below.";
description description
"The receiver's DR (Designated Router) never triggers "The receiver's DR (Designated Router) never triggers
switchover from the RPT to the SPT."; switchover from the RPT to the SPT.";
leaf policy-name { leaf policy-name {
if-feature spt-switch-policy; if-feature "spt-switch-policy";
type string; type string;
description description
"The string value is the name to uniquely identify a "The string value is the name to uniquely identify a
policy that contains one or more policy rules used policy that contains one or more policy rules used
to accept or reject certain multicast groups. to accept or reject certain multicast groups.
The groups accepted by this policy have the SPT The groups accepted by this policy have the SPT
switchover threshold set to infinity, meaning that switchover threshold set to infinity, meaning that
they will stay on the shared tree forever. they will stay on the shared tree forever.
If a policy is not specified, the entire multicast If a policy is not specified, the entire multicast
address space is accepted. address space is accepted.
skipping to change at line 3708 skipping to change at line 3673
switchover threshold set to infinity, meaning that switchover threshold set to infinity, meaning that
they will stay on the shared tree forever. they will stay on the shared tree forever.
If a policy is not specified, the entire multicast If a policy is not specified, the entire multicast
address space is accepted. address space is accepted.
The definition of such a policy is outside the scope The definition of such a policy is outside the scope
of this document."; of this document.";
} }
} // infinity } // infinity
} }
} // asm } // asm
container ssm { container ssm {
presence presence "Present to enable SSM (Source-Specific
"Present to enable SSM (Source-Specific Multicast)."; Multicast).";
description description
"SSM attributes."; "SSM attributes.";
leaf range-policy { leaf range-policy {
type string; type string;
description description
"The string value is the name to uniquely identify a "The string value is the name to uniquely identify a
policy that contains one or more policy rules used policy that contains one or more policy rules used
to accept or reject certain multicast groups. to accept or reject certain multicast groups.
The groups accepted by this policy define the multicast The groups accepted by this policy define the multicast
group range used by SSM. group range used by SSM.
If a policy is not specified, the default SSM multicast If a policy is not specified, the default SSM multicast
group range is used. group range is used.
skipping to change at line 3738 skipping to change at line 3701
The definition of such a policy is outside the scope The definition of such a policy is outside the scope
of this document."; of this document.";
reference reference
"RFC 4607: Source-Specific Multicast for IP"; "RFC 4607: Source-Specific Multicast for IP";
} }
} // ssm } // ssm
} // sm } // sm
} // augment } // augment
augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/" augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/"
+ "pim-base:interfaces/pim-base:interface/" + "pim-base:interfaces/pim-base:interface/"
+ "pim-base:address-family" { + "pim-base:address-family" {
description description
"PIM-SM augmentation."; "PIM-SM augmentation.";
container sm { container sm {
presence "Present to enable PIM-SM."; presence "Present to enable PIM-SM.";
description description
"PIM-SM configuration data."; "PIM-SM configuration data.";
leaf passive { leaf passive {
type empty; type empty;
description description
"Specifies that no PIM messages are sent or accepted on "Specifies that no PIM messages are sent or accepted on
this PIM interface, but the interface can be included in a this PIM interface, but the interface can be included in a
multicast forwarding entry."; multicast forwarding entry.";
} }
} // sm } // sm
} // augment } // augment
skipping to change at line 3759 skipping to change at line 3720
type empty; type empty;
description description
"Specifies that no PIM messages are sent or accepted on "Specifies that no PIM messages are sent or accepted on
this PIM interface, but the interface can be included in a this PIM interface, but the interface can be included in a
multicast forwarding entry."; multicast forwarding entry.";
} }
} // sm } // sm
} // augment } // augment
augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/" augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/"
+ "pim-base:address-family/pim-rp:rp/" + "pim-base:address-family/pim-rp:rp/"
+ "pim-rp:static-rp/pim-rp:ipv4-rp" { + "pim-rp:static-rp/pim-rp:ipv4-rp" {
description description
"PIM-SM augmentation."; "PIM-SM augmentation.";
uses static-rp-sm-container; uses static-rp-sm-container;
} // augment } // augment
augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/" augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/"
+ "pim-base:address-family/pim-rp:rp/" + "pim-base:address-family/pim-rp:rp/"
+ "pim-rp:static-rp/pim-rp:ipv6-rp" { + "pim-rp:static-rp/pim-rp:ipv6-rp" {
description description
"PIM-SM augmentation."; "PIM-SM augmentation.";
uses static-rp-sm-container; uses static-rp-sm-container;
} // augment } // augment
} }
<CODE ENDS> <CODE ENDS>
6.4. PIM-DM Module 6.4. PIM-DM Module
This module references [RFC3973] and [RFC8349]. This module references [RFC3973] and [RFC8349].
<CODE BEGINS> file "ietf-pim-dm@2021-09-03.yang" <CODE BEGINS> file "ietf-pim-dm@2021-09-03.yang"
module ietf-pim-dm { module ietf-pim-dm {
yang-version 1.1; yang-version 1.1;
skipping to change at line 3789 skipping to change at line 3749
This module references [RFC3973] and [RFC8349]. This module references [RFC3973] and [RFC8349].
<CODE BEGINS> file "ietf-pim-dm@2021-09-03.yang" <CODE BEGINS> file "ietf-pim-dm@2021-09-03.yang"
module ietf-pim-dm { module ietf-pim-dm {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-pim-dm"; namespace "urn:ietf:params:xml:ns:yang:ietf-pim-dm";
prefix pim-dm; prefix pim-dm;
import ietf-routing { import ietf-routing {
prefix "rt"; prefix rt;
reference reference
"RFC 8349: A YANG Data Model for Routing Management (NMDA "RFC 8349: A YANG Data Model for Routing Management (NMDA
Version)"; Version)";
} }
import ietf-pim-base { import ietf-pim-base {
prefix "pim-base"; prefix pim-base;
reference reference
"RFC 9128: A YANG Data Model for Protocol Independent "RFC 9128: A YANG Data Model for Protocol Independent
Multicast (PIM)"; Multicast (PIM)";
} }
organization organization
"IETF PIM Working Group"; "IETF PIM Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/pim/> "WG Web: <https://datatracker.ietf.org/wg/pim/>
WG List: <mailto:pim@ietf.org> WG List: <mailto:pim@ietf.org>
Editor: Xufeng Liu Editor: Xufeng Liu
<mailto:xufeng.liu.ietf@gmail.com> <mailto:xufeng.liu.ietf@gmail.com>
Editor: Pete McAllister Editor: Pete McAllister
<mailto:pete.mcallister@metaswitch.com> <mailto:pete.mcallister@metaswitch.com>
skipping to change at line 3848 skipping to change at line 3805
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 9128; see the This version of this YANG module is part of RFC 9128; see the
RFC itself for full legal notices."; RFC itself for full legal notices.";
revision 2021-09-03 { revision 2021-09-03 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC 3973: Protocol Independent Multicast - Dense Mode "RFC 9128: A YANG Data Model for Protocol Independent
(PIM-DM): Protocol Specification (Revised)
RFC 9128: A YANG Data Model for Protocol Independent
Multicast (PIM)"; Multicast (PIM)";
} }
/* /*
* Configuration data nodes * Configuration data nodes
*/ */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "pim-base:pim/pim-base:address-family" { + "pim-base:pim/pim-base:address-family" {
description description
"PIM-DM augmentation."; "PIM-DM augmentation.";
container dm { container dm {
presence "Present to enable PIM-DM."; presence "Present to enable PIM-DM.";
description description
"PIM-DM configuration data."; "PIM-DM configuration data.";
} // dm } // dm
} // augment } // augment
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "pim-base:pim/pim-base:interfaces/pim-base:interface/" + "pim-base:pim/pim-base:interfaces/pim-base:interface/"
+ "pim-base:address-family" { + "pim-base:address-family" {
description description
"PIM-DM augmentation to 'pim-base:interface'."; "PIM-DM augmentation to 'pim-base:interface'.";
container dm { container dm {
presence "Present to enable PIM-DM."; presence "Present to enable PIM-DM.";
description description
"PIM-DM configuration data."; "PIM-DM configuration data.";
} // dm } // dm
} // augment } // augment
} }
<CODE ENDS> <CODE ENDS>
6.5. PIM-BIDIR Module 6.5. BIDIR-PIM Module
This module references [RFC5015], [RFC6991], [RFC8294], [RFC8343], This module references [RFC5015], [RFC6991], [RFC8294], [RFC8343],
and [RFC8349]. and [RFC8349].
<CODE BEGINS> file "ietf-pim-bidir@2021-09-03.yang" <CODE BEGINS> file "ietf-pim-bidir@2021-09-03.yang"
module ietf-pim-bidir { module ietf-pim-bidir {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-pim-bidir"; namespace "urn:ietf:params:xml:ns:yang:ietf-pim-bidir";
prefix pim-bidir; prefix pim-bidir;
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix inet;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
import ietf-routing-types { import ietf-routing-types {
prefix "rt-types"; prefix rt-types;
reference reference
"RFC 8294: Common YANG Data Types for the Routing Area"; "RFC 8294: Common YANG Data Types for the Routing Area";
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix if;
reference reference
"RFC 8343: A YANG Data Model for Interface Management"; "RFC 8343: A YANG Data Model for Interface Management";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix rt;
reference reference
"RFC 8349: A YANG Data Model for Routing Management (NMDA "RFC 8349: A YANG Data Model for Routing Management (NMDA
Version)"; Version)";
} }
import ietf-pim-base { import ietf-pim-base {
prefix "pim-base"; prefix pim-base;
reference reference
"RFC 9128: A YANG Data Model for Protocol Independent "RFC 9128: A YANG Data Model for Protocol Independent
Multicast (PIM)"; Multicast (PIM)";
} }
import ietf-pim-rp { import ietf-pim-rp {
prefix "pim-rp"; prefix pim-rp;
reference reference
"RFC 9128: A YANG Data Model for Protocol Independent "RFC 9128: A YANG Data Model for Protocol Independent
Multicast (PIM)"; Multicast (PIM)";
} }
organization organization
"IETF PIM Working Group"; "IETF PIM Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/pim/> "WG Web: <https://datatracker.ietf.org/wg/pim/>
WG List: <mailto:pim@ietf.org> WG List: <mailto:pim@ietf.org>
Editor: Xufeng Liu Editor: Xufeng Liu
<mailto:xufeng.liu.ietf@gmail.com> <mailto:xufeng.liu.ietf@gmail.com>
Editor: Pete McAllister Editor: Pete McAllister
<mailto:pete.mcallister@metaswitch.com> <mailto:pete.mcallister@metaswitch.com>
skipping to change at line 3981 skipping to change at line 3928
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 9128; see the This version of this YANG module is part of RFC 9128; see the
RFC itself for full legal notices."; RFC itself for full legal notices.";
revision 2021-09-03 { revision 2021-09-03 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC 5015: Bidirectional Protocol Independent Multicast "RFC 9128: A YANG Data Model for Protocol Independent
(BIDIR-PIM)
RFC 9128: A YANG Data Model for Protocol Independent
Multicast (PIM)"; Multicast (PIM)";
} }
/* /*
* Features * Features
*/ */
feature intf-df-election { feature intf-df-election {
description description
"Supports configuration of interface DF election."; "Supports configuration of interface DF election.";
reference reference
"RFC 5015: Bidirectional Protocol Independent Multicast "RFC 5015: Bidirectional Protocol Independent Multicast
(BIDIR-PIM), Section 3.5"; (BIDIR-PIM), Section 3.5";
} }
/* /*
* Identities * Identities
skipping to change at line 4047 skipping to change at line 3994
identity df-state-backoff { identity df-state-backoff {
base df-state; base df-state;
description description
"The router is the acting DF, but another router has made a "The router is the acting DF, but another router has made a
bid to take over."; bid to take over.";
} }
/* /*
* Groupings * Groupings
*/ */
grouping static-rp-bidir-container { grouping static-rp-bidir-container {
description description
"Grouping that contains BIDIR attributes for a static RP "Grouping that contains BIDIR attributes for a static RP
(Rendezvous Point)."; (Rendezvous Point).";
container bidir { container bidir {
presence presence "Indicates support for BIDIR mode.";
"Indicates support for BIDIR mode.";
description description
"PIM-BIDIR configuration data."; "PIM-BIDIR configuration data.";
uses pim-rp:static-rp-attributes; uses pim-rp:static-rp-attributes;
} // bidir } // bidir
} // static-rp-bidir-container } // static-rp-bidir-container
grouping interface-df-election-state-attributes { grouping interface-df-election-state-attributes {
description description
"Grouping that contains the state attributes of a DF election "Grouping that contains the state attributes of a DF election
on an interface."; on an interface.";
leaf interface-state { leaf interface-state {
type identityref { type identityref {
skipping to change at line 4098 skipping to change at line 4044
protocol that the DF used to obtain the route to the RP. protocol that the DF used to obtain the route to the RP.
The value is announced by the DF."; The value is announced by the DF.";
} }
} // interface-df-election-state-attributes } // interface-df-election-state-attributes
/* /*
* Configuration data and operational state data nodes * Configuration data and operational state data nodes
*/ */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "pim-base:pim/pim-base:address-family" { + "pim-base:pim/pim-base:address-family" {
description description
"PIM-BIDIR augmentation."; "PIM-BIDIR augmentation.";
container bidir { container bidir {
presence "Present to enable BIDIR mode."; presence "Present to enable BIDIR mode.";
description description
"PIM-BIDIR configuration data."; "PIM-BIDIR configuration data.";
} // bidir } // bidir
} // augment } // augment
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "pim-base:pim/pim-base:interfaces/pim-base:interface/" + "pim-base:pim/pim-base:interfaces/pim-base:interface/"
+ "pim-base:address-family" { + "pim-base:address-family" {
description description
"PIM-BIDIR augmentation."; "PIM-BIDIR augmentation.";
container bidir { container bidir {
presence "Present to enable BIDIR mode."; presence "Present to enable BIDIR mode.";
description description
"PIM-BIDIR configuration data."; "PIM-BIDIR configuration data.";
container df-election { container df-election {
if-feature intf-df-election; if-feature "intf-df-election";
description description
"DF election attributes."; "DF election attributes.";
leaf offer-interval { leaf offer-interval {
type uint16; type uint16;
units milliseconds; units "milliseconds";
default 100; default "100";
description description
"Offer interval. Specifies the interval between "Offer interval. Specifies the interval between
repeated DF election messages."; repeated DF election messages.";
} }
leaf backoff-interval { leaf backoff-interval {
type uint16; type uint16;
units milliseconds; units "milliseconds";
default 1000; default "1000";
description description
"This is the interval that the acting DF waits between "This is the interval that the acting DF waits between
receiving a better DF Offer and sending the Pass message receiving a better DF Offer and sending the Pass message
to transfer DF responsibility."; to transfer DF responsibility.";
} }
leaf offer-multiplier { leaf offer-multiplier {
type uint8; type uint8;
default 3; default "3";
description description
"This is the number of transmission attempts for "This is the number of transmission attempts for
DF election messages. DF election messages.
When a DF election Offer or Winner message fails to be When a DF election Offer or Winner message fails to be
received, the message is retransmitted. received, the message is retransmitted.
'offer-multiplier' sets the minimum number of DF 'offer-multiplier' sets the minimum number of DF
election messages that must fail to be received for DF election messages that must fail to be received for DF
election to fail. election to fail.
If a router receives from a neighbor a better offer than If a router receives from a neighbor a better offer than
its own, the router stops participating in the election its own, the router stops participating in the election
for a period of 'offer-multiplier' * 'offer-interval'. for a period of 'offer-multiplier' * 'offer-interval'.
Eventually, all routers except the best candidate stop Eventually, all routers except the best candidate stop
sending Offer messages."; sending Offer messages.";
} }
} // df-election } // df-election
} // bidir } // bidir
} // augment } // augment
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "pim-base:pim/pim-base:address-family/pim-rp:rp/" + "pim-base:pim/pim-base:address-family/pim-rp:rp/"
+ "pim-rp:static-rp/pim-rp:ipv4-rp" { + "pim-rp:static-rp/pim-rp:ipv4-rp" {
description description
"PIM-BIDIR augmentation."; "PIM-BIDIR augmentation.";
uses static-rp-bidir-container; uses static-rp-bidir-container;
} // augment } // augment
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "pim-base:pim/pim-base:address-family/pim-rp:rp/" + "pim-base:pim/pim-base:address-family/pim-rp:rp/"
+ "pim-rp:static-rp/pim-rp:ipv6-rp" { + "pim-rp:static-rp/pim-rp:ipv6-rp" {
description description
"PIM-BIDIR augmentation."; "PIM-BIDIR augmentation.";
uses static-rp-bidir-container; uses static-rp-bidir-container;
} // augment } // augment
/* /*
* Operational state data nodes * Operational state data nodes
*/ */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "pim-base:pim/pim-base:address-family/pim-rp:rp" { + "pim-base:pim/pim-base:address-family/pim-rp:rp" {
description description
"PIM-BIDIR augmentation to RP state data."; "PIM-BIDIR augmentation to RP state data.";
container bidir { container bidir {
config false; config false;
description description
"PIM-BIDIR state data."; "PIM-BIDIR state data.";
container df-election { container df-election {
description description
"DF election data."; "DF election data.";
list ipv4-rp { list ipv4-rp {
when "../../../../pim-base:address-family = 'rt:ipv4'" { when "../../../../pim-base:address-family = 'rt:ipv4'" {
description description
skipping to change at line 4271 skipping to change at line 4211
description description
"A list of IPv6 RP addresses."; "A list of IPv6 RP addresses.";
leaf rp-address { leaf rp-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"The address of the RP."; "The address of the RP.";
} }
leaf interface-name { leaf interface-name {
type if:interface-ref; type if:interface-ref;
description description
"The address of the RP."; "The name of the interface for which the DF state is
being maintained.";
} }
leaf df-address { leaf df-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"DF address."; "DF address.";
} }
uses interface-df-election-state-attributes; uses interface-df-election-state-attributes;
} // ipv6-rp } // ipv6-rp
} // interface-df-election } // interface-df-election
} }
} // augment } // augment
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "pim-base:pim/pim-base:interfaces/pim-base:interface/" + "pim-base:pim/pim-base:interfaces/pim-base:interface/"
+ "pim-base:address-family/pim-base:neighbors/" + "pim-base:address-family/pim-base:neighbors/"
+ "pim-base:ipv4-neighbor" { + "pim-base:ipv4-neighbor" {
description description
"PIM-BIDIR augmentation to the IPv4 neighbor state data."; "PIM-BIDIR augmentation to the IPv4 neighbor state data.";
leaf bidir-capable { leaf bidir-capable {
type boolean; type boolean;
description description
"'true' if the neighbor is using the Bidirectional Capable "'true' if the neighbor is using the Bidirectional Capable
option in the last Hello message."; option in the last Hello message.";
} }
} // augment } // augment
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "pim-base:pim/pim-base:interfaces/pim-base:interface/" + "pim-base:pim/pim-base:interfaces/pim-base:interface/"
+ "pim-base:address-family/pim-base:neighbors/" + "pim-base:address-family/pim-base:neighbors/"
+ "pim-base:ipv6-neighbor" { + "pim-base:ipv6-neighbor" {
description description
"PIM-BIDIR augmentation to the IPv6 neighbor state data."; "PIM-BIDIR augmentation to the IPv6 neighbor state data.";
leaf bidir-capable { leaf bidir-capable {
type boolean; type boolean;
description description
"'true' if the neighbor is using the Bidirectional Capable "'true' if the neighbor is using the Bidirectional Capable
option in the last Hello message."; option in the last Hello message.";
} }
} // augment } // augment
} }
<CODE ENDS> <CODE ENDS>
7. Security Considerations 7. Security Considerations
The YANG modules specified in this document define a schema for data The YANG modules specified in this document define a schema for data
that is designed to be accessed via network management protocols such that is designed to be accessed via network management protocols such
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
is the secure transport layer, and the mandatory-to-implement secure is the secure transport layer, and the mandatory-to-implement secure
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
skipping to change at line 4344 skipping to change at line 4286
effect on network operations. These are the subtrees and data nodes effect on network operations. These are the subtrees and data nodes
and their sensitivity/vulnerability: and their sensitivity/vulnerability:
pim-base:graceful-restart pim-base:graceful-restart
This subtree specifies the configuration for PIM graceful restart This subtree specifies the configuration for PIM graceful restart
at the global level on a device. Modifying the configuration can at the global level on a device. Modifying the configuration can
cause temporary interruption to the multicast routing during cause temporary interruption to the multicast routing during
restart. restart.
pim-base:address-family/pim-base:graceful-restart pim-base:address-family/pim-base:graceful-restart
This subtree specifies the per address family configuration for This subtree specifies the per-address-family configuration for
PIM graceful restart on a device. Modifying the configuration can PIM graceful restart on a device. Modifying the configuration can
cause temporary interruption to the multicast routing during cause temporary interruption to the multicast routing during
restart. restart.
pim-base:address-family/pim-rp:pim-rp:rp pim-base:address-family/pim-rp:pim-rp:rp
This subtree specifies the configuration for the PIM Rendezvous This subtree specifies the configuration for the PIM Rendezvous
Point (RP) on a device. Modifying the configuration can cause RP Point (RP) on a device. Modifying the configuration can cause RP
malfunctions. malfunctions.
pim-base:address-family/pim-sm:sm pim-base:address-family/pim-sm:sm
skipping to change at line 4366 skipping to change at line 4308
(PIM-SM) on a device. Modifying the configuration can cause (PIM-SM) on a device. Modifying the configuration can cause
multicast traffic to be disabled or rerouted in PIM-SM. multicast traffic to be disabled or rerouted in PIM-SM.
pim-base:address-family/pim-dm:dm pim-base:address-family/pim-dm:dm
This subtree specifies the configuration for PIM Dense Mode This subtree specifies the configuration for PIM Dense Mode
(PIM-DM) on a device. Modifying the configuration can cause (PIM-DM) on a device. Modifying the configuration can cause
multicast traffic to be disabled or rerouted in PIM-DM. multicast traffic to be disabled or rerouted in PIM-DM.
pim-base:address-family/pim-bidir:bidir pim-base:address-family/pim-bidir:bidir
This subtree specifies the configuration for PIM Bidirectional This subtree specifies the configuration for PIM Bidirectional
Mode (PIM-BIDIR) on a device. Modifying the configuration can Mode (BIDIR-PIM) on a device. Modifying the configuration can
cause multicast traffic to be disabled or rerouted in PIM-BIDIR. cause multicast traffic to be disabled or rerouted in BIDIR-PIM.
pim-base:interfaces pim-base:interfaces
This subtree specifies the configuration for the PIM interfaces on This subtree specifies the configuration for the PIM interfaces on
a device. Modifying the configuration can cause the PIM protocol a device. Modifying the configuration can cause the PIM protocol
to get insufficient or incorrect information. to get insufficient or incorrect information.
These subtrees are all under "/rt:routing/rt:control-plane-protocols/ These subtrees are all under "/rt:routing/rt:control-plane-protocols/
pim-base:pim". pim-base:pim".
Unauthorized access to any data node of these subtrees can adversely Unauthorized access to any data node of these subtrees can adversely
skipping to change at line 4999 skipping to change at line 4941
} }
] ]
} }
} }
} }
} }
} }
Acknowledgments Acknowledgments
The authors would like to thank Steve Baillargeon, Guo Feng, Robert The authors would like to thank Steve Baillargeon, Feng Guo, Robert
Kebler, Tanmoy Kundu, and Stig Venaas for their valuable Kebler, Tanmoy Kundu, and Stig Venaas for their valuable
contributions. contributions.
Authors' Addresses Authors' Addresses
Xufeng Liu Xufeng Liu
Volta Networks Volta Networks
Email: xufeng.liu.ietf@gmail.com Email: xufeng.liu.ietf@gmail.com
skipping to change at line 5042 skipping to change at line 4984
Yisong Liu Yisong Liu
Huawei Technologies Huawei Technologies
Huawei Administration Building Huawei Administration Building
Longgang Longgang
Guangdong, 518129 Guangdong, 518129
China China
Email: liuyisong@chinamobile.com Email: liuyisong@chinamobile.com
Fangwei Hu Fangwei Hu
ZTE Corporation Individual Contributor
889 Bibo Road 86 Bohang Road
Shanghai Shanghai
Shanghai, 201203 Shanghai, 200126
China China
Email: hufwei@gmail.com Email: hufwei@gmail.com
 End of changes. 218 change blocks. 
267 lines changed or deleted 208 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/