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/