summaryrefslogtreecommitdiffstats
path: root/actn-interface-tools/actn-model/src/main/yang/ietf-te-topology@2020-08-06.yang
diff options
context:
space:
mode:
Diffstat (limited to 'actn-interface-tools/actn-model/src/main/yang/ietf-te-topology@2020-08-06.yang')
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-te-topology@2020-08-06.yang1952
1 files changed, 1952 insertions, 0 deletions
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-te-topology@2020-08-06.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-te-topology@2020-08-06.yang
new file mode 100644
index 0000000..abce181
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-te-topology@2020-08-06.yang
@@ -0,0 +1,1952 @@
+module ietf-te-topology {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology";
+ prefix tet;
+
+ import ietf-yang-types {
+ prefix yang;
+ //reference
+ // "RFC 6991: Common YANG Data Types";
+ }
+ import ietf-inet-types {
+ prefix inet;
+ //reference
+ //"RFC 6991: Common YANG Data Types";
+ }
+ import ietf-te-types {
+ prefix te-types;
+ //reference
+ //"RFC 8776: Common YANG Data Types for Traffic Engineering";
+ }
+ import ietf-network {
+ prefix nw;
+ //reference
+ //"RFC 8345: A YANG Data Model for Network Topologies";
+ }
+ import ietf-network-topology {
+ prefix nt;
+ //reference
+ //"RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ organization
+ "IETF Traffic Engineering Architecture and Signaling (TEAS)
+ Working Group";
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/teas/>
+ WG List: <mailto:teas@ietf.org>
+
+ Editor: Xufeng Liu
+ <mailto:xufeng.liu.ietf@gmail.com>
+
+ Editor: Igor Bryskin
+ <mailto:i_bryskin@yahoo.com>
+
+ Editor: Vishnu Pavan Beeram
+ <mailto:vbeeram@juniper.net>
+
+ Editor: Tarek Saad
+ <mailto:tsaad@juniper.net>
+
+ Editor: Himanshu Shah
+ <mailto:hshah@ciena.com>
+
+ Editor: Oscar Gonzalez de Dios
+ <mailto:oscar.gonzalezdedios@telefonica.com>";
+ description
+ "This YANG module defines a TE topology model for representing,
+ retrieving, and manipulating technology-agnostic TE topologies.
+
+ Copyright (c) 2020 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject to
+ the license terms contained in, the Simplified BSD License set
+ forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8795; see the
+ RFC itself for full legal notices.";
+
+ revision 2020-08-06 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 8795: YANG Data Model for Traffic Engineering (TE)
+ Topologies";
+ }
+
+ /*
+ * Features
+ */
+
+ feature nsrlg {
+ description
+ "This feature indicates that the system supports NSRLGs
+ (Non-Shared Risk Link Groups).";
+ }
+
+ feature te-topology-hierarchy {
+ description
+ "This feature indicates that the system allows an underlay
+ and/or overlay TE topology hierarchy.";
+ }
+
+ feature template {
+ description
+ "This feature indicates that the system supports
+ template configuration.";
+ }
+
+ /*
+ * Typedefs
+ */
+
+ typedef geographic-coordinate-degree {
+ type decimal64 {
+ fraction-digits 8;
+ }
+ description
+ "Decimal degree (DD) used to express latitude and longitude
+ geographic coordinates.";
+ }
+ // geographic-coordinate-degree
+
+ typedef te-info-source {
+ type enumeration {
+ enum unknown {
+ description
+ "The source is unknown.";
+ }
+ enum locally-configured {
+ description
+ "Configured entity.";
+ }
+ enum ospfv2 {
+ description
+ "OSPFv2.";
+ }
+ enum ospfv3 {
+ description
+ "OSPFv3.";
+ }
+ enum isis {
+ description
+ "IS-IS.";
+ }
+ enum bgp-ls {
+ description
+ "BGP-LS.";
+ reference
+ "RFC 7752: North-Bound Distribution of Link-State and
+ Traffic Engineering (TE) Information Using BGP";
+ }
+ enum system-processed {
+ description
+ "System-processed entity.";
+ }
+ enum other {
+ description
+ "Other source.";
+ }
+ }
+ description
+ "Describes the type of source that has provided the
+ related information, and the source's credibility.";
+ }
+ // te-info-source
+
+ /*
+ * Groupings
+ */
+
+ grouping connectivity-matrix-entry-path-attributes {
+ description
+ "Attributes of a connectivity matrix entry.";
+ leaf is-allowed {
+ type boolean;
+ description
+ "'true' - switching is allowed;
+ 'false' - switching is disallowed.";
+ }
+ container underlay {
+ if-feature "te-topology-hierarchy";
+ description
+ "Attributes of the TE link underlay.";
+ reference
+ "RFC 4206: Label Switched Paths (LSP) Hierarchy with
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ Traffic Engineering (TE)";
+ uses te-link-underlay-attributes;
+ }
+ uses te-types:generic-path-constraints;
+ uses te-types:generic-path-optimization;
+ uses te-types:generic-path-properties;
+ }
+ // connectivity-matrix-entry-path-attributes
+
+ grouping geolocation-container {
+ description
+ "Contains a GPS location.";
+ container geolocation {
+ config false;
+ description
+ "Contains a GPS location.";
+ leaf altitude {
+ type int64;
+ units "millimeters";
+ description
+ "Distance above sea level.";
+ }
+ leaf latitude {
+ type geographic-coordinate-degree {
+ range "-90..90";
+ }
+ description
+ "Relative position north or south on the Earth's surface.";
+ }
+ leaf longitude {
+ type geographic-coordinate-degree {
+ range "-180..180";
+ }
+ description
+ "Angular distance east or west on the Earth's surface.";
+ }
+ }
+ // geolocation
+ }
+ // geolocation-container
+
+ grouping information-source-state-attributes {
+ description
+ "The attributes identifying the source that has provided the
+ related information, and the source's credibility.";
+ leaf credibility-preference {
+ type uint16;
+ description
+ "The preference value for calculating the Traffic
+ Engineering database credibility value used for
+ tie-break selection between different information-source
+ values. A higher value is preferable.";
+ }
+ leaf logical-network-element {
+ type string;
+ description
+ "When applicable, this is the name of a logical network
+ element from which the information is learned.";
+ }
+ leaf network-instance {
+ type string;
+ description
+ "When applicable, this is the name of a network instance
+ from which the information is learned.";
+ }
+ }
+ // information-source-state-attributes
+
+ grouping information-source-per-link-attributes {
+ description
+ "Per-node container of the attributes identifying the source
+ that has provided the related information, and the source's
+ credibility.";
+ leaf information-source {
+ type te-info-source;
+ config false;
+ description
+ "Indicates the type of information source.";
+ }
+ leaf information-source-instance {
+ type string;
+ config false;
+ description
+ "The name indicating the instance of the information
+ source.";
+ }
+ container information-source-state {
+ config false;
+ description
+ "Contains state attributes related to the information
+ source.";
+ uses information-source-state-attributes;
+ container topology {
+ description
+ "When the information is processed by the system,
+ the attributes in this container indicate which topology
+ is used to generate the result information.";
+ uses nt:link-ref;
+ }
+ }
+ }
+ // information-source-per-link-attributes
+
+ grouping information-source-per-node-attributes {
+ description
+ "Per-node container of the attributes identifying the source
+ that has provided the related information, and the source's
+ credibility.";
+ leaf information-source {
+ type te-info-source;
+ config false;
+ description
+ "Indicates the type of information source.";
+ }
+ leaf information-source-instance {
+ type string;
+ config false;
+ description
+ "The name indicating the instance of the information
+ source.";
+ }
+ container information-source-state {
+ config false;
+ description
+ "Contains state attributes related to the information
+ source.";
+ uses information-source-state-attributes;
+ container topology {
+ description
+ "When the information is processed by the system,
+ the attributes in this container indicate which topology
+ is used to generate the result information.";
+ uses nw:node-ref;
+ }
+ }
+ }
+ // information-source-per-node-attributes
+
+ grouping interface-switching-capability-list {
+ description
+ "List of Interface Switching Capability Descriptors (ISCDs).";
+ list interface-switching-capability {
+ key "switching-capability encoding";
+ description
+ "List of ISCDs for this link.";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description
+ RFC 4203: OSPF Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS)";
+ leaf switching-capability {
+ type identityref {
+ base te-types:switching-capabilities;
+ }
+ description
+ "Switching capability for this interface.";
+ }
+ leaf encoding {
+ type identityref {
+ base te-types:lsp-encoding-types;
+ }
+ description
+ "Encoding supported by this interface.";
+ }
+ uses te-link-iscd-attributes;
+ }
+ // interface-switching-capability
+ }
+ // interface-switching-capability-list
+
+ grouping statistics-per-link {
+ description
+ "Statistics attributes per TE link.";
+ leaf discontinuity-time {
+ type yang:date-and-time;
+ description
+ "The time of the most recent occasion at which any one or
+ more of this interface's counters suffered a
+ discontinuity. If no such discontinuities have occurred
+ since the last re-initialization of the local management
+ subsystem, then this node contains the time the local
+ management subsystem re-initialized itself.";
+ }
+ /* Administrative attributes */
+ leaf disables {
+ type yang:counter32;
+ description
+ "Number of times that a link was disabled.";
+ }
+ leaf enables {
+ type yang:counter32;
+ description
+ "Number of times that a link was enabled.";
+ }
+ leaf maintenance-clears {
+ type yang:counter32;
+ description
+ "Number of times that a link was taken out of maintenance.";
+ }
+ leaf maintenance-sets {
+ type yang:counter32;
+ description
+ "Number of times that a link was put in maintenance.";
+ }
+ leaf modifies {
+ type yang:counter32;
+ description
+ "Number of times that a link was modified.";
+ }
+ /* Operational attributes */
+ leaf downs {
+ type yang:counter32;
+ description
+ "Number of times that a link was set to an operational state
+ of 'down'.";
+ }
+ leaf ups {
+ type yang:counter32;
+ description
+ "Number of times that a link was set to an operational state
+ of 'up'.";
+ }
+ /* Recovery attributes */
+ leaf fault-clears {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced a fault-clear
+ event.";
+ }
+ leaf fault-detects {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced fault detection.";
+ }
+ leaf protection-switches {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced protection
+ switchover.";
+ }
+ leaf protection-reverts {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced protection
+ reversion.";
+ }
+ leaf restoration-failures {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced restoration
+ failure.";
+ }
+ leaf restoration-starts {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced restoration
+ start.";
+ }
+ leaf restoration-successes {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced restoration
+ success.";
+ }
+ leaf restoration-reversion-failures {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced restoration
+ reversion failure.";
+ }
+ leaf restoration-reversion-starts {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced restoration
+ reversion start.";
+ }
+ leaf restoration-reversion-successes {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced restoration
+ reversion success.";
+ }
+ }
+ // statistics-per-link
+
+ grouping statistics-per-node {
+ description
+ "Statistics attributes per TE node.";
+ leaf discontinuity-time {
+ type yang:date-and-time;
+ description
+ "The time of the most recent occasion at which any one or
+ more of this interface's counters suffered a
+ discontinuity. If no such discontinuities have occurred
+ since the last re-initialization of the local management
+ subsystem, then this node contains the time the local
+ management subsystem re-initialized itself.";
+ }
+ container node {
+ description
+ "Contains statistics attributes at the TE node level.";
+ leaf disables {
+ type yang:counter32;
+ description
+ "Number of times that a node was disabled.";
+ }
+ leaf enables {
+ type yang:counter32;
+ description
+ "Number of times that a node was enabled.";
+ }
+ leaf maintenance-sets {
+ type yang:counter32;
+ description
+ "Number of times that a node was put in maintenance.";
+ }
+ leaf maintenance-clears {
+ type yang:counter32;
+ description
+ "Number of times that a node was taken out of
+ maintenance.";
+ }
+ leaf modifies {
+ type yang:counter32;
+ description
+ "Number of times that a node was modified.";
+ }
+ }
+ // node
+ container connectivity-matrix-entry {
+ description
+ "Contains statistics attributes at the level of a
+ connectivity matrix entry.";
+ leaf creates {
+ type yang:counter32;
+ description
+ "Number of times that a connectivity matrix entry was
+ created.";
+ reference
+ "RFC 6241: Network Configuration Protocol (NETCONF),
+ Section 7.2, 'create' operation";
+ }
+ leaf deletes {
+ type yang:counter32;
+ description
+ "Number of times that a connectivity matrix entry was
+ deleted.";
+ reference
+ "RFC 6241: Network Configuration Protocol (NETCONF),
+ Section 7.2, 'delete' operation";
+ }
+ leaf disables {
+ type yang:counter32;
+ description
+ "Number of times that a connectivity matrix entry was
+ disabled.";
+ }
+ leaf enables {
+ type yang:counter32;
+ description
+ "Number of times that a connectivity matrix entry was
+ enabled.";
+ }
+ leaf modifies {
+ type yang:counter32;
+ description
+ "Number of times that a connectivity matrix entry was
+ modified.";
+ }
+ }
+ // connectivity-matrix-entry
+ }
+ // statistics-per-node
+
+ grouping statistics-per-ttp {
+ description
+ "Statistics attributes per TE TTP (Tunnel Termination Point).";
+ leaf discontinuity-time {
+ type yang:date-and-time;
+ description
+ "The time of the most recent occasion at which any one or
+ more of this interface's counters suffered a
+ discontinuity. If no such discontinuities have occurred
+ since the last re-initialization of the local management
+ subsystem, then this node contains the time the local
+ management subsystem re-initialized itself.";
+ }
+ container tunnel-termination-point {
+ description
+ "Contains statistics attributes at the TE TTP level.";
+ /* Administrative attributes */
+ leaf disables {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was disabled.";
+ }
+ leaf enables {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was enabled.";
+ }
+ leaf maintenance-clears {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was taken out of maintenance.";
+ }
+ leaf maintenance-sets {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was put in maintenance.";
+ }
+ leaf modifies {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was modified.";
+ }
+ /* Operational attributes */
+ leaf downs {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was set to an operational state
+ of 'down'.";
+ }
+ leaf ups {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was set to an operational state
+ of 'up'.";
+ }
+ leaf in-service-clears {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was taken out of service
+ (TE tunnel was released).";
+ }
+ leaf in-service-sets {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was put in service by a TE
+ tunnel (TE tunnel was set up).";
+ }
+ }
+ // tunnel-termination-point
+ container local-link-connectivity {
+ description
+ "Contains statistics attributes at the TE LLCL (Local Link
+ Connectivity List) level.";
+ leaf creates {
+ type yang:counter32;
+ description
+ "Number of times that an LLCL entry was created.";
+ reference
+ "RFC 6241: Network Configuration Protocol (NETCONF),
+ Section 7.2, 'create' operation";
+ }
+ leaf deletes {
+ type yang:counter32;
+ description
+ "Number of times that an LLCL entry was deleted.";
+ reference
+ "RFC 6241: Network Configuration Protocol (NETCONF),
+ Section 7.2, 'delete' operation";
+ }
+ leaf disables {
+ type yang:counter32;
+ description
+ "Number of times that an LLCL entry was disabled.";
+ }
+ leaf enables {
+ type yang:counter32;
+ description
+ "Number of times that an LLCL entry was enabled.";
+ }
+ leaf modifies {
+ type yang:counter32;
+ description
+ "Number of times that an LLCL entry was modified.";
+ }
+ }
+ // local-link-connectivity
+ }
+ // statistics-per-ttp
+
+ grouping te-link-augment {
+ description
+ "Augmentation for a TE link.";
+ uses te-link-config;
+ uses te-link-state-derived;
+ container statistics {
+ config false;
+ description
+ "Statistics data.";
+ uses statistics-per-link;
+ }
+ }
+ // te-link-augment
+
+ grouping te-link-config {
+ description
+ "TE link configuration grouping.";
+ choice bundle-stack-level {
+ description
+ "The TE link can be partitioned into bundled links or
+ component links.";
+ case bundle {
+ container bundled-links {
+ description
+ "A set of bundled links.";
+ reference
+ "RFC 4201: Link Bundling in MPLS Traffic
+ Engineering (TE)";
+ list bundled-link {
+ key "sequence";
+ description
+ "Specifies a bundled interface that is
+ further partitioned.";
+ leaf sequence {
+ type uint32;
+ description
+ "Identifies the sequence in the bundle.";
+ }
+ }
+ }
+ }
+ case component {
+ container component-links {
+ description
+ "A set of component links.";
+ list component-link {
+ key "sequence";
+ description
+ "Specifies a component interface that is
+ sufficient to unambiguously identify the
+ appropriate resources.";
+ leaf sequence {
+ type uint32;
+ description
+ "Identifies the sequence in the bundle.";
+ }
+ leaf src-interface-ref {
+ type string;
+ description
+ "Reference to a component link interface on the
+ source node.";
+ }
+ leaf des-interface-ref {
+ type string;
+ description
+ "Reference to a component link interface on the
+ destination node.";
+ }
+ }
+ }
+ }
+ }
+ // bundle-stack-level
+ leaf-list te-link-template {
+ if-feature "template";
+ type leafref {
+ path "../../../../te/templates/link-template/name";
+ }
+ description
+ "The reference to a TE link template.";
+ }
+ uses te-link-config-attributes;
+ }
+ // te-link-config
+
+ grouping te-link-config-attributes {
+ description
+ "Link configuration attributes in a TE topology.";
+ container te-link-attributes {
+ description
+ "Link attributes in a TE topology.";
+ leaf access-type {
+ type te-types:te-link-access-type;
+ description
+ "Link access type, which can be point-to-point or
+ multi-access.";
+ }
+ container external-domain {
+ description
+ "For an inter-domain link, specifies the attributes of
+ the remote end of the link, to facilitate the signaling at
+ the local end.";
+ uses nw:network-ref;
+ leaf remote-te-node-id {
+ type te-types:te-node-id;
+ description
+ "Remote TE node identifier, used together with
+ 'remote-te-link-tp-id' to identify the remote Link
+ Termination Point (LTP) in a different domain.";
+ }
+ leaf remote-te-link-tp-id {
+ type te-types:te-tp-id;
+ description
+ "Remote TE LTP identifier, used together with
+ 'remote-te-node-id' to identify the remote LTP in a
+ different domain.";
+ }
+ }
+ leaf is-abstract {
+ type empty;
+ description
+ "Present if the link is abstract.";
+ }
+ leaf name {
+ type string;
+ description
+ "Link name.";
+ }
+ container underlay {
+ if-feature "te-topology-hierarchy";
+ description
+ "Attributes of the TE link underlay.";
+ reference
+ "RFC 4206: Label Switched Paths (LSP) Hierarchy with
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ Traffic Engineering (TE)";
+ uses te-link-underlay-attributes;
+ }
+ leaf admin-status {
+ type te-types:te-admin-status;
+ description
+ "The administrative state of the link.";
+ }
+ uses te-link-info-attributes;
+ }
+ // te-link-attributes
+ }
+ // te-link-config-attributes
+
+ grouping te-link-info-attributes {
+ description
+ "Advertised TE information attributes.";
+ leaf link-index {
+ type uint64;
+ description
+ "The link identifier. If OSPF is used, this object
+ represents an ospfLsdbID. If IS-IS is used, this object
+ represents an isisLSPID. If a locally configured link is
+ used, this object represents a unique value, which is
+ locally defined in a router.";
+ }
+ leaf administrative-group {
+ type te-types:admin-groups;
+ description
+ "Administrative group or color of the link.
+ This attribute covers both administrative groups (defined
+ in RFCs 3630 and 5305) and Extended Administrative Groups
+ (defined in RFC 7308).";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2
+ RFC 5305: IS-IS Extensions for Traffic Engineering
+ RFC 7308: Extended Administrative Groups in MPLS Traffic
+ Engineering (MPLS-TE)";
+ }
+ uses interface-switching-capability-list;
+ uses te-types:label-set-info;
+ leaf link-protection-type {
+ type identityref {
+ base te-types:link-protection-type;
+ }
+ description
+ "Link Protection Type desired for this link.";
+ reference
+ "RFC 4202: Routing Extensions in Support of
+ Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+ container max-link-bandwidth {
+ uses te-types:te-bandwidth;
+ description
+ "Maximum bandwidth that can be seen on this link in this
+ direction. Units are in bytes per second.";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2
+ RFC 5305: IS-IS Extensions for Traffic Engineering";
+ }
+ container max-resv-link-bandwidth {
+ uses te-types:te-bandwidth;
+ description
+ "Maximum amount of bandwidth that can be reserved in this
+ direction in this link. Units are in bytes per second.";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2
+ RFC 5305: IS-IS Extensions for Traffic Engineering";
+ }
+ list unreserved-bandwidth {
+ key "priority";
+ max-elements 8;
+ description
+ "Unreserved bandwidth for priority levels 0-7. Units are in
+ bytes per second.";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2
+ RFC 5305: IS-IS Extensions for Traffic Engineering";
+ leaf priority {
+ type uint8 {
+ range "0..7";
+ }
+ description
+ "Priority.";
+ }
+ uses te-types:te-bandwidth;
+ }
+ leaf te-default-metric {
+ type uint32;
+ description
+ "Traffic Engineering metric.";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2
+ RFC 5305: IS-IS Extensions for Traffic Engineering";
+ }
+ leaf te-delay-metric {
+ type uint32;
+ description
+ "Traffic Engineering delay metric.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
+ }
+ leaf te-igp-metric {
+ type uint32;
+ description
+ "IGP metric used for Traffic Engineering.";
+ reference
+ "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
+ second MPLS Traffic Engineering (TE) Metric";
+ }
+ container te-srlgs {
+ description
+ "Contains a list of SRLGs.";
+ leaf-list value {
+ type te-types:srlg;
+ description
+ "SRLG value.";
+ reference
+ "RFC 4202: Routing Extensions in Support of
+ Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+ }
+ container te-nsrlgs {
+ if-feature "nsrlg";
+ description
+ "Contains a list of NSRLGs (Non-Shared Risk Link Groups).
+ When an abstract TE link is configured, this list specifies
+ the request that underlay TE paths need to be mutually
+ disjoint with other TE links in the same groups.";
+ leaf-list id {
+ type uint32;
+ description
+ "NSRLG ID, uniquely configured within a topology.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ Recovery";
+ }
+ }
+ }
+ // te-link-info-attributes
+
+ grouping te-link-iscd-attributes {
+ description
+ "TE link ISCD attributes.";
+ reference
+ "RFC 4203: OSPF Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS), Section 1.4";
+ list max-lsp-bandwidth {
+ key "priority";
+ max-elements 8;
+ description
+ "Maximum Label Switched Path (LSP) bandwidth at
+ priorities 0-7.";
+ leaf priority {
+ type uint8 {
+ range "0..7";
+ }
+ description
+ "Priority.";
+ }
+ uses te-types:te-bandwidth;
+ }
+ }
+ // te-link-iscd-attributes
+
+ grouping te-link-state-derived {
+ description
+ "Link state attributes in a TE topology.";
+ leaf oper-status {
+ type te-types:te-oper-status;
+ config false;
+ description
+ "The current operational state of the link.";
+ }
+ leaf is-transitional {
+ type empty;
+ config false;
+ description
+ "Present if the link is transitional; used as an
+ alternative approach in lieu of 'inter-layer-lock-id'
+ for path computation in a TE topology covering multiple
+ layers or multiple regions.";
+ reference
+ "RFC 5212: Requirements for GMPLS-Based Multi-Region and
+ Multi-Layer Networks (MRN/MLN)
+ RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+ }
+ uses information-source-per-link-attributes;
+ list information-source-entry {
+ key "information-source information-source-instance";
+ config false;
+ description
+ "A list of information sources learned, including the source
+ that is used.";
+ uses information-source-per-link-attributes;
+ uses te-link-info-attributes;
+ }
+ container recovery {
+ config false;
+ description
+ "Status of the recovery process.";
+ leaf restoration-status {
+ type te-types:te-recovery-status;
+ description
+ "Restoration status.";
+ }
+ leaf protection-status {
+ type te-types:te-recovery-status;
+ description
+ "Protection status.";
+ }
+ }
+ container underlay {
+ if-feature "te-topology-hierarchy";
+ config false;
+ description
+ "State attributes for the TE link underlay.";
+ leaf dynamic {
+ type boolean;
+ description
+ "'true' if the underlay is dynamically created.";
+ }
+ leaf committed {
+ type boolean;
+ description
+ "'true' if the underlay is committed.";
+ }
+ }
+ }
+ // te-link-state-derived
+
+ grouping te-link-underlay-attributes {
+ description
+ "Attributes for the TE link underlay.";
+ reference
+ "RFC 4206: Label Switched Paths (LSP) Hierarchy with
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ Traffic Engineering (TE)";
+ leaf enabled {
+ type boolean;
+ description
+ "'true' if the underlay is enabled.
+ 'false' if the underlay is disabled.";
+ }
+ container primary-path {
+ description
+ "The service path on the underlay topology that
+ supports this link.";
+ uses nw:network-ref;
+ list path-element {
+ key "path-element-id";
+ description
+ "A list of path elements describing the service path.";
+ leaf path-element-id {
+ type uint32;
+ description
+ "To identify the element in a path.";
+ }
+ uses te-path-element;
+ }
+ }
+ // primary-path
+ list backup-path {
+ key "index";
+ description
+ "A list of backup service paths on the underlay topology that
+ protect the underlay primary path. If the primary path is
+ not protected, the list contains zero elements. If the
+ primary path is protected, the list contains one or more
+ elements.";
+ leaf index {
+ type uint32;
+ description
+ "A sequence number to identify a backup path.";
+ }
+ uses nw:network-ref;
+ list path-element {
+ key "path-element-id";
+ description
+ "A list of path elements describing the backup service
+ path.";
+ leaf path-element-id {
+ type uint32;
+ description
+ "To identify the element in a path.";
+ }
+ uses te-path-element;
+ }
+ }
+ // backup-path
+ leaf protection-type {
+ type identityref {
+ base te-types:lsp-protection-type;
+ }
+ description
+ "Underlay protection type desired for this link.";
+ }
+ container tunnel-termination-points {
+ description
+ "Underlay TTPs desired for this link.";
+ leaf source {
+ type binary;
+ description
+ "Source TTP identifier.";
+ }
+ leaf destination {
+ type binary;
+ description
+ "Destination TTP identifier.";
+ }
+ }
+ container tunnels {
+ description
+ "Underlay TE tunnels supporting this TE link.";
+ leaf sharing {
+ type boolean;
+ default "true";
+ description
+ "'true' if the underlay tunnel can be shared with other
+ TE links;
+ 'false' if the underlay tunnel is dedicated to this
+ TE link.
+ This leaf is the default option for all TE tunnels
+ and may be overridden by the per-TE-tunnel value.";
+ }
+ list tunnel {
+ key "tunnel-name";
+ description
+ "Zero, one, or more underlay TE tunnels that support this
+ TE link.";
+ leaf tunnel-name {
+ type string;
+ description
+ "A tunnel name uniquely identifies an underlay TE tunnel,
+ used together with the 'source-node' value for this
+ link.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+ }
+ leaf sharing {
+ type boolean;
+ description
+ "'true' if the underlay tunnel can be shared with other
+ TE links;
+ 'false' if the underlay tunnel is dedicated to this
+ TE link.";
+ }
+ }
+ // tunnel
+ }
+ // tunnels
+ }
+ // te-link-underlay-attributes
+
+ grouping te-node-augment {
+ description
+ "Augmentation for a TE node.";
+ uses te-node-config;
+ uses te-node-state-derived;
+ container statistics {
+ config false;
+ description
+ "Statistics data.";
+ uses statistics-per-node;
+ }
+ list tunnel-termination-point {
+ key "tunnel-tp-id";
+ description
+ "A termination point can terminate a tunnel.";
+ leaf tunnel-tp-id {
+ type binary;
+ description
+ "TTP identifier.";
+ }
+ uses te-node-tunnel-termination-point-config;
+ leaf oper-status {
+ type te-types:te-oper-status;
+ config false;
+ description
+ "The current operational state of the TTP.";
+ }
+ uses geolocation-container;
+ container statistics {
+ config false;
+ description
+ "Statistics data.";
+ uses statistics-per-ttp;
+ }
+ // Relationship to other TTPs
+ list supporting-tunnel-termination-point {
+ key "node-ref tunnel-tp-ref";
+ description
+ "Identifies the TTPs on which this TTP depends.";
+ leaf node-ref {
+ type inet:uri;
+ description
+ "This leaf identifies the node in which the supporting
+ TTP is present.
+ This node is either the supporting node or a node in
+ an underlay topology.";
+ }
+ leaf tunnel-tp-ref {
+ type binary;
+ description
+ "Reference to a TTP that is in either the supporting node
+ or a node in an underlay topology.";
+ }
+ }
+ // supporting-tunnel-termination-point
+ }
+ // tunnel-termination-point
+ }
+ // te-node-augment
+
+ grouping te-node-config {
+ description
+ "TE node configuration grouping.";
+ leaf-list te-node-template {
+ if-feature "template";
+ type leafref {
+ path "../../../../te/templates/node-template/name";
+ }
+ description
+ "The reference to a TE node template.";
+ }
+ uses te-node-config-attributes;
+ }
+ // te-node-config
+
+ grouping te-node-config-attributes {
+ description
+ "Configuration node attributes in a TE topology.";
+ container te-node-attributes {
+ description
+ "Contains node attributes in a TE topology.";
+ leaf admin-status {
+ type te-types:te-admin-status;
+ description
+ "The administrative state of the link.";
+ }
+ uses te-node-connectivity-matrices;
+ uses te-node-info-attributes;
+ }
+ }
+ // te-node-config-attributes
+
+ grouping te-node-config-attributes-template {
+ description
+ "Configuration node attributes for a template in a TE
+ topology.";
+ container te-node-attributes {
+ description
+ "Contains node attributes in a TE topology.";
+ leaf admin-status {
+ type te-types:te-admin-status;
+ description
+ "The administrative state of the link.";
+ }
+ uses te-node-info-attributes;
+ }
+ }
+ // te-node-config-attributes-template
+
+ grouping te-node-connectivity-matrices {
+ description
+ "Connectivity matrix on a TE node.";
+ container connectivity-matrices {
+ description
+ "Contains a connectivity matrix on a TE node.";
+ leaf number-of-entries {
+ type uint16;
+ description
+ "The number of connectivity matrix entries.
+ If this number is specified in the configuration request,
+ the number is the requested number of entries, which may
+ not all be listed in the list;
+ if this number is reported in the state data,
+ the number is the current number of operational entries.";
+ }
+ uses te-types:label-set-info;
+ uses connectivity-matrix-entry-path-attributes;
+ list connectivity-matrix {
+ key "id";
+ description
+ "Represents a node's switching limitations, i.e.,
+ limitations in the interconnecting network TE links
+ across the node.";
+ reference
+ "RFC 7579: General Network Element Constraint Encoding
+ for GMPLS-Controlled Networks";
+ leaf id {
+ type uint32;
+ description
+ "Identifies the connectivity matrix entry.";
+ }
+ }
+ // connectivity-matrix
+ }
+ // connectivity-matrices
+ }
+ // te-node-connectivity-matrices
+
+ grouping te-node-connectivity-matrix-attributes {
+ description
+ "Termination point references of a connectivity matrix entry.";
+ container from {
+ description
+ "Reference to a source LTP.";
+ leaf tp-ref {
+ type leafref {
+ path "../../../../../../nt:termination-point/nt:tp-id";
+ }
+ description
+ "Relative reference to a termination point.";
+ }
+ uses te-types:label-set-info;
+ }
+ container to {
+ description
+ "Reference to a destination LTP.";
+ leaf tp-ref {
+ type leafref {
+ path "../../../../../../nt:termination-point/nt:tp-id";
+ }
+ description
+ "Relative reference to a termination point.";
+ }
+ uses te-types:label-set-info;
+ }
+ uses connectivity-matrix-entry-path-attributes;
+ }
+ // te-node-connectivity-matrix-attributes
+
+ grouping te-node-info-attributes {
+ description
+ "Advertised TE information attributes.";
+ leaf domain-id {
+ type uint32;
+ description
+ "Identifies the domain to which this node belongs.
+ This attribute is used to support inter-domain links.";
+ reference
+ "RFC 5152: A Per-Domain Path Computation Method for
+ Establishing Inter-Domain Traffic Engineering (TE)
+ Label Switched Paths (LSPs)
+ RFC 5316: ISIS Extensions in Support of Inter-Autonomous
+ System (AS) MPLS and GMPLS Traffic Engineering
+ RFC 5392: OSPF Extensions in Support of Inter-Autonomous
+ System (AS) MPLS and GMPLS Traffic Engineering";
+ }
+ leaf is-abstract {
+ type empty;
+ description
+ "Present if the node is abstract; not present if the node
+ is actual.";
+ }
+ leaf name {
+ type string;
+ description
+ "Node name.";
+ }
+ leaf-list signaling-address {
+ type inet:ip-address;
+ description
+ "The node's signaling address.";
+ }
+ container underlay-topology {
+ if-feature "te-topology-hierarchy";
+ description
+ "When an abstract node encapsulates a topology, the
+ attributes in this container point to said topology.";
+ uses nw:network-ref;
+ }
+ }
+ // te-node-info-attributes
+
+ grouping te-node-state-derived {
+ description
+ "Node state attributes in a TE topology.";
+ leaf oper-status {
+ type te-types:te-oper-status;
+ config false;
+ description
+ "The current operational state of the node.";
+ }
+ uses geolocation-container;
+ leaf is-multi-access-dr {
+ type empty;
+ config false;
+ description
+ "The presence of this attribute indicates that this TE node
+ is a pseudonode elected as a designated router.";
+ reference
+ "RFC 1195: Use of OSI IS-IS for Routing in TCP/IP and Dual
+ Environments
+ RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2";
+ }
+ uses information-source-per-node-attributes;
+ list information-source-entry {
+ key "information-source information-source-instance";
+ config false;
+ description
+ "A list of information sources learned, including the source
+ that is used.";
+ uses information-source-per-node-attributes;
+ uses te-node-connectivity-matrices;
+ uses te-node-info-attributes;
+ }
+ }
+ // te-node-state-derived
+
+ grouping te-node-tunnel-termination-point-config {
+ description
+ "Termination capability of a TTP on a TE node.";
+ uses te-node-tunnel-termination-point-config-attributes;
+ container local-link-connectivities {
+ description
+ "Contains an LLCL for a TTP on a TE node.";
+ leaf number-of-entries {
+ type uint16;
+ description
+ "The number of LLCL entries.
+ If this number is specified in the configuration request,
+ the number is the requested number of entries, which may
+ not all be listed in the list;
+ if this number is reported in the state data,
+ the number is the current number of operational entries.";
+ }
+ uses te-types:label-set-info;
+ uses connectivity-matrix-entry-path-attributes;
+ }
+ }
+ // te-node-tunnel-termination-point-config
+
+ grouping te-node-tunnel-termination-point-config-attributes {
+ description
+ "Configuration attributes of a TTP on a TE node.";
+ leaf admin-status {
+ type te-types:te-admin-status;
+ description
+ "The administrative state of the TTP.";
+ }
+ leaf name {
+ type string;
+ description
+ "A descriptive name for the TTP.";
+ }
+ leaf switching-capability {
+ type identityref {
+ base te-types:switching-capabilities;
+ }
+ description
+ "Switching capability for this interface.";
+ }
+ leaf encoding {
+ type identityref {
+ base te-types:lsp-encoding-types;
+ }
+ description
+ "Encoding supported by this interface.";
+ }
+ leaf-list inter-layer-lock-id {
+ type uint32;
+ description
+ "Inter-layer lock ID, used for path computation in a TE
+ topology covering multiple layers or multiple regions.";
+ reference
+ "RFC 5212: Requirements for GMPLS-Based Multi-Region and
+ Multi-Layer Networks (MRN/MLN)
+ RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+ }
+ leaf protection-type {
+ type identityref {
+ base te-types:lsp-protection-type;
+ }
+ description
+ "The protection type that this TTP is capable of.";
+ }
+ container client-layer-adaptation {
+ description
+ "Contains capability information to support a client-layer
+ adaptation in a multi-layer topology.";
+ list switching-capability {
+ key "switching-capability encoding";
+ description
+ "List of supported switching capabilities.";
+ reference
+ "RFC 4202: Routing Extensions in Support of
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+ leaf switching-capability {
+ type identityref {
+ base te-types:switching-capabilities;
+ }
+ description
+ "Switching capability for the client-layer adaptation.";
+ }
+ leaf encoding {
+ type identityref {
+ base te-types:lsp-encoding-types;
+ }
+ description
+ "Encoding supported by the client-layer adaptation.";
+ }
+ uses te-types:te-bandwidth;
+ }
+ }
+ }
+ // te-node-tunnel-termination-point-config-attributes
+
+ grouping te-node-tunnel-termination-point-llc-list {
+ description
+ "LLCL of a TTP on a TE node.";
+ list local-link-connectivity {
+ key "link-tp-ref";
+ description
+ "The termination capabilities between the TTP and the LTP.
+ This capability information can be used to compute
+ the tunnel path.
+ The Interface Adjustment Capability Descriptors (IACDs)
+ (defined in RFC 6001) on each LTP can be derived from
+ this list.";
+ reference
+ "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+ leaf link-tp-ref {
+ type leafref {
+ path "../../../../../nt:termination-point/nt:tp-id";
+ }
+ description
+ "LTP.";
+ }
+ uses te-types:label-set-info;
+ uses connectivity-matrix-entry-path-attributes;
+ }
+ }
+ // te-node-tunnel-termination-point-llc-list
+
+ grouping te-path-element {
+ description
+ "A group of attributes defining an element in a TE path,
+ such as a TE node, TE link, TE atomic resource, or label.";
+ uses te-types:explicit-route-hop;
+ }
+ // te-path-element
+
+ grouping te-termination-point-augment {
+ description
+ "Augmentation for a TE termination point.";
+ leaf te-tp-id {
+ type te-types:te-tp-id;
+ description
+ "An identifier that uniquely identifies a TE termination
+ point.";
+ }
+ container te {
+ must '../te-tp-id';
+ presence "TE support";
+ description
+ "Indicates TE support.";
+ uses te-termination-point-config;
+ leaf oper-status {
+ type te-types:te-oper-status;
+ config false;
+ description
+ "The current operational state of the LTP.";
+ }
+ uses geolocation-container;
+ }
+ }
+ // te-termination-point-augment
+
+ grouping te-termination-point-config {
+ description
+ "TE termination point configuration grouping.";
+ leaf admin-status {
+ type te-types:te-admin-status;
+ description
+ "The administrative state of the LTP.";
+ }
+ leaf name {
+ type string;
+ description
+ "A descriptive name for the LTP.";
+ }
+ uses interface-switching-capability-list;
+ leaf inter-domain-plug-id {
+ type binary;
+ description
+ "A network-wide unique number that identifies on the
+ network a connection that supports a given inter-domain
+ TE link. This is a more flexible alternative to specifying
+ 'remote-te-node-id' and 'remote-te-link-tp-id' on a TE link
+ when the provider either does not know 'remote-te-node-id'
+ and 'remote-te-link-tp-id' or needs to give the client the
+ flexibility to mix and match multiple topologies.";
+ }
+ leaf-list inter-layer-lock-id {
+ type uint32;
+ description
+ "Inter-layer lock ID, used for path computation in a TE
+ topology covering multiple layers or multiple regions.";
+ reference
+ "RFC 5212: Requirements for GMPLS-Based Multi-Region and
+ Multi-Layer Networks (MRN/MLN)
+ RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+ }
+ }
+ // te-termination-point-config
+
+ grouping te-topologies-augment {
+ description
+ "Augmentation for TE topologies.";
+ container te {
+ presence "TE support";
+ description
+ "Indicates TE support.";
+ container templates {
+ description
+ "Configuration parameters for templates used for a TE
+ topology.";
+ list node-template {
+ if-feature "template";
+ key "name";
+ leaf name {
+ type te-types:te-template-name;
+ description
+ "The name to identify a TE node template.";
+ }
+ description
+ "The list of TE node templates used to define sharable
+ and reusable TE node attributes.";
+ uses template-attributes;
+ uses te-node-config-attributes-template;
+ }
+ // node-template
+ list link-template {
+ if-feature "template";
+ key "name";
+ leaf name {
+ type te-types:te-template-name;
+ description
+ "The name to identify a TE link template.";
+ }
+ description
+ "The list of TE link templates used to define sharable
+ and reusable TE link attributes.";
+ uses template-attributes;
+ uses te-link-config-attributes;
+ }
+ // link-template
+ }
+ // templates
+ }
+ // te
+ }
+ // te-topologies-augment
+
+ grouping te-topology-augment {
+ description
+ "Augmentation for a TE topology.";
+ uses te-types:te-topology-identifier;
+ container te {
+ must '../te-topology-identifier/provider-id'
+ + ' and ../te-topology-identifier/client-id'
+ + ' and ../te-topology-identifier/topology-id';
+ presence "TE support";
+ description
+ "Indicates TE support.";
+ uses te-topology-config;
+ uses geolocation-container;
+ }
+ }
+ // te-topology-augment
+
+ grouping te-topology-config {
+ description
+ "TE topology configuration grouping.";
+ leaf name {
+ type string;
+ description
+ "Name of the TE topology. This attribute is optional and can
+ be specified by the operator to describe the TE topology,
+ which can be useful when 'network-id' (RFC 8345) is not
+ descriptive and not modifiable because of being generated
+ by the system.";
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+ leaf preference {
+ type uint8 {
+ range "1..255";
+ }
+ description
+ "Specifies a preference for this topology. A lower number
+ indicates a higher preference.";
+ }
+ leaf optimization-criterion {
+ type identityref {
+ base te-types:objective-function-type;
+ }
+ description
+ "Optimization criterion applied to this topology.";
+ reference
+ "RFC 3272: Overview and Principles of Internet Traffic
+ Engineering";
+ }
+ list nsrlg {
+ if-feature "nsrlg";
+ key "id";
+ description
+ "List of NSRLGs (Non-Shared Risk Link Groups).";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ Recovery";
+ leaf id {
+ type uint32;
+ description
+ "Identifies the NSRLG entry.";
+ }
+ leaf disjointness {
+ type te-types:te-path-disjointness;
+ description
+ "The type of resource disjointness.";
+ }
+ }
+ // nsrlg
+ }
+ // te-topology-config
+
+ grouping template-attributes {
+ description
+ "Common attributes for all templates.";
+ leaf priority {
+ type uint16;
+ description
+ "The preference value for resolving conflicts between
+ different templates. When two or more templates specify
+ values for one configuration attribute, the value from the
+ template with the highest priority is used.
+ A lower number indicates a higher priority. The highest
+ priority is 0.";
+ }
+ leaf reference-change-policy {
+ type enumeration {
+ enum no-action {
+ description
+ "When an attribute changes in this template, the
+ configuration node referring to this template does
+ not take any action.";
+ }
+ enum not-allowed {
+ description
+ "When any configuration object has a reference to this
+ template, changing this template is not allowed.";
+ }
+ enum cascade {
+ description
+ "When an attribute changes in this template, the
+ configuration object referring to this template applies
+ the new attribute value to the corresponding
+ configuration.";
+ }
+ }
+ description
+ "This attribute specifies the action taken for a
+ configuration node that has a reference to this template.";
+ }
+ }
+ // template-attributes
+
+ /*
+ * Data nodes
+ */
+
+ augment "/nw:networks/nw:network/nw:network-types" {
+ description
+ "Introduces a new network type for a TE topology.";
+ container te-topology {
+ presence "Indicates a TE topology";
+ description
+ "Its presence identifies the TE topology type.";
+ }
+ }
+
+ augment "/nw:networks" {
+ description
+ "Augmentation parameters for TE topologies.";
+ uses te-topologies-augment;
+ }
+
+ augment "/nw:networks/nw:network" {
+ when 'nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Configuration parameters for a TE topology.";
+ uses te-topology-augment;
+ }
+
+ augment "/nw:networks/nw:network/nw:node" {
+ when '../nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Configuration parameters for TE at the node level.";
+ leaf te-node-id {
+ type te-types:te-node-id;
+ description
+ "The identifier of a node in the TE topology.
+ A node is specific to a topology to which it belongs.";
+ }
+ container te {
+ must '../te-node-id' {
+ description
+ "'te-node-id' is mandatory.";
+ }
+ must 'count(../nw:supporting-node)<=1' {
+ description
+ "For a node in a TE topology, there cannot be more
+ than one supporting node. If multiple nodes are
+ abstracted, the 'underlay-topology' field is used.";
+ }
+ presence "TE support";
+ description
+ "Indicates TE support.";
+ uses te-node-augment;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link" {
+ when '../nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Configuration parameters for TE at the link level.";
+ container te {
+ must 'count(../nt:supporting-link)<=1' {
+ description
+ "For a link in a TE topology, there cannot be more
+ than one supporting link. If one or more link paths are
+ abstracted, the underlay is used.";
+ }
+ presence "TE support";
+ description
+ "Indicates TE support.";
+ uses te-link-augment;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/"
+ + "nt:termination-point" {
+ when '../../nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Configuration parameters for TE at the termination point
+ level.";
+ uses te-termination-point-augment;
+ }
+ /** Decheng bypass exception
+ augment "/nw:networks/nw:network/nt:link/te/bundle-stack-level/"
+ + "bundle/bundled-links/bundled-link" {
+ when '../../../../nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Augmentation for a TE bundled link.";
+ leaf src-tp-ref {
+ type leafref {
+ path "../../../../../nw:node[nw:node-id = "
+ + "current()/../../../../nt:source/"
+ + "nt:source-node]/"
+ + "nt:termination-point/nt:tp-id";
+ require-instance true;
+ }
+ description
+ "Reference to another TE termination point on the
+ same source node.";
+ }
+ leaf des-tp-ref {
+ type leafref {
+ path "../../../../../nw:node[nw:node-id = "
+ + "current()/../../../../nt:destination/"
+ + "nt:dest-node]/"
+ + "nt:termination-point/nt:tp-id";
+ require-instance true;
+ }
+ description
+ "Reference to another TE termination point on the
+ same destination node.";
+ }
+ } **/
+
+ augment "/nw:networks/nw:network/nw:node/te/"
+ + "information-source-entry/connectivity-matrices/"
+ + "connectivity-matrix" {
+ when '../../../../../nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Augmentation for the TE node connectivity matrix.";
+ uses te-node-connectivity-matrix-attributes;
+ }
+
+ augment "/nw:networks/nw:network/nw:node/te/te-node-attributes/"
+ + "connectivity-matrices/connectivity-matrix" {
+ when '../../../../../nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Augmentation for the TE node connectivity matrix.";
+ uses te-node-connectivity-matrix-attributes;
+ }
+
+ augment "/nw:networks/nw:network/nw:node/te/"
+ + "tunnel-termination-point/local-link-connectivities" {
+ when '../../../../nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Augmentation for TE node TTP LLCs (Local Link
+ Connectivities).";
+ uses te-node-tunnel-termination-point-llc-list;
+ }
+}