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