ietf-pim-base.yang | ietf-pim-base-formatted.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 298 ¶ | skipping to change at line 300 ¶ | |||
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 343 ¶ | skipping to change at line 345 ¶ | |||
"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 378 ¶ | skipping to change at line 380 ¶ | |||
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 466 ¶ | skipping to change at line 464 ¶ | |||
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 515 ¶ | skipping to change at line 513 ¶ | |||
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 631 ¶ | skipping to change at line 629 ¶ | |||
} | } | |||
} // 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 800 ¶ | skipping to change at line 788 ¶ | |||
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 841 ¶ | skipping to change at line 828 ¶ | |||
} | } | |||
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 1037 ¶ | skipping to change at line 1023 ¶ | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"Neighbor address."; | "Neighbor address."; | |||
} | } | |||
uses neighbor-state-af-attributes; | uses neighbor-state-af-attributes; | |||
} // list ipv6-neighbor | } // list ipv6-neighbor | |||
} // neighbors | } // neighbors | |||
} // address-family | } // address-family | |||
} // interface | } // interface | |||
} // interfaces | } // interfaces | |||
} // pim | } | |||
} // augment | } // augment | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
notification pim-neighbor-event { | notification pim-neighbor-event { | |||
description | description | |||
"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 { | |||
skipping to change at line 1055 ¶ | skipping to change at line 1042 ¶ | |||
"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."; | |||
End of changes. 60 change blocks. | ||||
78 lines changed or deleted | 63 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/ |