ietf-pim-rp.yang   ietf-pim-rp-formatted.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 101 skipping to change at line 96
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
skipping to change at line 246 skipping to change at line 246
"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 291 skipping to change at line 291
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 332 skipping to change at line 329
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 420 skipping to change at line 411
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 437 skipping to change at line 427
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 488 skipping to change at line 476
"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 596 skipping to change at line 583
} }
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 711 skipping to change at line 694
"Group range presented in the format of a prefix."; "Group range presented in the format of a prefix.";
} }
leaf rp-address { leaf rp-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"RP address."; "RP address.";
} }
uses rp-mapping-state-attributes; uses rp-mapping-state-attributes;
} }
} // rp-mappings } // rp-mappings
} // rp }
} // augment } // augment
/* /*
* Notifications * Notifications
*/ */
notification pim-rp-event { notification pim-rp-event {
description description
"Notification event for an RP."; "Notification event for an RP.";
leaf event-type { leaf event-type {
type rp-event-type; type rp-event-type;
description description
"Event type."; "Event type.";
} }
uses pim-base:pim-instance-af-state-ref; uses pim-base:pim-instance-af-state-ref;
leaf group { leaf group {
 End of changes. 46 change blocks. 
47 lines changed or deleted 31 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/