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