<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.4.19 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC7950 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml">
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC7446 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7446.xml">
<!ENTITY RFC7699 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7699.xml">
<!ENTITY RFC6241 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml">
<!ENTITY I-D.ietf-teas-yang-te SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-teas-yang-te.xml">
<!ENTITY I-D.ietf-ccamp-flexigrid-yang SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ccamp-flexigrid-yang.xml">
<!ENTITY RFC9094 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9094.xml">
<!ENTITY RFC8040 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml">
<!ENTITY RFC8341 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8341.xml">
<!ENTITY RFC3688 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml">
<!ENTITY RFC6020 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6020.xml">
<!ENTITY RFC6163 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6163.xml">
<!ENTITY RFC7698 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7698.xml">
]>


<rfc ipr="trust200902" docName="draft-ietf-ccamp-wdm-tunnel-yang-05" category="std" consensus="true" submissionType="IETF">

  <front>
    <title abbrev="WDM Tunnel YANG Model">A YANG Data Model for WDM Tunnels</title>

    <author initials="A." surname="Guo" fullname="Aihua Guo">
      <organization>Futurewei Technologies</organization>
      <address>
        <email>aihuaguo.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="S." surname="Belotti" fullname="Sergio Belotti">
      <organization>Nokia</organization>
      <address>
        <email>Sergio.belotti@nokia.com</email>
      </address>
    </author>
    <author initials="G." surname="Galimberti" fullname="G. Galimberti">
      <organization>Individual</organization>
      <address>
        <email>ggalimbe56@gmail.com</email>
      </address>
    </author>
    <author initials="J.E.L.d.V." surname="Mendez" fullname="Jorge E. Lopez de Vergara Mendez">
      <organization>Naudit HPCN</organization>
      <address>
        <email>jorge.lopez_vergara@uam.es</email>
      </address>
    </author>
    <author initials="D.P." surname="Burrero" fullname="Daniel Perdices Burrero">
      <organization>Universidad Autonoma de Madrid</organization>
      <address>
        <email>daniel.perdices@uam.es</email>
      </address>
    </author>

    <date year="2025" month="July" day="03"/>

    <area>Routing</area>
    <workgroup>CCAMP Working Group</workgroup>
    <keyword>next generation</keyword> <keyword>unicorn</keyword> <keyword>sparkling distributed ledger</keyword>

    <abstract>


<t>This document defines a YANG data model for the provisioning and management of Traffic Engineering (TE) tunnels and Label Switched Paths (LSPs) in Optical Networks (Wavelength Switched Optical Networks (WSON) and Flexi-Grid Dense Wavelength Division Multiplexing (DWDM) Networks).</t>

<t>The YANG data model defined in this document conforms to the Network Management Datastore Architecture (NMDA).</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>Transport networks have evolved from traditional fixed-grid Wavelength Switched Optical Networks (WSON) <xref target="RFC6163"/> to more scalable and flexible elastic optical networks. These utilize flexi-grid Dense Wavelength Division Multiplexing (DWDM) technologies <xref target="RFC7698"/> to optimize bandwidth usage. Current DWDM Optical Network deployments may include fixed-grid WSON, flexi-grid DWDM, or a combination of both.</t>

<t>In the optical domain, a WDM tunnel typically originates and concludes at a pair of transponders using one or more transceivers dependent upon the data rate and encoding type of the transceivers. These transponders are then connected to an intermediate line system composed of optical switches and multiplexers, including Reconfigurable Optical Add-Drop Multiplexers (ROADMs) and add-drop multiplexers, complemented by optical amplifiers to boost the transmission distance. The optical wavelength can be routed from the transponder or an incoming fiber, through multiplexing, to various outgoing fibers in the DWDM network. At optical nodes, wavelengths may undergo conversion via optical-electrical-optical (OEO) regenerators, depending on the switching setup and fiber configuration.</t>

<t>Optical services, transmitted via analog signals, require careful provisioning across the network to maintain signal quality and prevent interference between different wavelength channels. The technology within optical nodes, like tunable transceivers or Colorless, Directionless and Contentionless Flexi-grid (CDC-F) ROADMs, introduces specific constraints that can limit WDM tunnel path options. These constraints must be factored into WDM tunnel provisioning and pre-computation. Additionally, assessing the end-to-end optical performance metrics like Generalized Signal-to-noise Ratio (G-SNR), Bit Error Rate (BER), and Q-factor is crucial to ensure transmission quality and receiver signal integrity.</t>

<t>This draft introduces a YANG <xref target="RFC7950"/> data model for setting up and managing TE tunnels and LSPs in DWDM Optical Networks. It aims to provide an intent-based interface used by a control entity such as a Software-defined Network (SDN) controller at its northbound to establish services between endpoints, typically optical transponders. Clients can utilize this model to either partially or fully delegate service provisioning to the SDN controller, while still capable to express additional constraints to guide its operation. Service provisioning can be as simple as identifying the source and destination transponders and delegate the rest of determination to the SDN controller, or as explicit as specifying a complete detailed path complete with tuned wavelengths and transceiver details.</t>

<t>This document identifies the WDM tunnel components, parameters and their values, and characterizes the features and the performances of the WDM elements. An application example is provided towards the end of the document to understand their utility better.</t>

</section>
<section anchor="conventions-and-definitions"><name>Conventions and Definitions</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL</bcp14>
NOT", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<t>The terminology for describing YANG data models is found in
<xref target="RFC7950"/>.</t>

<t>Refer to <xref target="RFC7446"/> and <xref target="RFC7699"/> for the key terms used in this document.</t>

<t>The following terms are defined in <xref target="RFC7950"/> and are not redefined here:
-  client</t>

<t><list style="symbols">
  <t>server</t>
  <t>augment</t>
  <t>data model</t>
  <t>data node</t>
</list></t>

<t>The following terms are defined in <xref target="RFC6241"/> and are not redefined here:
-  configuration data</t>

<t><list style="symbols">
  <t>state data</t>
</list></t>

</section>
<section anchor="overview"><name>Overview</name>

<t>The YANG data model in this draft builds upon the generic TE tunnel model from <xref target="I-D.ietf-teas-yang-te"/>. This base model is suitable for all TE-enabled networks and includes universal TE tunnel elements like node addresses, tunnel termination points (TTPs), and path-level constraints such as explicit path hops, label restrictions, and path diversity. The current model enhances <xref target="I-D.ietf-teas-yang-te"/> by incorporating WDM-specific attributes and constraints relevant to WDM tunnels, including definitions for:</t>

<t><list style="symbols">
  <t>Network-scope optical transceiver configuration constraints, e.g., operational modes, transceiver tuning constraints</t>
  <t>Network-scope WDM path routing policies for influencing WDM TE path selection. For exmaple,  whether or not using regenerator or wavelength conversion is allowed, whether or not wavelength retuing is allowed for tunable transceivers, etc.</t>
  <t>Network-scope optical performance constraints, e.g. the generalized Signal-to-noise (G-SNR) margin and delta power of a feasible optical path</t>
  <t>Path-scope WDM layer constraints and transceiver configurations for working and protection path within a WDM tunnel</t>
  <t>List of WDM nodes, links, and optical wavelength that constitute an end-to-end WDM path</t>
  <t>Other relevant optical attributes which characterize the optical signal</t>
</list></t>

<t>The attributes described above are optional, allowing the model to support both simplified and fully-explicit WDM tunnel provisioning to meet diverse client requirements.</t>

<t>Additionally, the YANG model provides the status of a WDM tunnel, which includes:</t>

<t><list style="symbols">
  <t>Computed paths for various roles such as working, protection, and restoration, indicating potential optical paths confirmed by the SDN controller via pre-computation.</t>
  <t>Actual LSPs for each tunnel path, representing the optical paths currently established in the network.</t>
</list></t>

<section anchor="integrated-vs-external-optical-transponder"><name>Integrated vs. External Optical Transponder</name>

<t>In optical networks built with traditional chassis-based DWDM optical equipment, optical transponder (OTs) are typically inserted into the chassis installed as cards. WDM tunnels are established between pairs of OTs, with the SDN controller serving as the central entity for provisioning and managing these tunnels.</t>

<t>In scenarios like data center interconnects (DCI), optical transponders may be externally mounted on a 'pizza box' and linked via dedicated fiber or wavelength multiplexer/demultiplexer to the optical line system. These external OTs could be managed by the same SDN controller or a different entity, such as an orchestrator. Consequently, a WDM tunnel might be composed of several segments joined to create a continuous end-to-end tunnel.</t>

<t>The YANG data model offers a cohesive interface for managing WDM tunnels and tunnel segments, irrespective of transponder location.</t>

</section>
</section>
<section anchor="example-of-use"><name>Example of Use</name>

<t>To illustrate the model's application, consider an optical network with various transponders, switches, and links. A depicted topology outlines two WDM tunnel scenarios. In the first, an end-to-end WDM tunnel (WDM Tunnel 1) comprises two physical paths (WDM Primary Path 1 and 2) linking two integrated optical transponders, Transponder A and E, through WSON and Flexi-grid nodes. The second scenario describes three WDM tunnel segments (WDM Tunnel Segment 2a to 2c) connecting two external OTs, External OT node X and Y, via the same nodes and links.</t>

<figure title="Topology Example" anchor="fig-topology-example"><artwork type="ascii-art"><![CDATA[
                              WDM Tunnel 1
        <===================================================>
                         WDM Primary Path 1
        <--------------------------------------------------->

            WDM Tunnel         WDM Tunnel      WDM Tunnel
            Segment 2a         Segment 2b      Segment 2c
        <=================><===============><===============>
   +----------+                                        +----------+
   | External |                                        | External |
   |    OT    |<----------+                +---------->|    OT    |
   |  node X  |           |                |           |  node Y  |
   +----------+           |                |           +----------+
                          |                |
                          |                |
   +----------+           |                |           +----------+
   |  Flexi-  |           |                |           |  Flexi-  |
   |   grid   |           |                |           |   grid   |
   |  node A  |           |                |           |  node E  |
   |          |        +--v---+        +---v--+        |          |
   |          | Link 1 |Flexi-| Link 2 | WSON | Link 3 |          |
   |          |<------>| grid |<------>|      |<------>|          |
   |......... |        |node B|        |node C|        | .........|
   | Trans- : |        +------+        +------+        | : Trans- |
   | ponder : |                                        | : ponder |
   |    A   : |                +------+                | :    E   |
   |........: |     Link 4     |Flexi-|     Link 5     | :........|
   |          |                | grid |                |          |
   |          |<-------------->|node D|<-------------->|          |
   |          |                +------+                |          |
   +----------+                                        +----------+

        <--------------------------------------------------->
                          WDM Secondary Path 1
]]></artwork></figure>

<t>To configure an end-to-end WDM tunnel to interconnect
transponders A and E, first of all we have to populate the
flexi-grid topology YANG model with all elements in the network:</t>

<t><list style="symbols">
  <t>We define the transponders within nodes A and E as tunnel termination
points (TTPs) and provide their internal local link connectivity
towards the node interfaces.  We also provide nodes A and E identifiers,
addresses and interfaces.</t>
  <t>We do the same for the nodes B, C and D, providing their
identifiers, addresses and interfaces, as well as the internal
connectivity matrix between interfaces.</t>
  <t>Then, we also define the links 1 to 5 that interconnect nodes,
indicating which WSON or flexi-grid labels are available.</t>
  <t>Other information, such as the slot frequency and granularity are
also provided.</t>
</list></t>

<t>After the nodes, links and transponders have been defined using
<xref target="I-D.ietf-ccamp-flexigrid-yang"/> and <xref target="RFC9094"/> we can
configure the tunnel from the information we have stored in the
flexi-grid topology, by querying which elements are available, and
planning the resources that have to be provided on each situation, taking into
account the global and path-specific WDM tunnel constraints.
Note that every element in the flexi-grid topology has a reference,
and this is the way in which they are called in the tunnel.</t>

<t><list style="symbols">
  <t>Depending on the case, it is possible to define either the source
and destination node ports, or the source and destination node and
transponder.  In our case, we would define a network tunnel, with
source transponder A and source node B, and destination
transponder E and destination node C.  Thus, we are going to
follow path x.</t>
  <t>Then, for each link in the path x, we indicate which channel we
are going to use, providing information about the slots, and what
nodes are connected.</t>
  <t>Finally, the flexi-grid topology has to be updated with each
element usage status each time a tunnel is created or torn down.</t>
</list></t>

</section>
<section anchor="yang-model-for-wdm-tunnel"><name>YANG Model for WDM Tunnel</name>

<section anchor="yang-tree"><name>YANG Tree</name>

<figure title="WDM Tunnel YANG tree" anchor="fig-wdm-tunnel-tree"><artwork type="ascii-art" name="ietf-wdm-tunnel.tree"><![CDATA[
module: ietf-wdm-tunnel

  augment /te:te/te:tunnels/te:tunnel:
    +--rw wdm-constraint
       +--rw transceiver-constraint
       |  +--rw operational-modes*            string
       |  +--rw otsi-carrier-frequency?       l0-types:frequency-thz
       |  +--rw tx-tune-constraints
       |  |  +--rw min-central-frequency?
       |  |  |       frequency-thz
       |  |  +--rw max-central-frequency?
       |  |  |       frequency-thz
       |  |  +--rw transceiver-tunability-granularity?
       |  |          frequency-ghz
       |  +--rw line-coding-bitrate*          identityref
       |  +--rw tx-channel-power?             l0-types:power-dbm
       |  +--rw preferred-rx-channel-power?   l0-types:power-dbm
       |  +--rw gsnr-extra-margin?            snr
       +--rw use-regen?                     boolean
       +--rw wavelength-conversion?         boolean
       +--rw wavelength-assignment?         identityref
       +--rw guard-band-size?               l0-types:frequency-thz
       +--rw matching-fwd-rev-wavelength?   boolean
       +--rw allow-retuning?                boolean
       +--rw delta-power?                   l0-types:power-ratio
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:explicit-route-objects
            /te:route-object-exclude-always/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--rw (node-position)?
       +--:(source)
       |  +--rw source-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw operational-modes*            string
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-tune-constraints
       |        |  +--rw min-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw max-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw transceiver-tunability-granularity?
       |        |          frequency-ghz
       |        +--rw line-coding-bitrate*          identityref
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       +--:(destination)
       |  +--rw destination-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw operational-modes*            string
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-tune-constraints
       |        |  +--rw min-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw max-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw transceiver-tunability-granularity?
       |        |          frequency-ghz
       |        +--rw line-coding-bitrate*          identityref
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       +--:(transit)
          +--rw regen-transceivers
             +--rw regen-group-id?         uint32
             +--rw incoming-transceiver
             |  +--rw transponder-id?   uint32
             |  +--rw transceivers* [transceiver-id]
             |     +--rw transceiver-id                uint32
             |     +--rw otsi-carrier-id?              uint16
             |     +--rw operational-modes*            string
             |     +--rw otsi-carrier-frequency?
             |     |       l0-types:frequency-thz
             |     +--rw tx-tune-constraints
             |     |  +--rw min-central-frequency?
             |     |  |       frequency-thz
             |     |  +--rw max-central-frequency?
             |     |  |       frequency-thz
             |     |  +--rw transceiver-tunability-granularity?
             |     |          frequency-ghz
             |     +--rw line-coding-bitrate*          identityref
             |     +--rw tx-channel-power?
             |     |       l0-types:power-dbm
             |     +--rw preferred-rx-channel-power?
             |     |       l0-types:power-dbm
             |     +--rw gsnr-extra-margin?            snr
             +--rw outgoing-transceiver
                +--rw transponder-id?   uint32
                +--rw transceivers* [transceiver-id]
                   +--rw transceiver-id                uint32
                   +--rw otsi-carrier-id?              uint16
                   +--rw operational-modes*            string
                   +--rw otsi-carrier-frequency?
                   |       l0-types:frequency-thz
                   +--rw tx-tune-constraints
                   |  +--rw min-central-frequency?
                   |  |       frequency-thz
                   |  +--rw max-central-frequency?
                   |  |       frequency-thz
                   |  +--rw transceiver-tunability-granularity?
                   |          frequency-ghz
                   +--rw line-coding-bitrate*          identityref
                   +--rw tx-channel-power?
                   |       l0-types:power-dbm
                   +--rw preferred-rx-channel-power?
                   |       l0-types:power-dbm
                   +--rw gsnr-extra-margin?            snr
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:explicit-route-objects/te:route-object-exclude-always
            /te:type/te:numbered-node-hop/te:numbered-node-hop:
    +--rw (node-position)?
       +--:(source)
       |  +--rw source-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw operational-modes*            string
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-tune-constraints
       |        |  +--rw min-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw max-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw transceiver-tunability-granularity?
       |        |          frequency-ghz
       |        +--rw line-coding-bitrate*          identityref
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       +--:(destination)
       |  +--rw destination-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw operational-modes*            string
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-tune-constraints
       |        |  +--rw min-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw max-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw transceiver-tunability-granularity?
       |        |          frequency-ghz
       |        +--rw line-coding-bitrate*          identityref
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       +--:(transit)
          +--rw regen-transceivers
             +--rw regen-group-id?         uint32
             +--rw incoming-transceiver
             |  +--rw transponder-id?   uint32
             |  +--rw transceivers* [transceiver-id]
             |     +--rw transceiver-id                uint32
             |     +--rw otsi-carrier-id?              uint16
             |     +--rw operational-modes*            string
             |     +--rw otsi-carrier-frequency?
             |     |       l0-types:frequency-thz
             |     +--rw tx-tune-constraints
             |     |  +--rw min-central-frequency?
             |     |  |       frequency-thz
             |     |  +--rw max-central-frequency?
             |     |  |       frequency-thz
             |     |  +--rw transceiver-tunability-granularity?
             |     |          frequency-ghz
             |     +--rw line-coding-bitrate*          identityref
             |     +--rw tx-channel-power?
             |     |       l0-types:power-dbm
             |     +--rw preferred-rx-channel-power?
             |     |       l0-types:power-dbm
             |     +--rw gsnr-extra-margin?            snr
             +--rw outgoing-transceiver
                +--rw transponder-id?   uint32
                +--rw transceivers* [transceiver-id]
                   +--rw transceiver-id                uint32
                   +--rw otsi-carrier-id?              uint16
                   +--rw operational-modes*            string
                   +--rw otsi-carrier-frequency?
                   |       l0-types:frequency-thz
                   +--rw tx-tune-constraints
                   |  +--rw min-central-frequency?
                   |  |       frequency-thz
                   |  +--rw max-central-frequency?
                   |  |       frequency-thz
                   |  +--rw transceiver-tunability-granularity?
                   |          frequency-ghz
                   +--rw line-coding-bitrate*          identityref
                   +--rw tx-channel-power?
                   |       l0-types:power-dbm
                   +--rw preferred-rx-channel-power?
                   |       l0-types:power-dbm
                   +--rw gsnr-extra-margin?            snr
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:explicit-route-objects
            /te:route-object-exclude-always/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--rw (node-position)?
       +--:(source)
       |  +--rw source-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw operational-modes*            string
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-tune-constraints
       |        |  +--rw min-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw max-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw transceiver-tunability-granularity?
       |        |          frequency-ghz
       |        +--rw line-coding-bitrate*          identityref
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       +--:(destination)
       |  +--rw destination-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw operational-modes*            string
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-tune-constraints
       |        |  +--rw min-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw max-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw transceiver-tunability-granularity?
       |        |          frequency-ghz
       |        +--rw line-coding-bitrate*          identityref
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       +--:(transit)
          +--rw regen-transceivers
             +--rw regen-group-id?         uint32
             +--rw incoming-transceiver
             |  +--rw transponder-id?   uint32
             |  +--rw transceivers* [transceiver-id]
             |     +--rw transceiver-id                uint32
             |     +--rw otsi-carrier-id?              uint16
             |     +--rw operational-modes*            string
             |     +--rw otsi-carrier-frequency?
             |     |       l0-types:frequency-thz
             |     +--rw tx-tune-constraints
             |     |  +--rw min-central-frequency?
             |     |  |       frequency-thz
             |     |  +--rw max-central-frequency?
             |     |  |       frequency-thz
             |     |  +--rw transceiver-tunability-granularity?
             |     |          frequency-ghz
             |     +--rw line-coding-bitrate*          identityref
             |     +--rw tx-channel-power?
             |     |       l0-types:power-dbm
             |     +--rw preferred-rx-channel-power?
             |     |       l0-types:power-dbm
             |     +--rw gsnr-extra-margin?            snr
             +--rw outgoing-transceiver
                +--rw transponder-id?   uint32
                +--rw transceivers* [transceiver-id]
                   +--rw transceiver-id                uint32
                   +--rw otsi-carrier-id?              uint16
                   +--rw operational-modes*            string
                   +--rw otsi-carrier-frequency?
                   |       l0-types:frequency-thz
                   +--rw tx-tune-constraints
                   |  +--rw min-central-frequency?
                   |  |       frequency-thz
                   |  +--rw max-central-frequency?
                   |  |       frequency-thz
                   |  +--rw transceiver-tunability-granularity?
                   |          frequency-ghz
                   +--rw line-coding-bitrate*          identityref
                   +--rw tx-channel-power?
                   |       l0-types:power-dbm
                   +--rw preferred-rx-channel-power?
                   |       l0-types:power-dbm
                   +--rw gsnr-extra-margin?            snr
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:explicit-route-objects
            /te:route-object-exclude-always/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--rw (node-position)?
       +--:(source)
       |  +--rw source-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw operational-modes*            string
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-tune-constraints
       |        |  +--rw min-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw max-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw transceiver-tunability-granularity?
       |        |          frequency-ghz
       |        +--rw line-coding-bitrate*          identityref
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       +--:(destination)
       |  +--rw destination-transceiver
       |     +--rw transponder-id?   uint32
       |     +--rw transceivers* [transceiver-id]
       |        +--rw transceiver-id                uint32
       |        +--rw otsi-carrier-id?              uint16
       |        +--rw operational-modes*            string
       |        +--rw otsi-carrier-frequency?
       |        |       l0-types:frequency-thz
       |        +--rw tx-tune-constraints
       |        |  +--rw min-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw max-central-frequency?
       |        |  |       frequency-thz
       |        |  +--rw transceiver-tunability-granularity?
       |        |          frequency-ghz
       |        +--rw line-coding-bitrate*          identityref
       |        +--rw tx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw preferred-rx-channel-power?
       |        |       l0-types:power-dbm
       |        +--rw gsnr-extra-margin?            snr
       +--:(transit)
          +--rw regen-transceivers
             +--rw regen-group-id?         uint32
             +--rw incoming-transceiver
             |  +--rw transponder-id?   uint32
             |  +--rw transceivers* [transceiver-id]
             |     +--rw transceiver-id                uint32
             |     +--rw otsi-carrier-id?              uint16
             |     +--rw operational-modes*            string
             |     +--rw otsi-carrier-frequency?
             |     |       l0-types:frequency-thz
             |     +--rw tx-tune-constraints
             |     |  +--rw min-central-frequency?
             |     |  |       frequency-thz
             |     |  +--rw max-central-frequency?
             |     |  |       frequency-thz
             |     |  +--rw transceiver-tunability-granularity?
             |     |          frequency-ghz
             |     +--rw line-coding-bitrate*          identityref
             |     +--rw tx-channel-power?
             |     |       l0-types:power-dbm
             |     +--rw preferred-rx-channel-power?
             |     |       l0-types:power-dbm
             |     +--rw gsnr-extra-margin?            snr
             +--rw outgoing-transceiver
                +--rw transponder-id?   uint32
                +--rw transceivers* [transceiver-id]
                   +--rw transceiver-id                uint32
                   +--rw otsi-carrier-id?              uint16
                   +--rw operational-modes*            string
                   +--rw otsi-carrier-frequency?
                   |       l0-types:frequency-thz
                   +--rw tx-tune-constraints
                   |  +--rw min-central-frequency?
                   |  |       frequency-thz
                   |  +--rw max-central-frequency?
                   |  |       frequency-thz
                   |  +--rw transceiver-tunability-granularity?
                   |          frequency-ghz
                   +--rw line-coding-bitrate*          identityref
                   +--rw tx-channel-power?
                   |       l0-types:power-dbm
                   +--rw preferred-rx-channel-power?
                   |       l0-types:power-dbm
                   +--rw gsnr-extra-margin?            snr
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties
            /te:path-route-objects/te:path-route-object/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--ro (node-position)?
       +--:(source)
       |  +--ro source-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(destination)
       |  +--ro destination-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(transit)
          +--ro regen-transceivers
             +--ro regen-group-id?         uint32
             +--ro incoming-transceiver
             |  +--ro transponder-id?   uint32
             |  +--ro transceivers* [transceiver-id]
             |     +--ro otsi-carrier-id?          uint16
             |     +--ro transceiver-id            uint32
             |     +--ro otsi-carrier-frequency?   union
             |     +--ro rx-channel-power?         power-dbm-or-null
             |     +--ro rx-total-power?           power-dbm-or-null
             |     +--ro estimated-gsnr?           snr
             |     +--ro estimated-eol-gsnr?       snr
             |     +--ro estimated-lowest-gsnr?    snr
             +--ro outgoing-transceiver
                +--ro transponder-id?   uint32
                +--ro transceivers* [transceiver-id]
                   +--ro otsi-carrier-id?          uint16
                   +--ro transceiver-id            uint32
                   +--ro otsi-carrier-frequency?   union
                   +--ro rx-channel-power?         power-dbm-or-null
                   +--ro rx-total-power?           power-dbm-or-null
                   +--ro estimated-gsnr?           snr
                   +--ro estimated-eol-gsnr?       snr
                   +--ro estimated-lowest-gsnr?    snr
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:computed-paths-properties/te:computed-path-properties
            /te:path-properties/te:path-route-objects
            /te:path-route-object/te:type/te:numbered-node-hop
            /te:numbered-node-hop:
    +--ro (node-position)?
       +--:(source)
       |  +--ro source-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(destination)
       |  +--ro destination-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(transit)
          +--ro regen-transceivers
             +--ro regen-group-id?         uint32
             +--ro incoming-transceiver
             |  +--ro transponder-id?   uint32
             |  +--ro transceivers* [transceiver-id]
             |     +--ro otsi-carrier-id?          uint16
             |     +--ro transceiver-id            uint32
             |     +--ro otsi-carrier-frequency?   union
             |     +--ro rx-channel-power?         power-dbm-or-null
             |     +--ro rx-total-power?           power-dbm-or-null
             |     +--ro estimated-gsnr?           snr
             |     +--ro estimated-eol-gsnr?       snr
             |     +--ro estimated-lowest-gsnr?    snr
             +--ro outgoing-transceiver
                +--ro transponder-id?   uint32
                +--ro transceivers* [transceiver-id]
                   +--ro otsi-carrier-id?          uint16
                   +--ro transceiver-id            uint32
                   +--ro otsi-carrier-frequency?   union
                   +--ro rx-channel-power?         power-dbm-or-null
                   +--ro rx-total-power?           power-dbm-or-null
                   +--ro estimated-gsnr?           snr
                   +--ro estimated-eol-gsnr?       snr
                   +--ro estimated-lowest-gsnr?    snr
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties
            /te:path-route-objects/te:path-route-object/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--ro (node-position)?
       +--:(source)
       |  +--ro source-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(destination)
       |  +--ro destination-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(transit)
          +--ro regen-transceivers
             +--ro regen-group-id?         uint32
             +--ro incoming-transceiver
             |  +--ro transponder-id?   uint32
             |  +--ro transceivers* [transceiver-id]
             |     +--ro otsi-carrier-id?          uint16
             |     +--ro transceiver-id            uint32
             |     +--ro otsi-carrier-frequency?   union
             |     +--ro rx-channel-power?         power-dbm-or-null
             |     +--ro rx-total-power?           power-dbm-or-null
             |     +--ro estimated-gsnr?           snr
             |     +--ro estimated-eol-gsnr?       snr
             |     +--ro estimated-lowest-gsnr?    snr
             +--ro outgoing-transceiver
                +--ro transponder-id?   uint32
                +--ro transceivers* [transceiver-id]
                   +--ro otsi-carrier-id?          uint16
                   +--ro transceiver-id            uint32
                   +--ro otsi-carrier-frequency?   union
                   +--ro rx-channel-power?         power-dbm-or-null
                   +--ro rx-total-power?           power-dbm-or-null
                   +--ro estimated-gsnr?           snr
                   +--ro estimated-eol-gsnr?       snr
                   +--ro estimated-lowest-gsnr?    snr
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties
            /te:path-route-objects/te:path-route-object/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--ro (node-position)?
       +--:(source)
       |  +--ro source-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(destination)
       |  +--ro destination-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro estimated-gsnr?           snr
       |        +--ro estimated-eol-gsnr?       snr
       |        +--ro estimated-lowest-gsnr?    snr
       +--:(transit)
          +--ro regen-transceivers
             +--ro regen-group-id?         uint32
             +--ro incoming-transceiver
             |  +--ro transponder-id?   uint32
             |  +--ro transceivers* [transceiver-id]
             |     +--ro otsi-carrier-id?          uint16
             |     +--ro transceiver-id            uint32
             |     +--ro otsi-carrier-frequency?   union
             |     +--ro rx-channel-power?         power-dbm-or-null
             |     +--ro rx-total-power?           power-dbm-or-null
             |     +--ro estimated-gsnr?           snr
             |     +--ro estimated-eol-gsnr?       snr
             |     +--ro estimated-lowest-gsnr?    snr
             +--ro outgoing-transceiver
                +--ro transponder-id?   uint32
                +--ro transceivers* [transceiver-id]
                   +--ro otsi-carrier-id?          uint16
                   +--ro transceiver-id            uint32
                   +--ro otsi-carrier-frequency?   union
                   +--ro rx-channel-power?         power-dbm-or-null
                   +--ro rx-total-power?           power-dbm-or-null
                   +--ro estimated-gsnr?           snr
                   +--ro estimated-eol-gsnr?       snr
                   +--ro estimated-lowest-gsnr?    snr
  augment /te:te/te:lsps/te:lsp/te:lsp-actual-route-information
            /te:lsp-actual-route-information/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--ro (node-position)?
       +--:(source)
       |  +--ro source-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro pre-fec-ber
       |        |  +--ro timestamp?   yang:timestamp
       |        |  +--ro value?       decimal64
       |        +--ro q-factor
       |           +--ro timestamp?   yang:timestamp
       |           +--ro value?       l0-types:decimal-2-or-null
       +--:(destination)
       |  +--ro destination-transceiver
       |     +--ro transponder-id?   uint32
       |     +--ro transceivers* [transceiver-id]
       |        +--ro otsi-carrier-id?          uint16
       |        +--ro transceiver-id            uint32
       |        +--ro otsi-carrier-frequency?   union
       |        +--ro rx-channel-power?         power-dbm-or-null
       |        +--ro rx-total-power?           power-dbm-or-null
       |        +--ro pre-fec-ber
       |        |  +--ro timestamp?   yang:timestamp
       |        |  +--ro value?       decimal64
       |        +--ro q-factor
       |           +--ro timestamp?   yang:timestamp
       |           +--ro value?       l0-types:decimal-2-or-null
       +--:(transit)
          +--ro regen-transceivers
             +--ro regen-group-id?         uint32
             +--ro incoming-transceiver
             |  +--ro transponder-id?   uint32
             |  +--ro transceivers* [transceiver-id]
             |     +--ro otsi-carrier-id?          uint16
             |     +--ro transceiver-id            uint32
             |     +--ro otsi-carrier-frequency?   union
             |     +--ro rx-channel-power?         power-dbm-or-null
             |     +--ro rx-total-power?           power-dbm-or-null
             |     +--ro pre-fec-ber
             |     |  +--ro timestamp?   yang:timestamp
             |     |  +--ro value?       decimal64
             |     +--ro q-factor
             |        +--ro timestamp?   yang:timestamp
             |        +--ro value?       l0-types:decimal-2-or-null
             +--ro outgoing-transceiver
                +--ro transponder-id?   uint32
                +--ro transceivers* [transceiver-id]
                   +--ro otsi-carrier-id?          uint16
                   +--ro transceiver-id            uint32
                   +--ro otsi-carrier-frequency?   union
                   +--ro rx-channel-power?         power-dbm-or-null
                   +--ro rx-total-power?           power-dbm-or-null
                   +--ro pre-fec-ber
                   |  +--ro timestamp?   yang:timestamp
                   |  +--ro value?       decimal64
                   +--ro q-factor
                      +--ro timestamp?   yang:timestamp
                      +--ro value?       l0-types:decimal-2-or-null
  augment /te:te/te:lsps/te:lsp/te:lsp-actual-route-information
            /te:lsp-actual-route-information/te:type
            /te:numbered-link-hop/te:numbered-link-hop:
    +--ro e2e-mc-path-id*   uint16
  augment /te:te/te:lsps/te:lsp/te:lsp-actual-route-information
            /te:lsp-actual-route-information/te:type
            /te:unnumbered-link-hop/te:unnumbered-link-hop:
    +--ro e2e-mc-path-id*   uint16
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-in-segment
            /te:label-restrictions/te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-out-segment
            /te:label-restrictions/te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-in-segment/te:label-restrictions
            /te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-in-segment/te:label-restrictions
            /te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-out-segment/te:label-restrictions
            /te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:explicit-route-objects
            /te:route-object-exclude-always/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:explicit-route-objects
            /te:route-object-include-exclude/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-in-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-out-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:optimizations/te:algorithm/te:metric
            /te:optimization-metric/te:explicit-route-exclude-objects
            /te:route-object-exclude-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:optimizations/te:algorithm/te:metric
            /te:optimization-metric/te:explicit-route-include-objects
            /te:route-object-include-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:explicit-route-objects
            /te:route-object-exclude-always/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:explicit-route-objects
            /te:route-object-include-exclude/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-start/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-end/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-step/te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties
            /te:path-route-objects/te:path-route-object/te:type
            /te:label/te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--ro (grid-type)?
          +--:(fixed-dwdm)
          |  +--ro (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--ro subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--ro cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--ro (single-or-super-channel)?
                +--:(single)
                |  +--ro flexi-n?              flexi-n
                |  +--ro flexi-m?              flexi-m
                x--:(super)
                |  x--ro subcarrier-flexi-n* [flexi-n]
                |     +--ro flexi-n    flexi-n
                |     +--ro flexi-m?   flexi-m
                +--:(multi)
                   +--ro frequency-slots
                      +--ro frequency-slot* [flexi-n]
                         +--ro flexi-n    flexi-n
                         +--ro flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path/te:optimizations
            /te:algorithm/te:metric/te:optimization-metric
            /te:explicit-route-exclude-objects
            /te:route-object-exclude-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path/te:optimizations
            /te:algorithm/te:metric/te:optimization-metric
            /te:explicit-route-include-objects
            /te:route-object-include-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:explicit-route-objects/te:route-object-exclude-always
            /te:type/te:label/te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:explicit-route-objects
            /te:route-object-include-exclude/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-start/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-end/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-step/te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-out-segment/te:label-restrictions
            /te:label-restriction/te:label-start/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-out-segment/te:label-restrictions
            /te:label-restriction/te:label-end/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-out-segment/te:label-restrictions
            /te:label-restriction/te:label-step/te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:computed-paths-properties/te:computed-path-properties
            /te:path-properties/te:path-route-objects
            /te:path-route-object/te:type/te:label/te:label-hop
            /te:te-label/te:technology:
    +--:(wdm)
       +--ro (grid-type)?
          +--:(fixed-dwdm)
          |  +--ro (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--ro subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--ro cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--ro (single-or-super-channel)?
                +--:(single)
                |  +--ro flexi-n?              flexi-n
                |  +--ro flexi-m?              flexi-m
                x--:(super)
                |  x--ro subcarrier-flexi-n* [flexi-n]
                |     +--ro flexi-n    flexi-n
                |     +--ro flexi-m?   flexi-m
                +--:(multi)
                   +--ro frequency-slots
                      +--ro frequency-slot* [flexi-n]
                         +--ro flexi-n    flexi-n
                         +--ro flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:optimizations/te:algorithm
            /te:metric/te:optimization-metric
            /te:explicit-route-exclude-objects
            /te:route-object-exclude-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:optimizations/te:algorithm
            /te:metric/te:optimization-metric
            /te:explicit-route-include-objects
            /te:route-object-include-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:explicit-route-objects
            /te:route-object-exclude-always/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:explicit-route-objects
            /te:route-object-include-exclude/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties
            /te:path-route-objects/te:path-route-object/te:type
            /te:label/te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--ro (grid-type)?
          +--:(fixed-dwdm)
          |  +--ro (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--ro subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--ro cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--ro (single-or-super-channel)?
                +--:(single)
                |  +--ro flexi-n?              flexi-n
                |  +--ro flexi-m?              flexi-m
                x--:(super)
                |  x--ro subcarrier-flexi-n* [flexi-n]
                |     +--ro flexi-n    flexi-n
                |     +--ro flexi-m?   flexi-m
                +--:(multi)
                   +--ro frequency-slots
                      +--ro frequency-slot* [flexi-n]
                         +--ro flexi-n    flexi-n
                         +--ro flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:optimizations/te:algorithm
            /te:metric/te:optimization-metric
            /te:explicit-route-exclude-objects
            /te:route-object-exclude-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:optimizations/te:algorithm
            /te:metric/te:optimization-metric
            /te:explicit-route-include-objects
            /te:route-object-include-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:explicit-route-objects
            /te:route-object-exclude-always/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:explicit-route-objects
            /te:route-object-include-exclude/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              flexi-n
                |  +--rw flexi-m?              flexi-m
                x--:(super)
                |  x--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    flexi-n
                |     +--rw flexi-m?   flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    flexi-n
                         +--rw flexi-m?   flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties
            /te:path-route-objects/te:path-route-object/te:type
            /te:label/te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--ro (grid-type)?
          +--:(fixed-dwdm)
          |  +--ro (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--ro subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--ro cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--ro (single-or-super-channel)?
                +--:(single)
                |  +--ro flexi-n?              flexi-n
                |  +--ro flexi-m?              flexi-m
                x--:(super)
                |  x--ro subcarrier-flexi-n* [flexi-n]
                |     +--ro flexi-n    flexi-n
                |     +--ro flexi-m?   flexi-m
                +--:(multi)
                   +--ro frequency-slots
                      +--ro frequency-slot* [flexi-n]
                         +--ro flexi-n    flexi-n
                         +--ro flexi-m?   flexi-m
  augment /te:te/te:lsps/te:lsp/te:lsp-actual-route-information
            /te:lsp-actual-route-information/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--ro (grid-type)?
          +--:(fixed-dwdm)
          |  +--ro (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?               dwdm-n
          |     +--:(multi)
          |        +--ro subcarrier-dwdm-n*    dwdm-n
          +--:(cwdm)
          |  +--ro cwdm-n?                     cwdm-n
          +--:(flexi-grid)
             +--ro (single-or-super-channel)?
                +--:(single)
                |  +--ro flexi-n?              flexi-n
                |  +--ro flexi-m?              flexi-m
                x--:(super)
                |  x--ro subcarrier-flexi-n* [flexi-n]
                |     +--ro flexi-n    flexi-n
                |     +--ro flexi-m?   flexi-m
                +--:(multi)
                   +--ro frequency-slots
                      +--ro frequency-slot* [flexi-n]
                         +--ro flexi-n    flexi-n
                         +--ro flexi-m?   flexi-m
]]></artwork></figure>

</section>
<section anchor="yang-code"><name>YANG Code</name>

<figure title="WDM Tunnel YANG module" anchor="fig-wdm-tunnel-yang"><sourcecode type="yang" markers="true" name="ietf-wdm-tunnel@2024-07-02.yang"><![CDATA[
module ietf-wdm-tunnel {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-wdm-tunnel";
  prefix "wdm-tnl";

  import ietf-te {
    prefix "te";
    reference
      "RFC YYYY: A YANG Data Model for Traffic Engineering Tunnels,
      Label Switched Paths and Interfaces.";
  }
  /* RFC Ed.: replace YYYY with the number assigned
     to the RFC once draft-ietf-teas-yang-te becomes an RFC.*/
  
  import ietf-layer0-types {
    prefix "l0-types";
  }

  import ietf-yang-types {
    prefix "yang";
  }

  organization
    "IETF CCAMP Working Group";
  contact
    "WG Web:   <http://tools.ietf.org/wg/ccamp/>
     WG List:  <mailto:ccamp@ietf.org>

     Editor:   Jorge E. Lopez de Vergara
               <jorge.lopez_vergara@uam.es>

     Editor:   Daniel Perdices
               <daniel.perdices@naudit.es>

     Editor:   Victor Lopez
               <victor.lopez@nokia.com>

     Editor:   Italo Busi
               <italo.busi@nokia.com>

     Editor:   Aihua Guo
               <aihuaguo.ietf@gmail.com>";

  description
    "This module defines a YANG data model for configuring
     and managing Wavelength-Division Multiplexing (WDM) switched
     optical tunnels.

    The model fully conforms to the Network Management 
    Datastore Architecture (NMDA).
    
    Copyright (c) 2021 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 XXXX; see
    the RFC itself for full legal notices.";

  revision "2024-07-02" {
    description
      "Updated revision with combined WSON and Flexi-grid tunnel
       YANG model";

    reference
      "RFC XXXX: YANG data model for WDM tunnels";
    // RFC Ed.: replace XXXX with actual RFC number, update date 
    // information and remove this note
  }

  /*
   * Groupings
   */
  grouping additional-transceiver-configuration-constraints {
    description
      "This grouping defines additional optional constraints for
       transceiver configurations related to tunnel selection.
       These constraints further limit the resources available
       to the tunnel. All constraints operate inclusively, using
       an AND logic. For example, if a specific frequency range
       is selected, the tunnel must also be constrained to match
       only that range.

       When these constraints are combined with the operational
       mode, the list of operational modes should exclude any
       modes that cannot satisfy the additional constraints.
       For instance, if the frequency is restricted to the C-band,
       the list of operational modes should not include any modes
       applicable only to the L-band.";

    leaf otsi-carrier-frequency {
        type l0-types:frequency-thz;
        description
          "OTSi carrier frequency, i.e. configured transmitter
           frequency.";
    }

    container tx-tune-constraints {
      description
        "The permissible tuning frequency range for the
         transmitter.";

      uses l0-types:transceiver-tuning-range;
    }

    leaf-list line-coding-bitrate {
      type identityref {
        base l0-types:line-coding;
      }
      description
        "The list of the bit rate/line coding of the optical 
        tributary signal that constrains the configuration of
        the transceiver.";
      reference 
        "ITU-T G.698.2 section 7.1.2";
    }

    leaf tx-channel-power {
      type l0-types:power-dbm;
      description
        "The preferred channel transmit power.";
    }

    leaf preferred-rx-channel-power {
      type l0-types:power-dbm;
      description
        "The preferred channel received power.";
    }

    /*
    leaf inverse-multiplexing-mode {
      //type l0-types:inverse-multiplexing-mode;
      type string;
      description
        "The inverse multiplexing mode.";
    }
    */

    uses l0-types:path-constraints;
  }

  grouping transceiver-constraints {
    description
      "This grouping defines constraints for transceiver
       configurations";

    leaf-list operational-modes {
      type string { 
        length "1..255";
      }
      description
        "List of operational mode ids of the transceiver.";
    }
    
    uses additional-transceiver-configuration-constraints;
  }

  grouping transceiver-config {
    description
      "This grouping defines explicit transceiver
       configurations.";

    leaf transponder-id {
      type uint32;
      description "transponder identifier";
    }

    list transceivers {
      key "transceiver-id";
      description
        "List of transceivers used within the transponder.";

      leaf transceiver-id {
        type uint32;
        description
        "transceiver identifier";
      }
      leaf otsi-carrier-id {
        type uint16;
        description
          "OTSi carrier identifier associated with the
           transceiver.";
      }

      uses transceiver-constraints;
    }
  }

  grouping path-transceiver-config {
    description
      "This grouping defines a set of transceivers on a node,
       serving as either source transceivers, destination
       transceivers, or regenerators.";

    choice node-position {
      description
        "The relative position of the node within the path.";
      case source {
        container source-transceiver {
          description
            "Constraints for transceiver configurations at the
             source node";

          uses transceiver-config;
        }
      }
      case destination {
        container destination-transceiver {
          description
            "Constraints for transceiver configurations at the
             destination node";

          uses transceiver-config;
        }
      }
      case transit {
        container regen-transceivers {
          description
            "Constraints for transceiver configurations at the
             transit node equipped with regenerators";

          leaf regen-group-id {
            type uint32;
            description
              "3R regen group identifier.";
          }

          /*
          leaf regen-level {
            //type l0-types:regen-level;
            type string;
            description
              "Indicate the chosen level of 3R regeneration.";
          }
          */

          container incoming-transceiver {
            description
              "Constraints for transceiver configurations at the
               incoming direction of the regenerator";

            uses transceiver-config;
          }

          container outgoing-transceiver {
            description
              "Constraints for transceiver configurations at the
               outgoing direction of the regenerator";

            uses transceiver-config;
          }
        }
      }
    }
  }

  grouping transceiver-measured-parameters {
    description
      "Measured transceiver parameters.";
  
    container pre-fec-ber {
      description
        "Timestamp and value of the Pre-FEC Bit Error Rate (BER)
         of the received signal.";

      leaf timestamp {
        type yang:timestamp;
        description
          "Timestamp associated with the Pre-FEC BER.";
      }

      leaf value {
        type decimal64 {
          fraction-digits 18;
        }
        description
          "Pre-FEC BER of the received signal.";
      }
    }

    container q-factor {
      description
        "Timestamp and value of the estimated Q-factor based on
         the pre-FEC BER.";

      leaf timestamp {
        type yang:timestamp;
        description
          "Timestamp associated with the Q-factor.";
      }

      leaf value {
        type l0-types:decimal-2-or-null;
        units "dB";
        description
          "Estimated Q-factor based on the pre-FEC BER.";
      }
    }
  }
  
  grouping transceiver-state {
    description
      "This grouping includes common transceiver state
       information.";

    leaf transponder-id {
      type uint32;
      description "transponder identifier";
    }

    list transceivers {
      key "transceiver-id";
      description
        "List of transceivers used within the transponder.";

      leaf otsi-carrier-id {
        type uint16;
        description
          "OTSi carrier identifier associated with the
           transceiver.";
      }
      leaf transceiver-id {
        type uint32;
        description
        "transceiver identifier";
      }

      leaf otsi-carrier-frequency {
        type union {
          type l0-types:frequency-thz;
          type empty;
        }
        description
          "OTSi carrier frequency, equivalent to the
          actual configured transmitter frequency, when known, or
          an empty value when unknown.";
      }

      uses l0-types:common-transceiver-readonly-param;
    }
  }

  grouping e2e-media-channel-info {
    description
      "This grouping includes end-to-end media channel path id
       information.";

    leaf-list e2e-mc-path-id {
      type uint16;
      description
        "The list of the possible end-to-end Media Channel
        (e2e-MC) paths associated with the OTSi which have
        different optical impairments.

        This list is meaningful in case the OTSi can be associated
        with multiple end-to-end Media Channel (e2e-MC) paths
        (e.g., when OPS protection is configured).

        The list can be empty when the OTSi has only one
        e2e-MC path.";
    }
  }

  grouping path-transceiver-state {
    description
      "This grouping defines the state of transceivers on a
       node functioning as starting, terminating transceivers,
       or regenerators.";

    choice node-position {
      description
        "The relative position of the node within the path.";
      case source {
        container source-transceiver {
          description
            "Transceiver state at the source node.";

          uses transceiver-state;
        }
      }
      case destination {
        container destination-transceiver {
          description
            "Transceiver state at the destination node.";

          uses transceiver-state;
        }
      }
      case transit {
        container regen-transceivers {
          description
            "Transceiver state at the transit node equipped
             with regenerators.";

          leaf regen-group-id {
            type uint32;
            description
              "3R regen group identifier.";
          }

          /*
          leaf regen-level {
            //type l0-types:regen-level;
            type string;
            description
              "Indicate the chosen level of 3R regeneration.";
          }
          */
          
          container incoming-transceiver {
            description
              "Transceiver state on the incoming direction of
               the regenerator.";

            uses transceiver-state;
          }

          container outgoing-transceiver {
            description
              "Transceiver state on the outgoing direction of
               the regenerator.";

            uses transceiver-state;
          }
        }
      }
    }
  }
  
  grouping global-transceiver-constraint {
    description
      "This grouping defines the constraints for transceiver
       configurations.";

    container transceiver-constraint {
      description
        "Constraints for transceiver configurations";

      uses transceiver-constraints;
    }
  }

  grouping wdm-constraint {
    description
      "Grouping for WDM tunnel constraints";

    container wdm-constraint {
      description
        "WDM tunnel constraints.";

      uses global-transceiver-constraint;
      
      leaf use-regen {
        type boolean;
        default false;
        description
          "Indicate whether or not regenerators (e.g. 3R) should be
           considered. When this parameter is set to true, the
           tunnel path may include a regen when the path is not
           feasible for direct optical reach.";
      }

      /*
      leaf-list regen-levels {
        when '../use-regen = "true"' {
          description
            "Regenerator must be enabled for the regen levels
             to be considered.";
        }
        //type l0-types:regen-level;
        type string;
        description
          "Indicate the levels of 3R regeration permitted by
           the tunnel.";
      }
      */

      leaf wavelength-conversion {
        when '../use-regen = "true"' {
          description
            "Regenerator must be enabled for wavelength conversion
             to be considered.";
        }
        type boolean;
        default false;
        description
          "Indicate whether or not wavelength conversion is allowed
           along the tunnel path. Applicable only when 3R
           regeneration is enabled.";
      }

      uses l0-types:tunnel-attributes;

      leaf guard-band-size {
        type l0-types:frequency-thz;
        description
          "Guard band size in THz.";
      }

      leaf matching-fwd-rev-wavelength {
        type boolean;
        default true;
        description
          "Indicate whether or not the assigned channels for
           forward and reverse wavelength path must be the same.";
      }

      leaf allow-retuning {
        type boolean;
        default false;
        description
          "Indicate whether or not re-tuning is allowed when one or
           more paths of a WDM tunnel is being restored. Typically,
           wavelength retuning is not preferred for wavelength
           planning considerations.";
      }
      leaf delta-power {
        type l0-types:power-ratio;
        description
          "Delta power in dB indicating the per-channel power
           deviation from the nominal power per channel at the
           output of an OMS.";
      }
    }
  }

  /*
  grouping digital-layer-constraint {
    description
      "Grouping for digital layer constraints";

    container digital-constraint {
      description
        "Digital layer constraints.";

      leaf digital-termination {
        //type l0-types:digital-termination-type;
        type string;
        description
          "Identifies how digital signal is terminated.";
      }

      leaf multiplexing-label-type {
        //type l0-types:multiplexing-label-type;
        type string;
        description
          "Identifies the type of multiplexing technology
           used (e.g. ODUj,k).";
      }
    }
  }
  */

  /*
   * Data nodes
   */

  /*
   * Global constraints for WDM tunnel
   */
  augment "/te:te/te:tunnels/te:tunnel" {
    description
      "Augment with additional parameters required for WDM
       tunnel configurations.";
    uses wdm-constraint;
    //uses digital-layer-constraint;
  }

  /*
   * Transceiver constraints for primary path
   * Applicable to starting, terminating and regenerator
   * transceivers.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE primary path with transceiver configurations.";
      
    uses path-transceiver-config;
  }

  /*
   * Transceiver constraints for primary reverse path
   * Applicable to starting, terminating and regenerator
   * transceivers.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE primary reverse path with transceiver
       configurations.";
      
    uses path-transceiver-config;
  }

  /*
   * Transceiver constraints for secondary path
   * Applicable to starting, terminating and regenerator
   * transceivers.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE secondary path with transceiver configurations.";
      
    uses path-transceiver-config;
  }

  /*
   * Transceiver constraints for secondary reverse path
   * Applicable to starting, terminating and regenerator
   * transceivers.
   */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE secondary reverse path with transceiver
       configurations.";
      
    uses path-transceiver-config;
  }

  /*
   * Computed transceiver properties for primary path.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE computed primary path with transceiver
       properties.";
      
    uses path-transceiver-state;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:source/"
        + "wdm-tnl:source-transceiver/wdm-tnl:transceivers" {
    description
      "Augment source transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:destination/"
        + "wdm-tnl:destination-transceiver/wdm-tnl:transceivers" {
    description
      "Augment destination transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:incoming-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:outgoing-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  /*
   * Computed transceiver properties for primary reverse path.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE computed primary path with transceiver
       properties.";

    uses path-transceiver-state;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:source/"
        + "wdm-tnl:source-transceiver/wdm-tnl:transceivers" {
    description
      "Augment source transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:destination/"
        + "wdm-tnl:destination-transceiver/wdm-tnl:transceivers" {
    description
      "Augment destination transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:incoming-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:outgoing-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  /*
   * Computed transceiver properties for secondary path.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE computed primary path with transceiver
       properties.";

    uses path-transceiver-state;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:source/"
        + "wdm-tnl:source-transceiver/wdm-tnl:transceivers" {
    description
      "Augment source transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:destination/"
        + "wdm-tnl:destination-transceiver/wdm-tnl:transceivers" {
    description
      "Augment destination transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:incoming-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:outgoing-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  /*
   * Computed transceiver properties for secondary reverse path.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE computed primary path with transceiver
       properties.";

    uses path-transceiver-state;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:source/"
        + "wdm-tnl:source-transceiver/wdm-tnl:transceivers" {
    description
      "Augment source transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:destination/"
        + "wdm-tnl:destination-transceiver/wdm-tnl:transceivers" {
    description
      "Augment destination transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:incoming-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen incoming transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:outgoing-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen outgoing transceiver with additional estimated
       parameters.";

    uses l0-types:path-properties;
  }

  /*
   * Actual transceiver state.
   */
  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE LSP with WDM path state.";

    uses path-transceiver-state;
  }

  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:source/"
        + "wdm-tnl:source-transceiver/wdm-tnl:transceivers" {
    description
      "Augment source transceiver with additional measured
       parameters.";

    uses transceiver-measured-parameters;
  }

  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:destination/"
        + "wdm-tnl:destination-transceiver/wdm-tnl:transceivers" {
    description
      "Augment destination transceiver with additional measured
       parameters.";

    uses transceiver-measured-parameters;
  }

  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:incoming-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen incoming transceiver with additional measured
       parameters.";

    uses transceiver-measured-parameters;
  }

  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop/"
        + "wdm-tnl:node-position/wdm-tnl:transit/"
        + "wdm-tnl:regen-transceivers/"
        + "wdm-tnl:outgoing-transceiver/wdm-tnl:transceivers" {
    description
      "Augment regen outgoing transceiver with additional measured
       parameters.";

    uses transceiver-measured-parameters;
  }

  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:numbered-link-hop/te:numbered-link-hop" {
    description
      "Augment TE LSP with end-to-end media channel
       information.";

    uses e2e-media-channel-info;
  }

  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/"
        + "te:unnumbered-link-hop/te:unnumbered-link-hop" {
    description
      "Augment TE LSP with end-to-end media channel
       information.";

    uses e2e-media-channel-info;
  }

  /*
   * Augment TE label range information
   */

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:label-restrictions/te:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the named path constraint.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-out-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the named path constraint.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the primay path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the primay path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the primay reverse path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the primay reverse path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the secondary path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the secondary path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the secondary reverse path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the secondary reverse path.";
    uses l0-types:wdm-label-range-info;
  }

  /*
   * Augment TE label.
   */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation with the named path
      constraint.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/"
        + "te:explicit-route-objects/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation with the named path
      constraint.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:label-restrictions/te:label-restriction/"
        + "te:label-step/te:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-out-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the egress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-out-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-out-segment/"
        + "te:label-restrictions/te:label-restriction/"
        + "te:label-step/te:technology" {
    description
      "Augment TE label range step for the egress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects excluded by the path computation of the primary
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects included by the path computation of the primary
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation of the primary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation of the primary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the egress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the route object of the computed
      primary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects excluded by the path computation of the primary
      reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects included by the path computation of the primary
      reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation of the primary reverse
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-include-exclude/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation of the primary reverse
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the egress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the egress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:computed-paths-properties/te:computed-path-properties/"
        + "te:path-properties/te:path-route-objects/"
        + "te:path-route-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the route object of the computed
      primary reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects excluded by the path computation of the
      secondary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects included by the path computation of the
      secondary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the egress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the egress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/"
        + "te:path-properties/te:path-route-objects/"
        + "te:path-route-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the route object of the computed
      secondary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects excluded by the path computation of the
      secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects included by the path computation of the
      secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation of the secondary reverse
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:explicit-route-objects/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation of the secondary reverse
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the egress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the egress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/"
        + "te:path-properties/te:path-route-objects/"
        + "te:path-route-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the route object of the computed
      secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:lsps/"
        + "te:lsp/te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the actual route of the LSP.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }
}
]]></sourcecode></figure>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The configuration, state, and action data defined in this document
are designed to be accessed via a management protocol with a secure
transport layer, such as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>.
The NETCONF access control model <xref target="RFC8341"/> provides the means to
restrict access for particular NETCONF users to a preconfigured
subset of all available NETCONF protocol operations and content.</t>

<t>There are a number of data nodes defined in this YANG module that are
writable/creatable/deletable (i.e., config true, which is the
default).  These data nodes may be considered sensitive or vulnerable
in some network environments.  Write operations (e.g., edit-config)
to these data nodes without proper protection can have a negative
effect on network operations.  These are the subtrees and data nodes
and their sensitivity/vulnerability:</t>

<t><list style="symbols">
  <t>/te:te/te:tunnels/te:tunnel</t>
  <t>/te:te/.../te:te-bandwidth/te:technology</t>
  <t>/te:te/.../te:type/te:label/te:label-hop/te:te-label/te:technology</t>
  <t>/te:te/.../te:label-restrictions/te:label-restriction/te:label-
start/te:te-label/te:technology</t>
  <t>/te:te/.../te:label-restrictions/te:label-restriction/te:label-
end/te:te-label/te:technology</t>
  <t>/te:te/.../te:label-restrictions/te:label-restriction/</t>
</list></t>

<t>Editors note: we are using simplified description by folding similar
branches to avoid repetition.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document requests IANA to register the following URIs in the "ns" subregistry within the "IETF XML Registry" <xref target="RFC3688"/>. Following the format in <xref target="RFC3688"/>, the following registrations are requested.</t>

<figure><artwork><![CDATA[
   URI: urn:ietf:params:xml:ns:yang:ietf-wdm-tunnel
   Registrant Contact: The IESG
   XML: N/A; the requested URI is an XML namespace.
]]></artwork></figure>

<t>This document requests IANA to register the following YANG modules in the "IANA Module Names" <xref target="RFC6020"/>. Following the format in <xref target="RFC6020"/>, the following registrations are requested:</t>

<figure><artwork><![CDATA[
   name: ietf-wdm-tunnel
   namespace: urn:ietf:params:xml:ns:yang:ietf-wdm-tunnel
   prefix: wdm-tnl
   reference: RFC XXXX
]]></artwork></figure>

<t>RFC Editor: Please replace XXXX with the RFC number assigned to this document.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC7950;
&RFC2119;
&RFC8174;
&RFC7446;
&RFC7699;
&RFC6241;
&I-D.ietf-teas-yang-te;
&I-D.ietf-ccamp-flexigrid-yang;
&RFC9094;
&RFC8040;
&RFC8341;
&RFC3688;
&RFC6020;


    </references>

    <references title='Informative References'>

&RFC6163;
&RFC7698;


    </references>


<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>This work is also partially funded by the Spanish State Research
Agency under the project AgileMon (AEI PID2019-104451RB-C21) and by
the Spanish Ministry of Science, Innovation and Universities under
the program for the training of university lecturers (Grant number:
FPU19/05678).</t>

</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="D." surname="King" fullname="Daniel King">
      <organization>Old Dog Consulting</organization>
      <address>
        <email>daniel@olddog.co.uk</email>
      </address>
    </contact>
    <contact initials="H." surname="Zheng" fullname="Haomian Zheng">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>H1, Xiliu Beipo Village, Songshan Lake</street>
          <city>Dongguan</city>
          <country>China</country>
        </postal>
        <email>zhenghaomian@huawei.com</email>
      </address>
    </contact>
    <contact initials="I." surname="Busi" fullname="Italo Busi">
      <organization>Huawei Technologies</organization>
      <address>
        <email>italo.busi@huawei.com</email>
      </address>
    </contact>
    <contact initials="O." surname="Gonzalez de Dios" fullname="Oscar Gonzalez de Dios">
      <organization>Telefonica</organization>
      <address>
        <email>oscar.gonzalezdedios@telefonica.com</email>
      </address>
    </contact>
    <contact initials="V." surname="Lopez" fullname="Victor Lopez">
      <organization>Nokia</organization>
      <address>
        <email>victor.lopez@nokia.com</email>
      </address>
    </contact>
    <contact initials="D." surname="Beller" fullname="Dieter Beller">
      <organization>Nokia</organization>
      <address>
        <email>Dieter.Beller@nokia.com</email>
      </address>
    </contact>
    <contact initials="R." surname="Vilalta" fullname="Ricard Vilalta">
      <organization>CTTC</organization>
      <address>
        <email>ricard.vilalta@cttc.es</email>
      </address>
    </contact>
    <contact initials="Y." surname="Lee" fullname="Young Lee">
      <organization>Samsung</organization>
      <address>
        <email>younglee.tx@gmail.com</email>
      </address>
    </contact>
    <contact initials="B.Y." surname="Yoon" fullname="Bin Yeong Yoon">
      <organization>ETRI</organization>
      <address>
        <email>byyun@etri.re.kr</email>
      </address>
    </contact>
    <contact initials="D.M." surname="Vallinoto" fullname="Daniel Michaud Vallinoto">
      <organization>Universidad Autonoma de Madrid</organization>
      <address>
        <email>daniel.michaud@estudiante.uam.es</email>
      </address>
    </contact>
    <contact initials="Z." surname="Ali" fullname="Zafar Ali">
      <organization>Cisco</organization>
      <address>
        <email>zali@cisco.com</email>
      </address>
    </contact>
    <contact initials="E.L." surname="Rouzic" fullname="Esther Le Rouzic">
      <organization>Orange</organization>
      <address>
        <email>esther.lerouzic@orange.com</email>
      </address>
    </contact>
    <contact initials="J." surname="Meuric" fullname="Julien Meuric">
      <organization>Orange</organization>
      <address>
        <email>julien.meuric@orange.com</email>
      </address>
    </contact>
    <contact initials="G." surname="Grammel" fullname="Gert Grammel">
      <organization>Juniper</organization>
      <address>
        <email>ggrammel@juniper.net</email>
      </address>
    </contact>
    <contact initials="R." surname="Manzotti" fullname="Roberto Manzotti">
      <organization>Cisco</organization>
      <address>
        <email>manzoro@gmail.com</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
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
awW5VpBrBblWkIXYtYJcK8j6uFaQawU9yFbQag+F+foXQNRwb56gAWZSNCEr
I62BhLV6qTkr3m88Uda4emMdpPgqHaR4qQ5SvEKpGF+lVIwXeNAFtV68wG0v
qC7jLp+JYJF+gWELVNv7x9Sn0HYvTjzwEmE3hizOeMur0JbFgNX9DF/956H5
2BisUNsJI+KwArcMDP4QVJqVYCt0I+LluxFOxZyKdapYR2UbL1XZxitXtvHy
le3lats2fOXKdnnlbUIuq7+XzNmtwk3AK2hxK5JVFbmJZCldXgS2QJ0XgS3Q
aGZzeNk6aFk9Y1fRswpFK+lZx4xL6FnnnJfpmQ14ZT2rIbmantlIVtCzdrBL
9awdrF3P7u5VCp2p9aJsuj11bsm2F2/TdqbWrYnz5fm2S61d3qM+LrV2KvZA
Vcyl1i61tka51Nql1i61vn5qvfpjqa4p7TJnl9YsC+MyZ6di+uMy5+LjMmeX
OS8Ac5kzq0K6zHkx2N1mzld9qsdl0i6TdmnOsjAuk3Yqpj8uky4+LpN2mfQC
MJdJsyqky6QXg91yJh2m81T/q//xuJ/lsGqVi1q/bd1IRBcNdtmrSy1WwDBP
hDcWvjeqy4nZIVLOQKf5bI4zXPBoMiyudAOd8jAvfuo4ED7YR/j0SQcZ//TG
oNBxkwZ2FRpYKw3Fgw6aGG+nzhuXPTsV/xJU3GXvLnu3Rq2ApMWW7EGrmFMr
3GKLatJTNyp7BLsiMeyKpmWDujLigZQRnQqvPqsrfA1uGYW36WlX+NqgFYlh
qyv8OtUzoYzeN+oZc9GuZ8SO8Ga+2jmQwdfMUv01WE8eta6o5fKV1zQJ4xFX
uzcRn5lNlK5HxDuHFbsmMvJSQZM0WcBHYLyJwEfhfVx32nrVfpvaJJEBqRxp
YP1ZajVmnsiYHuemiXCp31l3x6E4lx7isdIdfOVaGGfemQyAZPuR8JZZChB8
Ht4CU0b3s5m0dJd6ND+/bPTtSwM0zYnj6uK4iedtqkbRzvjLZeOkcH0pOGO4
czEs8/CZs5j7JSrLrJysbkhWqx88d8nXWknCxZrbFMVVz5Q5I1lryTijWZfi
8eZeqV5IqUOiuqUBaOi7+tufRnEYTy4KaQ43z4LZVpVHm4V8t+yXmdHosTyH
hQU2ECs6bACq7qcymoQCW1hpPheJ6S9W0P2rRKqGbzVuFmhxPq/6/jP4qKvt
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
xrbL3Mew1OJoIMKM187RtZ+kIzyXMnEf8aljc6i9wXP4P7FVavu1HsZUw2za
A3EqlaWOk3im63hsJ+ixCF30w5q7fJD0znPqWfGIvT08bm/S93SoLHNK3NyB
zIUe7Vo949LgjMAXJ11mpmUTr/0u1PVOuEFcdF8qAaceSVtG050rhlVTrKZs
Gp8V7NCHWEFzzTStXld5MvswpHrqmijoXkIHxLVXQCEGQeMqVax85NvWONqs
UKnk2/1f/+i/3+raGFI5gnkCgx6TjMyh8uq9l5RHN6qb0pVokPJZ+Y0Frw1Z
8DzMrgZXj5qUB++tHWmMXtL4G6DArL2sBmrllWZKWqsv1I3tbbrVZW8/VMwT
OHFSLawq7JgncoZnpdHZqtFWMgDJTXtHUgWhInlSgHaDabASc+mtJooQ9UKV
7Y1CO/6Mz81W7na/brYBtszbsusw6gkhEXjUQtVvLWhcXEIfTg4q3NWN+84i
t9T4UvodZwSvJGGTNNwzSZvvlTfw1IHumTrYomiohZn/82hH8Yqju9eL2q/P
NSTR/PW5eyL2Ko/vyg+UVKyHJ+gWb+WlXEuOu68uoV0qn8Ep7On3klXPwhXv
ImskB7ft5zvfqNaAXOGNas1Zl3yjWh3OvODoJkVv1rE4SzCElItaSurFFgMJ
3YnsMpFVwfU7XYaVXfRtc1VtQrdDNHe8CzDbVy6hIc3HMxoVRnEssVCSylnW
Uj2qD6uVzHYKcisKYm3wt4N1nCu4qqrYBwqcvtw/fdHnKdpBmqc32se1betf
VaHUbkqxo+906gvVqbZTFdfTqeJAxefRqatku3YivhbdjYekwrefGt9xUvzF
SdRlzk6LXHrtlOqeK5XLwZ3i3V/F+6IS9ep+yufYaHpIunkPM/AvW2AuwXZK
4vJnpzP3P0v5YtJjp1efVa++0Oz3eo3qa563eWA6e6+zYidAlyU7pXFZs9Oh
Ndchl0U7Pbs3evZgsupd9SI0e1LKuBbmzPbPpdYFt/DnUFcabLTgNo+Yvz5+
p5iMj75RwqpWf82c9D4w6F4mheaVtpfpvy2tltfgfkmyW9fczInyi0qRnLi/
qEzlyxF3KKP3DXGbiytmIV0vZjVzt72QldjY/mLY9eUe1DFt/Gu5vCYcLPLl
ck56JYT+uTkLrU6c27muXmBGjMef2NYllfU4alPP2oYVNZSMvFTQLE250Bsr
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
/5J1sU5vbgIA

-->

</rfc>

