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