ietf-mpls-ldp@2021-10-28.yang | ietf-mpls-ldp@2021-10-28-formatted.yang | |||
---|---|---|---|---|
module ietf-mpls-ldp { | module ietf-mpls-ldp { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-ldp"; | namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-ldp"; | |||
prefix "ldp"; | prefix ldp; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix inet; | |||
reference "RFC 6991: Common YANG Data Types"; | reference | |||
"RFC 6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix "yang"; | prefix yang; | |||
reference "RFC 6991: Common YANG Data Types"; | reference | |||
"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-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 "RFC 8343: A YANG Data Model for Interface Management"; | reference | |||
"RFC 8343: A YANG Data Model for Interface Management"; | ||||
} | } | |||
import ietf-ip { | import ietf-ip { | |||
prefix "ip"; | prefix ip; | |||
reference "RFC 8344: A YANG Data Model for IP Management"; | reference | |||
"RFC 8344: A YANG Data Model for IP Management"; | ||||
} | } | |||
import ietf-key-chain { | import ietf-key-chain { | |||
prefix "key-chain"; | prefix key-chain; | |||
reference "RFC 8177: YANG Data Model for Key Chains"; | reference | |||
"RFC 8177: YANG Data Model for Key Chains"; | ||||
} | } | |||
organization | organization | |||
"IETF MPLS Working Group"; | "IETF MPLS Working Group"; | |||
contact | contact | |||
"WG Web: <https://datatracker.ietf.org/wg/mpls/> | "WG Web: <https://datatracker.ietf.org/wg/mpls/> | |||
WG List: <mailto:mpls@ietf.org> | WG List: <mailto:mpls@ietf.org> | |||
Editor: Kamran Raza | Editor: Kamran Raza | |||
<mailto:skraza@cisco.com> | <mailto:skraza@cisco.com> | |||
skipping to change at line 93 ¶ | skipping to change at line 90 ¶ | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC 9070; see the | This version of this YANG module is part of RFC 9070; see the | |||
RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
revision 2021-10-28 { | revision 2021-10-28 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC 9070: YANG Data Model for MPLS LDP"; | "RFC 9070: YANG Data Model for MPLS LDP"; | |||
} | } | |||
/* | /* | |||
* Typedefs | * Typedefs | |||
*/ | */ | |||
typedef advertised-received { | typedef advertised-received { | |||
type enumeration { | type enumeration { | |||
enum advertised { | enum advertised { | |||
description "Advertised information."; | description | |||
"Advertised information."; | ||||
} | } | |||
enum received { | enum received { | |||
description "Received information."; | description | |||
"Received information."; | ||||
} | } | |||
} | } | |||
description | description | |||
"Received or advertised."; | "Received or advertised."; | |||
} | } | |||
typedef downstream-upstream { | typedef downstream-upstream { | |||
type enumeration { | type enumeration { | |||
enum downstream { | enum downstream { | |||
description "Downstream information."; | description | |||
"Downstream information."; | ||||
} | } | |||
enum upstream { | enum upstream { | |||
description "Upstream information."; | description | |||
"Upstream information."; | ||||
} | } | |||
} | } | |||
description | description | |||
"Downstream or upstream."; | "Downstream or upstream."; | |||
} | } | |||
typedef label-adv-mode { | typedef label-adv-mode { | |||
type enumeration { | type enumeration { | |||
enum downstream-unsolicited { | enum downstream-unsolicited { | |||
description "Downstream Unsolicited."; | description | |||
"Downstream Unsolicited."; | ||||
} | } | |||
enum downstream-on-demand { | enum downstream-on-demand { | |||
description "Downstream on Demand."; | description | |||
"Downstream on Demand."; | ||||
} | } | |||
} | } | |||
description | description | |||
"Label Advertisement Mode."; | "Label Advertisement Mode."; | |||
} | } | |||
typedef oper-status-event-type { | typedef oper-status-event-type { | |||
type enumeration { | type enumeration { | |||
enum up { | enum up { | |||
value 1; | value 1; | |||
description | description | |||
"Operational status changed to up."; | "Operational status changed to up."; | |||
} | } | |||
enum down { | enum down { | |||
value 2; | value 2; | |||
description | description | |||
"Operational status changed to down."; | "Operational status changed to down."; | |||
} | } | |||
} | } | |||
description "Operational status event type for notifications."; | description | |||
"Operational status event type for notifications."; | ||||
} | } | |||
/* | /* | |||
* Identities | * Identities | |||
*/ | */ | |||
identity mpls-ldp { | identity mpls-ldp { | |||
base rt:control-plane-protocol; | base rt:control-plane-protocol; | |||
description | description | |||
"LDP protocol."; | "LDP protocol."; | |||
reference | reference | |||
"RFC 5036: LDP Specification"; | "RFC 5036: LDP Specification"; | |||
} | } | |||
identity adjacency-flag-base { | identity adjacency-flag-base { | |||
description "Base type for adjacency flags."; | description | |||
"Base type for adjacency flags."; | ||||
} | } | |||
identity adjacency-flag-active { | identity adjacency-flag-active { | |||
base adjacency-flag-base; | base adjacency-flag-base; | |||
description | description | |||
"This adjacency is configured and actively created."; | "This adjacency is configured and actively created."; | |||
} | } | |||
identity adjacency-flag-passive { | identity adjacency-flag-passive { | |||
base adjacency-flag-base; | base adjacency-flag-base; | |||
skipping to change at line 190 ¶ | skipping to change at line 196 ¶ | |||
/* | /* | |||
* Groupings | * Groupings | |||
*/ | */ | |||
grouping adjacency-state-attributes { | grouping adjacency-state-attributes { | |||
description | description | |||
"The operational state attributes of an LDP Hello adjacency, | "The operational state attributes of an LDP Hello adjacency, | |||
which can used for basic and extended discoveries, in IPv4 and | which can used for basic and extended discoveries, in IPv4 and | |||
IPv6 address families."; | IPv6 address families."; | |||
leaf-list flag { | leaf-list flag { | |||
type identityref { | type identityref { | |||
base adjacency-flag-base; | base adjacency-flag-base; | |||
} | } | |||
description | description | |||
"One or more flags to indicate whether the adjacency is | "One or more flags to indicate whether the adjacency is | |||
actively created, passively accepted, or both."; | actively created, passively accepted, or both."; | |||
} | } | |||
container hello-holdtime { | container hello-holdtime { | |||
description | description | |||
"Containing Hello holdtime state information."; | "Containing Hello holdtime state information."; | |||
leaf adjacent { | leaf adjacent { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"The holdtime value learned from the adjacent LSR."; | "The holdtime value learned from the adjacent LSR."; | |||
} | } | |||
leaf negotiated { | leaf negotiated { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"The holdtime negotiated between this LSR and the adjacent | "The holdtime negotiated between this LSR and the adjacent | |||
LSR."; | LSR."; | |||
} | } | |||
leaf remaining { | leaf remaining { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"The time remaining until the holdtime timer expires."; | "The time remaining until the holdtime timer expires."; | |||
} | } | |||
} | } | |||
leaf next-hello { | leaf next-hello { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"The time when the next Hello message will be sent."; | "The time when the next Hello message will be sent."; | |||
} | } | |||
container statistics { | container statistics { | |||
description | description | |||
"Statistics objects."; | "Statistics objects."; | |||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The time on the most recent occasion at which any one or | "The time on the most recent occasion at which any one or | |||
more of this interface's counters suffered a | more of this interface's counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the last re-initialization of the local management | since the last re-initialization of the local management | |||
subsystem, then this node contains the time the local | subsystem, then this node contains the time the local | |||
management subsystem re-initialized itself."; | management subsystem re-initialized itself."; | |||
skipping to change at line 263 ¶ | skipping to change at line 264 ¶ | |||
description | description | |||
"The number of Hello messages dropped."; | "The number of Hello messages dropped."; | |||
} | } | |||
} // statistics | } // statistics | |||
} // adjacency-state-attributes | } // adjacency-state-attributes | |||
grouping basic-discovery-timers { | grouping basic-discovery-timers { | |||
description | description | |||
"The timer attributes for basic discovery, used in the | "The timer attributes for basic discovery, used in the | |||
per-interface setting and in the all-interface setting."; | per-interface setting and in the all-interface setting."; | |||
leaf hello-holdtime { | leaf hello-holdtime { | |||
type uint16 { | type uint16 { | |||
range 15..3600; | range "15..3600"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
description | description | |||
"The time interval for which an LDP link Hello adjacency | "The time interval for which an LDP link Hello adjacency | |||
is maintained in the absence of link Hello messages from | is maintained in the absence of link Hello messages from | |||
the LDP neighbor. | the LDP neighbor. | |||
This leaf may be configured at the per-interface level or | This leaf may be configured at the per-interface level or | |||
the global level, with precedence given to the value at the | the global level, with precedence given to the value at the | |||
per-interface level. If the leaf is not configured at | per-interface level. If the leaf is not configured at | |||
either level, the default value at the global level is | either level, the default value at the global level is | |||
used."; | used."; | |||
} | } | |||
leaf hello-interval { | leaf hello-interval { | |||
type uint16 { | type uint16 { | |||
range 5..1200; | range "5..1200"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
description | description | |||
"The interval between consecutive LDP link Hello messages | "The interval between consecutive LDP link Hello messages | |||
used in basic LDP discovery. | used in basic LDP discovery. | |||
This leaf may be configured at the per-interface level or | This leaf may be configured at the per-interface level or | |||
the global level, with precedence given to the value at the | the global level, with precedence given to the value at the | |||
per-interface level. If the leaf is not configured at | per-interface level. If the leaf is not configured at | |||
either level, the default value at the global level is | either level, the default value at the global level is | |||
used."; | used."; | |||
} | } | |||
} // basic-discovery-timers | } // basic-discovery-timers | |||
skipping to change at line 357 ¶ | skipping to change at line 355 ¶ | |||
} | } | |||
} // peer | } // peer | |||
} // binding-label-state-attributes | } // binding-label-state-attributes | |||
grouping graceful-restart-attributes-per-peer { | grouping graceful-restart-attributes-per-peer { | |||
description | description | |||
"Per-peer graceful restart attributes. | "Per-peer graceful restart attributes. | |||
On the local side, these attributes are configuration and | On the local side, these attributes are configuration and | |||
operational state data. On the peer side, these attributes | operational state data. On the peer side, these attributes | |||
are operational state data received from the peer."; | are operational state data received from the peer."; | |||
container graceful-restart { | container graceful-restart { | |||
description | description | |||
"Attributes for graceful restart."; | "Attributes for graceful restart."; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable or disable graceful restart. | "Enable or disable graceful restart. | |||
This leaf may be configured at the per-peer level or the | This leaf may be configured at the per-peer level or the | |||
global level, with precedence given to the value at the | global level, with precedence given to the value at the | |||
per-peer level. If the leaf is not configured at either | per-peer level. If the leaf is not configured at either | |||
level, the default value at the global level is used."; | level, the default value at the global level is used."; | |||
} | } | |||
leaf reconnect-time { | leaf reconnect-time { | |||
type uint16 { | type uint16 { | |||
range 10..1800; | range "10..1800"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
description | description | |||
"Specifies the time interval that the remote LDP peer | "Specifies the time interval that the remote LDP peer | |||
must wait for the local LDP peer to reconnect after the | must wait for the local LDP peer to reconnect after the | |||
remote peer detects the LDP communication failure. | remote peer detects the LDP communication failure. | |||
This leaf may be configured at the per-peer level or the | This leaf may be configured at the per-peer level or the | |||
global level, with precedence given to the value at the | global level, with precedence given to the value at the | |||
per-peer level. If the leaf is not configured at either | per-peer level. If the leaf is not configured at either | |||
level, the default value at the global level is used."; | level, the default value at the global level is used."; | |||
} | } | |||
leaf recovery-time { | leaf recovery-time { | |||
type uint16 { | type uint16 { | |||
range 30..3600; | range "30..3600"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
description | description | |||
"Specifies the time interval, in seconds, that the remote | "Specifies the time interval, in seconds, that the remote | |||
LDP peer preserves its MPLS forwarding state after | LDP peer preserves its MPLS forwarding state after | |||
receiving the Initialization message from the restarted | receiving the Initialization message from the restarted | |||
local LDP peer. | local LDP peer. | |||
This leaf may be configured at the per-peer level or the | This leaf may be configured at the per-peer level or the | |||
global level, with precedence given to the value at the | global level, with precedence given to the value at the | |||
per-peer level. If the leaf is not configured at either | per-peer level. If the leaf is not configured at either | |||
level, the default value at the global level is used."; | level, the default value at the global level is used."; | |||
} | } | |||
skipping to change at line 405 ¶ | skipping to change at line 402 ¶ | |||
global level, with precedence given to the value at the | global level, with precedence given to the value at the | |||
per-peer level. If the leaf is not configured at either | per-peer level. If the leaf is not configured at either | |||
level, the default value at the global level is used."; | level, the default value at the global level is used."; | |||
} | } | |||
} // graceful-restart | } // graceful-restart | |||
} // graceful-restart-attributes-per-peer | } // graceful-restart-attributes-per-peer | |||
grouping ldp-interface-ref { | grouping ldp-interface-ref { | |||
description | description | |||
"Defining a reference to an LDP interface."; | "Defining a reference to an LDP interface."; | |||
leaf name { | leaf name { | |||
type if:interface-ref; | type if:interface-ref; | |||
must "(/if:interfaces/if:interface[if:name=current()]/ip:ipv4)" | must '(/if:interfaces/if:interface[if:name=current()]/ip:ipv4)' | |||
+ " or " | + ' or ' | |||
+ "(/if:interfaces/if:interface[if:name=current()]/ip:ipv6)" | + '(/if:interfaces/if:interface[if:name=current()]/ip:ipv6)' { | |||
{ | description | |||
description "Interface is IPv4 or IPv6."; | "Interface is IPv4 or IPv6."; | |||
} | } | |||
description | description | |||
"The name of an LDP interface."; | "The name of an LDP interface."; | |||
} | } | |||
} | } | |||
grouping ldp-peer-ref-absolute { | grouping ldp-peer-ref-absolute { | |||
description | description | |||
"An absolute reference to an LDP peer, by the LDP ID, which | "An absolute reference to an LDP peer, by the LDP ID, which | |||
consists of the LSR ID and the Label Space ID."; | consists of the LSR ID and the Label Space ID."; | |||
skipping to change at line 423 ¶ | skipping to change at line 419 ¶ | |||
} | } | |||
description | description | |||
"The name of an LDP interface."; | "The name of an LDP interface."; | |||
} | } | |||
} | } | |||
grouping ldp-peer-ref-absolute { | grouping ldp-peer-ref-absolute { | |||
description | description | |||
"An absolute reference to an LDP peer, by the LDP ID, which | "An absolute reference to an LDP peer, by the LDP ID, which | |||
consists of the LSR ID and the Label Space ID."; | consists of the LSR ID and the Label Space ID."; | |||
leaf protocol-name { | leaf protocol-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
description | description | |||
"The name of the LDP protocol instance."; | "The name of the LDP protocol instance."; | |||
} | } | |||
leaf lsr-id { | leaf lsr-id { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol" | + "rt:control-plane-protocol" | |||
+ "[rt:name=current()/../protocol-name]/" | + "[rt:name=current()/../protocol-name]/" | |||
+ "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:lsr-id"; | + "ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:lsr-id"; | |||
} | } | |||
description | description | |||
"The LSR ID of the peer, as a portion of the peer LDP ID."; | "The LSR ID of the peer, as a portion of the peer LDP ID."; | |||
} | } | |||
leaf label-space-id { | leaf label-space-id { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol" | + "rt:control-plane-protocol" | |||
+ "[rt:name=current()/../protocol-name]/" | + "[rt:name=current()/../protocol-name]/" | |||
+ "ldp:mpls-ldp/ldp:peers/" | + "ldp:mpls-ldp/ldp:peers/" | |||
+ "ldp:peer[ldp:lsr-id=current()/../lsr-id]/" | + "ldp:peer[ldp:lsr-id=current()/../lsr-id]/" | |||
+ "ldp:label-space-id"; | + "ldp:label-space-id"; | |||
} | } | |||
description | description | |||
"The Label Space ID of the peer, as a portion of the peer | "The Label Space ID of the peer, as a portion of the peer | |||
LDP ID."; | LDP ID."; | |||
} | } | |||
} // ldp-peer-ref-absolute | } // ldp-peer-ref-absolute | |||
grouping ldp-peer-ref-from-binding { | grouping ldp-peer-ref-from-binding { | |||
description | description | |||
"A relative reference to an LDP peer, by the LDP ID, which | "A relative reference to an LDP peer, by the LDP ID, which | |||
skipping to change at line 461 ¶ | skipping to change at line 456 ¶ | |||
description | description | |||
"The Label Space ID of the peer, as a portion of the peer | "The Label Space ID of the peer, as a portion of the peer | |||
LDP ID."; | LDP ID."; | |||
} | } | |||
} // ldp-peer-ref-absolute | } // ldp-peer-ref-absolute | |||
grouping ldp-peer-ref-from-binding { | grouping ldp-peer-ref-from-binding { | |||
description | description | |||
"A relative reference to an LDP peer, by the LDP ID, which | "A relative reference to an LDP peer, by the LDP ID, which | |||
consists of the LSR ID and the Label Space ID."; | consists of the LSR ID and the Label Space ID."; | |||
leaf lsr-id { | leaf lsr-id { | |||
type leafref { | type leafref { | |||
path "../../../../../../../ldp:peers/ldp:peer/ldp:lsr-id"; | path "../../../../../../../ldp:peers/ldp:peer/ldp:lsr-id"; | |||
} | } | |||
description | description | |||
"The LSR ID of the peer, as a portion of the peer LDP ID."; | "The LSR ID of the peer, as a portion of the peer LDP ID."; | |||
} | } | |||
leaf label-space-id { | leaf label-space-id { | |||
type leafref { | type leafref { | |||
path "../../../../../../../ldp:peers/" | path "../../../../../../../ldp:peers/" | |||
+ "ldp:peer[ldp:lsr-id=current()/../lsr-id]/" | + "ldp:peer[ldp:lsr-id=current()/../lsr-id]/" | |||
+ "ldp:label-space-id"; | + "ldp:label-space-id"; | |||
} | } | |||
description | description | |||
"The Label Space ID of the peer, as a portion of the peer | "The Label Space ID of the peer, as a portion of the peer | |||
LDP ID."; | LDP ID."; | |||
} | } | |||
} // ldp-peer-ref-from-binding | } // ldp-peer-ref-from-binding | |||
grouping ldp-peer-ref-from-interface { | grouping ldp-peer-ref-from-interface { | |||
description | description | |||
"A relative reference to an LDP peer, by the LDP ID, which | "A relative reference to an LDP peer, by the LDP ID, which | |||
skipping to change at line 485 ¶ | skipping to change at line 479 ¶ | |||
description | description | |||
"The Label Space ID of the peer, as a portion of the peer | "The Label Space ID of the peer, as a portion of the peer | |||
LDP ID."; | LDP ID."; | |||
} | } | |||
} // ldp-peer-ref-from-binding | } // ldp-peer-ref-from-binding | |||
grouping ldp-peer-ref-from-interface { | grouping ldp-peer-ref-from-interface { | |||
description | description | |||
"A relative reference to an LDP peer, by the LDP ID, which | "A relative reference to an LDP peer, by the LDP ID, which | |||
consists of the LSR ID and the Label Space ID."; | consists of the LSR ID and the Label Space ID."; | |||
container peer { | container peer { | |||
description | description | |||
"Reference to an LDP peer, by the LDP ID, which consists of | "Reference to an LDP peer, by the LDP ID, which consists of | |||
the LSR ID and the Label Space ID."; | the LSR ID and the Label Space ID."; | |||
leaf lsr-id { | leaf lsr-id { | |||
type leafref { | type leafref { | |||
path "../../../../../../../../../ldp:peers/ldp:peer/" | path "../../../../../../../../../ldp:peers/ldp:peer/" | |||
+ "ldp:lsr-id"; | + "ldp:lsr-id"; | |||
} | } | |||
description | description | |||
"The LSR ID of the peer, as a portion of the peer LDP ID."; | "The LSR ID of the peer, as a portion of the peer LDP ID."; | |||
} | } | |||
leaf label-space-id { | leaf label-space-id { | |||
type leafref { | type leafref { | |||
path "../../../../../../../../../ldp:peers/" | path "../../../../../../../../../ldp:peers/" | |||
+ "ldp:peer[ldp:lsr-id=current()/../lsr-id]/" | + "ldp:peer[ldp:lsr-id=current()/../lsr-id]/" | |||
+ "ldp:label-space-id"; | + "ldp:label-space-id"; | |||
} | } | |||
description | description | |||
"The Label Space ID of the peer, as a portion of the peer | "The Label Space ID of the peer, as a portion of the peer | |||
LDP ID."; | LDP ID."; | |||
} | } | |||
} // peer | } // peer | |||
} // ldp-peer-ref-from-interface | } // ldp-peer-ref-from-interface | |||
grouping ldp-peer-ref-from-target { | grouping ldp-peer-ref-from-target { | |||
description | description | |||
skipping to change at line 515 ¶ | skipping to change at line 508 ¶ | |||
"The Label Space ID of the peer, as a portion of the peer | "The Label Space ID of the peer, as a portion of the peer | |||
LDP ID."; | LDP ID."; | |||
} | } | |||
} // peer | } // peer | |||
} // ldp-peer-ref-from-interface | } // ldp-peer-ref-from-interface | |||
grouping ldp-peer-ref-from-target { | grouping ldp-peer-ref-from-target { | |||
description | description | |||
"A relative reference to an LDP peer, by the LDP ID, which | "A relative reference to an LDP peer, by the LDP ID, which | |||
consists of the LSR ID and the Label Space ID."; | consists of the LSR ID and the Label Space ID."; | |||
container peer { | container peer { | |||
description | description | |||
"Reference to an LDP peer, by the LDP ID, which consists of | "Reference to an LDP peer, by the LDP ID, which consists of | |||
the LSR ID and the Label Space ID."; | the LSR ID and the Label Space ID."; | |||
leaf lsr-id { | leaf lsr-id { | |||
type leafref { | type leafref { | |||
path "../../../../../../../../ldp:peers/ldp:peer/" | path "../../../../../../../../ldp:peers/ldp:peer/" | |||
+ "ldp:lsr-id"; | + "ldp:lsr-id"; | |||
} | } | |||
description | description | |||
"The LSR ID of the peer, as a portion of the peer LDP ID."; | "The LSR ID of the peer, as a portion of the peer LDP ID."; | |||
} | } | |||
leaf label-space-id { | leaf label-space-id { | |||
type leafref { | type leafref { | |||
path "../../../../../../../../ldp:peers/" | path "../../../../../../../../ldp:peers/" | |||
+ "ldp:peer[ldp:lsr-id=current()/../lsr-id]/" | + "ldp:peer[ldp:lsr-id=current()/../lsr-id]/" | |||
+ "ldp:label-space-id"; | + "ldp:label-space-id"; | |||
} | } | |||
description | description | |||
"The Label Space ID of the peer, as a portion of the peer | "The Label Space ID of the peer, as a portion of the peer | |||
LDP ID."; | LDP ID."; | |||
} | } | |||
} // peer | } // peer | |||
} // ldp-peer-ref-from-target | } // ldp-peer-ref-from-target | |||
grouping peer-attributes { | grouping peer-attributes { | |||
description | description | |||
skipping to change at line 545 ¶ | skipping to change at line 537 ¶ | |||
"The Label Space ID of the peer, as a portion of the peer | "The Label Space ID of the peer, as a portion of the peer | |||
LDP ID."; | LDP ID."; | |||
} | } | |||
} // peer | } // peer | |||
} // ldp-peer-ref-from-target | } // ldp-peer-ref-from-target | |||
grouping peer-attributes { | grouping peer-attributes { | |||
description | description | |||
"Peer configuration attributes, used in the per-peer setting | "Peer configuration attributes, used in the per-peer setting | |||
can in the all-peer setting."; | can in the all-peer setting."; | |||
leaf session-ka-holdtime { | leaf session-ka-holdtime { | |||
type uint16 { | type uint16 { | |||
range 45..3600; | range "45..3600"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
description | description | |||
"The time interval after which an inactive LDP session | "The time interval after which an inactive LDP session | |||
terminates and the corresponding TCP session closes. | terminates and the corresponding TCP session closes. | |||
Inactivity is defined as not receiving LDP packets from the | Inactivity is defined as not receiving LDP packets from the | |||
peer. | peer. | |||
This leaf may be configured at the per-peer level or the | This leaf may be configured at the per-peer level or the | |||
global level, with precedence given to the value at the | global level, with precedence given to the value at the | |||
per-peer level. If the leaf is not configured at either | per-peer level. If the leaf is not configured at either | |||
level, the default value at the global level is used."; | level, the default value at the global level is used."; | |||
} | } | |||
leaf session-ka-interval { | leaf session-ka-interval { | |||
type uint16 { | type uint16 { | |||
range 15..1200; | range "15..1200"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
description | description | |||
"The interval between successive transmissions of keepalive | "The interval between successive transmissions of keepalive | |||
packets. Keepalive packets are only sent in the absence of | packets. Keepalive packets are only sent in the absence of | |||
other LDP packets transmitted over the LDP session. | other LDP packets transmitted over the LDP session. | |||
This leaf may be configured at the per-peer level or the | This leaf may be configured at the per-peer level or the | |||
global level, with precedence given to the value at the | global level, with precedence given to the value at the | |||
per-peer level. If the leaf is not configured at either | per-peer level. If the leaf is not configured at either | |||
level, the default value at the global level is used."; | level, the default value at the global level is used."; | |||
} | } | |||
} // peer-attributes | } // peer-attributes | |||
skipping to change at line 581 ¶ | skipping to change at line 572 ¶ | |||
global level, with precedence given to the value at the | global level, with precedence given to the value at the | |||
per-peer level. If the leaf is not configured at either | per-peer level. If the leaf is not configured at either | |||
level, the default value at the global level is used."; | level, the default value at the global level is used."; | |||
} | } | |||
} // peer-attributes | } // peer-attributes | |||
grouping peer-authentication { | grouping peer-authentication { | |||
description | description | |||
"Peer authentication container, used in the per-peer setting | "Peer authentication container, used in the per-peer setting | |||
can in the all-peer setting."; | can in the all-peer setting."; | |||
container authentication { | container authentication { | |||
description | description | |||
"Containing authentication information."; | "Containing authentication information."; | |||
choice authentication-type { | choice authentication-type { | |||
description | description | |||
"Choice of authentication."; | "Choice of authentication."; | |||
case password { | case password { | |||
leaf key { | leaf key { | |||
type string; | type string; | |||
description | description | |||
"This leaf specifies the authentication key. The | "This leaf specifies the authentication key. The | |||
length of the key may be dependent on the | length of the key may be dependent on the | |||
cryptographic algorithm."; | cryptographic algorithm."; | |||
} | } | |||
leaf crypto-algorithm { | leaf crypto-algorithm { | |||
type identityref { | type identityref { | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
description | description | |||
"Cryptographic algorithm associated with key."; | "Cryptographic algorithm associated with key."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} // peer-authentication | } // peer-authentication | |||
grouping peer-state-derived { | grouping peer-state-derived { | |||
description | description | |||
"The peer state information derived from the LDP protocol | "The peer state information derived from the LDP protocol | |||
operations."; | operations."; | |||
container label-advertisement-mode { | container label-advertisement-mode { | |||
config false; | config false; | |||
description "Label advertisement mode state."; | description | |||
"Label advertisement mode state."; | ||||
leaf local { | leaf local { | |||
type label-adv-mode; | type label-adv-mode; | |||
description | description | |||
"Local Label Advertisement Mode."; | "Local Label Advertisement Mode."; | |||
} | } | |||
leaf peer { | leaf peer { | |||
type label-adv-mode; | type label-adv-mode; | |||
description | description | |||
"Peer Label Advertisement Mode."; | "Peer Label Advertisement Mode."; | |||
} | } | |||
leaf negotiated { | leaf negotiated { | |||
type label-adv-mode; | type label-adv-mode; | |||
description | description | |||
"Negotiated Label Advertisement Mode."; | "Negotiated Label Advertisement Mode."; | |||
} | } | |||
} | } | |||
leaf next-keep-alive { | leaf next-keep-alive { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
config false; | config false; | |||
description | description | |||
"Time duration from now until sending the next KeepAlive | "Time duration from now until sending the next KeepAlive | |||
message."; | message."; | |||
} | } | |||
container received-peer-state { | container received-peer-state { | |||
config false; | config false; | |||
description | description | |||
"Operational state information learned from the peer."; | "Operational state information learned from the peer."; | |||
uses graceful-restart-attributes-per-peer; | uses graceful-restart-attributes-per-peer; | |||
container capability { | container capability { | |||
description "Peer capability information."; | description | |||
"Peer capability information."; | ||||
container end-of-lib { | container end-of-lib { | |||
description | description | |||
"Peer's end-of-lib capability."; | "Peer's end-of-lib capability."; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if peer's end-of-lib capability is enabled."; | "'true' if peer's end-of-lib capability is enabled."; | |||
} | } | |||
} | } | |||
container typed-wildcard-fec { | container typed-wildcard-fec { | |||
skipping to change at line 681 ¶ | skipping to change at line 669 ¶ | |||
"Peer's upstream label assignment capability."; | "Peer's upstream label assignment capability."; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if peer's upstream label assignment is | "'true' if peer's upstream label assignment is | |||
enabled."; | enabled."; | |||
} | } | |||
} | } | |||
} // capability | } // capability | |||
} // received-peer-state | } // received-peer-state | |||
container session-holdtime { | container session-holdtime { | |||
config false; | config false; | |||
description "Session holdtime state."; | description | |||
"Session holdtime state."; | ||||
leaf peer { | leaf peer { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
description "Peer holdtime."; | description | |||
"Peer holdtime."; | ||||
} | } | |||
leaf negotiated { | leaf negotiated { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
description "Negotiated holdtime."; | description | |||
"Negotiated holdtime."; | ||||
} | } | |||
leaf remaining { | leaf remaining { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
description "Remaining holdtime."; | description | |||
"Remaining holdtime."; | ||||
} | } | |||
} // session-holdtime | } // session-holdtime | |||
leaf session-state { | leaf session-state { | |||
type enumeration { | type enumeration { | |||
enum non-existent { | enum non-existent { | |||
description "NON EXISTENT state. Transport disconnected."; | description | |||
"NON EXISTENT state. Transport disconnected."; | ||||
} | } | |||
enum initialized { | enum initialized { | |||
description "INITIALIZED state."; | description | |||
"INITIALIZED state."; | ||||
} | } | |||
enum openrec { | enum openrec { | |||
description "OPENREC state."; | description | |||
"OPENREC state."; | ||||
} | } | |||
enum opensent { | enum opensent { | |||
description "OPENSENT state."; | description | |||
"OPENSENT state."; | ||||
} | } | |||
enum operational { | enum operational { | |||
description "OPERATIONAL state."; | description | |||
"OPERATIONAL state."; | ||||
} | } | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"Representing the operational status of the LDP session."; | "Representing the operational status of the LDP session."; | |||
reference | reference | |||
"RFC 5036: LDP Specification, Sec. 2.5.4."; | "RFC 5036: LDP Specification, Sec. 2.5.4."; | |||
} | } | |||
container tcp-connection { | container tcp-connection { | |||
config false; | config false; | |||
description "TCP connection state."; | description | |||
"TCP connection state."; | ||||
leaf local-address { | leaf local-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Local address."; | description | |||
"Local address."; | ||||
} | } | |||
leaf local-port { | leaf local-port { | |||
type inet:port-number; | type inet:port-number; | |||
description "Local port number."; | description | |||
"Local port number."; | ||||
} | } | |||
leaf remote-address { | leaf remote-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Remote address."; | description | |||
"Remote address."; | ||||
} | } | |||
leaf remote-port { | leaf remote-port { | |||
type inet:port-number; | type inet:port-number; | |||
description "Remote port number."; | description | |||
"Remote port number."; | ||||
} | } | |||
} // tcp-connection | } // tcp-connection | |||
leaf up-time { | leaf up-time { | |||
type rt-types:timeticks64; | type rt-types:timeticks64; | |||
config false; | config false; | |||
description | description | |||
"The number of time ticks (hundredths of a second) since the | "The number of time ticks (hundredths of a second) since the | |||
state of the session with the peer changed to | state of the session with the peer changed to | |||
OPERATIONAL."; | OPERATIONAL."; | |||
} | } | |||
container statistics { | container statistics { | |||
config false; | config false; | |||
description | description | |||
"Statistics objects."; | "Statistics objects."; | |||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The time on the most recent occasion at which any one or | "The time on the most recent occasion at which any one or | |||
more of this interface's counters suffered a | more of this interface's counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the last re-initialization of the local management | since the last re-initialization of the local management | |||
subsystem, then this node contains the time the local | subsystem, then this node contains the time the local | |||
management subsystem re-initialized itself."; | management subsystem re-initialized itself."; | |||
skipping to change at line 773 ¶ | skipping to change at line 769 ¶ | |||
type yang:date-and-time; | type yang:date-and-time; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The time on the most recent occasion at which any one or | "The time on the most recent occasion at which any one or | |||
more of this interface's counters suffered a | more of this interface's counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the last re-initialization of the local management | since the last re-initialization of the local management | |||
subsystem, then this node contains the time the local | subsystem, then this node contains the time the local | |||
management subsystem re-initialized itself."; | management subsystem re-initialized itself."; | |||
} | } | |||
container received { | container received { | |||
description "Inbound statistics."; | description | |||
"Inbound statistics."; | ||||
uses statistics-peer-received-sent; | uses statistics-peer-received-sent; | |||
} | } | |||
container sent { | container sent { | |||
description "Outbound statistics."; | description | |||
"Outbound statistics."; | ||||
uses statistics-peer-received-sent; | uses statistics-peer-received-sent; | |||
} | } | |||
leaf total-addresses { | leaf total-addresses { | |||
type uint32; | type uint32; | |||
description | description | |||
"The number of learned addresses."; | "The number of learned addresses."; | |||
} | } | |||
leaf total-labels { | leaf total-labels { | |||
type uint32; | type uint32; | |||
description | description | |||
"The number of learned labels."; | "The number of learned labels."; | |||
} | } | |||
skipping to change at line 881 ¶ | skipping to change at line 877 ¶ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol" { | + "rt:control-plane-protocol" { | |||
when "derived-from-or-self(rt:type, 'ldp:mpls-ldp')" { | when "derived-from-or-self(rt:type, 'ldp:mpls-ldp')" { | |||
description | description | |||
"This augmentation is only valid for a control plane | "This augmentation is only valid for a control plane | |||
protocol instance of LDP (type 'mpls-ldp')."; | protocol instance of LDP (type 'mpls-ldp')."; | |||
} | } | |||
description | description | |||
"LDP augmentation to routing control plane protocol | "LDP augmentation to routing control plane protocol | |||
configuration and state."; | configuration and state."; | |||
container mpls-ldp { | container mpls-ldp { | |||
must "not (../../rt:control-plane-protocol" | must "not (../../rt:control-plane-protocol" | |||
+ "[derived-from-or-self(rt:type, 'ldp:mpls-ldp')]" | + "[derived-from-or-self(rt:type, 'ldp:mpls-ldp')]" | |||
+ "[rt:name!=current()/../rt:name])" | + "[rt:name!=current()/../rt:name])" { | |||
{ | description | |||
description "Only one LDP instance is allowed."; | "Only one LDP instance is allowed."; | |||
} | } | |||
description | description | |||
"Containing configuration and operational data for the LDP | "Containing configuration and operational data for the LDP | |||
protocol."; | protocol."; | |||
container global { | container global { | |||
description | description | |||
"Global attributes for LDP."; | "Global attributes for LDP."; | |||
container capability { | container capability { | |||
description | description | |||
"Containing the LDP capability data. The container is | "Containing the LDP capability data. The container is | |||
used for augmentations."; | used for augmentations."; | |||
reference | reference | |||
"RFC 5036: LDP Specification, Sec. 1.5."; | "RFC 5036: LDP Specification, Sec. 1.5."; | |||
} | } | |||
container graceful-restart { | container graceful-restart { | |||
description | description | |||
"Attributes for graceful restart."; | "Attributes for graceful restart."; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"Enable or disable graceful restart."; | "Enable or disable graceful restart."; | |||
} | } | |||
leaf reconnect-time { | leaf reconnect-time { | |||
type uint16 { | type uint16 { | |||
range 10..1800; | range "10..1800"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default 120; | default "120"; | |||
description | description | |||
"Specifies the time interval that the remote LDP peer | "Specifies the time interval that the remote LDP peer | |||
must wait for the local LDP peer to reconnect after | must wait for the local LDP peer to reconnect after | |||
the remote peer detects the LDP communication | the remote peer detects the LDP communication | |||
failure."; | failure."; | |||
} | } | |||
leaf recovery-time { | leaf recovery-time { | |||
type uint16 { | type uint16 { | |||
range 30..3600; | range "30..3600"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default 120; | default "120"; | |||
description | description | |||
"Specifies the time interval, in seconds, that the | "Specifies the time interval, in seconds, that the | |||
remote LDP peer preserves its MPLS forwarding state | remote LDP peer preserves its MPLS forwarding state | |||
after receiving the Initialization message from the | after receiving the Initialization message from the | |||
restarted local LDP peer."; | restarted local LDP peer."; | |||
} | } | |||
leaf forwarding-holdtime { | leaf forwarding-holdtime { | |||
type uint16 { | type uint16 { | |||
range 30..3600; | range "30..3600"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default 180; | default "180"; | |||
description | description | |||
"Specifies the time interval, in seconds, before the | "Specifies the time interval, in seconds, before the | |||
termination of the recovery phase."; | termination of the recovery phase."; | |||
} | } | |||
} // graceful-restart | } // graceful-restart | |||
leaf lsr-id { | leaf lsr-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"Specifies the value to act as the LDP LSR ID. | "Specifies the value to act as the LDP LSR ID. | |||
If this attribute is not specified, LDP uses the router | If this attribute is not specified, LDP uses the router | |||
ID as determined by the system."; | ID as determined by the system."; | |||
} | } | |||
container address-families { | container address-families { | |||
description | description | |||
"Per-address-family configuration and operational state. | "Per-address-family configuration and operational state. | |||
The address family can be either IPv4 or IPv6."; | The address family can be either IPv4 or IPv6."; | |||
container ipv4 { | container ipv4 { | |||
presence | presence "Present if IPv4 is enabled, unless the 'enabled' | |||
"Present if IPv4 is enabled, unless the 'enabled' | leaf is set to 'false'."; | |||
leaf is set to 'false'."; | ||||
description | description | |||
"Containing data related to the IPv4 address family."; | "Containing data related to the IPv4 address family."; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
default true; | default "true"; | |||
description | description | |||
"'false' to disable the address family."; | "'false' to disable the address family."; | |||
} | } | |||
leaf label-distribution-control-mode { | leaf label-distribution-control-mode { | |||
type enumeration { | type enumeration { | |||
enum independent { | enum independent { | |||
description | description | |||
"Independent label distribution control."; | "Independent label distribution control."; | |||
} | } | |||
enum ordered { | enum ordered { | |||
description | description | |||
"Ordered label distribution control."; | "Ordered label distribution control."; | |||
} | } | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"Label distribution control mode."; | "Label distribution control mode."; | |||
reference | reference | |||
"RFC 5036: LDP Specification, Sec. 2.6."; | "RFC 5036: LDP Specification, Sec. 2.6."; | |||
} | } | |||
// ipv4 bindings | // ipv4 bindings | |||
container bindings { | container bindings { | |||
config false; | config false; | |||
description | description | |||
"LDP address and label binding information."; | "LDP address and label binding information."; | |||
list address { | list address { | |||
key "address"; | key "address"; | |||
description | description | |||
"List of address bindings learned by LDP."; | "List of address bindings learned by LDP."; | |||
leaf address { | leaf address { | |||
skipping to change at line 1030 ¶ | skipping to change at line 1014 ¶ | |||
"The prefix FEC value in the FEC-label binding, | "The prefix FEC value in the FEC-label binding, | |||
learned in a Label Mapping message received from | learned in a Label Mapping message received from | |||
or advertised to a peer."; | or advertised to a peer."; | |||
} | } | |||
uses binding-label-state-attributes; | uses binding-label-state-attributes; | |||
} | } | |||
} // bindings | } // bindings | |||
} // ipv4 | } // ipv4 | |||
} // address-families | } // address-families | |||
} // global | } // global | |||
container discovery { | container discovery { | |||
description | description | |||
"Neighbor-discovery configuration and operational state."; | "Neighbor-discovery configuration and operational state."; | |||
container interfaces { | container interfaces { | |||
description | description | |||
"A list of interfaces for LDP Basic Discovery."; | "A list of interfaces for LDP Basic Discovery."; | |||
reference | reference | |||
"RFC 5036: LDP Specification, Sec. 2.4.1."; | "RFC 5036: LDP Specification, Sec. 2.4.1."; | |||
uses basic-discovery-timers { | uses basic-discovery-timers { | |||
refine "hello-holdtime" { | refine "hello-holdtime" { | |||
default 15; | default "15"; | |||
} | } | |||
refine "hello-interval" { | refine "hello-interval" { | |||
default 5; | default "5"; | |||
} | } | |||
} | } | |||
list interface { | list interface { | |||
key "name"; | key "name"; | |||
description | description | |||
"List of LDP interfaces used for LDP Basic Discovery."; | "List of LDP interfaces used for LDP Basic Discovery."; | |||
uses ldp-interface-ref; | uses ldp-interface-ref; | |||
leaf next-hello { | leaf next-hello { | |||
type uint16; | type uint16; | |||
units seconds; | units "seconds"; | |||
config false; | config false; | |||
description "Time to send the next Hello message."; | description | |||
"Time to send the next Hello message."; | ||||
} | } | |||
container address-families { | container address-families { | |||
description | description | |||
"Container for address families."; | "Container for address families."; | |||
container ipv4 { | container ipv4 { | |||
presence | presence "Present if IPv4 is enabled, unless the 'enabled' | |||
"Present if IPv4 is enabled, unless the 'enabled' | leaf is set to 'false'."; | |||
leaf is set to 'false'."; | ||||
description | description | |||
"IPv4 address family."; | "IPv4 address family."; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
default true; | default "true"; | |||
description | description | |||
"Set to false to disable the address family on | "Set to false to disable the address family on | |||
the interface."; | the interface."; | |||
} | } | |||
container hello-adjacencies { | container hello-adjacencies { | |||
config false; | config false; | |||
description | description | |||
"Containing a list of Hello adjacencies."; | "Containing a list of Hello adjacencies."; | |||
list hello-adjacency { | list hello-adjacency { | |||
key "adjacent-address"; | key "adjacent-address"; | |||
config false; | config false; | |||
description "List of Hello adjacencies."; | description | |||
"List of Hello adjacencies."; | ||||
leaf adjacent-address { | leaf adjacent-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Neighbor address of the Hello adjacency."; | "Neighbor address of the Hello adjacency."; | |||
} | } | |||
uses adjacency-state-attributes; | uses adjacency-state-attributes; | |||
uses ldp-peer-ref-from-interface; | uses ldp-peer-ref-from-interface; | |||
} | } | |||
} | } | |||
} // ipv4 | } // ipv4 | |||
} // address-families | } // address-families | |||
} // interface | } // interface | |||
} // interfaces | } // interfaces | |||
container targeted { | ||||
container targeted | ||||
{ | ||||
description | description | |||
"A list of targeted neighbors for extended discovery."; | "A list of targeted neighbors for extended discovery."; | |||
leaf hello-holdtime { | leaf hello-holdtime { | |||
type uint16 { | type uint16 { | |||
range 15..3600; | range "15..3600"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default 45; | default "45"; | |||
description | description | |||
"The time interval for which an LDP targeted Hello | "The time interval for which an LDP targeted Hello | |||
adjacency is maintained in the absence of targeted | adjacency is maintained in the absence of targeted | |||
Hello messages from an LDP neighbor."; | Hello messages from an LDP neighbor."; | |||
} | } | |||
leaf hello-interval { | leaf hello-interval { | |||
type uint16 { | type uint16 { | |||
range 5..3600; | range "5..3600"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default 15; | default "15"; | |||
description | description | |||
"The interval between consecutive LDP targeted Hello | "The interval between consecutive LDP targeted Hello | |||
messages used in extended LDP discovery."; | messages used in extended LDP discovery."; | |||
} | } | |||
container hello-accept { | container hello-accept { | |||
description | description | |||
"LDP policy to control the acceptance of extended | "LDP policy to control the acceptance of extended | |||
neighbor-discovery Hello messages."; | neighbor-discovery Hello messages."; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"'true' to accept; 'false' to deny."; | "'true' to accept; 'false' to deny."; | |||
} | } | |||
} | } | |||
container address-families { | container address-families { | |||
description | description | |||
"Container for address families."; | "Container for address families."; | |||
container ipv4 { | container ipv4 { | |||
presence | presence "Present if IPv4 is enabled."; | |||
"Present if IPv4 is enabled."; | ||||
description | description | |||
"IPv4 address family."; | "IPv4 address family."; | |||
container hello-adjacencies { | container hello-adjacencies { | |||
config false; | config false; | |||
description | description | |||
"Containing a list of Hello adjacencies."; | "Containing a list of Hello adjacencies."; | |||
list hello-adjacency { | list hello-adjacency { | |||
key "local-address adjacent-address"; | key "local-address adjacent-address"; | |||
description "List of Hello adjacencies."; | description | |||
"List of Hello adjacencies."; | ||||
leaf local-address { | leaf local-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Local address of the Hello adjacency."; | "Local address of the Hello adjacency."; | |||
} | } | |||
leaf adjacent-address { | leaf adjacent-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Neighbor address of the Hello adjacency."; | "Neighbor address of the Hello adjacency."; | |||
} | } | |||
skipping to change at line 1173 ¶ | skipping to change at line 1139 ¶ | |||
leaf local-address { | leaf local-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Local address of the Hello adjacency."; | "Local address of the Hello adjacency."; | |||
} | } | |||
leaf adjacent-address { | leaf adjacent-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Neighbor address of the Hello adjacency."; | "Neighbor address of the Hello adjacency."; | |||
} | } | |||
uses adjacency-state-attributes; | uses adjacency-state-attributes; | |||
uses ldp-peer-ref-from-target; | uses ldp-peer-ref-from-target; | |||
} | } | |||
} | } | |||
list target { | list target { | |||
key "adjacent-address"; | key "adjacent-address"; | |||
description | description | |||
"Targeted discovery params."; | "Targeted discovery params."; | |||
leaf adjacent-address { | leaf adjacent-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Configures a remote LDP neighbor for the | "Configures a remote LDP neighbor for the | |||
extended LDP discovery."; | extended LDP discovery."; | |||
} | } | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
default true; | default "true"; | |||
description | description | |||
"'true' to enable the target."; | "'true' to enable the target."; | |||
} | } | |||
leaf local-address { | leaf local-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"The local address used as the source address to | "The local address used as the source address to | |||
send targeted Hello messages. | send targeted Hello messages. | |||
If the value is not specified, the | If the value is not specified, the | |||
transport address is used as the source | transport address is used as the source | |||
skipping to change at line 1211 ¶ | skipping to change at line 1173 ¶ | |||
send targeted Hello messages. | send targeted Hello messages. | |||
If the value is not specified, the | If the value is not specified, the | |||
transport address is used as the source | transport address is used as the source | |||
address."; | address."; | |||
} | } | |||
} // target | } // target | |||
} // ipv4 | } // ipv4 | |||
} // address-families | } // address-families | |||
} // targeted | } // targeted | |||
} // discovery | } // discovery | |||
container peers { | container peers { | |||
description | description | |||
"Peers configuration attributes."; | "Peers configuration attributes."; | |||
uses peer-authentication; | uses peer-authentication; | |||
uses peer-attributes { | uses peer-attributes { | |||
refine session-ka-holdtime { | refine "session-ka-holdtime" { | |||
default 180; | default "180"; | |||
} | } | |||
refine session-ka-interval { | refine "session-ka-interval" { | |||
default 60; | default "60"; | |||
} | } | |||
} | } | |||
list peer { | list peer { | |||
key "lsr-id label-space-id"; | key "lsr-id label-space-id"; | |||
description | description | |||
"List of peers."; | "List of peers."; | |||
leaf lsr-id { | leaf lsr-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"The LSR ID of the peer, used to identify the globally | "The LSR ID of the peer, used to identify the globally | |||
unique LSR. This is the first four octets of the LDP | unique LSR. This is the first four octets of the LDP | |||
ID. This leaf is used together with the leaf | ID. This leaf is used together with the leaf | |||
'label-space-id' to form the LDP ID."; | 'label-space-id' to form the LDP ID."; | |||
reference | reference | |||
"RFC 5036: LDP Specification, Sec. 2.2.2."; | "RFC 5036: LDP Specification, Sec. 2.2.2."; | |||
} | } | |||
skipping to change at line 1251 ¶ | skipping to change at line 1209 ¶ | |||
leaf label-space-id { | leaf label-space-id { | |||
type uint16; | type uint16; | |||
description | description | |||
"The Label Space ID of the peer, used to identify a | "The Label Space ID of the peer, used to identify a | |||
specific label space within the LSR. This is the last | specific label space within the LSR. This is the last | |||
two octets of the LDP ID. This leaf is used together | two octets of the LDP ID. This leaf is used together | |||
with the leaf 'lsr-id' to form the LDP ID."; | with the leaf 'lsr-id' to form the LDP ID."; | |||
reference | reference | |||
"RFC 5036: LDP Specification, Sec. 2.2.2."; | "RFC 5036: LDP Specification, Sec. 2.2.2."; | |||
} | } | |||
uses peer-authentication; | uses peer-authentication; | |||
container address-families { | container address-families { | |||
description | description | |||
"Per-vrf per-af params."; | "Per-vrf per-af params."; | |||
container ipv4 { | container ipv4 { | |||
presence | presence "Present if IPv4 is enabled."; | |||
"Present if IPv4 is enabled."; | ||||
description | description | |||
"IPv4 address family."; | "IPv4 address family."; | |||
container hello-adjacencies { | container hello-adjacencies { | |||
config false; | config false; | |||
description | description | |||
"Containing a list of Hello adjacencies."; | "Containing a list of Hello adjacencies."; | |||
list hello-adjacency { | list hello-adjacency { | |||
key "local-address adjacent-address"; | key "local-address adjacent-address"; | |||
description "List of Hello adjacencies."; | description | |||
"List of Hello adjacencies."; | ||||
leaf local-address { | leaf local-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Local address of the Hello adjacency."; | "Local address of the Hello adjacency."; | |||
} | } | |||
leaf adjacent-address { | leaf adjacent-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Neighbor address of the Hello adjacency."; | "Neighbor address of the Hello adjacency."; | |||
} | } | |||
skipping to change at line 1282 ¶ | skipping to change at line 1235 ¶ | |||
leaf local-address { | leaf local-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Local address of the Hello adjacency."; | "Local address of the Hello adjacency."; | |||
} | } | |||
leaf adjacent-address { | leaf adjacent-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Neighbor address of the Hello adjacency."; | "Neighbor address of the Hello adjacency."; | |||
} | } | |||
uses adjacency-state-attributes; | uses adjacency-state-attributes; | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description "Interface for this adjacency."; | description | |||
"Interface for this adjacency."; | ||||
} | } | |||
} | } | |||
} | } | |||
} // ipv4 | } // ipv4 | |||
} // address-families | } // address-families | |||
uses peer-state-derived; | uses peer-state-derived; | |||
} // list peer | } // list peer | |||
} // peers | } // peers | |||
} // container mpls-ldp | } | |||
} | } | |||
/* | /* | |||
* RPCs | * RPCs | |||
*/ | */ | |||
rpc mpls-ldp-clear-peer { | rpc mpls-ldp-clear-peer { | |||
description | description | |||
"Clears the session to the peer."; | "Clears the session to the peer."; | |||
input { | input { | |||
uses ldp-peer-ref-absolute { | uses ldp-peer-ref-absolute { | |||
description | description | |||
"The LDP peer to be cleared. If this is not provided, | "The LDP peer to be cleared. If this is not provided, | |||
then all peers are cleared. | then all peers are cleared. | |||
The peer is identified by its LDP ID, which consists of | The peer is identified by its LDP ID, which consists of | |||
the LSR ID and the Label Space ID."; | the LSR ID and the Label Space ID."; | |||
skipping to change at line 1328 ¶ | skipping to change at line 1280 ¶ | |||
description | description | |||
"Clears the Hello adjacency."; | "Clears the Hello adjacency."; | |||
input { | input { | |||
container hello-adjacency { | container hello-adjacency { | |||
description | description | |||
"Link adjacency or targeted adjacency. If this is not | "Link adjacency or targeted adjacency. If this is not | |||
provided, then all Hello adjacencies are cleared."; | provided, then all Hello adjacencies are cleared."; | |||
leaf protocol-name { | leaf protocol-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
description | description | |||
"The name of the LDP protocol instance."; | "The name of the LDP protocol instance."; | |||
} | } | |||
choice hello-adjacency-type { | choice hello-adjacency-type { | |||
description "Adjacency type."; | description | |||
"Adjacency type."; | ||||
case targeted { | case targeted { | |||
container targeted { | container targeted { | |||
presence "Present to clear targeted adjacencies."; | presence "Present to clear targeted adjacencies."; | |||
description | description | |||
"Clear targeted adjacencies."; | "Clear targeted adjacencies."; | |||
leaf target-address { | leaf target-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"The target address. If this is not provided, then | "The target address. If this is not provided, then | |||
all targeted adjacencies are cleared."; | all targeted adjacencies are cleared."; | |||
skipping to change at line 1356 ¶ | skipping to change at line 1309 ¶ | |||
} | } | |||
} | } | |||
case link { | case link { | |||
container link { | container link { | |||
presence "Present to clear link adjacencies."; | presence "Present to clear link adjacencies."; | |||
description | description | |||
"Clear link adjacencies."; | "Clear link adjacencies."; | |||
leaf next-hop-interface { | leaf next-hop-interface { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/mpls-ldp/discovery/" | + "rt:control-plane-protocol/mpls-ldp/discovery/" | |||
+ "interfaces/interface/name"; | + "interfaces/interface/name"; | |||
} | } | |||
description | description | |||
"Interface connecting to a next hop. If this is | "Interface connecting to a next hop. If this is | |||
not provided, then all link adjacencies are | not provided, then all link adjacencies are | |||
cleared."; | cleared."; | |||
} | } | |||
leaf next-hop-address { | leaf next-hop-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
must "../next-hop-interface" { | must '../next-hop-interface' { | |||
description | description | |||
"Applicable when an interface is specified."; | "Applicable when an interface is specified."; | |||
} | } | |||
description | description | |||
"IP address of a next hop. If this is not | "IP address of a next hop. If this is not | |||
provided, then adjacencies to all next hops on the | provided, then adjacencies to all next hops on the | |||
given interface are cleared."; | given interface are cleared."; | |||
} | } | |||
} | } | |||
} | } | |||
skipping to change at line 1401 ¶ | skipping to change at line 1354 ¶ | |||
cleared. | cleared. | |||
The peer is identified by its LDP ID, which consists of | The peer is identified by its LDP ID, which consists of | |||
the LSR ID and the Label Space ID."; | the LSR ID and the Label Space ID."; | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
notification mpls-ldp-peer-event { | ||||
notification mpls-ldp-peer-event { | ||||
description | description | |||
"Notification event for a change of LDP peer operational | "Notification event for a change of LDP peer operational | |||
status."; | status."; | |||
leaf event-type { | leaf event-type { | |||
type oper-status-event-type; | type oper-status-event-type; | |||
description "Event type."; | description | |||
"Event type."; | ||||
} | } | |||
container peer { | container peer { | |||
description | description | |||
"Reference to an LDP peer, by the LDP ID, which consists of | "Reference to an LDP peer, by the LDP ID, which consists of | |||
the LSR ID and the Label Space ID."; | the LSR ID and the Label Space ID."; | |||
uses ldp-peer-ref-absolute; | uses ldp-peer-ref-absolute; | |||
} | } | |||
} | } | |||
notification mpls-ldp-hello-adjacency-event { | notification mpls-ldp-hello-adjacency-event { | |||
description | description | |||
"Notification event for a change of LDP adjacency operational | "Notification event for a change of LDP adjacency operational | |||
status."; | status."; | |||
leaf event-type { | leaf event-type { | |||
type oper-status-event-type; | type oper-status-event-type; | |||
description "Event type."; | description | |||
"Event type."; | ||||
} | } | |||
leaf protocol-name { | leaf protocol-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
description | description | |||
"The name of the LDP protocol instance."; | "The name of the LDP protocol instance."; | |||
} | } | |||
choice hello-adjacency-type { | choice hello-adjacency-type { | |||
description | description | |||
"Interface or targeted adjacency."; | "Interface or targeted adjacency."; | |||
case targeted { | case targeted { | |||
container targeted { | container targeted { | |||
description | description | |||
skipping to change at line 1459 ¶ | skipping to change at line 1414 ¶ | |||
container link { | container link { | |||
description | description | |||
"Link adjacency through LDP basic discovery."; | "Link adjacency through LDP basic discovery."; | |||
leaf next-hop-interface { | leaf next-hop-interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"The interface connecting to the adjacent next hop."; | "The interface connecting to the adjacent next hop."; | |||
} | } | |||
leaf next-hop-address { | leaf next-hop-address { | |||
type inet:ip-address; | type inet:ip-address; | |||
must "../next-hop-interface" { | must '../next-hop-interface' { | |||
description | description | |||
"Applicable when an interface is specified."; | "Applicable when an interface is specified."; | |||
} | } | |||
description | description | |||
"IP address of the next hop. This can be IPv4 or IPv6 | "IP address of the next hop. This can be IPv4 or IPv6 | |||
address."; | address."; | |||
} | } | |||
} | } | |||
} | } | |||
} // hello-adjacency-type | } // hello-adjacency-type | |||
} // mpls-ldp-hello-adjacency-event | } // mpls-ldp-hello-adjacency-event | |||
notification mpls-ldp-fec-event { | notification mpls-ldp-fec-event { | |||
description | description | |||
"Notification event for a change of FEC status."; | "Notification event for a change of FEC status."; | |||
leaf event-type { | leaf event-type { | |||
type oper-status-event-type; | type oper-status-event-type; | |||
description "Event type."; | description | |||
"Event type."; | ||||
} | } | |||
leaf protocol-name { | leaf protocol-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
description | description | |||
"The name of the LDP protocol instance."; | "The name of the LDP protocol instance."; | |||
} | } | |||
leaf fec { | leaf fec { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"The address prefix element of the FEC whose status | "The address prefix element of the FEC whose status | |||
has changed."; | has changed."; | |||
} | } | |||
End of changes. 186 change blocks. | ||||
226 lines changed or deleted | 186 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/ |